SafariDesk Self-Hosted Troubleshooting
Use this page when a self-hosted SafariDesk deployment does not start, does not route traffic correctly, or behaves differently from the expected Docker Compose architecture. Related pages:First Commands to Run
Run these from the monorepo root. Check rendered Compose config:Expected Services
The default stack should include:docker-compose.yml and any extra Compose files passed with -f.
Expected Public Ports
Onlynginx should publish a host port by default.
Check:
Containers Do Not Start
Check status:Docker Image Pull Fails
Check configured images:.env:
- Use
DOCKERHUB_NAMESPACE=safarideskfor official images. - Use a tag that exists on Docker Hub.
- Run
docker loginif images are private. - Use
docker compose up -d --buildif building locally from source.
Frontend Does Not Load
Check Nginx:Frontend Cannot Reach API
The default same-domain frontend should call:.env:
WebSockets Do Not Connect
WebSockets route through:Static Files 404
Django static files are served by root Nginx from thestaticfiles volume:
collectstaticwas not run.staticfilesvolume was recreated.- Nginx was started before files were collected.
- A custom Nginx config removed the
/static/route.
Uploads or Media 404
Uploads route through:Migrations Fail
Run:- Database service is unhealthy.
DB_PASSWORDin.envdoes not match the existing database volume.- Database volume was created with old credentials.
- Disk is full.
- A migration depends on data cleanup.
- pgvector extension installation failed.
.env alone does not change the existing PostgreSQL user password.
Redis or Celery Problems
Check Redis:REDIS_PASSWORD is set, Celery URLs must include the password:
Email Does Not Send
Check email settings:- SMTP host or port is wrong.
- SMTP credentials are wrong.
- Provider requires app password.
EMAIL_USE_TLS/EMAIL_USE_SSLmismatch.- Outbound SMTP is blocked by the host provider.
- Worker is not running for async email jobs.
Admin Login Fails
Create or recover the SafariAdmin user:.env:
SUPERUSER_EMAIL and SUPERUSER_PASSWORD.
Health Check Fails
The health script checks:/ fails:
- Check
nginx. - Check
frontend. - Check
HTTP_PORT.
/api/v1/health/ fails:
- Check
backend. - Check database connectivity.
- Check Nginx
/api/route.
Disk Space Problems
Check host disk:- PostgreSQL volume
- Uploads volume
- Backups in
data/backups - Docker image layers
- Container logs
Safe Restart Sequence
Restart application services:docker compose down -v in production unless you intend to remove volumes and have a tested backup.
Information to Collect for Support
Collect:- SafariDesk version /
SAFARIDESK_IMAGE_TAG - Deployment URL
- Whether same-domain or split-domain routing is used
- Recent upgrade steps
- Whether migrations ran
- Whether backups exist
.env without removing secrets.
