Deployment Guide
Multiple deployment methods for rmtPocketWatcher backend.
Method 1: Portainer with Git Repository
Best for: Teams using Portainer for container management
Setup in Portainer UI:
- Go to Stacks → Add Stack → Git Repository
- Configure:
- Name: rmtpocketwatcher
- Repository URL: Your Git repo URL
- Reference: refs/heads/main
- Compose path: deploy/portainer-stack.yml
- Add environment variables:
POSTGRES_PASSWORD: your_secure_passwordIMAGE_TAG: latest
- Deploy
Update via Webhook:
- In Portainer, enable webhook for the stack
- Add webhook URL to Gitea secrets:
PORTAINER_WEBHOOK_URL - Push to main branch triggers auto-deploy
Update via API Script:
export PORTAINER_URL="http://your-portainer:9000"
export PORTAINER_API_KEY="your_api_key"
export POSTGRES_PASSWORD="your_password"
export GIT_REPO_URL="https://your-git-repo.git"
chmod +x deploy/portainer-deploy.sh
./deploy/portainer-deploy.sh
Method 2: Direct Docker via SSH
Best for: Simple deployments to a single Docker host
export DOCKER_HOST="your-server.com"
export DOCKER_USER="deploy"
export GIT_REPO="https://your-git-repo.git"
chmod +x deploy/docker-deploy.sh
./deploy/docker-deploy.sh
For local deployment:
export DOCKER_HOST="localhost"
export GIT_REPO="https://your-git-repo.git"
./deploy/docker-deploy.sh
Method 3: Gitea Actions (Automated)
Best for: CI/CD pipeline automation
Setup:
-
Add secrets to your Gitea repository:
DOCKER_HOST: your-server.comDOCKER_USER: deployDOCKER_SSH_KEY: Your SSH private key
-
Push to main branch or modify backend files
-
Workflow automatically builds and deploys
Manual trigger:
- Go to Actions → Deploy Backend to Docker → Run workflow
Method 4: Portainer API via Gitea Actions
Best for: Portainer users with CI/CD
Setup:
-
Get Portainer API key:
- Portainer → User Settings → Access tokens → Add access token
-
Add secrets to Gitea:
PORTAINER_URL: http://your-portainer:9000PORTAINER_API_KEY: your_api_keyPORTAINER_STACK_ID: stack_id (from Portainer URL)PORTAINER_WEBHOOK_URL: webhook URL (optional)
-
Manually trigger workflow or use webhook
Environment Variables
Required for all methods:
POSTGRES_PASSWORD: Database password
Optional:
POSTGRES_USER: Database user (default: rmtpw)POSTGRES_DB: Database name (default: rmtpocketwatcher)BACKEND_PORT: Backend port (default: 3000)SCRAPE_INTERVAL: Minutes between scrapes (default: 5)SCRAPER_TIMEOUT: Scraper timeout in ms (default: 30000)SCRAPER_MAX_RETRIES: Max retry attempts (default: 3)
Monitoring
Check deployment status:
docker-compose ps
docker-compose logs -f backend
Via Portainer:
- Stacks → rmtpocketwatcher → Container logs
Rollback
Portainer:
- Go to Stack → Editor
- Change
IMAGE_TAGto previous version - Update stack
Direct Docker:
cd /opt/rmtpocketwatcher
git checkout <previous-commit>
docker-compose up -d --build backend
Troubleshooting
Stack won't start:
- Check environment variables are set
- Verify database connection
- Check logs:
docker-compose logs backend
Portainer API fails:
- Verify API key is valid
- Check endpoint ID matches your environment
- Ensure Portainer version supports Git deployment
SSH deployment fails:
- Verify SSH key has correct permissions (600)
- Check user has Docker permissions
- Ensure Git is installed on remote host