A comprehensive, production-ready development stack with Supabase PostgreSQL integration, automated backups, and Tailscale networking.
- AI & LLM: Ollama + OpenWebUI for local AI chat interface
- Automation: n8n workflow automation platform
- Storage: MinIO S3-compatible object storage
- Database: Supabase PostgreSQL with automated backups
- Monitoring: Grafana + Prometheus for comprehensive monitoring
- Notebooks: Kaggle Jupyter notebooks with GPU support
- Docker Management: Portainer for container management
- Networking: Tailscale mesh networking with static IPs
- Security: Let's Encrypt SSL certificates
- Backup: Automated daily database backups with 30-day retention
- Simplified Setup: Pre-configured credentials for personal use
- Host: Your Supabase host (e.g.,
db.xxxxxxxx.supabase.co) - Port:
5432 - Database:
postgres - User:
postgres - Password: See
.env.example
- OpenWebUI: User data, chat history, and configurations
- n8n: Workflow definitions and execution history
- Grafana: Dashboard configurations and user settings
- Jupyter: Database connections for data analysis
- Schedule: Daily at 2:00 AM
- Retention: 30 days
- Format: Compressed SQL dumps
- Location:
supabase_backupsDocker volume
- All application data stored in Supabase PostgreSQL
- Consistent data access across all services
- Built-in Supabase features: real-time subscriptions, row-level security
- Docker & Docker Compose
- Tailscale (for networking)
- Git
-
Clone the repository:
git clone https://github.com/Jblast94/Dev-Stack-Clean.git cd Dev-Stack-Clean -
Run the deployment script:
chmod +x deploy-supabase-stack.sh ./deploy-supabase-stack.sh
-
Configure DNS records:
- Import
cloudflare-dns-records.csvinto Cloudflare - Replace
[TAILSCALE_IP]with your actual Tailscale IP
- Import
| Service | URL | Description |
|---|---|---|
| OpenWebUI | https://chat.bbj4u.xyz | AI Chat Interface |
| n8n | https://n8n.bbj4u.xyz | Workflow Automation |
| MinIO | https://s3.bbj4u.xyz | Object Storage |
| Adminer | https://db.bbj4u.xyz | Database Management |
| Grafana | https://monitor.bbj4u.xyz | Monitoring Dashboard |
| Prometheus | https://metrics.bbj4u.xyz | Metrics Collection |
| Jupyter | https://notebook.bbj4u.xyz | Data Science Notebooks |
| Portainer | https://docker.bbj4u.xyz | Docker Management |
A pre-configured .env file is included with simplified credentials:
- Username: jblast
- Password: password123
- Email: [email protected]
All services use these same credentials for simplicity in this personal stack.
- Update
cloudflare-dns-records.csvwith your Tailscale IP - Import the CSV file into Cloudflare DNS
- Ensure all domains point to your Tailscale node
- Frequency: Daily at 2:00 AM
- Retention: 30 days automatic cleanup
- Format: Compressed PostgreSQL dumps
- Monitoring: Logs available via Docker
# Create immediate backup
docker exec supabase-backup /scripts/backup.sh
# View backup files
docker exec supabase-backup ls -la /backups/
# Check backup logs
docker logs supabase-backup# Extract backup
docker exec supabase-backup gunzip /backups/backup_YYYYMMDD_HHMMSS.sql.gz
# Restore to Supabase (use with caution)
psql -h ${SUPABASE_HOST} -p ${SUPABASE_PORT} -U ${SUPABASE_DB_USER} -d ${SUPABASE_DB_NAME} < backup_file.sql- SSL/TLS: Automatic Let's Encrypt certificates
- Network Isolation: Tailscale mesh networking
- Authentication: Basic auth for n8n, token-based for Jupyter
- Database Security: Supabase built-in security features
- Resource Limits: CPU and memory constraints for all services
- System metrics and performance
- Application-specific monitoring
- Database connection and query metrics
- Backup system status
- Container resource usage
- Network performance
- Service health checks
- Custom application metrics
Kaggle Jupyter notebooks include:
- NVIDIA GPU access
- CUDA toolkit
- Popular ML/AI libraries
- Direct database connectivity
-
Services not accessible:
# Check Tailscale status tailscale status # Verify DNS records nslookup chat.bbj4u.xyz
-
Database connection issues:
# Test Supabase connectivity docker exec supabase-backup pg_isready -h ${SUPABASE_HOST} -p ${SUPABASE_PORT}
-
Backup failures:
# Check backup logs docker logs supabase-backup # Manual backup test docker exec supabase-backup /scripts/backup.sh
# View all services
docker-compose logs -f
# Specific service
docker-compose logs -f [service-name]
# Real-time monitoring
docker-compose ps# Pull latest images
docker-compose pull
# Restart with updates
docker-compose up -d# Remove old containers
docker system prune
# Clean unused volumes (careful!)
docker volume prune# Scale specific services
docker-compose up -d --scale prometheus=2MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
For issues and questions:
- Create an issue in this repository
- Check the troubleshooting section
- Review Docker and Tailscale documentation