Skip to content
Production

Production

Deploy ZIRI using Docker Compose.

Basic Setup

docker-compose.yml
services:
    proxy:
        image: ziri/proxy:latest
        ports:
            - "3100:3100"
        volumes:
            - ziri-data:/data
        environment:
            - CONFIG_DIR=/data
            - PORT=3100
            - HOST=0.0.0.0
        restart: unless-stopped

volumes:
    ziri-data:

Start:

docker compose up -d

Exposing to Users

Once ZIRI is running, share the URL:

  • Local: http://your-server-ip:3100
  • With domain: https://ziri.yourdomain.com (via reverse proxy)

Environment Variables

environment:
    - CONFIG_DIR=/data
    - PORT=3100
    - HOST=0.0.0.0
    - ZIRI_ROOT_KEY=${ROOT_KEY}
    - ZIRI_ENCRYPTION_KEY=${ENCRYPTION_KEY}

Use a .env file for secrets:

.env
# .env
ROOT_KEY=your-root-key
ENCRYPTION_KEY=your-encryption-key

Data Persistence

Data lives in the Docker volume ziri-data:

  • Configuration
  • Database
  • User data
  • Policies
  • Audit logs

The volume persists across restarts and updates.

Backup

docker run --rm -v ziri-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/ziri-backup.tar.gz /data

Restore:

docker run --rm -v ziri-data:/data -v $(pwd):/backup \
  alpine tar xzf /backup/ziri-backup.tar.gz -C /

Updates

docker compose pull
docker compose up -d

Monitoring

curl http://localhost:3100/health
docker compose logs -f

Next Steps