Skip to main content
Run every command here from the folder you installed to, ~/emplio by default. Find your symptom below.
Without RESEND_API_KEY, codes are written to the log instead of emailed:
A code works for 10 minutes. To email codes, see Optional features.
Start Docker Desktop, or the Docker service on Linux, then run the installer again. If it says permission denied, run sudo usermod -aG docker $USER, log out and back in, and try again.
Emplio uses ports 3000 and 4000, and 80 and 443 on a server. Find what holds one, for example port 3000:
Stop that program, then run docker compose up -d.
Check that your address’s DNS record points at this server, and that ports 80 and 443 are open. Once both are right, the certificate arrives by itself within a few minutes. See what Caddy says:
Plan for 4 GB, plus 2 GB for each person working at once. See what uses it with docker stats. Add memory, or lower COMPUTER_MEMORY in .env and run docker compose up -d.
The runner starts them. Look at its log:
If the images are missing, run ./setup.sh again to fetch them.

Check it’s healthy

app, postgres, gitea and runner should be running. gitea-init, computer-image and browser-image finish their job and exit, which is normal. The health check answers {"ok":true}.

Read the logs

Swap app for runner, postgres, gitea, gitea-init or caddy. The installer’s own output is in setup.log.

Restart

To restart everything, run docker compose restart. After changing .env, run docker compose up -d instead. Your data stays.
Still stuck? Open an issue on GitHub with what happened and which version you run.

Configuration

Every setting in .env.

Architecture

What each service does.