git clone ssh://git@git.fsociety.hu:10022/fszontagh/appserver.git
cd appserver
cp .env.example .env
# Edit .env with your specific configuration
docker compose up -d
docker compose ps
# All services should show "Up" or "Healthy" status
admin@example.com / your_admin_passwordyour_minio_user / your_minio_passwordadmin / your_grafana_passwordssl/ directorynginx/conf.d/default.conf for HTTPSdocker compose restart api-gatewayUpdate .env file:
# Replace localhost with your domain
SAAS_API_URL=https://your-domain.com:8888
SAAS_AUTH_URL=https://your-domain.com:8888/auth
SAAS_STORAGE_URL=https://your-domain.com:8888/storage
Change all default passwords:
# Database
POSTGRES_PASSWORD=your_secure_db_password
# Redis
REDIS_PASSWORD=your_secure_redis_password
# JWT Secret
JWT_SECRET=your_very_long_jwt_secret_key
# MinIO
MINIO_SECRET_KEY=your_secure_minio_secret
# Grafana
GRAFANA_PASSWORD=your_secure_grafana_password
# pgAdmin
PGADMIN_PASSWORD=your_secure_pgadmin_password
Set up firewall rules:
# Allow only necessary ports
sudo ufw allow 8888/tcp # API Gateway
sudo ufw allow 5050/tcp # pgAdmin (restrict IP if possible)
sudo ufw allow 3003/tcp # Grafana (restrict IP if possible)
Configure backup strategy:
Resource Allocation:
# In docker-compose.yml
services:
postgres:
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
api-service:
deploy:
resources:
limits:
memory: 1G
reservations:
memory: 512M
Database Optimization:
-- In PostgreSQL
ALTER SYSTEM SET shared_buffers = '256MB';
ALTER SYSTEM SET effective_cache_size = '1GB';
ALTER SYSTEM SET maintenance_work_mem = '64MB';
SELECT pg_reload_conf();
monitoring/grafana/# View all service logs
docker compose logs -f
# View specific service logs
docker compose logs -f api-service
# Export logs for backup
docker compose logs --no-color > application-logs-$(date +%Y%m%d).txt
# Add more API instances
services:
api-service:
deploy:
replicas: 3
# Update nginx to load balance
api-gateway:
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
# Database backup
docker compose exec postgres pg_dump -U saas_user saas_db > backup/db_$DATE.sql
# Application backup
tar -czf backup/apps_$DATE.tar.gz apps/
# Configuration backup
tar -czf backup/config_$DATE.tar.gz .env docker-compose.yml nginx/ ssl/
# Cleanup old backups (keep 7 days)
find backup/ -name "*.sql" -mtime +7 -delete
find backup/ -name "*.tar.gz" -mtime +7 -delete
# Stop services
docker compose down
# Restore database
docker compose up -d postgres
sleep 30
docker compose exec -T postgres psql -U saas_user saas_db < backup/db_YYYYMMDD_HHMMSS.sql
# Restore applications
tar -xzf backup/apps_YYYYMMDD_HHMMSS.tar.gz
# Start all services
docker compose up -d
Services won't start:
# Check logs
docker compose logs service-name
# Verify environment variables
docker compose exec service-name env | grep -E "(DATABASE|REDIS|JWT)"
Database connection issues:
# Test connection
docker compose exec postgres psql -U saas_user -d saas_db -c "SELECT 1;"
# Check network
docker compose exec api-service ping postgres
High memory usage:
# Monitor container resources
docker stats
# Clean up unused images
docker image prune -a
SSL certificate issues:
# Verify certificate
openssl x509 -in ssl/cert.pem -text -noout
# Check nginx configuration
docker compose exec api-gateway nginx -t
# Database performance
docker compose exec postgres psql -U saas_user saas_db -c "
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;"
# Application performance
docker compose exec api-service npm run check-memory
# Install globally for Claude Desktop
cd mcp-server
npm install -g .
# Test installation
mcp-saas-server --version
Add to ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"saas-platform": {
"command": "mcp-saas-server",
"env": {
"SAAS_API_URL": "https://your-domain.com:8888",
"SAAS_AUTH_URL": "https://your-domain.com:8888/auth",
"SAAS_STORAGE_URL": "https://your-domain.com:8888/storage",
"DEBUG": "false"
}
}
}
}
# Test MCP server
mcp-saas-server
# In Claude Desktop, test with:
"Login to my SaaS platform with email admin@example.com"
README.mdmcp-server/README.mdCLAUDE_DESKTOP_CONFIG.md# Pull latest changes
git pull origin main
# Update and restart services
docker compose pull
docker compose up -d --force-recreate