fix: compilation errors and warnings
- Add SafeCommand import to botapp/src/desktop/tray.rs - Implement missing SecurityHeadersConfig and middleware in headers.rs - Remove unused CspBuilder from headers.rs - Remove unused ScriptService import in botserver/src/core/bot/mod.rs - Remove unused SERVER_START_EPOCH and server_epoch function
This commit is contained in:
parent
1388463695
commit
90ee0257cb
1 changed files with 0 additions and 407 deletions
407
AGENTS-PROD.md
407
AGENTS-PROD.md
|
|
@ -1,407 +0,0 @@
|
|||
# General Bots Cloud — Production Operations Guide
|
||||
|
||||
## Infrastructure Overview
|
||||
- **Host OS:** Ubuntu 24.04 LTS
|
||||
- **SSH:** Key auth only
|
||||
- **Container engine:** LXC (Linux Containers)
|
||||
- **Tenant:** pragmatismo
|
||||
|
||||
---
|
||||
|
||||
## PostgreSQL Container (tables) Management
|
||||
|
||||
### Container Info
|
||||
- **Container Name:** pragmatismo-tables
|
||||
- **Database:** PostgreSQL 14
|
||||
- **Access:** Inside LXC container on port 5432
|
||||
- **Data Location:** `/opt/gbo/tables/` inside container
|
||||
|
||||
### Common Operations
|
||||
|
||||
```bash
|
||||
# Check container status
|
||||
lxc list | grep pragmatismo-tables
|
||||
|
||||
# Exec into container
|
||||
lxc exec pragmatismo-tables -- bash
|
||||
|
||||
# Check PostgreSQL status
|
||||
lxc exec pragmatismo-tables -- pg_isready
|
||||
|
||||
# Query version
|
||||
lxc exec pragmatismo-tables -- psql -U postgres -c 'SELECT version();'
|
||||
|
||||
# Restart PostgreSQL
|
||||
lxc exec pragmatismo-tables -- systemctl restart postgresql
|
||||
```
|
||||
|
||||
### Backup PostgreSQL
|
||||
|
||||
```bash
|
||||
# Create database dump
|
||||
lxc exec pragmatismo-tables -- pg_dump -U postgres -F c -f /tmp/backup.dump pragmatismo
|
||||
|
||||
# Copy backup to host
|
||||
lxc file pull pragmatismo-tables/tmp/backup.dump ~/backups/postgresql-$(date +%Y%m%d).dump
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## LXC Container Status (82.29.59.188)
|
||||
|
||||
| Container | Status | Purpose | Notes |
|
||||
|-----------|--------|---------|-------|
|
||||
| **pragmatismo-dns** | ✅ RUNNING | CoreDNS | DNS server |
|
||||
| **pragmatismo-proxy** | ✅ RUNNING | Caddy | Reverse proxy on :80/:443 |
|
||||
| **pragmatismo-tables** | ✅ RUNNING | PostgreSQL 14 | Database |
|
||||
| **pragmatismo-system** | ✅ RUNNING | botserver | Bot system |
|
||||
| **pragmatismo-email** | ✅ RUNNING | Stalwart | Email server |
|
||||
| **pragmatismo-webmail** | ✅ RUNNING | Roundcube | Webmail interface |
|
||||
| **pragmatismo-alm** | ✅ RUNNING | Forgejo | Git/Code ALM |
|
||||
| **pragmatismo-alm-ci** | ✅ RUNNING | Runner | CI/CD runner |
|
||||
| **pragmatismo-drive** | ✅ RUNNING | MinIO | S3-compatible storage |
|
||||
|
||||
---
|
||||
|
||||
## LXC Container Management
|
||||
|
||||
### Common Commands
|
||||
|
||||
```bash
|
||||
# List all containers
|
||||
lxc list
|
||||
|
||||
# Show container details
|
||||
lxc info pragmatismo-dns
|
||||
|
||||
# Exec into container
|
||||
lxc exec pragmatismo-dns -- bash
|
||||
lxc exec pragmatismo-dns -- /bin/sh
|
||||
|
||||
# Start/Stop/Restart containers
|
||||
lxc start pragmatismo-dns
|
||||
lxc stop pragmatismo-dns
|
||||
lxc restart pragmatismo-dns
|
||||
|
||||
# View logs
|
||||
lxc log pragmatismo-dns
|
||||
lxc log pragmatismo-dns --show-log
|
||||
|
||||
# Copy files to/from container
|
||||
lxc file push localfile pragmatismo-dns/opt/gbo/conf/
|
||||
lxc file pull pragmatismo-dns/opt/gbo/logs/output.log .
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SSH Setup
|
||||
|
||||
### On Production Server
|
||||
|
||||
```bash
|
||||
# Add SSH public key for access
|
||||
mkdir -p /root/.ssh
|
||||
echo "<your-public-key>" >> /root/.ssh/authorized_keys
|
||||
chmod 700 /root/.ssh
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
### From This Machine
|
||||
|
||||
```bash
|
||||
# SSH key for passwordless access to production
|
||||
ssh-copy-id root@82.29.59.188
|
||||
|
||||
# Test connection
|
||||
ssh root@82.29.59.188 "lxc list"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## LXC Container Data Sync (rsync)
|
||||
|
||||
### Prerequisites
|
||||
- Source: SSH access as `root` to source host
|
||||
- Network: Same LAN or VPN connection between hosts
|
||||
|
||||
### Copy Individual Container Data
|
||||
|
||||
```bash
|
||||
# Copy specific container data (e.g., dns container)
|
||||
sudo rsync -avz --progress -e ssh \
|
||||
root@<source-host>:/opt/gbo/tenants/pragmatismo/dns/ \
|
||||
/opt/gbo/dns/
|
||||
|
||||
# Copy tables (PostgreSQL data)
|
||||
sudo rsync -avz --progress -e ssh \
|
||||
root@<source-host>:/opt/gbo/tenants/pragmatismo/tables/ \
|
||||
/opt/gbo/tables/
|
||||
|
||||
# Copy drive (MinIO/S3 data)
|
||||
sudo rsync -avz --progress -e ssh \
|
||||
root@<source-host>:/opt/gbo/tenants/pragmatismo/drive/ \
|
||||
/opt/gbo/drive/
|
||||
```
|
||||
|
||||
### Dry Run Before Copy
|
||||
|
||||
```bash
|
||||
# Preview what will be copied (no changes made)
|
||||
sudo rsync -avzn --progress -e ssh \
|
||||
root@<source-host>:/opt/gbo/tenants/pragmatismo/dns/ \
|
||||
/opt/gbo/dns/
|
||||
```
|
||||
|
||||
### Exclude Patterns
|
||||
|
||||
```bash
|
||||
# Exclude logs, temp files, and system directories
|
||||
sudo rsync -avz --progress -e ssh \
|
||||
--exclude='*.log' \
|
||||
--exclude='*.tmp' \
|
||||
--exclude='.git/' \
|
||||
--exclude='__pycache__/' \
|
||||
root@<source-host>:/opt/gbo/tenants/pragmatismo/ \
|
||||
/opt/gbo/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DNS Management (pragmatismo-dns)
|
||||
|
||||
### Container Info
|
||||
- **Container Name:** pragmatismo-dns
|
||||
- **Service:** CoreDNS
|
||||
- **Access:** Inside LXC container on port 53
|
||||
- **Config:** `/opt/gbo/dns/conf/Corefile` inside container
|
||||
|
||||
### Common Operations
|
||||
|
||||
```bash
|
||||
# Check container status
|
||||
lxc list | grep pragmatismo-dns
|
||||
|
||||
# View logs
|
||||
lxc log pragmatismo-dns
|
||||
lxc log pragmatismo-dns --show-log
|
||||
|
||||
# Restart DNS
|
||||
lxc restart pragmatismo-dns
|
||||
|
||||
# Exec into container
|
||||
lxc exec pragmatismo-dns -- /bin/sh
|
||||
|
||||
# Test DNS
|
||||
dig @localhost pragmatismo.com.br SOA +short
|
||||
dig @localhost ddsites.com.br SOA +short
|
||||
dig @localhost chat.pragmatismo.com.br A +short
|
||||
```
|
||||
|
||||
### Update DNS Records
|
||||
|
||||
```bash
|
||||
# Edit Corefile inside container
|
||||
lxc exec pragmatismo-dns -- nano /opt/gbo/dns/conf/Corefile
|
||||
|
||||
# Edit zone files inside container
|
||||
lxc exec pragmatismo-dns -- nano /opt/gbo/dns/data/pragmatismo.com.br.zone
|
||||
|
||||
# Restart CoreDNS after changes
|
||||
lxc exec pragmatismo-dns -- systemctl restart coredns
|
||||
# or if running as systemd service:
|
||||
lxc restart pragmatismo-dns
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DNS Cutover
|
||||
|
||||
Update NS/A records at your registrar:
|
||||
- **NS records:** Point to `ns1.pragmatismo.com.br` / `ns2.pragmatismo.com.br`
|
||||
- **A records:** Update to `82.29.59.188`
|
||||
|
||||
---
|
||||
|
||||
## Proxy/Caddy Management (pragmatismo-proxy)
|
||||
|
||||
### Container Info
|
||||
- **Container Name:** pragmatismo-proxy
|
||||
- **Service:** Caddy reverse proxy
|
||||
- **Access:** Inside LXC container on ports 80/443
|
||||
- **Config:** `/opt/gbo/proxy/conf/config` inside container
|
||||
|
||||
### Common Operations
|
||||
|
||||
```bash
|
||||
# Check container status
|
||||
lxc list | grep pragmatismo-proxy
|
||||
|
||||
# View logs
|
||||
lxc log pragmatismo-proxy
|
||||
lxc log pragmatismo-proxy --show-log
|
||||
|
||||
# Restart proxy
|
||||
lxc restart pragmatismo-proxy
|
||||
|
||||
# Exec into container
|
||||
lxc exec pragmatismo-proxy -- bash
|
||||
```
|
||||
|
||||
### Update Caddy Configuration
|
||||
|
||||
```bash
|
||||
# Edit Caddyfile inside container
|
||||
lxc exec pragmatismo-proxy -- nano /opt/gbo/proxy/conf/config
|
||||
|
||||
# Validate configuration
|
||||
lxc exec pragmatismo-proxy -- caddy validate --config /opt/gbo/proxy/conf/config --adapter caddyfile
|
||||
|
||||
# Reload Caddy after changes
|
||||
lxc exec pragmatismo-proxy -- caddy reload --config /opt/gbo/proxy/conf/config --adapter caddyfile
|
||||
|
||||
# Or restart the entire container
|
||||
lxc restart pragmatismo-proxy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Caddy Config — CRITICAL RULES
|
||||
|
||||
**NEVER replace the Caddyfile with a minimal/partial config.**
|
||||
The full config has ~25 vhosts.
|
||||
|
||||
**Before ANY change:**
|
||||
1. Backup: `lxc exec pragmatismo-proxy -- cp /opt/gbo/proxy/conf/config /opt/gbo/proxy/conf/config.bak-$(date +%Y%m%d%H%M)`
|
||||
2. Validate: `lxc exec pragmatismo-proxy -- caddy validate --config /opt/gbo/proxy/conf/config --adapter caddyfile`
|
||||
3. Reload: `lxc exec pragmatismo-proxy -- caddy reload --config /opt/gbo/proxy/conf/config --adapter caddyfile`
|
||||
|
||||
**Caddy storage must be explicitly set:**
|
||||
```
|
||||
{
|
||||
storage file_system {
|
||||
root /opt/gbo/data/caddy
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## Backup Strategy
|
||||
|
||||
**Location:** Host machine `/opt/gbo/backups/`
|
||||
|
||||
**Format:** `container-name-YYYYMMDD-HHMM.tar.gz`
|
||||
|
||||
**Schedule:** Twice daily (6am and 6pm) via cron
|
||||
|
||||
### Backup Individual Container
|
||||
|
||||
```bash
|
||||
# Backup container to tar.gz
|
||||
lxc snapshot pragmatismo-tables backup-$(date +%Y%m%d-%H%M)
|
||||
lxc publish pragmatismo-tables/backup-$(date +%Y%m%d-%H%M) --alias tables-backup-$(date +%Y%m%d-%H%M)
|
||||
lxc image export tables-backup-$(date +%Y%m%d-%H%M) /opt/gbo/backups/tables-$(date +%Y%m%d-%H%M).tar.gz
|
||||
|
||||
# List backups
|
||||
ls -la /opt/gbo/backups/
|
||||
|
||||
# Restore from backup
|
||||
lxc image import /opt/gbo/backups/tables-20260326-1227.tar.gz --alias tables-restore
|
||||
lxc init tables-restore pragmatismo-tables-restored
|
||||
lxc start pragmatismo-tables-restored
|
||||
```
|
||||
|
||||
### Backup PostgreSQL Database
|
||||
|
||||
```bash
|
||||
# Create database dump
|
||||
lxc exec pragmatismo-tables -- pg_dump -U postgres -F c -f /tmp/backup.dump pragmatismo
|
||||
|
||||
# Copy backup to host
|
||||
lxc file pull pragmatismo-tables/tmp/backup.dump /opt/gbo/backups/postgresql-$(date +%Y%m%d).dump
|
||||
```
|
||||
|
||||
**Retention:** Last 7 days
|
||||
|
||||
---
|
||||
|
||||
## Git Workflow
|
||||
|
||||
Push to both remotes:
|
||||
```bash
|
||||
cd <submodule>
|
||||
git push origin main
|
||||
git push alm main
|
||||
cd ..
|
||||
git add <submodule>
|
||||
git commit -m "Update submodule"
|
||||
git push alm main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Git Workflow
|
||||
|
||||
Push to both remotes:
|
||||
```bash
|
||||
cd <submodule>
|
||||
git push origin main
|
||||
git push alm main
|
||||
cd ..
|
||||
git add <submodule>
|
||||
git commit -m "Update submodule"
|
||||
git push alm main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting Common Issues
|
||||
|
||||
### Container Not Starting
|
||||
|
||||
```bash
|
||||
# Check container status
|
||||
lxc list
|
||||
|
||||
# View logs for startup issues
|
||||
lxc log pragmatismo-<container-name>
|
||||
lxc log pragmatismo-<container-name> --show-log
|
||||
|
||||
# Check resource usage
|
||||
lxc info pragmatismo-<container-name>
|
||||
|
||||
# Try manual start
|
||||
lxc start pragmatismo-<container-name>
|
||||
```
|
||||
|
||||
### Network Issues
|
||||
|
||||
```bash
|
||||
# Check container IP
|
||||
lxc list -c n,4
|
||||
|
||||
# Test connectivity from host
|
||||
lxc exec pragmatismo-dns -- ping -c 3 8.8.8.8
|
||||
|
||||
# Check DNS resolution
|
||||
lxc exec pragmatismo-system -- dig pragmatismo.com.br
|
||||
```
|
||||
|
||||
### Service Issues Inside Container
|
||||
|
||||
```bash
|
||||
# Check service status inside container
|
||||
lxc exec pragmatismo-<container> -- systemctl status <service>
|
||||
|
||||
# Restart service inside container
|
||||
lxc exec pragmatismo-<container> -- systemctl restart <service>
|
||||
|
||||
# View service logs
|
||||
lxc exec pragmatismo-<container> -- journalctl -u <service> -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
(End of file)
|
||||
Loading…
Add table
Reference in a new issue