Skip to main content

Docker Compose deployment

Recommended for most self-hosted deployments. Includes all services in one configuration.

Prerequisites

  • Docker 20.10+
  • Docker Compose 2.0+
  • 4 GB RAM minimum

Installation

1. Clone the repository

git clone https://github.com/synjar/synjar.git
cd synjar

2. Configure environment

cp .env.example .env

Edit .env with your settings:

# REQUIRED - Generate secure values
JWT_SECRET="$(openssl rand -base64 32)"

# REQUIRED - Get from https://platform.openai.com/api-keys
OPENAI_API_KEY="sk-your-api-key"

# Optional - For production email
SMTP_HOST=smtp.yourprovider.com
SMTP_USER=your-username
SMTP_PASSWORD=your-password

3. Start services

docker-compose up -d

This starts:

  • synjar - API server (port 6200)
  • postgres - Database (port 6205)
  • minio - S3-compatible storage (port 6204)
  • mailpit - Email testing (port 6203)

4. Access Synjar

Open http://localhost:6200

Services

Database (PostgreSQL)

  • Port: 6205
  • Data: ./data/postgres
  • Persistent volume for data

Storage (MinIO)

  • Port: 6204 (S3 API)
  • Console: 6206
  • Data: ./data/minio

Email (Mailpit)

  • SMTP: 6202
  • Web UI: 6203

For production, replace with real SMTP configuration.

Managing services

# View status
docker-compose ps

# View logs
docker-compose logs -f synjar

# Restart a service
docker-compose restart synjar

# Stop all services
docker-compose down

# Stop and remove volumes (DELETES DATA)
docker-compose down -v

Updating

# Pull latest images
docker-compose pull

# Restart with new images
docker-compose up -d

Production considerations

HTTPS

Place a reverse proxy (nginx, Traefik) in front of Synjar:

# docker-compose.override.yml
services:
traefik:
image: traefik:v2
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik:/etc/traefik

External database

For high availability, use an external PostgreSQL:

DATABASE_URL="postgresql://user:pass@your-db-host:5432/synjar"

Backups

Schedule regular backups:

# Database backup
docker-compose exec postgres pg_dump -U synjar > backup.sql

# MinIO backup
mc mirror minio/synjar ./backup/minio/

See Backup guide for detailed procedures.

Troubleshooting

Port conflicts

Edit docker-compose.yml to change port mappings if defaults conflict.

Database connection refused

Wait 30 seconds after docker-compose up for PostgreSQL to initialize.

Out of memory

Increase Docker memory limit or upgrade server RAM.

See also