Install with Docker

The fastest way to run Rclona. One container includes the web UI, API, and rclone.

Prerequisites

  • Docker Engine 24+ and Docker Compose v2
  • A host with enough disk for your backups (local or bind-mounted volumes)
  • Optional: reverse proxy (Traefik, Caddy, Nginx Proxy Manager) for HTTPS

1. Pull the image

docker pull ghcr.io/ecodes-lab/rclona:latest

Tagged releases are also published as ghcr.io/ecodes-lab/rclona:v1.0.0 etc.

2. Create a project folder

mkdir rclona && cd rclona

Download the compose template from the releases page, or create docker-compose.yml manually:

services:
  rclona:
    image: ghcr.io/ecodes-lab/rclona:latest
    container_name: rclona
    restart: unless-stopped
    ports:
      - "3001:3001"
    environment:
      - RCLONA_AUTH_ENABLED=true
      - RCLONA_AUTH_USERNAME=admin
      - RCLONA_AUTH_PASSWORD=${RCLONA_AUTH_PASSWORD}
      - RCLONA_LOCAL_PATHS=/data
      - TZ=UTC
    volumes:
      - ./config:/config
      - ./data:/data
      - ./logs:/logs

3. Set your password

Create a .env file next to docker-compose.yml:

RCLONA_AUTH_PASSWORD=your-strong-password-here

Never commit .env to git or share it publicly.

4. Start Rclona

docker compose up -d

Open http://localhost:3001 and log in with the username and password from your .env file.

5. Mount local folders (optional)

To browse or back up host directories, add bind mounts under volumes::

volumes:
  - ./config:/config
  - ./data:/data
  - /path/on/host/photos:/data/photos:ro
  - /path/on/host/backups:/data/backups

Then list them in RCLONA_LOCAL_PATHS:

RCLONA_LOCAL_PATHS=/data,/data/photos,/data/backups

6. Reverse proxy + HTTPS (recommended)

For internet or LAN access, do not expose port 3001 directly. Put Rclona behind HTTPS:

  1. Remove the ports: section from compose (or bind to 127.0.0.1:3001 only).
  2. Attach the container to your proxy network.
  3. Point your proxy at http://rclona:3001.
  4. Keep RCLONA_AUTH_ENABLED=true.

Example override for Traefik / external proxy network:

# docker-compose.override.yml
services:
  rclona:
    ports: !reset []
    networks:
      - default
      - proxy

networks:
  proxy:
    external: true
    name: proxy

Environment variables

VariableDefaultDescription
RCLONA_AUTH_ENABLEDtrueRequire login for the web UI
RCLONA_AUTH_USERNAMEadminLogin username
RCLONA_AUTH_PASSWORDLogin password (required)
RCLONA_LOCAL_PATHS/dataLocal folders shown in the path picker
RCLONE_CONFIG/config/rclone.confPath to rclone config inside the container
RCLONA_DATA_DIR/dataScheduled jobs storage
TZUTCTimezone for cron schedules
PORT3001HTTP port inside the container

Upgrading

docker compose pull
docker compose up -d

Your /config volume keeps rclone remotes and OAuth tokens across upgrades.

Troubleshooting

Container exits immediately

Check logs: docker compose logs -f rclona. Ensure RCLONA_AUTH_PASSWORD is set.

Cannot log in

Verify .env values match what you enter. Restart after changing env vars.

Local paths not visible

Confirm bind mounts exist and paths are listed in RCLONA_LOCAL_PATHS.

Health check failing

Wait for start_period (10s) on first boot. Check /api/health inside the container.