Docker Deployment - openises/tickets GitHub Wiki
Docker Deployment Guide
Deploy TicketsCAD in minutes using Docker. Works on Windows, Linux, and macOS.
Quick Start
Prerequisites
- Docker Desktop (Windows/Mac) or Docker Engine (Linux)
Deploy (3 commands)
mkdir ticketscad && cd ticketscad
curl -LO https://raw.githubusercontent.com/openises/tickets/main/docker-compose.yml
docker compose up -d
Open http://localhost:8080 and login with admin / admin.
Change the admin password immediately after first login.
Custom Configuration
Set environment variables before starting:
export ADMIN_PASS="MySecurePassword"
export DB_PASS="SecureDatabasePass"
docker compose up -d
All Environment Variables
| Variable | Default | Description |
|---|---|---|
DB_HOST |
db |
Database hostname |
DB_USER |
tickets |
Database username |
DB_PASS |
tickets |
Database password |
DB_NAME |
tickets |
Database name |
ADMIN_USER |
admin |
Initial admin username |
ADMIN_PASS |
admin |
Initial admin password |
ADMIN_NAME |
Super Administrator |
Admin display name |
WEB_PORT |
8080 |
Host port for web interface |
AUTO_INSTALL |
true |
Auto-create tables on first run |
Windows Setup
Install Docker Desktop
- Download from https://www.docker.com/products/docker-desktop/
- Run installer — enable "WSL 2 based engine" when prompted
- Restart computer if prompted
- Start Docker Desktop from the Start menu
Deploy from PowerShell
mkdir C:\TicketsCAD
cd C:\TicketsCAD
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/openises/tickets/main/docker-compose.yml" -OutFile "docker-compose.yml"
$env:ADMIN_PASS = "MySecurePassword"
docker compose up -d
Linux Setup
Install Docker (Debian/Ubuntu)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# Log out and back in, then:
docker compose version
Deploy
mkdir ~/ticketscad && cd ~/ticketscad
curl -LO https://raw.githubusercontent.com/openises/tickets/main/docker-compose.yml
ADMIN_PASS="$(openssl rand -base64 12)" docker compose up -d
Persistent Data
All data survives container restarts and upgrades:
| Volume | Contents |
|---|---|
db_data |
Database (incidents, users, settings) |
uploads |
File attachments |
tile_cache |
Cached map tiles |
config |
Database connection settings |
Never use docker compose down -v on production — the -v flag deletes volumes.
Backup & Restore
Backup
docker exec ticketscad_db mariadb-dump -u tickets -pYOUR_PASS tickets > backup_$(date +%Y%m%d).sql
Restore
docker exec -i ticketscad_db mariadb -u tickets -pYOUR_PASS tickets < backup_20260401.sql
Upgrade
cd ~/ticketscad
docker compose pull
docker compose up -d
The installer detects version mismatches and prompts for database upgrade.
Production: Add HTTPS
For internet-facing deployments, add nginx as a reverse proxy with SSL:
sudo apt install nginx certbot python3-certbot-nginx
sudo tee /etc/nginx/sites-available/ticketscad << 'EOF'
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/ticketscad /etc/nginx/sites-enabled/
sudo certbot --nginx -d your-domain.com
Troubleshooting
| Problem | Solution |
|---|---|
| Container won't start | docker compose logs web |
| Database connection error | docker compose logs db — wait for "ready for connections" |
| Blank pages (Situation, Units, etc.) | Pull latest code — MySQL 8.0 strict mode fix included |
| Map tiles "Access blocked" | Clear browser cache — tiles now route through server proxy |
| White screen | docker exec ticketscad tail -50 /var/log/php_errors.log |
| "ONLY_FULL_GROUP_BY" errors | Pull latest — SQL mode set at connection time |
| "Incorrect DATETIME value" | Pull latest — strict DATETIME mode disabled |
| Port in use | WEB_PORT=9090 docker compose up -d |
| Reset everything | docker compose down -v && docker compose up -d |