Troubleshooting
Check the relevant service and keep error details free of credentials.
The server does not start
Check application logs first. Missing database or Redis settings stop production startup. Confirm the runtime database role can connect and the migration role has the permissions needed to apply pending migrations.
For Docker Compose:
docker compose ps
docker compose logs --tail=100 app db redis
For a native Linux service:
sudo journalctl -u open-tabletop -n 100 --no-pager
The lobby opens but the table does not connect
Check WebSocket forwarding if using a reverse proxy. Refresh clients after updating the server. Check the room code, admission status, and whether the room still exists.
Authentication or uploads return 503
Check Redis connectivity and logs. Protected requests fail closed when the shared rate-limit service is unavailable. Do not switch production replicas to independent in-memory rate limits to hide the failure.
A control is missing or disabled
Check your room role and participation status. Library needs Helper access; table settings, fog, and scene loading need GM access; Add to Library and Save Scene need site administrator access. Spectating and time-out block gameplay even when your role normally permits it. Close an expanded hand tray if it hides Seat or Table Actions on a touch layout.
If a saved asset is missing, check Filters > Custom / All, By Collection, and Uncollected. Private assets are available to site administrators; other users need the asset published. Publishing a collection does not publish its members.
The table is full
The table has a 250-piece limit. Remove unused pieces or combine compatible cards/stacks before spawning more. Notecards also have a separate 16-card room limit, including hands and stack contents. Failed placement should retain the card or item you were trying to place.
A package upload fails
Check the proxy's request-size limit and available temporary storage. Only one package operation runs at a time per server process; retry a busy transfer after the other operation finishes. See Networking and HTTPS.
An administrator password stopped working
Bootstrap settings only create an administrator on an empty users table. They do not reset existing accounts. Use enrolled email recovery or a saved recovery code. To grant administrator access to an existing account from the server, use the command in Accounts and permissions.
Recovery emails do not arrive
Check PUBLIC_ORIGIN, SMTP host, port, sender authorization, credentials, and
outbound connectivity. Check the recipient's spam folder. Recreate the Compose app
container after changing its environment; restarting the old container does not load new
values.
The password file must contain only the SMTP password, without a variable name or quotes. See Email recovery.
Uploaded assets are missing or unwritable
Confirm ASSETS_DIR points to the intended storage and the application user
can access it. Check that mounted storage is available after reboot. A database restore
must be paired with its uploaded files. For Proxmox NFS storage, follow the numeric
ownership mapping in the installer guide.
A saved hand did not return
Rejoin with the original account. A new quick-join account is a different owner even if it uses the same display name. Ask a GM to check Unclaimed hands in Members.
Report a problem
Include the application version, installation method, browser, steps to reproduce, and relevant redacted logs in a GitHub issue. Remove passwords, connection strings, recovery codes, and private game data. Report suspected vulnerabilities through the private reporting instructions.
Compose ignores a setting or cannot read a secret
The bundled Compose file forwards only its declared environment keys. For
TRUST_PROXY_HOPS, SESSION_TTL_DAYS, or
AUTO_MIGRATE, add the
Compose override, then recreate the app.
A startup permission error for /run/secrets/... can mean the host file is
readable only by a different user. Follow
secret-file permissions. Do not print
passwords when collecting diagnostics.
Sources checked: README.md, docs/ACCOUNT_SECURITY.md, SECURITY.md. Reviewed September 29, 2026 against the working source. Published releases may differ; check the changelog for your version.