Skip to main content
Most plamotrack issues fall into a handful of categories. This page covers the most common ones with the quickest fixes.
You’re reaching the instance by a name it doesn’t know. Add the name to ALLOWED_HOSTS in .env (or set PUBLIC_BASE_URL if you’re behind a proxy), then run:
Nothing is written or lost while the setting is wrong — fix the line and restart.
You’re behind an HTTPS proxy or Cloudflare Tunnel but haven’t set PUBLIC_BASE_URL in .env to your https:// address. Set it, then run:
Reads still work; only writes are blocked until this is set.
Run docker compose ps to find the unhealthy service. If it’s migrate, check its output:
The API deliberately won’t start if migrations fail, so a stopped deploy here means your database is still intact.
Set WEB_PORT in .env to any free port (e.g. 9090), then restart:
You skipped the cp .env.example .env step during installation. Create the file first:
Then open .env, replace change-me with a real password, and run docker compose up -d --build --wait.
You changed POSTGRES_PASSWORD in .env after the database was already created. Postgres only reads that value when it initialises an empty data directory — it does not update on restart.You have two options:
  • Set it back to the original value and restart.
  • Start fresh: run docker compose down -v (this deletes the database), then restore from a backup. See Backups.
Reset it from inside the API container — this never goes over the network:
It prompts for a new password, sets it, and signs all browsers out. Access tokens are not affected — revoke any you no longer trust from Settings once you’re back in.
Make sure you’re using the URL with a trailing slash (/mcp/ not /mcp).If you have a proxy in front of plamotrack, check that it has response buffering disabled for the MCP endpoint and doesn’t impose a short read timeout. MCP is a streaming protocol — a buffering proxy holds the response instead of passing it on, and the client hangs silently. The bundled nginx configuration in frontend/nginx/default.conf.template is a working reference for the correct settings.
Cloudflare’s 125-second timeout fired on a large, slow request before the response headers arrived. The import still completed on the server — check plamotrack to confirm. MCP and other streaming requests are unaffected by this timeout.
Your proxy or Cloudflare connector isn’t listed in TRUSTED_PROXIES in .env, so every visitor appears to arrive from the proxy’s address. Add the proxy’s IP and restart:
Use 127.0.0.1 for a proxy on the same host, or the proxy’s own IP if it’s on another machine.
The API isn’t ready yet. Check the container status and logs:
Run journalctl -u caddy to see the full error.
  • DNS-01 challenge: verify the Cloudflare API token has both Zone → DNS → Edit and Zone → Zone → Read permissions on the correct zone. Missing Zone → Zone → Read causes an “unknown error” when the module tries to look up the zone ID.
  • HTTP challenge: make sure ports 80 and 443 are reachable from the internet under your domain name, and that the domain resolves to this host.
The Docker stack isn’t running, or WEB_BIND isn’t 127.0.0.1. Check the stack status and test the connection locally:

Still stuck?

Check the GitHub Issues page — someone may have hit the same problem. If not, open a new issue with your error output and the relevant parts of your .env (redact any passwords or secrets).