# Go Vault Quick Start ## TL;DR - Run Vault in Docker Container ### One-Time Setup ```bash # 1. Rebuild Docker image with vault binary cd ~/src/cmc-sales docker compose -f docker-compose.prod.yml build cmc-prod-go docker compose -f docker-compose.prod.yml up -d cmc-prod-go # 2. Verify vault binary exists docker exec -t cmc-prod-go ls -lh /root/vault # 3. Test run manually docker exec -t cmc-prod-go ./vault --mode=local \ --vaultdir=/var/www/vaultmsgs/new \ --processeddir=/var/www/vaultmsgs/cur \ --emaildir=/var/www/emails \ --dbhost=cmc-prod-db \ --dbuser=cmc \ --dbpass="xVRQI&cA?7AU=hqJ!%au" \ --dbname=cmc # 4. Copy cron script to server # (assuming you're on your local machine) scp scripts/vault-cron-prod.sh cmc@sales.cmctechnologies.com.au:~/scripts/ ssh cmc@sales.cmctechnologies.com.au chmod +x ~/scripts/vault-cron-prod.sh mkdir -p ~/logs # 5. Add to crontab crontab -e # Add: */5 * * * * /home/cmc/scripts/vault-cron-prod.sh ``` ### Manual Run (for testing) ```bash # Run vault once docker exec -t cmc-prod-go ./vault --mode=local \ --vaultdir=/var/www/vaultmsgs/new \ --processeddir=/var/www/vaultmsgs/cur \ --emaildir=/var/www/emails \ --dbhost=cmc-prod-db \ --dbuser=cmc \ --dbpass="xVRQI&cA?7AU=hqJ!%au" \ --dbname=cmc ``` ### Monitor Logs ```bash # Watch the log file tail -f ~/logs/vault-go.log # Check cron is running crontab -l ps aux | grep cron ``` ## Command Variations ### Local Mode (filesystem processing) ```bash docker exec -t cmc-prod-go ./vault --mode=local \ --vaultdir=/var/www/vaultmsgs/new \ --processeddir=/var/www/vaultmsgs/cur \ --emaildir=/var/www/emails \ --dbhost=cmc-prod-db \ --dbuser=cmc \ --dbpass="xVRQI&cA?7AU=hqJ!%au" \ --dbname=cmc ``` ### Gmail Index Mode (requires OAuth setup) ```bash docker exec -t cmc-prod-go ./vault --mode=index \ --gmail-query="is:unread newer_than:1d" \ --credentials=credentials.json \ --token=token.json \ --dbhost=cmc-prod-db \ --dbuser=cmc \ --dbpass="xVRQI&cA?7AU=hqJ!%au" \ --dbname=cmc ``` ## Troubleshooting ### Vault binary not found ```bash docker compose -f docker-compose.prod.yml build cmc-prod-go docker compose -f docker-compose.prod.yml up -d cmc-prod-go ``` ### Check what's in vaultmsgs/new ```bash ls -la /home/cmc/files/vaultmsgs/new/ ``` ### Database connection test ```bash docker exec -it cmc-prod-go sh nc -zv cmc-prod-db 3306 ``` ### Check if directories are mounted ```bash docker exec -it cmc-prod-go ls -la /var/www/vaultmsgs/ ``` ## Files Changed - [Dockerfile.prod.go](../Dockerfile.prod.go) - Added vault binary build - [docker-compose.prod.yml](../docker-compose.prod.yml) - Added volume mounts for vault directories - [scripts/vault-cron-prod.sh](vault-cron-prod.sh) - Cron script See [VAULT_DEPLOYMENT.md](VAULT_DEPLOYMENT.md) for full documentation.