473 lines
9.6 KiB
Markdown
473 lines
9.6 KiB
Markdown
# Stoatchat Troubleshooting Guide
|
|
|
|
Common issues and solutions for the Stoatchat deployment on Seattle VM.
|
|
|
|
## Quick Diagnostics
|
|
|
|
### Check All Services Status
|
|
```bash
|
|
# SSH to Seattle VM
|
|
ssh root@YOUR_WAN_IP
|
|
|
|
# Check Stoatchat processes
|
|
ps aux | grep revolt
|
|
|
|
# Check ports
|
|
ss -tlnp | grep -E "(14702|14703|14704|14705|14706|7880)"
|
|
|
|
# Check Docker services
|
|
cd /root/stoatchat
|
|
docker-compose ps
|
|
|
|
# Check nginx
|
|
systemctl status nginx
|
|
```
|
|
|
|
### Test All Endpoints
|
|
```bash
|
|
# Test locally on server
|
|
curl -k https://api.st.vish.gg/ --resolve api.st.vish.gg:443:127.0.0.1
|
|
curl -k https://files.st.vish.gg/ --resolve files.st.vish.gg:443:127.0.0.1
|
|
curl -k https://proxy.st.vish.gg/ --resolve proxy.st.vish.gg:443:127.0.0.1
|
|
curl -k https://voice.st.vish.gg/ --resolve voice.st.vish.gg:443:127.0.0.1
|
|
|
|
# Test externally
|
|
curl https://api.st.vish.gg/
|
|
curl https://files.st.vish.gg/
|
|
curl https://proxy.st.vish.gg/
|
|
curl https://voice.st.vish.gg/
|
|
```
|
|
|
|
## Common Issues
|
|
|
|
### 1. Services Not Starting
|
|
|
|
#### Symptoms
|
|
- `ps aux | grep revolt` shows no processes
|
|
- Ports not listening
|
|
- Connection refused errors
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
cd /root/stoatchat
|
|
|
|
# Check if binaries exist
|
|
ls -la target/debug/revolt-*
|
|
|
|
# Try starting manually to see errors
|
|
./target/debug/revolt-delta
|
|
|
|
# Check logs
|
|
tail -f api.log events.log files.log proxy.log gifbox.log
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Rebuild if binaries missing
|
|
cargo build
|
|
|
|
# Check configuration
|
|
cat Revolt.overrides.toml | grep -E "(mongodb|redis|s3_)"
|
|
|
|
# Restart infrastructure services
|
|
docker-compose down && docker-compose up -d
|
|
|
|
# Wait for services to be ready
|
|
sleep 30
|
|
|
|
# Start Stoatchat services
|
|
nohup ./target/debug/revolt-delta > api.log 2>&1 &
|
|
nohup ./target/debug/revolt-bonfire > events.log 2>&1 &
|
|
nohup ./target/debug/revolt-autumn > files.log 2>&1 &
|
|
nohup ./target/debug/revolt-january > proxy.log 2>&1 &
|
|
nohup ./target/debug/revolt-gifbox > gifbox.log 2>&1 &
|
|
```
|
|
|
|
### 2. Database Connection Issues
|
|
|
|
#### Symptoms
|
|
- Services start but crash immediately
|
|
- "Connection refused" in logs
|
|
- MongoDB/Redis errors
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check Docker services
|
|
docker-compose ps
|
|
|
|
# Test MongoDB connection
|
|
docker exec stoatchat-mongodb mongo --eval "db.adminCommand('ismaster')"
|
|
|
|
# Test Redis connection
|
|
docker exec stoatchat-redis redis-cli ping
|
|
|
|
# Check configuration
|
|
grep -E "(mongodb|redis)" /root/stoatchat/Revolt.overrides.toml
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Restart infrastructure
|
|
docker-compose restart
|
|
|
|
# Check MongoDB logs
|
|
docker-compose logs database
|
|
|
|
# Check Redis logs
|
|
docker-compose logs redis
|
|
|
|
# Verify ports are accessible
|
|
telnet 127.0.0.1 27017
|
|
telnet 127.0.0.1 6380
|
|
```
|
|
|
|
### 3. SSL Certificate Issues
|
|
|
|
#### Symptoms
|
|
- SSL errors in browser
|
|
- Certificate expired warnings
|
|
- nginx fails to start
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check certificate validity
|
|
openssl x509 -in /etc/letsencrypt/live/api.st.vish.gg/fullchain.pem -text -noout | grep -A2 "Validity"
|
|
|
|
# Check nginx configuration
|
|
nginx -t
|
|
|
|
# Check certificate files exist
|
|
ls -la /etc/letsencrypt/live/*/
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Renew certificates
|
|
certbot renew
|
|
|
|
# Or renew specific certificate
|
|
certbot renew --cert-name api.st.vish.gg
|
|
|
|
# Test renewal
|
|
certbot renew --dry-run
|
|
|
|
# Reload nginx after renewal
|
|
systemctl reload nginx
|
|
```
|
|
|
|
### 4. File Upload Issues
|
|
|
|
#### Symptoms
|
|
- File uploads fail
|
|
- 413 Request Entity Too Large
|
|
- MinIO connection errors
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check MinIO status
|
|
docker-compose logs minio
|
|
|
|
# Test MinIO connection
|
|
curl http://127.0.0.1:14009/minio/health/live
|
|
|
|
# Check nginx file size limits
|
|
grep client_max_body_size /etc/nginx/sites-available/stoatchat
|
|
|
|
# Check MinIO credentials
|
|
grep -A5 "\[files\]" /root/stoatchat/Revolt.overrides.toml
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Restart MinIO
|
|
docker-compose restart minio
|
|
|
|
# Check MinIO bucket exists
|
|
docker exec stoatchat-minio mc ls local/
|
|
|
|
# Create bucket if missing
|
|
docker exec stoatchat-minio mc mb local/revolt-uploads
|
|
|
|
# Increase nginx file size limit if needed
|
|
sed -i 's/client_max_body_size 100M;/client_max_body_size 500M;/' /etc/nginx/sites-available/stoatchat
|
|
systemctl reload nginx
|
|
```
|
|
|
|
### 5. WebSocket Connection Issues
|
|
|
|
#### Symptoms
|
|
- Events service returns 502
|
|
- WebSocket connections fail
|
|
- Real-time features not working
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check events service
|
|
curl -k https://events.st.vish.gg/ --resolve events.st.vish.gg:443:127.0.0.1
|
|
|
|
# Check if service is listening
|
|
ss -tlnp | grep 14703
|
|
|
|
# Check nginx WebSocket configuration
|
|
grep -A10 "events.st.vish.gg" /etc/nginx/sites-available/stoatchat
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Restart events service
|
|
pkill -f revolt-bonfire
|
|
nohup ./target/debug/revolt-bonfire > events.log 2>&1 &
|
|
|
|
# Check WebSocket headers in nginx
|
|
# Ensure these are present:
|
|
# proxy_set_header Upgrade $http_upgrade;
|
|
# proxy_set_header Connection "upgrade";
|
|
|
|
# Test WebSocket connection (if wscat available)
|
|
wscat -c wss://events.st.vish.gg/
|
|
```
|
|
|
|
### 6. LiveKit Voice Issues
|
|
|
|
#### Symptoms
|
|
- Voice/video not working
|
|
- LiveKit returns errors
|
|
- Connection timeouts
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check LiveKit status
|
|
docker-compose logs livekit
|
|
|
|
# Test LiveKit endpoint
|
|
curl -k https://voice.st.vish.gg/ --resolve voice.st.vish.gg:443:127.0.0.1
|
|
|
|
# Check LiveKit configuration
|
|
cat /root/stoatchat/livekit.yml
|
|
|
|
# Check if using correct image
|
|
docker images | grep livekit
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Restart LiveKit
|
|
docker-compose restart livekit
|
|
|
|
# Check Redis connection for LiveKit
|
|
docker exec stoatchat-redis redis-cli ping
|
|
|
|
# Verify LiveKit configuration
|
|
# Ensure Redis address matches: localhost:6380
|
|
|
|
# Check firewall for UDP ports
|
|
ufw status | grep 7882
|
|
```
|
|
|
|
### 7. Email/SMTP Issues
|
|
|
|
#### Symptoms
|
|
- Email verification not working
|
|
- SMTP connection errors
|
|
- Authentication failures
|
|
|
|
#### Diagnosis
|
|
```bash
|
|
# Check SMTP configuration
|
|
grep -A10 "\[email\]" /root/stoatchat/Revolt.overrides.toml
|
|
|
|
# Test SMTP connection
|
|
telnet smtp.gmail.com 587
|
|
|
|
# Check logs for SMTP errors
|
|
grep -i smtp /root/stoatchat/*.log
|
|
```
|
|
|
|
#### Solutions
|
|
```bash
|
|
# Verify Gmail App Password is correct
|
|
# Check if 2FA is enabled on Gmail account
|
|
# Ensure "Less secure app access" is not needed (use App Password instead)
|
|
|
|
# Test SMTP manually
|
|
openssl s_client -starttls smtp -connect smtp.gmail.com:587
|
|
```
|
|
|
|
## Performance Issues
|
|
|
|
### High CPU Usage
|
|
```bash
|
|
# Check which service is using CPU
|
|
top -p $(pgrep -d',' revolt)
|
|
|
|
# Check for memory leaks
|
|
ps aux --sort=-%mem | grep revolt
|
|
|
|
# Monitor resource usage
|
|
htop
|
|
```
|
|
|
|
### High Memory Usage
|
|
```bash
|
|
# Check memory usage per service
|
|
ps aux --sort=-%mem | grep revolt
|
|
|
|
# Check Docker container usage
|
|
docker stats
|
|
|
|
# Check system memory
|
|
free -h
|
|
```
|
|
|
|
### Slow Response Times
|
|
```bash
|
|
# Check nginx access logs
|
|
tail -f /var/log/nginx/access.log
|
|
|
|
# Check service logs for slow queries
|
|
grep -i "slow\|timeout" /root/stoatchat/*.log
|
|
|
|
# Test response times
|
|
time curl https://api.st.vish.gg/
|
|
```
|
|
|
|
## Log Analysis
|
|
|
|
### Service Logs Location
|
|
```bash
|
|
cd /root/stoatchat
|
|
|
|
# Main service logs
|
|
tail -f api.log # API server
|
|
tail -f events.log # WebSocket events
|
|
tail -f files.log # File server
|
|
tail -f proxy.log # Media proxy
|
|
tail -f gifbox.log # GIF service
|
|
|
|
# System logs
|
|
journalctl -u nginx -f
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### Common Log Patterns
|
|
```bash
|
|
# Database connection errors
|
|
grep -i "connection.*refused\|timeout" *.log
|
|
|
|
# Authentication errors
|
|
grep -i "auth\|login\|token" *.log
|
|
|
|
# File upload errors
|
|
grep -i "upload\|s3\|minio" *.log
|
|
|
|
# WebSocket errors
|
|
grep -i "websocket\|upgrade" *.log
|
|
```
|
|
|
|
## Recovery Procedures
|
|
|
|
### Complete Service Restart
|
|
```bash
|
|
cd /root/stoatchat
|
|
|
|
# Stop all Stoatchat services
|
|
pkill -f revolt-
|
|
|
|
# Restart infrastructure
|
|
docker-compose down
|
|
docker-compose up -d
|
|
|
|
# Wait for services to be ready
|
|
sleep 30
|
|
|
|
# Start Stoatchat services
|
|
nohup ./target/debug/revolt-delta > api.log 2>&1 &
|
|
nohup ./target/debug/revolt-bonfire > events.log 2>&1 &
|
|
nohup ./target/debug/revolt-autumn > files.log 2>&1 &
|
|
nohup ./target/debug/revolt-january > proxy.log 2>&1 &
|
|
nohup ./target/debug/revolt-gifbox > gifbox.log 2>&1 &
|
|
|
|
# Restart nginx
|
|
systemctl restart nginx
|
|
```
|
|
|
|
### Emergency Rebuild
|
|
```bash
|
|
cd /root/stoatchat
|
|
|
|
# Stop services
|
|
pkill -f revolt-
|
|
|
|
# Clean build
|
|
cargo clean
|
|
cargo build
|
|
|
|
# Restart everything
|
|
docker-compose down && docker-compose up -d
|
|
sleep 30
|
|
|
|
# Start services with new binaries
|
|
./start-services.sh # If you created this script
|
|
```
|
|
|
|
### Database Recovery
|
|
```bash
|
|
# If MongoDB is corrupted
|
|
docker-compose stop database
|
|
docker volume rm stoatchat_mongodb_data # WARNING: This deletes data
|
|
docker-compose up -d database
|
|
|
|
# Restore from backup if available
|
|
# mongorestore --uri="mongodb://127.0.0.1:27017/revolt" /path/to/backup
|
|
```
|
|
|
|
## Monitoring Commands
|
|
|
|
### Health Check Script
|
|
```bash
|
|
#!/bin/bash
|
|
# Save as /root/stoatchat/health-check.sh
|
|
|
|
echo "=== Stoatchat Health Check ==="
|
|
echo "Date: $(date)"
|
|
echo
|
|
|
|
echo "=== Process Status ==="
|
|
ps aux | grep revolt | grep -v grep
|
|
|
|
echo -e "\n=== Port Status ==="
|
|
ss -tlnp | grep -E "(14702|14703|14704|14705|14706|7880)"
|
|
|
|
echo -e "\n=== Docker Services ==="
|
|
cd /root/stoatchat && docker-compose ps
|
|
|
|
echo -e "\n=== Nginx Status ==="
|
|
systemctl is-active nginx
|
|
|
|
echo -e "\n=== Endpoint Tests ==="
|
|
for endpoint in api files proxy voice; do
|
|
echo -n "$endpoint.st.vish.gg: "
|
|
curl -s -o /dev/null -w "%{http_code}" https://$endpoint.st.vish.gg/ || echo "FAIL"
|
|
done
|
|
|
|
echo -e "\n=== Disk Usage ==="
|
|
df -h /root/stoatchat
|
|
|
|
echo -e "\n=== Memory Usage ==="
|
|
free -h
|
|
```
|
|
|
|
### Automated Monitoring
|
|
```bash
|
|
# Add to crontab for regular health checks
|
|
# crontab -e
|
|
# */5 * * * * /root/stoatchat/health-check.sh >> /var/log/stoatchat-health.log 2>&1
|
|
```
|
|
|
|
## Contact Information
|
|
|
|
For additional support:
|
|
- Repository: https://github.com/stoatchat/stoatchat
|
|
- Documentation: Check /root/stoatchat/docs/
|
|
- Logs: /root/stoatchat/*.log
|
|
- Configuration: /root/stoatchat/Revolt.overrides.toml |