Skip to Content
DocsCloud OSApp Store

App Store

The Cloud OS App Store ships with 115+ pre-built application templates embedded directly in the binary. You can browse, search, install, configure, update, and remove self-hosted applications without writing any Docker Compose files.

Browsing Apps

Open the App Store from the sidebar under Apps > Store. The store supports two view modes:

  • Grid view — icon cards showing the app name, category, and a short description
  • List view — a compact table format with more detail per row

Categories

Apps are organized into categories:

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

Use the category filter sidebar to narrow results, or type in the search bar for fuzzy matching across app names, descriptions, and tags.

Installing an App

  1. Find the app and click its card to open the detail page
  2. Review the description, version, resource requirements, and dependencies
  3. Click Install
  4. Fill in the configuration form (admin username, password, and app-specific settings)
  5. Click Confirm to start the installation

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.

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 Apps > Store and search for “Nextcloud”
  2. Click the Nextcloud card
  3. Review requirements: minimum 512 MB RAM, 2 GB disk
  4. Click Install
  5. Set an admin username and password
  6. Click Confirm
  7. Wait for the image pull and container startup (typically 1-2 minutes)
  8. Once installed, access Nextcloud at the assigned domain shown in your app list

Managing Installed Apps

Navigate to Apps > Installed to see all your running applications. Each app shows:

  • Name and icon
  • Status (running, stopped, or error)
  • Version
  • Assigned domain
  • Resource usage (CPU, RAM)

App Detail Page

Click any installed app to access its management page with tabs:

  • Overview — status, domain, resource usage, and quick action buttons
  • Logs — real-time log streaming and historical log search
  • Config — view and edit environment variables and settings
  • Stats — per-app resource monitoring charts (CPU, RAM, network, disk I/O)

Quick Actions

From any app detail page or the installed apps list, you can:

  • Start / Stop / Restart the app
  • Update to the latest template version (if available)
  • Uninstall the app (removes containers and optionally volumes)

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 updated template versions. When a newer version is available, a badge appears next to the app in your installed list.

  • Individual update — click Update on the app detail page
  • Bulk update — go to Apps > Updates and click Update All to upgrade all outdated apps sequentially
  • Version pinning — lock an app to its current version to prevent updates

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 the store
versionApp version string
categoryCategory for store 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

Offline Support

All 115+ templates are embedded in the Cloud OS binary via Go go:embed. The App Store 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. Go to Apps > Installed and click the affected app
  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.