Skip to content
Dockfly

Self-hosted panel for Docker

Deploy on your own server like it's a PaaS.

Dockfly publishes your apps, sites and databases with automatic SSL and rebuilds them on every push. All in a single Docker image, on a machine you own.

one compose.yml · docker compose up -d · done

Animated preview of the Dockfly panel: a push to main builds and publishes a site, then the apps list and the server's CPU, memory and disk usage.
1 image
panel and Traefik together, ~54 MB
amd64 · arm64
runs on a Raspberry Pi too
Automatic SSL
Let's Encrypt certificates
Just Docker
nothing else to install

What a PaaS does, without the bill or the lock-in.

Every push, published

Connect GitHub or GitLab in one click and every push to your branch builds and publishes the site or app. Other branches get their own preview URL, without touching production.

Content lives in a CMS? Every site has a deploy hook: a URL that Strapi, or a cron job, calls to rebuild it.

push to main · a3f9c1e
$ bun install
  dependencies restored from cache
$ bun run build
  dist/ ready
✓ Published to mydomain.com

Zero-downtime apps

From an image, a Dockerfile or a compose.yml. The new container starts, passes its health check and only then receives traffic. If it fails, the previous version keeps serving.

One-click templates

  • PostgreSQL
  • MySQL
  • Redis
  • n8n
  • Uptime Kuma

Proxy hosts with SSL

Point a domain at a container, a service on the host or an external URL. Automatic certificates, access lists and a different target per path.

Static sites

Drop your dist folder or a .zip. Every upload is an immutable deployment and rolling back is one click. Supports _redirects and _headers.

Multiple servers

One command adds another machine. The agent connects out to the panel, with no ports to open, and its apps keep serving if the panel goes down.

Backups

Scheduled backups for PostgreSQL, MySQL and Redis, kept on the server or in an S3 bucket. Plus a full panel backup to move to another server.

Team, security and traffic

Admin, deployer and read-only roles, two-factor authentication, API tokens that expire and builds in unprivileged containers. Requests and p50/p95 latency for every domain, CPU, memory and disk for every server, with nothing extra to set up.

Installed in two minutes.

All you need is a server with Docker and a domain pointing at it.

  1. 01

    Save this compose.yml on your server.

  2. 02

    Start it.

    docker compose up -d
  3. 03

    Open an SSH tunnel and create your admin account at 127.0.0.1:8081.

    ssh -L 8081:127.0.0.1:81 user@your-server

The panel only listens locally on purpose. The full guide covers publishing it over HTTPS and every option.

compose.yml
services:
  dockfly:
    image: 'ghcr.io/oswaldohuillca/dockfly:latest'
    container_name: dockfly
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '127.0.0.1:81:81'
    environment:
      DOCKFLY_NETWORK: 'dockfly'
    volumes:
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - 'host.docker.internal:host-gateway'