Get Bugsink up and running in minutes with this step-by-step guide.
- Docker and Docker Compose installed
- A domain name pointing to your server
- Traefik reverse proxy configured with Let's Encrypt
- Access to an SMTP server (optional, but recommended)
cd /opt/containers # or your preferred location
mkdir bugsink && cd bugsink
# Copy docker-compose.yml and .env.example to this directorycp .env.example .envGenerate a secure secret key:
openssl rand -base64 50Generate a secure database password:
openssl rand -base64 32Edit .env and update the following required settings:
# Stack identification
STACK_NAME=bugsink_yourcompany_com
# Network (choose unique subnet to avoid conflicts)
PRIVATESUBNET=252
# Your domain
SERVICE_HOSTNAME=bugsink.yourcompany.com
# Traefik network name
PROXY_NETWORK=EDGEPROXY
# Application secret (paste generated value)
SECRET_KEY=your-generated-secret-key-here
# Database password (paste generated value)
DATABASE_PASSWORD=your-generated-password-here
# Initial admin account
CREATE_SUPERUSER=admin@yourcompany.com:YourSecurePassword123!For password resets and notifications to work:
EMAIL_HOST=smtp.yourcompany.com
EMAIL_PORT=587
EMAIL_HOST_USER=bugsink@yourcompany.com
EMAIL_HOST_PASSWORD=your-smtp-password
EMAIL_USE_TLS=true
DEFAULT_FROM_EMAIL=Bugsink <bugsink@yourcompany.com>docker compose up -dCheck container status:
docker compose psBoth containers should show as "healthy":
NAME STATUS
bugsink_SERVER Up (healthy)
bugsink_DATABASE Up (healthy)
View logs if needed:
docker compose logs -f bugsink-serverOpen your browser and navigate to:
https://bugsink.yourcompany.com
Log in with the credentials you set in CREATE_SUPERUSER.
After confirming login works:
- Edit
.env - Remove or comment out the
CREATE_SUPERUSERline - Restart:
docker compose restart bugsink-server
- Log in to Bugsink
- Click "Create Project"
- Enter a project name
- Copy the generated DSN
Install the Sentry SDK for your language/framework and configure it with your DSN:
Python:
import sentry_sdk
sentry_sdk.init(
dsn="https://your-key@bugsink.yourcompany.com/1",
)JavaScript:
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://your-key@bugsink.yourcompany.com/1",
});See also: Sentry SDK Integration Guide
# All services
docker compose logs -f
# Application only
docker compose logs -f bugsink-server
# Database only
docker compose logs -f database-server# All services
docker compose restart
# Application only
docker compose restart bugsink-server# Pull latest image
docker compose pull bugsink-server
# Recreate container
docker compose up -d bugsink-serverdocker compose exec database-server pg_dump -U bugsink bugsink > backup_$(date +%Y%m%d).sqlcat backup_20240101.sql | docker compose exec -T database-server psql -U bugsink bugsinkCheck logs for errors:
docker compose logs bugsink-serverCommon issues:
- Invalid
SECRET_KEYformat - Database connection refused (database not ready)
- Invalid
CREATE_SUPERUSERformat (must beemail:password)
-
Verify DNS resolves correctly:
nslookup bugsink.yourcompany.com
-
Check Traefik routing:
docker logs traefik 2>&1 | grep bugsink
-
Verify container is on proxy network:
docker network inspect EDGEPROXY
-
Enable email logging:
EMAIL_LOGGING=true -
Restart and check logs:
docker compose restart bugsink-server docker compose logs -f bugsink-server
-
Test SMTP connectivity:
docker compose exec bugsink-server python -c " import smtplib s = smtplib.SMTP('smtp.yourcompany.com', 587) s.starttls() s.login('user', 'pass') print('SMTP OK') "
-
Check database health:
docker compose exec database-server pg_isready -U bugsink -
Verify password matches in both places:
DATABASE_PASSWORDin.env- Connection URL uses the same password
- Configuration Reference - All available settings
- Sentry SDK Integration - Connect your applications