450 lines
10 KiB
Markdown
450 lines
10 KiB
Markdown
|
|
# Claude Code Stack - Pre & Post Deployment Checklist
|
||
|
|
|
||
|
|
## ✅ Pre-Deployment Checklist
|
||
|
|
|
||
|
|
### Environment Preparation
|
||
|
|
- [ ] Anthropic API key obtained from https://console.anthropic.com/
|
||
|
|
- [ ] TrueNAS system is up and running
|
||
|
|
- [ ] Docker and Docker Compose installed on TrueNAS
|
||
|
|
- Verify: `ssh root@truenas-ip "docker --version"`
|
||
|
|
- Verify: `ssh root@truenas-ip "docker-compose --version"`
|
||
|
|
- [ ] SSH access to TrueNAS is working
|
||
|
|
- Test: `ssh root@your-truenas-ip "echo 'Connected'"`
|
||
|
|
- [ ] Sufficient disk space available (minimum 20GB)
|
||
|
|
- Check: `ssh root@truenas-ip "df -h"`
|
||
|
|
- [ ] Sufficient RAM (minimum 4GB allocated to Docker)
|
||
|
|
|
||
|
|
### Network Preparation
|
||
|
|
- [ ] TrueNAS IP address noted: _______________
|
||
|
|
- [ ] Firewall allows ports 3000, 5000, 5432, 6379, 80, 443
|
||
|
|
- [ ] No port conflicts on TrueNAS
|
||
|
|
- Check: `ssh root@truenas-ip "netstat -tuln | grep LISTEN"`
|
||
|
|
- [ ] DNS is correctly configured (if accessing via hostname)
|
||
|
|
|
||
|
|
### File Preparation
|
||
|
|
- [ ] All deployment files downloaded
|
||
|
|
- [ ] docker-compose.yml
|
||
|
|
- [ ] deploy-ssh.sh or deploy-mcp.py
|
||
|
|
- [ ] claude-code-stack.env
|
||
|
|
- [ ] nginx.conf
|
||
|
|
- [ ] Dockerfile (optional)
|
||
|
|
- [ ] deployment scripts have execute permissions
|
||
|
|
- Run: `chmod +x deploy-ssh.sh`
|
||
|
|
- Run: `chmod +x deploy-mcp.py`
|
||
|
|
|
||
|
|
### System Information (for reference)
|
||
|
|
- [ ] TrueNAS IP: _______________
|
||
|
|
- [ ] SSH Username: _______________
|
||
|
|
- [ ] Pool Name: _______________
|
||
|
|
- [ ] Anthropic API Key (first 10 chars): _______________
|
||
|
|
- [ ] PostgreSQL Password (secure): _______________
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Deployment Execution Checklist
|
||
|
|
|
||
|
|
### Method 1: SSH Deployment (Recommended)
|
||
|
|
|
||
|
|
- [ ] Set API key environment variable
|
||
|
|
```bash
|
||
|
|
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Run deployment script
|
||
|
|
```bash
|
||
|
|
chmod +x deploy-ssh.sh
|
||
|
|
./deploy-ssh.sh 192.168.1.100 root tank
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Monitor deployment progress
|
||
|
|
- [ ] Directory creation: `✓ created`
|
||
|
|
- [ ] Files uploaded: `✓ uploaded`
|
||
|
|
- [ ] Docker images pulled: `✓ pulled`
|
||
|
|
- [ ] Services started: `✓ started`
|
||
|
|
|
||
|
|
- [ ] Record deployment output
|
||
|
|
- [ ] Project directory: _______________
|
||
|
|
- [ ] Access URL: http://_______________:3000
|
||
|
|
- [ ] Start time: _______________
|
||
|
|
- [ ] End time: _______________
|
||
|
|
|
||
|
|
### Method 2: MCP Deployment
|
||
|
|
|
||
|
|
- [ ] Dependencies installed
|
||
|
|
```bash
|
||
|
|
pip install httpx
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] MCP server accessible
|
||
|
|
- Test: `curl https://mcp.wilddragon.net/mcp`
|
||
|
|
|
||
|
|
- [ ] Run deployment script
|
||
|
|
```bash
|
||
|
|
python deploy-mcp.py --mcp-url https://mcp.wilddragon.net/mcp --pool tank
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Monitor deployment status
|
||
|
|
- [ ] Directory created
|
||
|
|
- [ ] Files written
|
||
|
|
- [ ] Images pulled
|
||
|
|
- [ ] Services started
|
||
|
|
|
||
|
|
### Method 3: Manual Deployment
|
||
|
|
|
||
|
|
- [ ] SSH into TrueNAS
|
||
|
|
```bash
|
||
|
|
ssh root@your-truenas-ip
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Create directory
|
||
|
|
```bash
|
||
|
|
mkdir -p /mnt/tank/docker/claude-code-stack
|
||
|
|
cd /mnt/tank/docker/claude-code-stack
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Copy docker-compose.yml
|
||
|
|
- [ ] Copy .env file and update with API key
|
||
|
|
- [ ] Verify .env file
|
||
|
|
```bash
|
||
|
|
cat .env | grep ANTHROPIC_API_KEY
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Start services
|
||
|
|
```bash
|
||
|
|
docker-compose pull
|
||
|
|
docker-compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Verify services
|
||
|
|
```bash
|
||
|
|
docker-compose ps
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Post-Deployment Verification
|
||
|
|
|
||
|
|
### Immediate Verification (0-2 minutes)
|
||
|
|
|
||
|
|
- [ ] Docker services are running
|
||
|
|
```bash
|
||
|
|
docker-compose ps
|
||
|
|
```
|
||
|
|
Expected output:
|
||
|
|
```
|
||
|
|
NAME STATUS PORTS
|
||
|
|
claude-agents-ui Up (healthy) 0.0.0.0:3000->3000/tcp
|
||
|
|
claude-code-runtime Up (healthy) 0.0.0.0:5000->5000/tcp
|
||
|
|
claude-postgres Up (healthy) 0.0.0.0:5432->5432/tcp
|
||
|
|
claude-redis Up (healthy) 0.0.0.0:6379->6379/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] All services showing "healthy" status
|
||
|
|
- [ ] No error messages in deployment output
|
||
|
|
|
||
|
|
### Web Interface Verification (2-5 minutes)
|
||
|
|
|
||
|
|
- [ ] Access Agents UI
|
||
|
|
- URL: http://your-truenas-ip:3000
|
||
|
|
- [ ] Page loads successfully
|
||
|
|
- [ ] No console errors
|
||
|
|
|
||
|
|
- [ ] Check UI is responsive
|
||
|
|
- [ ] Can click menu items
|
||
|
|
- [ ] Can see available agents
|
||
|
|
- [ ] Can see command structure
|
||
|
|
|
||
|
|
### Service Health Check (5-10 minutes)
|
||
|
|
|
||
|
|
- [ ] Agents UI health check
|
||
|
|
```bash
|
||
|
|
curl http://localhost:3000/health
|
||
|
|
```
|
||
|
|
Expected: `healthy` response
|
||
|
|
|
||
|
|
- [ ] Claude Code backend responding
|
||
|
|
```bash
|
||
|
|
docker-compose logs claude-code-backend | tail -20
|
||
|
|
```
|
||
|
|
Look for: No error messages
|
||
|
|
|
||
|
|
- [ ] PostgreSQL is initialized
|
||
|
|
```bash
|
||
|
|
docker-compose exec postgres pg_isready -U claude
|
||
|
|
```
|
||
|
|
Expected: `accepting connections`
|
||
|
|
|
||
|
|
- [ ] Redis is running
|
||
|
|
```bash
|
||
|
|
docker-compose exec redis redis-cli ping
|
||
|
|
```
|
||
|
|
Expected: `PONG`
|
||
|
|
|
||
|
|
### Configuration Verification
|
||
|
|
|
||
|
|
- [ ] .env file is properly configured
|
||
|
|
- [ ] ANTHROPIC_API_KEY is set
|
||
|
|
- [ ] POSTGRES_PASSWORD is changed from default
|
||
|
|
- [ ] SESSION_SECRET is set
|
||
|
|
|
||
|
|
- [ ] Volumes are mounted correctly
|
||
|
|
```bash
|
||
|
|
docker-compose exec agents-ui ls -la /root/.claude
|
||
|
|
docker-compose exec agents-ui ls -la /workspace
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Network connectivity between services
|
||
|
|
```bash
|
||
|
|
docker-compose exec agents-ui ping -c 1 claude-code-backend
|
||
|
|
```
|
||
|
|
Expected: successful ping
|
||
|
|
|
||
|
|
### Data Persistence Verification
|
||
|
|
|
||
|
|
- [ ] PostgreSQL database is accessible
|
||
|
|
```bash
|
||
|
|
docker-compose exec postgres psql -U claude -d claude_agents -c "\dt"
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Redis data can be stored and retrieved
|
||
|
|
```bash
|
||
|
|
docker-compose exec redis redis-cli SET test_key "test_value"
|
||
|
|
docker-compose exec redis redis-cli GET test_key
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Initial Configuration Tasks
|
||
|
|
|
||
|
|
### First-Time Setup
|
||
|
|
|
||
|
|
- [ ] Access Agents UI at http://your-truenas-ip:3000
|
||
|
|
- [ ] Create initial agent
|
||
|
|
- [ ] Test agent with simple prompt
|
||
|
|
- [ ] Configure workspace directory
|
||
|
|
- [ ] Set up SSH keys for git operations (optional)
|
||
|
|
|
||
|
|
### Authentication Setup
|
||
|
|
|
||
|
|
- [ ] Verify Claude Code authentication
|
||
|
|
```bash
|
||
|
|
docker-compose exec claude-code-backend claude auth status
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] If needed, re-authenticate
|
||
|
|
```bash
|
||
|
|
docker-compose exec claude-code-backend claude auth login
|
||
|
|
```
|
||
|
|
|
||
|
|
### Workspace Configuration
|
||
|
|
|
||
|
|
- [ ] Create workspace structure
|
||
|
|
```bash
|
||
|
|
docker-compose exec agents-ui mkdir -p /workspace/{projects,agents,tools}
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Mount external projects (if applicable)
|
||
|
|
```bash
|
||
|
|
# Update docker-compose.yml volumes section
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔒 Security Post-Deployment Tasks
|
||
|
|
|
||
|
|
### Immediate Security
|
||
|
|
|
||
|
|
- [ ] Change PostgreSQL password
|
||
|
|
```bash
|
||
|
|
docker-compose exec postgres psql -U claude -c "ALTER USER claude WITH PASSWORD 'new-password';"
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Update SESSION_SECRET in .env
|
||
|
|
```bash
|
||
|
|
SESSION_SECRET=$(openssl rand -base64 32)
|
||
|
|
# Update .env and restart
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Restrict SSH access to TrueNAS (if possible)
|
||
|
|
|
||
|
|
### Recommended Security
|
||
|
|
|
||
|
|
- [ ] Enable SSL/TLS for web interface
|
||
|
|
- [ ] Configure firewall rules on TrueNAS
|
||
|
|
- [ ] Set up regular backups
|
||
|
|
- [ ] Configure log rotation
|
||
|
|
- [ ] Review and harden Nginx configuration
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Monitoring & Logging Setup
|
||
|
|
|
||
|
|
### Log Aggregation
|
||
|
|
|
||
|
|
- [ ] Set up log monitoring
|
||
|
|
```bash
|
||
|
|
docker-compose logs -f
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Configure log rotation (optional)
|
||
|
|
|
||
|
|
### Monitoring Tools
|
||
|
|
|
||
|
|
- [ ] Set up resource monitoring
|
||
|
|
```bash
|
||
|
|
docker stats
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Configure alerts (optional)
|
||
|
|
|
||
|
|
### Backup Strategy
|
||
|
|
|
||
|
|
- [ ] Create backup script
|
||
|
|
```bash
|
||
|
|
#!/bin/bash
|
||
|
|
docker-compose exec claude-code-backend tar czf - -C /root .claude | gzip > backup.tar.gz
|
||
|
|
docker-compose exec postgres pg_dump -U claude claude_agents > backup.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Schedule daily backups
|
||
|
|
- [ ] Test backup restoration
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚨 Troubleshooting Post-Deployment
|
||
|
|
|
||
|
|
### If Services Won't Start
|
||
|
|
|
||
|
|
- [ ] Check Docker daemon is running
|
||
|
|
```bash
|
||
|
|
docker ps
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Check logs for errors
|
||
|
|
```bash
|
||
|
|
docker-compose logs agents-ui
|
||
|
|
docker-compose logs claude-code-backend
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Verify API key format
|
||
|
|
```bash
|
||
|
|
grep ANTHROPIC_API_KEY .env
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Check port availability
|
||
|
|
```bash
|
||
|
|
netstat -tuln | grep 3000
|
||
|
|
```
|
||
|
|
|
||
|
|
### If UI Won't Load
|
||
|
|
|
||
|
|
- [ ] Verify service is running
|
||
|
|
```bash
|
||
|
|
docker-compose ps agents-ui
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Check network connectivity
|
||
|
|
```bash
|
||
|
|
curl -v http://localhost:3000
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Review browser console for errors
|
||
|
|
- [ ] Check DNS resolution
|
||
|
|
```bash
|
||
|
|
nslookup your-truenas-ip
|
||
|
|
```
|
||
|
|
|
||
|
|
### If Claude Code Won't Execute
|
||
|
|
|
||
|
|
- [ ] Verify API key is correct
|
||
|
|
```bash
|
||
|
|
docker-compose exec claude-code-backend echo $ANTHROPIC_API_KEY
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Check authentication status
|
||
|
|
```bash
|
||
|
|
docker-compose exec claude-code-backend claude auth status
|
||
|
|
```
|
||
|
|
|
||
|
|
- [ ] Test with simple prompt
|
||
|
|
```bash
|
||
|
|
docker-compose exec claude-code-backend claude "hello"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Documentation & Handoff
|
||
|
|
|
||
|
|
### Documentation Created
|
||
|
|
|
||
|
|
- [ ] Deployment notes saved
|
||
|
|
- [ ] Custom configuration documented
|
||
|
|
- [ ] Access credentials stored securely
|
||
|
|
- [ ] Network diagram created (if complex setup)
|
||
|
|
|
||
|
|
### Team Handoff (if applicable)
|
||
|
|
|
||
|
|
- [ ] Access credentials shared securely
|
||
|
|
- [ ] Deployment process documented
|
||
|
|
- [ ] Troubleshooting guide provided
|
||
|
|
- [ ] Emergency contact information shared
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎉 Final Checklist
|
||
|
|
|
||
|
|
### Deployment Success Criteria
|
||
|
|
|
||
|
|
- [ ] All services running and healthy
|
||
|
|
- [ ] Web UI accessible and responsive
|
||
|
|
- [ ] Claude Code can execute prompts
|
||
|
|
- [ ] Database is initialized
|
||
|
|
- [ ] Redis cache is working
|
||
|
|
- [ ] Logs show no critical errors
|
||
|
|
- [ ] All required ports are open
|
||
|
|
- [ ] API key is properly configured
|
||
|
|
|
||
|
|
### Deployment Complete When
|
||
|
|
|
||
|
|
- [x] Docker Compose stack deployed
|
||
|
|
- [x] All services are healthy
|
||
|
|
- [x] Web interface is accessible
|
||
|
|
- [x] Claude Code is responding
|
||
|
|
- [x] Database is initialized
|
||
|
|
- [x] Backups are configured
|
||
|
|
- [x] Security measures in place
|
||
|
|
- [x] Documentation complete
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 Sign-Off
|
||
|
|
|
||
|
|
**Deployment Date**: _______________
|
||
|
|
**Deployed By**: _______________
|
||
|
|
**System**: TrueNAS SCALE
|
||
|
|
**Pool**: _______________
|
||
|
|
**Project Directory**: _______________
|
||
|
|
**Access URL**: http://_______________:3000
|
||
|
|
|
||
|
|
**Notes**:
|
||
|
|
```
|
||
|
|
_____________________________________________________________________________
|
||
|
|
_____________________________________________________________________________
|
||
|
|
_____________________________________________________________________________
|
||
|
|
```
|
||
|
|
|
||
|
|
**Verification Complete**: ☐ Yes ☐ No
|
||
|
|
|
||
|
|
**Ready for Production**: ☐ Yes ☐ No (if No, list remaining items below)
|
||
|
|
|
||
|
|
```
|
||
|
|
_____________________________________________________________________________
|
||
|
|
_____________________________________________________________________________
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Deployment Package Version**: 1.0.0
|
||
|
|
**Last Updated**: 2026-04-04
|
||
|
|
**Checklist Version**: 1.0
|