Self-hosted Web Development
Environment

Turn any computer into a remote development environment with Jupyter Lab, VS Code Server, SSH Terminal, Web Dashboard, and Cloudflare Tunnels

By Sakib Dalal Go 1.21+ MIT License v1.2.0
Quick Install
git clone https://github.com/Sakib-Dalal/cloudlab.git && cd cloudlab && ./build.sh

✨ Features

Everything you need for remote development in one powerful CLI tool

Jupyter Lab & Notebook

Full Python notebook environment for data science and development

VS Code Server

Browser-based code editor with full extension support

SSH Terminal

Web-based terminal access via ttyd - no SSH client needed

NEW

Web Dashboard

Manage all services, view URLs, and control everything from browser

Cloudflare Tunnels

Free public URLs - no Cloudflare account required!

Email Notifications

Receive all tunnel URLs automatically via email

Kernel Management

Add/remove Jupyter kernels with different Python versions

Environment Management

Create and manage Python virtual environments easily

MPS/CUDA Support

GPU acceleration for Apple Silicon and NVIDIA cards

🆕 What's New in v1.2.0

Major update with Web Dashboard

📊 Web Dashboard

Manage everything from your browser! No more command line needed for basic operations.

Service Control - Start/stop with one click
Status Overview - See all services at once
Copy URLs - Quick access to tunnel URLs
Credentials - View passwords instantly
# Start the dashboard
cloudlab start dashboard

# Access at http://localhost:3000

# Or start everything including dashboard
cloudlab start all

SSH Terminal (v1.1.0)

Browser-based terminal via ttyd with Cloudflare tunnel support

Email Notifications

All 4 service URLs now included in email notifications

NEW in v1.2.0

📊 Web Dashboard

Manage everything from your browser at http://localhost:3000

CloudLab Dashboard
Jupyter

Port 8888

https://xyz.trycloudflare.com

VS Code

Port 8080

https://abc.trycloudflare.com

SSH

Port 7681

https://def.trycloudflare.com

Dashboard

Port 3000

https://ghi.trycloudflare.com

Service Control

Start, stop, and restart any service with a single click

Quick Copy URLs

Copy tunnel URLs to clipboard instantly

View Credentials

See all passwords and access credentials

Dashboard Commands

Command Description
cloudlab start dashboardStart web dashboard
cloudlab stop dashboardStop dashboard
cloudlab dashboard startStart dashboard (alternative)
cloudlab dashboard stopStop dashboard (alternative)
cloudlab dashboard statusShow dashboard status
cloudlab logs dashboardView dashboard logs

🖥️ Screenshots

📋 Prerequisites

Install Go on your system before getting started

macOS

Terminal
brew install go

Linux (Ubuntu/Debian)

Terminal
                                
sudo rm -rf /usr/local/go
                                
                            
Terminal
                                
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
                                
                            
Terminal
                                
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
                                
                            
Terminal
                                
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
                                
                            
Terminal
                                
source ~/.bashrc
                                
                            

Windows (beta)

PowerShell (Admin)
winget install GoLang.Go

🚀 Quick Start

Get up and running in minutes

1

Clone the repository

Terminal
git clone https://github.com/Sakib-Dalal/cloudlab.git
cd cloudlab
2

Build the CLI

Terminal
chmod +x build.sh
./build.sh
3

Initialize (interactive setup)

Terminal
cloudlab init
4

Install all components

Terminal
cloudlab install all
5

Start everything

Terminal
cloudlab start all

This starts Jupyter, VS Code, SSH Terminal, Dashboard, and all tunnels!

6

Check status

Terminal
cloudlab status

📖 Commands Reference

Complete list of all available commands

Service Commands

Command Description
cloudlab start allStart all services + tunnels
cloudlab start jupyterStart Jupyter Lab
cloudlab start notebookStart Jupyter Notebook
cloudlab start vscodeStart VS Code Server
cloudlab start sshStart SSH Terminal
cloudlab start dashboardStart Web Dashboard NEW
cloudlab stop allStop all services
cloudlab restart allRestart all services
cloudlab statusShow status and URLs
cloudlab logs <service>View service logs

Tunnel Commands

Command Description
cloudlab tunnel startStart all tunnels, get public URLs
cloudlab tunnel stopStop all tunnels
cloudlab tunnel restartGet new URLs
cloudlab tunnel statusShow current URLs

SSH Terminal Commands

Command Description
cloudlab ssh startStart SSH terminal
cloudlab ssh stopStop SSH terminal
cloudlab ssh configConfigure SSH settings
cloudlab ssh statusShow SSH status

Email Commands

Command Description
cloudlab email setupConfigure email (Gmail, Outlook, etc.)
cloudlab email testSend test email
cloudlab email sendSend all tunnel URLs via email

Kernel Commands

Command Description
cloudlab kernel listList Jupyter kernels
cloudlab kernel add <name> <version>Add kernel with Python version
cloudlab kernel remove <name>Remove kernel

Environment Commands

Command Description
cloudlab env listList Python environments
cloudlab env create <name> <version>Create new environment
cloudlab env remove <name>Remove environment
cloudlab env install <package>Install package

Configuration Commands

Command Description
cloudlab configShow current configuration
cloudlab config set <key> <value>Set configuration value
cloudlab config resetReset to defaults

⚙️ Configuration Options

Customize CloudLab to your needs

All Settings

Key Description Default
jupyter_portJupyter port8888
vscode_portVS Code port8080
ssh_portSSH Terminal port7681
dashboard_portDashboard port NEW3000
jupyter_modelab or notebooklab
python_versionPython version3.11
working_directoryProject directory~
jupyter_passwordJupyter passwordAuto-generated
vscode_passwordVS Code passwordAuto-generated
ssh_userSSH usernameCurrent user
email_addressNotification email-

Configuration Examples

# Change Jupyter mode

cloudlab config set jupyter_mode notebook

# Change working directory

cloudlab config set working_directory /path/to/projects

# Change dashboard port

cloudlab config set dashboard_port 4000

# Change SSH port

cloudlab config set ssh_port 7777

🏗️ Architecture

How CloudLab components work together

🌐 Tunnel URLs

After starting tunnels, you'll get four public URLs:

Jupyter

:8888

VS Code

:8080

SSH

:7681

Dashboard

:3000

📧 Email Setup

Configure email notifications to receive all tunnel URLs

Gmail

  1. 1 Go to myaccount.google.com/apppasswords
  2. 2 Create an App Password for "Mail"
  3. 3 Use this password with cloudlab email setup

Outlook / Hotmail

  1. 1 Go to account.microsoft.com/security
  2. 2 Enable Two-Factor Authentication
  3. 3 Create an App Password

📬 Email Contents

When you run cloudlab email send, you'll receive:

Jupyter URL
VS Code URL
SSH URL
Dashboard URL

📁 File Locations

Where CloudLab stores its data

~/.cloudlab/
├── config.json          # Configuration
├── venv/                # Main Python environment
├── envs/                # Additional environments
│   └── <name>/          # Named environments
├── logs/
│   ├── jupyter.log
│   ├── vscode.log
│   ├── ssh.log
│   ├── dashboard.log    # Dashboard logs (NEW!)
│   └── tunnel_*.log
├── pids/
│   ├── jupyter.pid
│   ├── vscode.pid
│   ├── ssh.pid
│   ├── dashboard.pid    # Dashboard PID (NEW!)
│   └── tunnel_*.pid
├── vscode-data/         # VS Code user data
├── dashboard.html       # Web dashboard (NEW!)
└── server.py            # Dashboard server (NEW!)

🔧 Troubleshooting

Common issues and solutions

# 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 setup
cloudlab stop all
cloudlab config reset
cloudlab init

🌐 How Tunnels Work

CloudLab uses Cloudflare Quick Tunnels (TryCloudflare)

Benefits

  • No Cloudflare account required
  • Creates temporary public URLs
  • Free to use
  • Secure HTTPS connections
  • All 4 services get their own tunnel

Note

  • URLs change when you restart tunnels
  • URLs are random like: random-words.trycloudflare.com

# To get new URLs:

cloudlab tunnel restart
cloudlab email send  # Send new URLs to your email