-
-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
itsDNNS edited this page Apr 30, 2026
·
1 revision
Use this page as the first stop when Tribu does not behave as expected.
Collect these details and redact private values:
- install method: Docker Compose, Portainer, Dockge, Dockhand, or other
- Tribu version or release tag
- reverse proxy: Caddy, Nginx, Traefik, or none
- whether frontend, backend, PostgreSQL, and Valkey containers are running
- browser and device for UI problems
- logs with secrets removed
Never share tokens, passwords, private URLs, real family data, webhook IDs, VAPID keys, JWT secrets, database URLs, or screenshots containing credentials.
docker compose ps
docker compose logs backend
docker compose logs frontend
docker compose logs postgresExpected baseline:
- backend is running on port 8000 inside the stack
- frontend is running on port 3000 inside the stack
- PostgreSQL is internal only
- Valkey is internal only
- reverse proxy routes public traffic to the correct services
Common causes:
- missing
JWT_SECRET - missing
POSTGRES_PASSWORD - invalid
DATABASE_URL - PostgreSQL not ready during first initialization
Try:
docker compose logs backend
docker compose restart backend- Confirm
/api/*reaches the backend. - If proxying through the frontend, confirm the frontend can reach the backend.
- Check browser DevTools network errors.
If login succeeds but you return to the login page:
- If using HTTPS, set
SECURE_COOKIES=true. - Confirm your proxy forwards
X-Forwarded-Proto. - Confirm the browser receives the cookie with the expected flags.
- For local HTTP testing, keep
SECURE_COOKIES=false.
These paths matter:
| Path | Target |
|---|---|
/api/* |
backend, usually with /api stripped if proxying directly |
/ws/* |
backend with WebSocket upgrade headers |
/dav and /dav/*
|
backend |
/.well-known/caldav |
backend |
/.well-known/carddav |
backend |
/auth/oidc/* |
frontend, which rewrites to backend |
| everything else | frontend |
If DAV sync fails:
- use the URL from Settings > Phone sync
- use your Tribu email as username
- use a Personal Access Token as password
- confirm token scopes
- verify
/davand well-known DAV paths in the reverse proxy
If browser push fails:
- set all three VAPID variables
- restart the backend
- use HTTPS
- check browser notification permissions
- run push diagnostics in Settings
- on iOS, use the installed Home Screen app on supported versions
If display mode fails:
- create a new pairing link from an admin account
- open the pairing link on the display device once
- confirm the token is removed from the URL after first load
- do not expect a normal user session to authenticate
/display - if revoked, re-pair the display
If Home Assistant cannot reach Tribu:
- confirm the Home Assistant container/host can resolve and reach the Tribu URL
- use
!secretvalues instead of raw tokens in YAML - check Home Assistant automation traces
- use Tribu's webhook test button before adding real automations
If backup creation fails:
- check backend logs
- confirm the
/backupsmount is writable by the backend container - check disk space
If restore fails:
- confirm the archive is a Tribu backup archive
- use a fresh stack when testing restore drills
- keep
.env, Compose overrides, reverse proxy config, and TLS material in your normal server backup
- Setup help: Discussions Q&A
- Ideas: Discussions Ideas
- Show your setup: Discussions Show and tell
- Reproducible bugs: Issues
- Security: Security Policy