Skip to main content

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

Next Steps