Skip to content

Commands Quick Reference

Service Management

Start/Stop Services

# Start a service
cd /srv/dockerdata/SERVICE && docker compose up -d

# Stop a service
cd /srv/dockerdata/SERVICE && docker compose down

# Restart a service
cd /srv/dockerdata/SERVICE && docker compose restart

# View service status
docker ps | grep SERVICE

Service-Specific Commands

Metube (YouTube Downloader)

# Start Metube
cd /srv/dockerdata/metube && docker compose up -d

# View downloads
ls -la /srv/dockerdata/metube/downloads/

# Check logs
docker logs metube -f

Paperless NGX (Document Management)

# Start Paperless stack
cd /srv/dockerdata/paperless && docker compose up -d

# Access database directly
docker exec -it paperless-db psql -U paperless -d paperless

# Check OCR processing logs
docker logs paperless -f | grep -i ocr

# View document consumption
ls -la /srv/dockerdata/paperless/consume/

Paperless-AI (AI Document Analysis)

# Start Paperless-AI
cd /srv/dockerdata/paperless-ai && docker compose up -d

# Check logs
docker logs paperless-ai -f

# Access locally (via port mapping)
curl http://127.0.0.1:3003

Watchtower (Container Updates)

# Check Watchtower logs
docker logs watchtower -f

# Force update check (restart Watchtower)
docker restart watchtower

# View update history
docker logs watchtower | grep -i "updated"

View Logs

# Follow logs
docker compose -f /srv/dockerdata/SERVICE/docker-compose.yml logs -f

# Last 100 lines
docker logs --tail 100 CONTAINER_NAME

# Since timestamp
docker logs --since 2024-01-01T00:00:00 CONTAINER_NAME

StackWiz Commands

# Interactive mode
sudo stackwiz

# Create generic service
sudo stackwiz -n app -d app.domain.com -i image:tag -p PORT --yes

# Create Pocketbase service  
sudo stackwiz -n backend -d api.domain.com --type pocketbase --yes

# With automatic DNS creation
sudo stackwiz -n app -d app.domain.com -i image:tag -p PORT --create-dns --yes

# Help
stackwiz --help

Docker Cleanup

# Remove stopped containers
docker container prune -f

# Remove unused images
docker image prune -a -f

# Remove unused volumes
docker volume prune -f

# Full cleanup (careful!)
docker system prune -a --volumes -f

# Check disk usage
docker system df

Notification Commands

# Send simple notification
notify "Title" "Message body"

# Send with priority and channel
notify "Alert" "Critical issue" 5 monitoring-critical

# Send via Apprise API
curl -X POST https://apprise.rbnk.uk/notify/apprise \
  -H "Content-Type: application/json" \
  -d '{"title": "Test", "body": "Test message"}'

# Send to ntfy topic
curl -u USERNAME:PASSWORD \
  -d "Message" \
  -H "Title: Alert" \
  -H "Priority: 3" \
  https://ntfy.rbnk.uk/topic

# Test email to notification gateway
echo "Test" | mail -s "Subject" [email protected]

Backup Commands

# Run Supabase backup
/srv/dockerdata/_scripts/supabase-backup.sh

# Run Pocketbase backup
/srv/dockerdata/_scripts/pocketbase-backup.sh

# Manual PostgreSQL backup
docker exec supa-db pg_dumpall -U postgres > backup.sql

Network Debugging

# List networks
docker network ls

# Inspect network
docker network inspect traefik_proxy

# Test connectivity from container
docker exec CONTAINER ping OTHER_CONTAINER

# Check exposed ports
docker port CONTAINER_NAME

Disk Management

# Check disk space
df -h
df -h /srv/dockerdata

# Find large directories
du -sh /srv/dockerdata/* | sort -h

# Find large files
find /srv/dockerdata -type f -size +100M -exec ls -lh {} \;

# Check inode usage
df -i

Traefik Commands

# Check Traefik logs
docker logs traefik -f

# View active routes (if API enabled)
curl http://localhost:8080/api/http/routers | jq

# Test SSL certificate
curl -I https://domain.com

Container Inspection

# Full container details
docker inspect CONTAINER_NAME

# Get IP address
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER

# Get environment variables
docker inspect CONTAINER | jq '.[0].Config.Env'

# Get volumes
docker inspect CONTAINER | jq '.[0].Mounts'

Ollama Commands

# List models
ollama list

# Pull a model
ollama pull llama3.2

# Run a model
ollama run llama3.2

# Delete a model
ollama rm MODEL_NAME

# Check Ollama service
systemctl status ollama

Database Access

PostgreSQL (Supabase)

# Access psql
docker exec -it supa-db psql -U postgres

# Backup single database
docker exec supa-db pg_dump -U postgres DATABASE > db.sql

# List databases
docker exec supa-db psql -U postgres -c "\l"

Redis

# Access Redis CLI
docker exec -it redis redis-cli

# Check Redis info
docker exec redis redis-cli INFO

Notification Commands

Send Notifications

# Send notification via notify helper
notify "Title" "Message" [priority] [channel]

# Examples
notify "Backup Complete" "Daily backup finished successfully"
notify "Disk Warning" "Disk usage at 85%" 4 monitoring
notify "Deploy Success" "v1.2.3 deployed to production" 3 deployment

# Send via Apprise API
curl -X POST https://apprise.rbnk.uk/notify/apprise \
  -H "Content-Type: application/json" \
  -d '{"title": "Alert", "body": "Message", "tag": "critical"}'

# Send to ntfy topic
curl -u username:password \
  -d "Message body" \
  -H "Title: Alert Title" \
  -H "Priority: 4" \
  https://ntfy.rbnk.uk/service-severity-category

Test Notifications

# Test all channels
notify "Test Alert" "Testing at $(date)" 3 test

# Test specific Apprise tags
curl -X POST https://apprise.rbnk.uk/notify/apprise \
  -H "Content-Type: application/json" \
  -d '{"title": "Tag Test", "body": "Testing critical tag", "tag": "critical"}'

# Test ntfy authentication
curl -u admin:PASSWORD https://ntfy.rbnk.uk/health

View Notification Logs

# Apprise logs
docker compose -f apprise/docker-compose.yml logs -f

# ntfy logs
docker compose -f ntfy/docker-compose.yml logs -f

# Uptime Kuma logs
docker compose -f uptime-kuma/docker-compose.yml logs -f

DNS Commands

Simple DNS Creation (A records only)

# Create DNS A record in Cloudflare
/srv/dockerdata/_scripts/cloudflare-dns-create.sh subdomain

# With specific IP
/srv/dockerdata/_scripts/cloudflare-dns-create.sh subdomain A 1.2.3.4

Advanced DNS Management (all record types)

# Create various record types
cloudflare-dns create A myapp AUTO
cloudflare-dns create CNAME www myapp.rbnk.uk
cloudflare-dns create MX @ mail.server.com 10
cloudflare-dns create TXT @ "v=spf1 include:_spf.mail.com ~all"

# List all DNS records
cloudflare-dns list
cloudflare-dns list --type A
cloudflare-dns list --name myapp

# Get record details
cloudflare-dns get myapp
cloudflare-dns get myapp A

# Update records
cloudflare-dns update myapp 5.6.7.8
cloudflare-dns update myapp 5.6.7.8 --no-proxy --ttl 3600

# Delete records
cloudflare-dns delete myapp
cloudflare-dns delete myapp A

# Help
cloudflare-dns --help

DNS Verification

# Check DNS propagation
dig subdomain.rbnk.uk
dig @8.8.8.8 subdomain.rbnk.uk
dig @1.1.1.1 subdomain.rbnk.uk

# Trace DNS resolution
dig +trace subdomain.rbnk.uk

# Check current DNS records
nslookup subdomain.rbnk.uk
host subdomain.rbnk.uk

# Check all DNS records for domain
dig rbnk.uk ANY

SSL/Certificate Commands

# Check certificate expiry
echo | openssl s_client -servername domain.com -connect domain.com:443 2>/dev/null | openssl x509 -noout -dates

# Force certificate renewal (Traefik)
rm -f /srv/dockerdata/traefik/letsencrypt/acme.json
docker restart traefik

System Monitoring

# CPU and Memory usage
htop

# Disk I/O
iotop

# Network connections
ss -tulpn

# Process tree
pstree -p

# System load
uptime

Emergency Commands

Service Won't Stop

# Force stop
docker kill CONTAINER_NAME

# Remove stuck container
docker rm -f CONTAINER_NAME

Disk Full

# Emergency cleanup
docker system prune -a -f
journalctl --vacuum-time=1d
apt clean

Port Conflicts

# Find what's using a port
lsof -i :PORT
netstat -tulpn | grep PORT

Useful Aliases

Add to ~/.bashrc:

# Docker shortcuts
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlogs='docker logs -f'

# Navigation
alias cddata='cd /srv/dockerdata'

# Service management
dstart() { cd /srv/dockerdata/$1 && docker compose up -d; }
dstop() { cd /srv/dockerdata/$1 && docker compose down; }
drestart() { cd /srv/dockerdata/$1 && docker compose restart; }

One-Liners

# Show all container IPs
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)

# Watch container resources
docker stats --no-stream

# Remove all stopped containers
docker container prune -f

# Show image sizes
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

# Follow all logs
docker compose logs -f --tail=10

# Quick backup
tar -czf backup-$(date +%Y%m%d).tar.gz /srv/dockerdata/SERVICE