Skip to main content

Docker Manager

Overview

Docker Manager lets users deploy containerized applications (Grafana, WordPress, Uptime Kuma, and more) onto their KVM instances directly from the control panel. Users can browse a community-driven app catalog, configure environment variables and port mappings, and deploy with a single click. The platform handles Docker installation, container orchestration, and real-time status reporting automatically.

Docker apps are a free feature bundled with instances -- there is no additional billing for running containers.


Admin Setup

App Catalog Source

The app catalog is fetched from a GitHub repository. The repository URL is configurable in System Settings. By default, it points to the community-maintained catalog at github.com/ReadyDedisLLC/hypervisor.io-docker-manager.

Each app in the repository contains:

  • app.json -- App metadata, environment variable definitions, and port mappings
  • docker-compose.yml -- The Docker Compose configuration
  • icon.png -- App icon (128x128)

The catalog is cached for 5 minutes to minimize API requests. Hosting providers can fork the repository and add custom applications specific to their platform.

Email Notifications

When a Docker app is successfully deployed, an email notification is sent to the instance owner containing:

  • App name and instance IP
  • Access URL (e.g., http://{instance-ip}:{host-port})
  • Port mappings for all exposed services
  • Credentials (environment variables marked as password type)
  • A link back to the control panel

This uses the standard email template system -- customize the template under System Settings → Email Templates if needed.


Prerequisites

  • A Linux instance with a cloud-init enabled image (Ubuntu 22.04+, Debian 12+, Rocky 9, AlmaLinux 9, etc.)
  • The instance must be in a Running state to deploy apps
  • Docker Engine must be installed on the instance (see next section)

Installing Docker on an Instance

Docker Engine and Docker Compose are installed automatically via cloud-init when the option is enabled during instance creation.

During Instance Creation

  1. On the instance creation form (Admin or User panel), locate the Install Docker Engine checkbox
  2. Check the box -- this is only available for Linux cloud-init images
  3. Create the instance as normal

Docker's official repository is added to the instance and docker-ce, docker-ce-cli, containerd.io, and docker-compose-plugin are installed during first boot.

Reinstall to Enable

If an existing instance was created without Docker, it can be reinstalled with the Docker checkbox enabled. Note that reinstalling will erase all data on the instance.

Verification

After the instance boots, verify Docker is installed by connecting via SSH:

docker --version
docker compose version

Supported Distributions

Docker installation via the official repository is supported on:

  • Ubuntu 22.04 LTS
  • Ubuntu 24.04 LTS
  • Debian 12
  • Rocky Linux 9
  • AlmaLinux 9

The Docker Tab

Once Docker is enabled on an instance, a Docker tab appears in the instance management page (both Admin and User panels).

If the Docker tab is opened on an instance that was created without the "Install Docker" option, a notice is displayed explaining that Docker is not available and suggesting a reinstall with Docker enabled.

The Docker tab also requires the instance to be in a running state. If the instance is stopped or suspended, a notice will be displayed.


App Catalog

Click Deploy App to open the application catalog. The catalog displays a grid of available applications. Each app card shows:

  • Icon and Name
  • Category (monitoring, CMS, database, etc.)
  • Short description
  • Minimum requirements (RAM, storage)

Use the search bar to find apps by name or description. Filter by category using the category tabs (All, Databases, CMS, Monitoring, etc.).


Deploying an App

  1. Navigate to the Docker tab on the instance manage page
  2. Browse or search the app catalog
  3. Click on an app to open the Deploy modal

Environment Variables

The deploy modal displays input fields generated from the app's definition. Each variable includes:

  • Label -- Human-readable name (e.g., "Admin Username")
  • Type -- Text input or password input
  • Default value -- Pre-filled when provided by the app definition
  • Required flag -- Highlighted if the variable must be set
  • Auto-generate button -- For password fields, click to generate a secure random value

Example for Grafana:

VariableLabelDefault
GF_SECURITY_ADMIN_USERAdmin Usernameadmin
GF_SECURITY_ADMIN_PASSWORDAdmin Password(auto-generate)

Port Mappings

The modal also shows a table of port mappings from the app definition:

  • Container Port -- Fixed, defined by the app (e.g., 3000 for Grafana)
  • Host Port -- Editable, defaults to the container port. Change this if the default port is already in use on the instance
  • Protocol -- TCP or UDP
  • Label -- What the port is for (e.g., "Web UI")

Deploying

Click Deploy to start the process. The app files are delivered to the instance, Docker Compose pulls the container images and starts the containers. Deployment status updates in real time via WebSocket -- no page refresh needed.

Apps are installed to /opt/docker-apps/{project-name}/ inside the instance.


Deploying a Custom Compose App

For applications not in the catalog:

  1. Click Custom Compose on the Docker tab
  2. Enter the Compose URL -- a direct link to a docker-compose.yml file (e.g., a GitHub raw URL)
  3. Enter an Application Name
  4. Optionally add environment variables as key-value pairs
  5. Optionally add port mappings (host port, container port, protocol)
  6. Click Deploy

The deployment process is identical to catalog apps.


Managing Deployed Apps

The top section of the Docker tab displays a table of all deployed apps on the instance.

Status Badges

StatusDescription
PendingDeployment initiated, waiting to execute
DeployingDocker Compose is pulling images and starting containers
RunningContainers are up and healthy
StoppedContainers have been stopped
ErrorDeployment failed -- check the error message for details

Control Actions

Each deployed app has the following action buttons:

ActionDescription
Open AppOpens the application in a new browser tab using the instance IP and first mapped port
Check StatusQueries the current container status
LogsOpens a live log viewer panel showing Docker Compose logs
StartStarts stopped containers
StopStops running containers
RestartRestarts containers
RemoveStops and removes containers, networks, volumes, and the deployment record

Log Viewer

The log viewer panel displays Docker Compose logs in a dark-themed code editor. Click Refresh to fetch the latest logs, or close the panel when done.

Error Recovery

If a deployment fails, an error overlay appears on the app card with the error message and a Retry Deployment button. Click it to re-attempt the deployment with the same configuration.


Community Contributions

The app catalog is open-source and community-contributable. Hosting providers can fork the repository to maintain a custom catalog, or contribute apps back to the community. Each app requires:

  • app.json -- Metadata, environment variable definitions, port mappings, and supported distro list
  • docker-compose.yml -- The Docker Compose configuration
  • icon.png -- App icon (128x128)

Each app in the catalog specifies its own supported_distros list. The deploy modal will warn if the instance OS is not in the app's supported list.