Runbook: Deploy New Service
Overview
- What: Deploy a new Docker service to RavenmaskOS
- When: Adding new application or capability
- Duration: 15-30 minutes
Prerequisites
- SSH access to odin
- Docker permissions (ravenhelm user)
- Service-specific configuration requirements
Procedure
Step 1: Create Service Directory
cd ~/ravenhelm/services
cp -r _template <service-name>
cd <service-name>
Step 2: Create Data Directory
mkdir -p ../../data/<service-name>
Step 3: Edit docker-compose.yml
Update:
image:- Correct image and tagcontainer_name:- Match service namevolumes:- Map data directorylabels:- Traefik routingenvironment:- Service variables
Step 4: Link Secrets
ln -sf ../../secrets/.env .env
Step 5: Add New Secrets (if needed)
# Generate secret
../../scripts/utils/generate-secret.sh 32
# Add to .env
nano ../../secrets/.env
Step 6: Deploy
docker compose up -d
Step 7: Verify
docker compose ps
docker compose logs -f
Verification
# Container running
docker ps | grep <service-name>
# Traefik routing (if exposed)
curl -I https://<service-name>.ravenhelm.dev
Rollback
docker compose down
rm -rf ../../data/<service-name>
cd .. && rm -rf <service-name>
Troubleshooting
Container exits immediately
Check logs:
docker compose logs
Traefik not routing
- Verify labels in docker-compose.yml
- Check container is on ravenhelm_net
- Verify DNS resolves