Troubleshooting
Common issues and how to fix them.
Check Service Status
docker compose psBoth silentsuite-postgres and silentsuite-server should show Up (healthy).
View Logs
# All services
docker compose logs
# Specific service
docker compose logs server
docker compose logs postgres
# Follow logs in real time
docker compose logs -f server
# Last 100 lines
docker compose logs --tail 100 serverRun the Verification Script
./verify.shCommon Issues
Services Fail to Start
Symptom: docker compose ps shows containers in a restart loop.
Fix: Check the logs for the failing service:
docker compose logs server
docker compose logs postgresThe most common cause is a misconfigured .env file (missing or incorrect passwords).
Server Returns 400 Bad Request
Symptom: Requests to your domain return 400 Bad Request or "Invalid HTTP_HOST header".
Fix: Your domain is not in ALLOWED_HOSTS. Edit .env and add it:
ALLOWED_HOSTS=sync.example.com,localhostThen recreate the server container:
docker compose up -d --force-recreate serverTLS / Certificate Errors
Symptom: Browser shows certificate warnings when accessing your domain.
Causes:
- DNS not resolving: Verify with
dig +short your-domain.com. - Reverse proxy misconfigured: Make sure it forwards to
localhost:3735. - Ports blocked: If using Caddy or certbot, ports 80 and 443 must be open:
sudo ufw status. - Let's Encrypt rate limits: If you've hit them, wait before retrying.
Database Connection Errors
Symptom: Server logs show "connection refused" or authentication errors.
Fixes:
- Confirm PostgreSQL is healthy:
docker compose ps postgres - Confirm
DATABASE_PASSWORDin.envmatches what was used when the database was first initialized. If the database volume already exists, changing the password in.envalone won't update the database. You must either recreate the volume (docker compose down -v-- this deletes all data) or alter the password inside PostgreSQL.
Server Takes a Long Time to Start
Symptom: Server shows starting health status for over a minute.
Fix: On first start, the server runs database migrations and collects static files. This can take 30-60 seconds. Check progress with:
docker compose logs -f serverIf it's still not healthy after 2 minutes, check the logs for errors.
"Permission Denied" Errors
Symptom: Container logs show file permission errors on the data volume.
Fixes:
- Recreating volumes usually resolves this:
docker compose down -v && docker compose up -d(deletes all data). - On SELinux-enabled systems, add the
:zflag to volume mounts indocker-compose.yml.
Cannot Connect from the Web App
Symptom: app.silentsuite.io shows a connection error when you enter your server URL.
Fixes:
- Make sure the URL starts with
https://(nothttp://). - Test from outside your server:
curl -s https://your-domain.com/. - Check that your reverse proxy is running and forwarding to port 3735.
- Check your firewall allows inbound traffic on port 443.
Restart or Recreate a Service
# Restart a service (keeps same container)
docker compose restart server
# Recreate a service (picks up .env changes)
docker compose up -d --force-recreate serverReset Everything
# WARNING: This deletes ALL data (users, encrypted sync data, everything)
docker compose down -v
./install.sh