Prerequisites
RamNode VPS Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
| CPU | 1 vCPU | 2+ vCPUs |
| RAM | 2 GB | 4 GB+ |
| Storage | 20 GB SSD | 40 GB+ NVMe |
| Network | 1 Gbps | 1 Gbps |
💡 The Premium KVM 4GB plan ($24/month) is an excellent choice — 2 vCPUs, 4 GB RAM, and 60 GB NVMe. For lighter workloads, the Standard KVM 2GB ($10/month) works well.
Local Machine Requirements
- A local computer running macOS, Windows, or Linux
- An SSH key pair for passwordless authentication to your VPS
- An IDE of your choice: VS Code, any JetBrains IDE, or a terminal editor
Secure Your VPS
Create a Non-Root User
adduser devuser
usermod -aG sudo devuserConfigure SSH Key Authentication
ssh-copy-id devuser@YOUR_VPS_IPsudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshdEnable the Firewall
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusUpdate System Packages
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git ca-certificates gnupg lsb-releaseInstall Docker on the VPS
DevPod uses Docker to build and run devcontainers. Install Docker Engine using the official repository.
# Add the Docker repository
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginConfigure Docker for Your User
sudo usermod -aG docker devuser
newgrp docker
docker run hello-world⚠️ Important: The SSH user that DevPod connects with must be either root or a member of the docker group. DevPod will not function if Docker requires sudo.
docker --version
docker compose version
systemctl is-active dockerInstall DevPod on Your Local Machine
DevPod is a client-only tool — it runs entirely on your local machine and connects to remote infrastructure via SSH. You do not install DevPod on the VPS itself.
Option A: Desktop Application
Download the DevPod Desktop app for your platform from devpod.sh:
- macOS (Apple Silicon):
DevPod_macos_aarch64.dmg - macOS (Intel):
DevPod_macos_x64.dmg - Windows:
DevPod_windows_x64_en-US.msi - Linux:
DevPod_linux_amd64.AppImage
Option B: CLI Installation
curl -L -o devpod "https://github.com/loft-sh/devpod/releases/latest/download/devpod-darwin-arm64"
sudo install -c -m 0755 devpod /usr/local/bin
rm -f devpodcurl -L -o devpod "https://github.com/loft-sh/devpod/releases/latest/download/devpod-darwin-amd64"
sudo install -c -m 0755 devpod /usr/local/bin
rm -f devpodcurl -L -o devpod "https://github.com/loft-sh/devpod/releases/latest/download/devpod-linux-amd64"
sudo install -c -m 0755 devpod /usr/local/bin
rm -f devpodmd -Force "$Env:APPDATA\devpod"
Invoke-WebRequest -URI "https://github.com/loft-sh/devpod/releases/latest/download/devpod-windows-amd64.exe" -OutFile $Env:APPDATA\devpod\devpod.exe
$env:Path += ";" + $Env:APPDATA + "\devpod"devpod versionConfigure the SSH Provider
The SSH provider connects DevPod to any Linux machine accessible via SSH — perfect for a RamNode VPS.
devpod provider add ssh -o HOST=devuser@YOUR_VPS_IPOr through the Desktop App: navigate to Providers → + Add, select SSH, and enter your host as devuser@YOUR_VPS_IP.
SSH Key Configuration
DevPod requires passwordless SSH. If your key is not at the default path, add it to your SSH config:
Host YOUR_VPS_IP
User devuser
IdentityFile ~/.ssh/your_keydevpod provider listOptional: Enable Built-in SSH Client
devpod provider set-options ssh \
--option USE_BUILTIN_SSH=trueCreate Your First Workspace
Workspaces are DevPod's core concept — each workspace is a containerized development environment built from a devcontainer.json configuration.
From a Git Repository
devpod up github.com/microsoft/vscode-remote-try-nodeFrom a Local Directory
devpod up ./my-projectAdvanced Options
# Custom workspace name
devpod up github.com/my-org/my-app --id my-app-workspace
# Target a specific branch
devpod up github.com/my-org/my-app@develop
# Choose your IDE
devpod up github.com/my-org/my-app --ide vscode # VS Code (default)
devpod up github.com/my-org/my-app --ide openvscode # VS Code in browser
devpod up github.com/my-org/my-app --ide intellij # JetBrains
devpod up github.com/my-org/my-app --ide none # Terminal onlyManage Workspaces
| Command | Description |
|---|---|
devpod list | List all workspaces and their status |
devpod up WORKSPACE | Start or reconnect to a workspace |
devpod stop WORKSPACE | Stop a workspace (preserves state) |
devpod delete WORKSPACE | Permanently remove a workspace |
devpod ssh WORKSPACE | SSH directly into a workspace container |
devpod status WORKSPACE | Check workspace status |
Auto-Inactivity Shutdown
Configure workspaces to automatically stop when inactive, saving VPS resources:
devpod provider set-options ssh \
--option INACTIVITY_TIMEOUT=30mCreate a devcontainer.json
Add a .devcontainer/devcontainer.json file to your projects to define reproducible development environments.
Node.js Example
{
"name": "Node.js Dev Environment",
"image": "mcr.microsoft.com/devcontainers/javascript-node:22",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
},
"forwardPorts": [3000, 5173],
"postCreateCommand": "npm install",
"remoteUser": "node"
}Python Example
{
"name": "Python Dev Environment",
"image": "mcr.microsoft.com/devcontainers/python:3.12",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers-contrib/features/poetry:2": {}
},
"forwardPorts": [8000],
"postCreateCommand": "pip install -r requirements.txt"
}Optimize Your RamNode VPS for DevPod
Docker Storage Cleanup
# Manual cleanup
docker system prune -af --volumes
# Automated weekly cleanup via cron
(crontab -l; echo "0 3 * * 0 docker system prune \
-af --volumes >> /var/log/docker-prune.log 2>&1") \
| crontab -Docker Daemon Configuration
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"default-address-pools": [
{ "base": "172.17.0.0/16", "size": 24 }
]
}Enable Swap (Optional)
For VPS plans with limited RAM, adding swap provides a safety net:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
sudo sysctl vm.swappiness=10Troubleshooting
SSH Connection Refused
Verify your SSH key is correctly configured and the user has passwordless access. Check port 22 is open (sudo ufw status), the SSH service is running (sudo systemctl status sshd), and try enabling the built-in SSH client: devpod provider set-options ssh --option USE_BUILTIN_SSH=true.
Docker Permission Denied
Confirm your user is in the docker group: groups devuser. Log out and back in (or run newgrp docker) after adding the group. Verify Docker runs without sudo: docker ps.
Workspace Build Failures
Check available disk space (df -h), ensure Docker is running (systemctl is-active docker), review your devcontainer.json for syntax errors, and try recreating with devpod up WORKSPACE --recreate.
Slow Performance
Consider upgrading to a higher-tier RamNode VPS plan. Enable swap if RAM is constrained. Use Docker build caching by keeping base images pulled. Clean unused images and containers regularly.
DevPod Environment Ready!
Your DevPod remote development setup is now complete on a RamNode VPS. You have reproducible, containerized dev environments powered by the devcontainer standard — a self-hosted, vendor-free alternative to GitHub Codespaces at a fraction of the cost. RamNode's NVMe-backed VPS infrastructure provides the performance your development workflows demand — starting at just $4/month.
