Server Setup
- Docker
- CasaOS
Step 1: Create directories
mkdir -p cloud-dev-stack/{config,projects,init.d,shared}
cd cloud-dev-stack
Step 2: Download the files
# Container init script (desktop)
curl -fsSL https://raw.githubusercontent.com/Piero24/Cloud-Dev-Desktop/main/init.sh \
-o init.d/99-ssh.sh
chmod +x init.d/99-ssh.sh
# Container init script (vscode)
curl -fsSL https://raw.githubusercontent.com/Piero24/Cloud-Dev-Desktop/main/init.d/99-vscode-env.sh \
-o init.d/99-vscode-env.sh
chmod +x init.d/99-vscode-env.sh
# Plain Docker Compose file
curl -fsSL https://raw.githubusercontent.com/Piero24/Cloud-Dev-Desktop/main/compose.yaml \
-o compose.yaml
Step 3: Edit the values
nano compose.yaml
Replace in the desktop service:
CHANGE_ME_WEB_PASSWORD: login password for KasmVNC (desktop) and code-serverCHANGE_ME_SUDO_PASSWORD: sudo password, also used for SSH loginCHANGE_ME_ANTHROPIC_KEY: your Anthropic API keyCHANGE_ME_GIT_NAME/CHANGE_ME_GIT_EMAIL: your Git identityCHANGE_ME_GITHUB_TOKEN: GitHub fine grained PATCUSTOM_RES_W/CUSTOM_RES_H: desktop resolution (default 1920×1080)TZ: your timezone
The system username is locked to abc. The linuxserver base image uses it for the pre configured desktop and services. Changing it would break KasmVNC, SSH, and file permissions. SSH login: ssh -p 3434 abc@<server-ip>.
Desktop and vscode mount the same ./config volume as /config. They share shell config, git identity, nvm, Node, Claude Code, and all installed packages. Install something in one, it's available in the other.
Step 4: Start the stack
docker compose up -d
docker ps | grep dev-
You should see three containers: dev-desktop, dev-vscode, and dev-beszel-agent.
Step 5: Test direct access
| Test | URL / Command |
|---|---|
| Web desktop | http://<server-ip>:3000 KasmVNC login (user: abc, pass: PASSWORD) |
| Web VS Code | http://<server-ip>:9090 code-server login (pass: PASSWORD) |
| SSH | ssh -p 3434 abc@<server-ip> login with SUDO_PASSWORD |
If all four work, the stack is running correctly.
Step 1: Run the installer
The installer asks where to store data, downloads everything, and prints next steps:
curl -fsSL https://raw.githubusercontent.com/Piero24/Cloud-Dev-Desktop/main/install.sh | bash
It creates config/, projects/, init.d/, and shared/ under your chosen path (default: /DATA/AppData/cloud-dev).
Step 2: Edit the values
nano /DATA/AppData/cloud-dev/compose-casaos.yaml
Replace in the desktop service:
CHANGE_ME_WEB_PASSWORD: login password for KasmVNC (desktop) and code-serverCHANGE_ME_SUDO_PASSWORD: sudo password, also used for SSH loginCHANGE_ME_ANTHROPIC_KEY: your Anthropic API keyCHANGE_ME_GIT_NAME/CHANGE_ME_GIT_EMAIL: your Git identityCHANGE_ME_GITHUB_TOKEN: GitHub fine grained PATCUSTOM_RES_W/CUSTOM_RES_H: desktop resolution (default 1920×1080)TZ: your timezone
The system username is locked to abc. The linuxserver base image uses it for the pre configured desktop and services. Changing it would break KasmVNC, SSH, and file permissions. SSH login: ssh -p 3434 abc@<server-ip>.
Desktop and vscode mount the same config folder as /config. They share shell config, git identity, nvm, Node, Claude Code, and all installed packages. Install something in one, it's available in the other.
Step 3: Import into CasaOS
App Store → Custom Install (top right) → Import → Paste the content of compose-casaos.yaml → Submit
Step 4: Verify containers are running
docker ps | grep dev-
You should see three containers: dev-desktop, dev-vscode, and dev-beszel-agent.
Step 5: Test direct access
| Test | URL / Command |
|---|---|
| Web desktop | http://<casaos-ip>:3000 KasmVNC login (user: abc, pass: PASSWORD) |
| Web VS Code | http://<casaos-ip>:9090 code-server login (pass: PASSWORD) |
| SSH | ssh -p 3434 abc@<casaos-ip> login with SUDO_PASSWORD |
If all four work, the stack is running correctly.