Self-hosted web development environment with Jupyter Lab/Notebook, VS Code Server, SSH Terminal, and Web Dashboard - all with Cloudflare Tunnels and Email Notifications.
_____ _ _ _ _
/ ____| | | | | | |
| | | | ___ _ _ __| | | __ _| |__
| | | |/ _ \| | | |/ _` | | / _` | '_ \
| |____| | (_) | |_| | (_| | |___| (_| | |_) |
\_____|_|\___/ \__,_|\__,_|______\__,_|_.__/
(Note:- Windows Version and Docker Version is still under development. If you want to test CloudLab beta version for Windows and Docker then change the branch to multi-platform and follow the README file instructions.)
- 📓 Jupyter Lab & Notebook - Full Python notebook environment
- 💻 VS Code Server - Browser-based code editor
- 🔒 SSH Terminal - Web-based terminal access (ttyd)
- 📊 Web Dashboard - Manage everything from browser
- 🌐 Cloudflare Tunnels - Free public URLs (no account needed!)
- 📧 Email Notifications - Receive all URLs via email
- 🐍 Kernel Management - Add/remove Jupyter kernels
- 📦 Environment Management - Create Python environments
- ⚡ MPS/CUDA Support - GPU acceleration for Apple/NVIDIA
- 🔋 Low Power Mode - Energy efficient
# 1. Clone
git clone https://github.com/Sakib-Dalal/cloudlab.git
cd cloudlab
# 2. Build
chmod +x build.sh
./build.sh
# 3. Initialize
cloudlab init
# 4. Install components
cloudlab install all
# 5. Start everything
cloudlab start all
# 6. Check status
cloudlab statuscloudlab start all # Start all services + tunnels
cloudlab start jupyter # Start Jupyter Lab
cloudlab start notebook # Start Jupyter Notebook
cloudlab start vscode # Start VS Code
cloudlab start ssh # Start SSH Terminal
cloudlab start dashboard # Start Web Dashboard
cloudlab stop all # Stop everything
cloudlab restart all # Restart everything
cloudlab status # Show status and URLscloudlab tunnel start # Start all tunnels, get public URLs
cloudlab tunnel stop # Stop all tunnels
cloudlab tunnel restart # Get new URLs
cloudlab tunnel status # Show current URLscloudlab ssh start # Start SSH terminal
cloudlab ssh stop # Stop SSH terminal
cloudlab ssh config # Configure SSH settings
cloudlab ssh status # Show SSH statuscloudlab dashboard start # Start web dashboard
cloudlab dashboard stop # Stop dashboard
cloudlab dashboard status # Show dashboard statuscloudlab email setup # Configure email (Gmail, Outlook, etc.)
cloudlab email test # Send test email
cloudlab email send # Send all tunnel URLs via emailcloudlab kernel list # List Jupyter kernels
cloudlab kernel add mykernel 3.10 # Add kernel with Python 3.10
cloudlab kernel remove mykernel # Remove kernelcloudlab env list # List Python environments
cloudlab env create myenv 3.11 # Create Python 3.11 environment
cloudlab env remove myenv # Remove environment
cloudlab env install numpy # Install packagecloudlab config # Show config
cloudlab config set jupyter_mode notebook # Change Jupyter mode
cloudlab config set working_directory /path # Set project directory
cloudlab config reset # Reset to defaultsCloudLab uses Cloudflare Quick Tunnels (TryCloudflare):
- ✅ No Cloudflare account required
- ✅ Creates URLs like
https://random-words.trycloudflare.com - ✅ All 4 services get their own tunnel (Jupyter, VS Code, SSH, Dashboard)
⚠️ URLs change when you restart tunnels
# Get new URLs
cloudlab tunnel restart
# Send URLs to email
cloudlab email send- Go to https://myaccount.google.com/apppasswords
- Create App Password for "Mail"
- Use during
cloudlab initorcloudlab email setup
- Go to https://account.microsoft.com/security
- Enable 2FA
- Create App Password
Access the dashboard at http://localhost:3000:
- View all service status
- Start/stop services with one click
- Copy tunnel URLs
- View credentials
- Run terminal commands
- Manage kernels and environments
~/.cloudlab/
├── config.json # Configuration
├── venv/ # Main Python environment
├── envs/ # Additional environments
├── logs/ # Service logs
│ ├── jupyter.log
│ ├── vscode.log
│ ├── ssh.log
│ ├── dashboard.log
│ └── tunnel_*.log
├── pids/ # Process IDs
├── dashboard.html # Web dashboard
└── server.py # Dashboard server
| Key | Description | Default |
|---|---|---|
jupyter_port |
Jupyter port | 8888 |
vscode_port |
VS Code port | 8080 |
ssh_port |
SSH Terminal port | 7681 |
dashboard_port |
Dashboard port | 3000 |
jupyter_mode |
lab or notebook |
lab |
python_version |
Python version | 3.11 |
working_directory |
Project directory | ~ |
jupyter_password |
Jupyter password | Auto-generated |
vscode_password |
VS Code password | Auto-generated |
ssh_user |
SSH username | Current user |
email_address |
Notification email | - |
# Check logs
cloudlab logs jupyter
cloudlab logs vscode
cloudlab logs ssh
# Reinstall
cloudlab install jupyter
cloudlab install vscode
cloudlab install ssh# Restart tunnels
cloudlab tunnel restart
# Check tunnel logs
cloudlab logs tunnel_jupyter
cloudlab logs tunnel_vscode
cloudlab logs tunnel_ssh
cloudlab logs tunnel_dashboard# Test email config
cloudlab email test
# Re-setup email
cloudlab email setupSakib Dalal
- GitHub: @Sakib-Dalal
MIT License
Made with ❤️ by Sakib Dalal



