Skip to Content
DocsCloud OSLaunchpad

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:

CategoryExamples
DatabasesPostgreSQL, MySQL, Redis, MongoDB
MonitoringGrafana, Prometheus, Uptime Kuma
DevelopmentGitea, Code-Server
MediaJellyfin, Navidrome, Audiobookshelf, Immich
CommunicationMatrix/Synapse, Mattermost
Cloud & FilesNextcloud, Syncthing, FileBrowser
ProductivityVikunja, Outline, WikiJS, BookStack
SecurityVaultwarden, AdGuard Home, Pi-hole
Home AutomationHome Assistant, Node-RED
AI & MLOllama, Open WebUI
BusinessERPNext, Invoice Ninja
EmailMailu
VPN & NetworkWireGuard, 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

  1. Find the app and click Install on its card.
  2. If the app has no settings, it installs straight away. The button shows Launching NN% while images are pulled and containers start.
  3. If the app has settings (admin user, password, domain and so on), a short configuration dialog opens first. Fill it in and confirm.
  4. 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.yml in 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

  1. Open Launchpad and type “Nextcloud” in Search apps.
  2. Click the Nextcloud card to check its requirements: at least 512 MB RAM and 2 GB disk.
  3. Click Install, set an admin username and password, and confirm.
  4. Wait for the image pull and container startup (typically 1–2 minutes).
  5. 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

FieldDescription
nameInternal identifier for the app
display_nameHuman-readable name shown in Launchpad
versionApp version string
categoryCategory for Launchpad filtering
servicesDocker Compose service definitions
volumesNamed volumes for persistent data
user_inputsConfiguration fields presented to the user during install
requirementsMinimum RAM, disk, and supported architectures
network.subnetOptional 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-world

If this fails, resolve your network or firewall configuration first.

App shows “error” status after install

Check the app logs for details:

  1. In Launchpad, filter to In orbit → Error and click the affected app (or Error · Manage)
  2. Open the Logs tab
  3. 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.