Docksy

Apps & deploys

Deploy from a GitHub repo, a Docker image or a one-click template. Every deploy is zero-downtime, and rollback is one click.

Create an app

Apps → New app offers three sources:

SourceWhat you give it
GitHub repoRepo URL, branch, and an optional token for private repos (stored encrypted)
Docker imageAny image reference, e.g. ghcr.io/acme/api:1.4
TemplatePostgres, MySQL, MariaDB, Redis, MongoDB, n8n, Uptime Kuma, Plausible, Umami, MinIO, Ghost, WordPress

App names are lowercase slugs (a-z, 0-9, -). Everything that takes an app id also accepts its name.

Build types

TypeBehavior
autoUses your Dockerfile if there is one. Otherwise it generates one for Node (package.json), Python (requirements.txt/pyproject.toml), Go (go.mod) or static sites (index.html).
dockerfiledocker build -f <dockerfilePath> <buildContext>
composedocker compose -p docksy-<name> up -d --build
imagedocker pull, then run

No Dockerfile, or a complicated one? Ask Claude: "dockerize this repo for Docksy". The docksy-dockerize skill writes a multi-stage, non-root Dockerfile and a .dockerignore.

The deploy pipeline

Every step runs on your server over SSH:

  1. Clone with git clone --depth 1 -b <branch>, recording the commit SHA and message.
  2. Build the image and tag it docksy/<app>:<deploy>.
  3. Start the new container next to the old one, on the docksy network, with your env, volumes and --restart unless-stopped.
  4. Health check: it waits for healthcheckPath to answer (via wget/curl inside the container), or for the container to stay running for 5 seconds. The timeout is 120 seconds.
  5. Switch: the old container is removed only once the new one is healthy. If anything fails, the new container is removed and the old one keeps serving.
  6. Clean up: old build directories are pruned, and the last 5 images per app are kept for rollback.

Each app runs one deploy at a time, and up to 3 run in parallel across the instance. Build logs stream live on /deployments/:id.

Domains & HTTPS

Environment variables

Env vars are encrypted at rest, masked in the UI and API (reveal on demand), and injected at container start. Changes apply on the next deploy.

Auto-deploy on push

  1. Open the app → Settings and copy the webhook URL and secret.
  2. In GitHub: Repo → Settings → Webhooks → Add webhook. Use content type application/json, paste the secret, and pick "Just the push event".
  3. Docksy verifies X-Hub-Signature-256 and deploys pushes to the app's branch when auto-deploy is on.

Rollback

From Deployments, pick any previous succeeded deployment that still has its image and click Rollback. It goes through the same zero-downtime switch, so no rebuild is needed. From the CLI: docksy rollback <app> [deploymentId]. From Claude: /docksy:rollback <app>.

Restart, stop, start, delete

Logs

The app's Logs tab streams docker logs -f live. Build logs are kept for each deployment. From a terminal: docksy logs <app> -f.

Edit this page on GitHub