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. Change the password inside PostgreSQL instead; recreating the database volume would destroy every account and sync row, and this release does not automate that.
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:
- Check ownership inside the volume rather than recreating it: recreating a data volume deletes every account and sync row, and this release does not automate that.
- 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 serverStop the Stack
docker compose downThis stops and removes the containers and leaves both data volumes intact; docker compose up -d resumes where you left off. There is no supported reset command: automated volume deletion is not supported, and re-running install.sh is not an upgrade or reset path — it refuses to touch an existing installation. If you are recovering from data loss, take and verify a backup first (Backup & Recovery).