Deployment
Deploy Dasharr in production
Docker Deployment
Basic Docker Run
docker run -d \
--name dasharr \
-p 3000:3000 \
-v ./config:/app/config \
--restart unless-stopped \
schenanigans/dasharr:latest
Docker Compose (Recommended)
Create a compose.yaml
file:
services:
dasharr:
image: schenanigans/dasharr:latest
container_name: dasharr
ports:
- "3000:3000"
volumes:
- ./config:/app/config
environment:
# Application Settings
- PORT=${PORT:-3000}
- HOST=${HOST:-0.0.0.0}
- TZ=${TZ:-America/New_York}
- APP_URL=${APP_URL:-http://localhost:3000}
- TRUST_PROXY=${TRUST_PROXY:-true}
- SESSION_SECRET=${SESSION_SECRET}
- LOG_LEVEL=${LOG_LEVEL:-info}
# Optional: Configure services via environment variables
- PLEX_URL=${PLEX_URL}
- PLEX_TOKEN=${PLEX_TOKEN}
- TAUTULLI_URL=${TAUTULLI_URL}
- TAUTULLI_API_KEY=${TAUTULLI_API_KEY}
- OVERSEERR_URL=${OVERSEERR_URL}
- OVERSEERR_API_KEY=${OVERSEERR_API_KEY}
- RADARR_URL=${RADARR_URL}
- RADARR_API_KEY=${RADARR_API_KEY}
- SONARR_URL=${SONARR_URL}
- SONARR_API_KEY=${SONARR_API_KEY}
- SABNZBD_URL=${SABNZBD_URL}
- SABNZBD_API_KEY=${SABNZBD_API_KEY}
- QBITTORRENT_URL=${QBITTORRENT_URL}
- QBITTORRENT_USERNAME=${QBITTORRENT_USERNAME}
- QBITTORRENT_PASSWORD=${QBITTORRENT_PASSWORD}
- PROWLARR_URL=${PROWLARR_URL}
- PROWLARR_API_KEY=${PROWLARR_API_KEY}
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
Container Management
# View logs
docker logs -f dasharr
# Stop the container
docker stop dasharr
# Start the container
docker start dasharr
# Restart the container
docker restart dasharr
# Update to latest version
docker pull schenanigans/dasharr:latest
docker stop dasharr
docker rm dasharr
# Then run the docker run command again
Production Deployment
For production environments:
- Use a reverse proxy (nginx, Caddy, Traefik)
- Enable HTTPS/SSL
- Set up proper authentication
- Configure firewall rules
- Set resource limits in compose.yaml
Resource Limits
Add resource constraints to your compose.yaml
:
services:
dasharr:
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
Example Nginx Configuration
server {
listen 443 ssl http2;
server_name dasharr.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Advanced Configuration
Reverse Proxy Support
Dasharr automatically works behind reverse proxies without additional configuration. The application trusts proxy headers, so it will work correctly whether accessed at http://localhost:3000
or https://dasharr.yourdomain.com
.
Health Checks
Dasharr includes built-in health checks:
# Check health status
docker compose ps
# Manual health check
curl http://localhost:3000/api/health
Security Notes
- Never expose Dasharr directly to the internet without authentication
- Use strong API keys for all services
- Regularly update Docker images
- Monitor access logs
- Consider using VPN for remote access