Update memory bank: document automated deployment workflow with deploy.sh
This commit is contained in:
parent
1d63dfddef
commit
ee5f7bcb6e
1 changed files with 60 additions and 69 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
# DeafGain Website - AI Assistant Memory Bank
|
# DeafGain Website - AI Assistant Memory Bank
|
||||||
|
|
||||||
## IMPORTANT: User Profile & Expectations
|
## IMPORTANT: User Profile & Expectations
|
||||||
|
|
@ -37,9 +38,9 @@
|
||||||
### SSH Production Access (Chaulmark's Account)
|
### SSH Production Access (Chaulmark's Account)
|
||||||
- **Server**: 10.4.0.205
|
- **Server**: 10.4.0.205
|
||||||
- **SSH User**: `chaulmark`
|
- **SSH User**: `chaulmark`
|
||||||
- **Project Path**: `/docker/websites/deafgain/`
|
- **Project Path**: `/home/chaulmark/websites/deafgain.org`
|
||||||
- **Purpose**: Deploy Docker containers on production server
|
- **Purpose**: Deploy Docker containers on production server
|
||||||
- **VPN Required**: Yes - Must connect via WireGuard VPN first (use `vpn-manager.command`)
|
- **VPN Required**: Yes - Automatically handled by `deploy.sh` script
|
||||||
|
|
||||||
### Production Environment
|
### Production Environment
|
||||||
- **URL**: https://deafgain.org/
|
- **URL**: https://deafgain.org/
|
||||||
|
|
@ -60,13 +61,18 @@
|
||||||
git commit -m "Descriptive message"
|
git commit -m "Descriptive message"
|
||||||
git push
|
git push
|
||||||
```
|
```
|
||||||
6. **Connect VPN**: User runs `vpn-manager.command` to connect to private network
|
6. **Deploy to Production** (Automated via deploy.sh):
|
||||||
7. **Deploy to Production** (SSH as chaulmark):
|
|
||||||
```bash
|
```bash
|
||||||
ssh chaulmark@10.4.0.205 "cd /docker/websites/deafgain/ && git pull && docker-compose up --build -d"
|
./deploy.sh
|
||||||
```
|
```
|
||||||
8. **Verify**: Check https://deafgain.org/ to confirm changes live
|
This script automatically:
|
||||||
9. **Report**: Tell user "Done! Changes are live at deafgain.org"
|
- Connects to VPN via WireGuard
|
||||||
|
- Tests server connectivity
|
||||||
|
- SSHs to production server
|
||||||
|
- Pulls latest changes from Git
|
||||||
|
- Rebuilds and restarts Docker containers
|
||||||
|
7. **Verify**: Check https://deafgain.org/ to confirm changes live
|
||||||
|
8. **Report**: Tell user "Done! Changes are live at deafgain.org"
|
||||||
|
|
||||||
### Git Commands I Use (User Never Runs These)
|
### Git Commands I Use (User Never Runs These)
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -84,45 +90,34 @@ git diff
|
||||||
git log --oneline -15
|
git log --oneline -15
|
||||||
```
|
```
|
||||||
|
|
||||||
### Production Deployment (I Execute via SSH)
|
### Automated Production Deployment
|
||||||
|
The production server is on a private network (10.4.0.0/24) requiring VPN access. All deployment is now automated via `deploy.sh` script.
|
||||||
|
|
||||||
|
**Deployment Script**: `deploy.sh` in project root
|
||||||
|
- Automatically connects VPN via WireGuard
|
||||||
|
- Tests server connectivity
|
||||||
|
- SSHs to production and deploys
|
||||||
|
|
||||||
|
**What deploy.sh does**:
|
||||||
|
1. Checks if VPN is connected, connects if needed
|
||||||
|
2. Tests connectivity to 10.4.0.205
|
||||||
|
3. SSHs to chaulmark@10.4.0.205
|
||||||
|
4. Changes to `/home/chaulmark/websites/deafgain.org`
|
||||||
|
5. Runs `git pull` to get latest code
|
||||||
|
6. Runs `docker compose up --build -d` to rebuild containers
|
||||||
|
7. Reports success
|
||||||
|
|
||||||
|
**When I Need to Deploy**:
|
||||||
```bash
|
```bash
|
||||||
# FIRST: User must connect VPN using vpn-manager.command
|
./deploy.sh
|
||||||
# Then I can proceed with SSH deployment
|
|
||||||
|
|
||||||
# SSH into production server as chaulmark
|
|
||||||
ssh chaulmark@10.4.0.205
|
|
||||||
|
|
||||||
# Navigate to project
|
|
||||||
cd /docker/websites/deafgain/
|
|
||||||
|
|
||||||
# Pull latest changes
|
|
||||||
git pull
|
|
||||||
|
|
||||||
# Rebuild and restart containers
|
|
||||||
docker-compose up --build -d
|
|
||||||
|
|
||||||
# Monitor logs (if needed)
|
|
||||||
docker-compose logs -f
|
|
||||||
|
|
||||||
# Exit SSH
|
|
||||||
exit
|
|
||||||
```
|
```
|
||||||
|
That's it! The script handles VPN, SSH, Git pull, and Docker rebuild automatically.
|
||||||
|
|
||||||
### VPN Connection (User Runs)
|
**Manual VPN Tool** (Optional): `vpn-manager.command`
|
||||||
The production server is on a private network (10.4.0.0/24) requiring VPN access.
|
- Interactive menu-driven script for manual VPN management
|
||||||
|
- Can connect/disconnect VPN manually
|
||||||
**Tool**: `vpn-manager.command` in project root
|
|
||||||
- Interactive menu-driven script
|
|
||||||
- Manages WireGuard VPN connection
|
|
||||||
- Tests connectivity to production server
|
- Tests connectivity to production server
|
||||||
|
|
||||||
**When I Need Deployment**:
|
|
||||||
1. I ask user: "Please connect VPN using vpn-manager.command"
|
|
||||||
2. User runs the script and selects "Connect to VPN"
|
|
||||||
3. Script confirms connection to 10.4.0.205
|
|
||||||
4. I proceed with SSH deployment
|
|
||||||
5. User can disconnect VPN when done (optional)
|
|
||||||
|
|
||||||
## Token Management (If Needed)
|
## Token Management (If Needed)
|
||||||
|
|
||||||
### When Token Expires:
|
### When Token Expires:
|
||||||
|
|
@ -235,11 +230,9 @@ git pull
|
||||||
4. I edit Services.tsx, add to relationshipPoints array
|
4. I edit Services.tsx, add to relationshipPoints array
|
||||||
5. I commit: "Add RID conference to Missoula MT on interactive map"
|
5. I commit: "Add RID conference to Missoula MT on interactive map"
|
||||||
6. I push: git push
|
6. I push: git push
|
||||||
7. I ask: "Please connect VPN using vpn-manager.command"
|
7. I deploy: ./deploy.sh (handles VPN, SSH, git pull, docker rebuild automatically)
|
||||||
8. User connects VPN
|
8. I verify: Check https://deafgain.org/services
|
||||||
9. I deploy: ssh chaulmark@10.4.0.205 "cd /docker/websites/deafgain/ && git pull && docker-compose up --build -d"
|
9. I report: "Done! RID conference added to map at deafgain.org"
|
||||||
10. I verify: Check https://deafgain.org/services
|
|
||||||
11. I report: "Done! RID conference added to map at deafgain.org"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Task: "Add New Video"
|
### Task: "Add New Video"
|
||||||
|
|
@ -256,11 +249,9 @@ git pull
|
||||||
6. I test locally: pnpm dev (verify video plays)
|
6. I test locally: pnpm dev (verify video plays)
|
||||||
7. I commit: "Add new video: [Title]"
|
7. I commit: "Add new video: [Title]"
|
||||||
8. I push: git push
|
8. I push: git push
|
||||||
9. I ask: "Please connect VPN using vpn-manager.command"
|
9. I deploy: ./deploy.sh (handles VPN, SSH, git pull, docker rebuild automatically)
|
||||||
10. User connects VPN
|
10. I verify: Check https://deafgain.org/resources
|
||||||
11. I deploy: ssh chaulmark@10.4.0.205 "cd /docker/websites/deafgain/ && git pull && docker-compose up --build -d"
|
11. I report: "Done! New video '[Title]' is live on resources page"
|
||||||
12. I verify: Check https://deafgain.org/resources
|
|
||||||
13. I report: "Done! New video '[Title]' is live on resources page"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Task: "Update Services/Content"
|
### Task: "Update Services/Content"
|
||||||
|
|
@ -271,10 +262,8 @@ git pull
|
||||||
4. I make changes
|
4. I make changes
|
||||||
5. I commit: "Update [page]: [description]"
|
5. I commit: "Update [page]: [description]"
|
||||||
6. I push: git push
|
6. I push: git push
|
||||||
7. I ask: "Please connect VPN using vpn-manager.command"
|
7. I deploy: ./deploy.sh (handles VPN, SSH, git pull, docker rebuild automatically)
|
||||||
8. User connects VPN
|
8. I report: "Done! Changes live at deafgain.org"
|
||||||
9. I deploy: ssh chaulmark@10.4.0.205 "cd /docker/websites/deafgain/ && git pull && docker-compose up --build -d"
|
|
||||||
10. I report: "Done! Changes live at deafgain.org"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Task: "Fix Bug/Issue"
|
### Task: "Fix Bug/Issue"
|
||||||
|
|
@ -286,11 +275,9 @@ git pull
|
||||||
5. I test fix locally: pnpm dev
|
5. I test fix locally: pnpm dev
|
||||||
6. I commit: "Fix [issue description]"
|
6. I commit: "Fix [issue description]"
|
||||||
7. I push: git push
|
7. I push: git push
|
||||||
8. I ask: "Please connect VPN using vpn-manager.command"
|
8. I deploy: ./deploy.sh (handles VPN, SSH, git pull, docker rebuild automatically)
|
||||||
9. User connects VPN
|
9. I verify fix: Test on live site
|
||||||
10. I deploy: ssh chaulmark@10.4.0.205 "cd /docker/websites/deafgain/ && git pull && docker-compose up --build -d"
|
10. I report: "Fixed! [Explanation of what was wrong and what I did]"
|
||||||
11. I verify fix: Test on live site
|
|
||||||
12. I report: "Fixed! [Explanation of what was wrong and what I did]"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Critical Files I Work With
|
## Critical Files I Work With
|
||||||
|
|
@ -332,7 +319,12 @@ API_URL=http://localhost:804
|
||||||
```
|
```
|
||||||
|
|
||||||
## Recent History (Reference Only)
|
## Recent History (Reference Only)
|
||||||
- **March 5, 2026**: Cloned repo, created memory bank, established AI assistant role
|
- **March 5, 2026**:
|
||||||
|
- Cloned repo, created memory bank, established AI assistant role
|
||||||
|
- Created automated deployment script (deploy.sh) with VPN and Docker rebuild
|
||||||
|
- Installed WireGuard for VPN connectivity
|
||||||
|
- Fixed server path to /home/chaulmark/websites/deafgain.org
|
||||||
|
- Successfully tested full automated deployment workflow
|
||||||
- **January 26, 2026**: Added RID conference to Missoula MT
|
- **January 26, 2026**: Added RID conference to Missoula MT
|
||||||
- **January 20, 2026**: Added anti-spam honeypot
|
- **January 20, 2026**: Added anti-spam honeypot
|
||||||
- **January 9, 2026**: Fixed email (SMTP 587, new Gmail password)
|
- **January 9, 2026**: Fixed email (SMTP 587, new Gmail password)
|
||||||
|
|
@ -350,7 +342,7 @@ API_URL=http://localhost:804
|
||||||
**What I Do**: Check coordinates format `[-long, lat]`, verify array syntax, test locally, fix and redeploy
|
**What I Do**: Check coordinates format `[-long, lat]`, verify array syntax, test locally, fix and redeploy
|
||||||
|
|
||||||
### Issue: "Changes not live on website"
|
### Issue: "Changes not live on website"
|
||||||
**What I Do**: Ensure VPN is connected, SSH to production, pull latest, rebuild Docker containers with `--build` flag
|
**What I Do**: Run `./deploy.sh` to automatically connect VPN, SSH to production, pull latest, rebuild Docker containers
|
||||||
|
|
||||||
### Issue: "Git token expired"
|
### Issue: "Git token expired"
|
||||||
**What I Tell User**: "Please generate new token at gitea.sigd.net → Settings → Applications → Access Tokens"
|
**What I Tell User**: "Please generate new token at gitea.sigd.net → Settings → Applications → Access Tokens"
|
||||||
|
|
@ -373,11 +365,11 @@ API_URL=http://localhost:804
|
||||||
## Quick Reference
|
## Quick Reference
|
||||||
|
|
||||||
### User Says → AI Does
|
### User Says → AI Does
|
||||||
- "Add [Event] to map" → Get coordinates, edit Services.tsx, commit, push, ask for VPN, deploy
|
- "Add [Event] to map" → Get coordinates, edit Services.tsx, commit, push, run deploy.sh
|
||||||
- "Add video [Title]" → Save 4 files, edit Resources.tsx, commit, push, ask for VPN, deploy
|
- "Add video [Title]" → Save 4 files, edit Resources.tsx, commit, push, run deploy.sh
|
||||||
- "Update [Page] content" → Edit page file, commit, push, ask for VPN, deploy
|
- "Update [Page] content" → Edit page file, commit, push, run deploy.sh
|
||||||
- "Email not working" → Diagnose, fix .env or code, commit, push, ask for VPN, deploy
|
- "Email not working" → Diagnose, fix .env or code, commit, push, run deploy.sh
|
||||||
- "Fix [problem]" → Diagnose, fix code, test locally, commit, push, ask for VPN, deploy
|
- "Fix [problem]" → Diagnose, fix code, test locally, commit, push, run deploy.sh
|
||||||
|
|
||||||
### AI Never Asks User To:
|
### AI Never Asks User To:
|
||||||
- ❌ Run git commands
|
- ❌ Run git commands
|
||||||
|
|
@ -392,8 +384,7 @@ API_URL=http://localhost:804
|
||||||
- ✅ Test locally when possible
|
- ✅ Test locally when possible
|
||||||
- ✅ Commit with clear messages
|
- ✅ Commit with clear messages
|
||||||
- ✅ Push to Git repository
|
- ✅ Push to Git repository
|
||||||
- ✅ Ask user to connect VPN before deployment
|
- ✅ Deploy to production via `./deploy.sh` (handles VPN and everything automatically)
|
||||||
- ✅ Deploy to production via SSH (once VPN connected)
|
|
||||||
- ✅ Verify changes are live
|
- ✅ Verify changes are live
|
||||||
- ✅ Report completion simply
|
- ✅ Report completion simply
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue