remoteEaze
Deployment

Dokploy and Traefik

Deploy the app stack with Dokploy using the Dokploy compose variant and path-based Traefik routing.

Last updated

This page covers the Dokploy-oriented deployment path using:

  • docker-compose.dokploy.yml

This compose file:

  • pulls prebuilt runtime images
  • expects Dokploy to manage service domains
  • expects Traefik to handle public routing
  • uses Infisical for app configuration

If you are not using Infisical for this environment, use one of the non-Dokploy deployment guides instead. The Dokploy compose variant is intentionally Infisical-backed.

What this compose file includes

Services included in the stack:

  • postgres
  • redis
  • api
  • worker
  • web
  • migrate

Optional profiles:

  • docs
  • tools

Minimal Dokploy env bootstrap

This path expects the normal application env values to live in Infisical.

The Dokploy env file only needs the bootstrap values and local infra secrets:

POSTGRES_PASSWORD=change-me
REDIS_PASSWORD=change-me
INFISICAL_PROJECT_ID=your-project-id
INFISICAL_ENV=prod
INFISICAL_TOKEN_API=...
INFISICAL_TOKEN_WORKER=...
INFISICAL_TOKEN_MIGRATE=...
INFISICAL_TOKEN_TOOLS=...
INFISICAL_API_URL=https://app.infisical.com

Application values such as DATABASE_URL, FRONTEND_URL, STORAGE_*, BETTER_AUTH_*, and RESEND_* should be stored in Infisical for this path.

ServiceHostPathContainer port
webremote-eaze.example.com/8080
apiremote-eaze.example.com/api3000
apiremote-eaze.example.com/admin/redis3000
apiremote-eaze.example.com/admin/queues3000
apiapi.remote-eaze.example.com/3000

The root-domain admin routes are intentional. They make it easier for logged-in browser sessions to access Redis dashboard and Bull Board without cross-host cookie surprises.

Dokploy domain/path settings

For the root-domain API and admin routes, use path-based entries on the api service.

Recommended values:

HostPathInternal PathStrip PathContainer port
remote-eaze.example.com/api/Off3000
remote-eaze.example.com/admin/redis/Off3000
remote-eaze.example.com/admin/queues/Off3000

Why:

  1. The backend already expects those exact paths.
  2. Rewriting or stripping them would break route matching.

Deploy sequence

  1. Create the Dokploy app from the repository.
  2. Select docker-compose.dokploy.yml.
  3. Set the Dokploy env values shown above.
  4. Add the service-domain mappings.
  5. Deploy.
  6. After the stack is healthy, build the tools profile on the Dokploy host if you need seeds or maintenance commands.
  7. Run the bootstrap steps from Post-Deploy Bootstrap.

Notes on docs and tools profiles

Docs

The app stack includes a docs profile, but the documentation site can also be deployed separately with:

  • docker-compose.docs.yml

If you deploy the docs site separately in Dokploy, the target container port is still 3000.

Tools

The tools profile is for one-off operational commands such as seeds.

Build it first from the Dokploy-generated checkout:

cd /etc/dokploy/compose/<dokploy-project>/code
sudo docker compose -p <dokploy-project> -f docker-compose.yml --profile tools build tools

Then use that same generated checkout for bootstrap or maintenance commands. The full seed and reset flows are documented on Post-Deploy Bootstrap.

Health and docs access

If you attach the api.remote-eaze.example.com hostname to the api service, these become clean direct URLs:

  • https://api.remote-eaze.example.com/health
  • https://api.remote-eaze.example.com/health/live
  • https://api.remote-eaze.example.com/documentation

Next step

Continue with Routing and Domains and then Post-Deploy Bootstrap.

On this page