Skip to main content

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

VariableRequiredDefaultDescription
LICENSE_KEYYes-Pluton PRO license key
ENCRYPTION_KEYYes-Backup encryption master key (min 12 chars)
USER_NAMEYes-Admin username
USER_PASSWORDYes-Admin password (min 8 chars)
APP_URLNohttp://localhost:5173Public URL for the application
SERVER_PORTNo5173Web interface agents
MAX_CONCURRENT_BACKUPSNo2Maximum simultaneous backup jobs
ALLOW_CUSTOM_RESTORE_PATHNotrueAllow custom restore locations
ALLOW_FILE_BROWSERNotrueEnable file browser for path selection
DISABLE_EVENT_SCRIPTSNofalseDisable pre/post backup scripts

Security Notes:

  • Generate unique, strong values for ENCRYPTION_KEY and USER_PASSWORD
  • Keep ENCRYPTION_KEY safe—without it, encrypted backups cannot be restored
  • Store credentials securely (password manager, vault)

Network Configuration

Pluton PRO requires 1 port:

PortPurpose
5173Web 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.