Launchpad
Launchpad is where you find, install and manage apps. It replaces the separate Apps list and App Store of earlier releases: the whole catalogue of 115+ templates and every app already installed on the node sit on one screen. Installed apps are marked In orbit, and they also appear as small satellites orbiting the quasar behind the desktop.
Open it from the Launchpad tab in the menu bar or the dock:
- Server mode: space 2 (Overview · Launchpad · Monitoring).
- Personal mode: space 3 (Home · Orbit · Launchpad).
You can also press Ctrl/⌘+K and type an app name. The palette opens installed
apps directly and offers to install apps that aren’t installed yet. Old links to
/apps/store open Launchpad.
Browsing apps
- Categories. The chips along the top filter the catalogue. In orbit shows only installed apps. You can narrow it down further to Running, Stopped or Error.
- Docker / Native. Filters by how the app runs: as containers, or as a native package on the host.
- Search apps. Matches names, descriptions and tags.
- Grid / List. Switches between cards and a compact list.
- A featured app is shown at the top.
Categories include:
| Category | Examples |
|---|---|
| Databases | PostgreSQL, MySQL, Redis, MongoDB |
| Monitoring | Grafana, Prometheus, Uptime Kuma |
| Development | Gitea, Code-Server |
| Media | Jellyfin, Navidrome, Audiobookshelf, Immich |
| Communication | Matrix/Synapse, Mattermost |
| Cloud & Files | Nextcloud, Syncthing, FileBrowser |
| Productivity | Vikunja, Outline, WikiJS, BookStack |
| Security | Vaultwarden, AdGuard Home, Pi-hole |
| Home Automation | Home Assistant, Node-RED |
| AI & ML | Ollama, Open WebUI |
| Business | ERPNext, Invoice Ninja |
| Mailu | |
| VPN & Network | WireGuard, Pritunl |
Each card shows the app’s rating, version and state. The button on the card always says what it will do: Install, In orbit · Open, Update to vX, Stopped · Manage, Error · Manage or Failed · Retry.
Installing an app
- Find the app and click Install on its card.
- If the app has no settings, it installs straight away. The button shows Launching NN% while images are pulled and containers start.
- If the app has settings (admin user, password, domain and so on), a short configuration dialog opens first. Fill it in and confirm.
- When the install finishes, the card switches to In orbit · Open and a new satellite joins the orbit around the quasar.
To read the full description, requirements, dependencies and ratings before you install, click the card itself to open the app’s detail page.
Behind the scenes, Cloud OS:
- Resolves your configuration against template defaults
- Generates a
docker-compose.ymlin the app data directory - Creates an isolated Docker network for the app
- Pulls all required Docker images
- Starts the containers with
docker compose up -d - Registers the app in the database and sets up a reverse proxy route
For required password fields left blank during install, Cloud OS automatically generates a secure 24-character random password. You can view it later on the app configuration page.
Only admins can install and remove apps. Every install path (Launchpad, first-run setup, Molly and installs pushed from the Control Panel) counts towards your plan’s app limit; see Orbit Pro.
Dependency management
Some templates declare dependencies on other apps. For example, an app that requires PostgreSQL will prompt you to install PostgreSQL first if it is not already running. Cloud OS handles dependency resolution and ensures prerequisites are started before the dependent app.
Example: installing Nextcloud
- Open Launchpad and type “Nextcloud” in Search apps.
- Click the Nextcloud card to check its requirements: at least 512 MB RAM and 2 GB disk.
- Click Install, set an admin username and password, and confirm.
- Wait for the image pull and container startup (typically 1–2 minutes).
- Click In orbit · Open to open Nextcloud at its assigned domain.
Managing installed apps
Filter Launchpad to In orbit to see everything installed on the node. From an installed app’s card you can:
- Open the app in a new tab.
- Start, Stop or Restart it.
- Manage it: open its detail page.
App detail page
Manage (or a click on the card) opens the app’s page with these tabs:
- Overview — status, domain, version and real CPU, memory, disk and network usage charts
- Logs — real-time log streaming and historical log search
- Config — view and edit environment variables and settings
- Files — browse the app’s data directory
- Terminal — a shell inside the app’s container
Uninstalling is also done from here. Cloud OS asks you to confirm and tells you what will be removed.
Uninstalling an app will permanently delete its containers. You will be asked whether to also remove data volumes. Create a backup first if you need the data.
Updating apps
Cloud OS checks for newer template versions. When one is available, the app’s card shows Update to vX:
- Single app: click Update to vX on the card.
- All apps: click Update N next to the search box to update every outdated app one after another.
- OS and system updates, rollbacks and version pinning are under Updates in the dock (Server: Admin group; Personal: System group).
App Template Format
Each template is a YAML file that defines Docker services, volumes, user inputs, and resource requirements. Here is a simplified example:
name: redis
display_name: Redis
version: "7.4.1"
category: databases
description: "In-memory data store for caching and messaging"
icon: redis.svg
website: https://redis.io
tags: [database, cache, in-memory, key-value]
services:
redis:
image: redis:7-alpine
ports:
- "9025:6379"
volumes:
- data:/data
environment:
REDIS_PASSWORD: "${REDIS_PASSWORD}"
volumes:
data: {}
user_inputs:
- key: REDIS_PASSWORD
label: "Redis Password"
type: password
required: false
requirements:
min_ram: 64
min_disk: 256
architecture: [amd64, arm64]Template Structure
| Field | Description |
|---|---|
name | Internal identifier for the app |
display_name | Human-readable name shown in Launchpad |
version | App version string |
category | Category for Launchpad filtering |
services | Docker Compose service definitions |
volumes | Named volumes for persistent data |
user_inputs | Configuration fields presented to the user during install |
requirements | Minimum RAM, disk, and supported architectures |
network.subnet | Optional fixed IPv4 subnet for the app’s private network (needed for ipv4_address) |
Per service, besides image, ports, volumes, environment and depends_on, a template can set hostname, dns (DNS servers for the container) and ipv4_address (a fixed address on the app network). Values (including hostname) can use ${KEY} placeholders from user_inputs. In the install dialog every password input has a key button that generates a value; when an app is installed through the API or the Control Panel, a required password input left empty is generated (32 random characters).
Mailu
The Mailu template follows Mailu 2024.06’s official setup: front (nginx), admin, IMAP, SMTP, antispam (rspamd + oletools), Roundcube webmail, Redis and an unbound DNSSEC resolver at a fixed address. Install it with your mail domain, the server hostnames and an admin password; generate the secret key with the key button next to it. It publishes the mail ports 25, 465, 587, 110, 995, 143, 993 and 4190 and the web interface on port 9084 (admin at /admin, webmail at /webmail); add a route in Domains to serve it on your hostname. TLS mode mail encrypts the mail protocols with your own certificate (cert.pem and key.pem in the app’s certs volume). The mail ports must be free, so Mailu can’t run next to the built-in Mail server component, and the subnet (default 192.168.203.0/24) must not overlap any other network. A Mailu installed before Cloud OS 0.12.1 must be uninstalled and installed again.
Offline Support
All 115+ templates are embedded in the Cloud OS binary via Go go:embed. Launchpad works entirely offline — no internet connection is required to browse or configure apps. Internet is only needed to pull Docker images during installation.
Troubleshooting
App install fails with “image pull error”
The server needs internet access to pull Docker images. Check your server DNS and outbound connectivity:
docker pull hello-worldIf this fails, resolve your network or firewall configuration first.
App shows “error” status after install
Check the app logs for details:
- In Launchpad, filter to In orbit → Error and click the affected app (or Error · Manage)
- Open the Logs tab
- Look for error messages during container startup
Common causes include insufficient memory, port conflicts, or missing environment variables.
Port conflict during install
Each template assigns a unique host port. If you have other services running on the same port, the install will fail. Stop the conflicting service or edit the app configuration to use a different port.