Deploy Pluton PRO with Docker
This guide walks you through deploying Pluton PRO using Docker and Docker Compose.
Prerequisites
- A valid Pluton PRO license key
- Docker and Docker Compose installed
- Ports 5173 (web) available
Quick Start
1. Create Docker Compose File
Create docker-compose.yml:
services:
pluton:
image: plutonhq/pluton-pro:latest
container_name: pluton-pro-backup
restart: unless-stopped
ports:
- "${SERVER_PORT:-5173}:${SERVER_PORT:-5173}"
volumes:
# Main data volume - contains database, config, logs
- pluton-data:/data
# Optional: Mount host directories to backup
# - /home/user/documents:/mnt/documents:ro
# - C:/Users/username/Documents:/mnt/documents:ro
environment:
# ===== REQUIRED: License & Security =====
LICENSE_KEY: ${LICENSE_KEY}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
USER_NAME: ${USER_NAME}
USER_PASSWORD: ${USER_PASSWORD}
# ===== Application Settings =====
APP_TITLE: ${APP_TITLE:-Pluton PRO}
APP_URL: ${APP_URL:-http://localhost:5173}
SERVER_PORT: ${SERVER_PORT:-5173}
MAX_CONCURRENT_BACKUPS: ${MAX_CONCURRENT_BACKUPS:-2}
SESSION_DURATION: ${SESSION_DURATION:-7}
# ===== User Interface Security Settings =====
ALLOW_CUSTOM_RESTORE_PATH: ${ALLOW_CUSTOM_RESTORE_PATH:-true}
ALLOW_FILE_BROWSER: ${ALLOW_FILE_BROWSER:-true}
DISABLE_EVENT_SCRIPTS: ${DISABLE_EVENT_SCRIPTS:-false}
# ===== Docker-specific (do not change) =====
NODE_ENV: production
IS_DOCKER: "true"
healthcheck:
test:
[
"CMD",
"sh",
"-c",
"wget --no-verbose --tries=1 --spider http://localhost:${SERVER_PORT:-5173}/api/health",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
pluton-data:
driver: local
2. Configure Environment Variables
Create a .env file in the same directory:
LICENSE_KEY=your-pluton-pro-license-key
ENCRYPTION_KEY=your-secure-encryption-key-min-12-chars
USER_NAME=admin
USER_PASSWORD=your-secure-password
# Optional - override defaults
SERVER_PORT=5173
3. Start Pluton PRO
docker compose up -d
4. Access Pluton PRO
Open your browser and navigate to:
http://localhost:5173
Log in with the username and password configured in your .env file.
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
LICENSE_KEY | Yes | - | Pluton PRO license key |
ENCRYPTION_KEY | Yes | - | Backup encryption master key (min 12 chars) |
USER_NAME | Yes | - | Admin username |
USER_PASSWORD | Yes | - | Admin password (min 8 chars) |
APP_URL | No | http://localhost:5173 | Public URL for the application |
SERVER_PORT | No | 5173 | Web interface agents |
MAX_CONCURRENT_BACKUPS | No | 2 | Maximum simultaneous backup jobs |
ALLOW_CUSTOM_RESTORE_PATH | No | true | Allow custom restore locations |
ALLOW_FILE_BROWSER | No | true | Enable file browser for path selection |
DISABLE_EVENT_SCRIPTS | No | false | Disable pre/post backup scripts |
Security Notes:
- Generate unique, strong values for
ENCRYPTION_KEYandUSER_PASSWORD - Keep
ENCRYPTION_KEYsafe—without it, encrypted backups cannot be restored - Store credentials securely (password manager, vault)
Network Configuration
Pluton PRO requires 1 port:
| Port | Purpose |
|---|---|
| 5173 | Web interface |
Reverse Proxy Setup
For HTTPS and custom domains, use a reverse proxy (nginx, Traefik, Caddy).
Example nginx configuration:
server {
listen 80;
server_name backup.yourdomain.com;
location / {
proxy_pass http://localhost:5173;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Update the APP_URL environment variable to match your domain:
environment:
APP_URL: https://backup.yourdomain.com
Running Behind Traefik
services:
pluton:
image: plutonhq/pluton-pro:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.pluton.rule=Host(`backup.yourdomain.com`)"
- "traefik.http.routers.pluton.entrypoints=websecure"
- "traefik.http.routers.pluton.tls.certresolver=letsencrypt"
- "traefik.http.services.pluton.loadbalancer.server.port=5173"
networks:
- traefik-network
- pluton-network
Updating
docker compose pull && docker compose up -d
Your configuration and data are preserved during updates.
Managing the Container
# Start
docker compose up -d
# Stop
docker compose down
# Restart
docker compose restart
# View logs
docker compose logs -f
# Check status
docker compose ps
# Shell access
docker exec -it pluton-pro-backup sh
Upgrading from Pluton (Free)
If you have an existing Pluton Docker installation and want to upgrade to Pluton PRO, see Upgrading to Pluton PRO.