Docker Installation
Get BugPin running in under 2 minutes with Docker.
Prerequisites
- Docker and Docker Compose installed
- A server or local machine with at least 512MB RAM
Quick Start
1. Create the Docker Compose file
Create a file named docker-compose.yml:
docker-compose.yml
services:
bugpin:
image: registry.arantic.cloud/bugpin/bugpin:latest
container_name: bugpin
restart: unless-stopped
ports:
- "7300:7300"
volumes:
- ./data:/data
# - bugpin-data:/data # Alternative: use Docker named volume instead
environment:
- NODE_ENV=production
- DATA_DIR=/data
healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:7300/health"]
interval: 30s
timeout: 3s
retries: 3
start_period: 10s
volumes:
bugpin-data:
driver: local
2. Start BugPin
docker compose up -d
3. Login and change password
Open http://localhost:7300 and login with:
- Email:
admin@example.com - Password:
changeme123
warning
Change the default password immediately after first login in Settings → Users.
That's it! BugPin is now running.
What's Configured Automatically
- Session key: Generated automatically and stored in the data volume
- Database: SQLite, stored in the data volume
- Admin account: Created on first run with default credentials
Data Persistence
BugPin stores all data in a Docker volume named bugpin-data:
- SQLite database
- Uploaded screenshots and attachments
- Auto-generated session key
Backup
# Stop the container
docker compose down
# Backup the volume
docker run --rm -v ./data:/data -v $(pwd):/backup alpine tar cvf /backup/bugpin-backup.tar /data
# Restart
docker compose up -d
Restore
docker compose down
docker run --rm -v ./data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xvf /backup/bugpin-backup.tar -C /"
docker compose up -d
Updating
docker compose pull
docker compose up -d
Custom Port
To use a different port, edit the ports section:
ports:
- "8080:7300" # Access on port 8080
Reverse Proxy
For production deployments, place BugPin behind a reverse proxy with SSL.
Nginx Example
server {
listen 443 ssl http2;
server_name bugs.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:7300;
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;
client_max_body_size 10M;
}
}
Traefik Example
Add labels to your docker-compose.yml:
services:
bugpin:
# ... existing configuration ...
labels:
- "traefik.enable=true"
- "traefik.http.routers.bugpin.rule=Host(`bugs.yourdomain.com`)"
- "traefik.http.routers.bugpin.entrypoints=websecure"
- "traefik.http.routers.bugpin.tls.certresolver=letsencrypt"
- "traefik.http.services.bugpin.loadbalancer.server.port=7300"
Health Check
BugPin includes automatic health monitoring:
docker inspect --format='{{.State.Health.Status}}' bugpin