docker-compose.yml as a manual install, then adds the domain and the certificate. Plan for 5 to 8 minutes of build on a server with 4 vCPUs and 8 GB of memory.
Before you start
- A server attached to Dokploy, with at least 8 GB of memory: the app build needs 6. With Supabase on the same server, use 16 GB, or 8 GB and 4 GB of swap.
- Supabase, on supabase.com or open source on your server, set up as in Install.
- Two domains pointing at the server, one for the app and one for the engine:
rerun.example.comandengine.example.com.
1. Create the service
- In a Dokploy project, add a Compose service, type Docker Compose.
- Point it at your clone of
https://github.com/rerun-build/rerun.git, branchmain, compose path./docker-compose.yml.
2. Set the environment
Paste the content of your.env in the Environment tab. Start from .env.example and run node scripts/self-host-check.mjs on your machine to generate the secrets. Three values depend on your domains:
.env
NEXT_PUBLIC_APP_URL.
3. Add the domains
In the Domains tab, add two domains, both with HTTPS and Let’s Encrypt:
The engine needs its own domain: a browser connects to it directly to show a coworker’s screen.
4. Deploy
Click Deploy. When it finishes, check both domains:5. Close the published ports
docker-compose.yml also publishes the app on port 3000 and the engine on port 3001. Docker opens these ports past ufw, so close them in your provider’s firewall, and keep only 22, 80 and 443 open.
Updating
Pull the new version into your clone, then click Deploy. The engine keeps its data in theengine-data volume. When a release adds database migrations, apply them with npx supabase db push.