Skip to main content

SafariDesk Self-Hosted Installation

This page installs SafariDesk from the monorepo root using Docker Compose. The default install uses published Docker Hub images:
  • safaridesk/safaridesk-frontend
  • safaridesk/safaridesk-backend
The same Compose file can also build both application images locally from source. Related pages:

Requirements

Production host:
  • Linux server
  • Docker Engine
  • Docker Compose plugin
  • Ports 80 and 443 available
  • At least 4 GB RAM
  • At least 20 GB persistent disk
Recommended production host:
  • Ubuntu 22.04 or newer
  • 8 GB RAM
  • 4 CPU cores
  • A real domain name
  • TLS certificate handled by a host reverse proxy, load balancer, or future TLS-enabled Nginx profile
Supported for local testing:
  • macOS with Docker Desktop
  • Windows with Docker Desktop
  • Linux workstation with Docker Engine

Repository Layout

Run all commands from the repository root:
Do not run the self-hosting commands from inside frontend/ or backend/.

Step 1: Clone the Repository

Use the final public monorepo URL when it is available. Placeholder:
If the repository is already present, move into the monorepo root:

Step 2: Create the Environment File

Copy the example file:
Open .env and change at least these values before exposing the deployment publicly:
For a local-only first run, the default localhost values are enough to start the stack. See Configuration for the full variable reference.

Step 3: Select Docker Image Tags

By default, .env.example uses:
For production, use a pinned release tag after releases are published:
Use latest only for local testing or when you intentionally want the newest published default-branch image.

Step 4: Start the Stack

Pull published images:
Start the services:
Check that containers are running:
Expected services:
Only nginx should publish a host port by default.

Step 5: Initialize the Database

Install the pgvector extension and run migrations:
Or use the helper script:

Step 6: Collect Static Files

Collect Django static files into the shared staticfiles volume:
Or use the helper script:
Nginx serves collected static files at:

Step 7: Create the Admin User

The admin user is created from these .env values:
Create or recover the admin user:
Equivalent direct command:

Step 8: Run Optional Bootstrap Commands

The backend includes additional management commands for seed data and email templates. Run the core SafariDesk setup command:
Sync email templates:
These commands are useful after initial setup and after upgrades that change default email templates.

Step 9: Open SafariDesk

For local installation:
For production:
Log in with the admin credentials configured in .env.

Step 10: Verify the Install

Run the HTTP health check:
For production, use the public URL:
Check backend logs:
Check Nginx logs:
Check worker logs:

Build Locally Instead of Pulling Images

If you want to build from the checked-out source code:
This builds:
  • frontend/Dockerfile
  • backend/Dockerfile
The same backend image is used by:
  • backend
  • channels
  • worker
  • beat

Common First-Install Checks

Confirm the rendered Compose file is valid:
Confirm only Nginx publishes a port:
Confirm the API health endpoint works through Nginx:
Confirm the frontend is reachable:

Next Steps

After installation: