120 lines
2.8 KiB
Markdown
120 lines
2.8 KiB
Markdown
|
|
# 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.
|