Guide

Self-host Zeqqat on Dokploy.

Zeqqat is one app and a Postgres database, shipped as a Docker image. On Dokploy it’s a single Docker Compose service. It applies its own database migrations when it starts.

1. Create the compose service

  1. Create a project called zeqqat, and in it a Docker Compose service.
  2. Use the docker-compose.yml from the Zeqqat repository (github.com/zeqqat/zeqqat), either by pointing the service at the repository or by pasting the file.

2. Set the environment and domain

  1. Set the environment variables below on the compose service.
  2. Add your domain (for example zeqqat.example.com) to the zeqqat service on port 3000 with HTTPS on. Its DNS must point at this Dokploy server.
  3. Deploy, then open the domain and sign in.
Environment
ZEQQAT_PUBLIC_URL=https://zeqqat.example.com
POSTGRES_PASSWORD=<openssl rand -hex 24>
BETTER_AUTH_SECRET=<openssl rand -base64 32>
ZEQQAT_ENCRYPTION_KEY=<openssl rand -base64 32>
ENABLED_AUTH_PROVIDERS=github
GITHUB_CLIENT_ID=<your GitHub OAuth app>
GITHUB_CLIENT_SECRET=<your GitHub OAuth app secret>

Generate the secrets once and keep them. A new ZEQQAT_ENCRYPTION_KEY makes stored Dokploy keys unreadable. In your GitHub OAuth app, set the callback URL to https://zeqqat.example.com/api/auth/callback/github. Google sign-in works the same way with GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.

3. Connect your agents

  1. Sign in to your new Zeqqat and connect your Dokploy there.
  2. Copy the connection URL it gives you into each agent, in place of any URL it used before, and sign in again.
  3. Optionally, remove your Dokploy keys from the Zeqqat you used before.