Developer Tools Guide

    Deploy DevPod

    Set up reproducible, containerized development environments on RamNode's VPS hosting — a self-hosted, vendor-free alternative to GitHub Codespaces starting at just $4/month.

    Docker Engine
    SSH Provider
    devcontainer.json
    VS Code / JetBrains
    1

    Prerequisites

    RamNode VPS Requirements

    ResourceMinimumRecommended
    OSUbuntu 22.04 LTSUbuntu 24.04 LTS
    CPU1 vCPU2+ vCPUs
    RAM2 GB4 GB+
    Storage20 GB SSD40 GB+ NVMe
    Network1 Gbps1 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
    2

    Secure Your VPS

    Create a Non-Root User

    Create user and grant sudo
    adduser devuser
    usermod -aG sudo devuser

    Configure SSH Key Authentication

    From your local machine
    ssh-copy-id devuser@YOUR_VPS_IP
    Disable password authentication on the VPS
    sudo 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 sshd

    Enable the Firewall

    Configure UFW
    sudo ufw allow OpenSSH
    sudo ufw enable
    sudo ufw status

    Update System Packages

    Update and install essentials
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl wget git ca-certificates gnupg lsb-release
    3

    Install Docker on the VPS

    DevPod uses Docker to build and run devcontainers. Install Docker Engine using the official repository.

    Add Docker repository and install
    # 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-plugin

    Configure Docker for Your User

    Add user to docker group
    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.

    Verify Docker installation
    docker --version
    docker compose version
    systemctl is-active docker
    4

    Install 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

    macOS (Apple Silicon)
    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 devpod
    macOS (Intel)
    curl -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 devpod
    Linux (AMD64)
    curl -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 devpod
    Windows (PowerShell)
    md -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"
    Verify installation
    devpod version
    5

    Configure the SSH Provider

    The SSH provider connects DevPod to any Linux machine accessible via SSH — perfect for a RamNode VPS.

    Add the SSH provider
    devpod provider add ssh -o HOST=devuser@YOUR_VPS_IP

    Or 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:

    ~/.ssh/config
    Host YOUR_VPS_IP
        User devuser
        IdentityFile ~/.ssh/your_key
    Verify the provider
    devpod provider list

    Optional: Enable Built-in SSH Client

    Use DevPod's built-in SSH client
    devpod provider set-options ssh \
      --option USE_BUILTIN_SSH=true
    6

    Create 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

    Create workspace from GitHub
    devpod up github.com/microsoft/vscode-remote-try-node

    From a Local Directory

    Create workspace from local project
    devpod up ./my-project

    Advanced Options

    Custom name, branch, and IDE selection
    # 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 only
    7

    Manage Workspaces

    CommandDescription
    devpod listList all workspaces and their status
    devpod up WORKSPACEStart or reconnect to a workspace
    devpod stop WORKSPACEStop a workspace (preserves state)
    devpod delete WORKSPACEPermanently remove a workspace
    devpod ssh WORKSPACESSH directly into a workspace container
    devpod status WORKSPACECheck workspace status

    Auto-Inactivity Shutdown

    Configure workspaces to automatically stop when inactive, saving VPS resources:

    Set inactivity timeout
    devpod provider set-options ssh \
      --option INACTIVITY_TIMEOUT=30m
    8

    Create a devcontainer.json

    Add a .devcontainer/devcontainer.json file to your projects to define reproducible development environments.

    Node.js Example

    .devcontainer/devcontainer.json
    {
      "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

    .devcontainer/devcontainer.json
    {
      "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"
    }
    9

    Optimize Your RamNode VPS for DevPod

    Docker Storage Cleanup

    Manual and automated 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

    Create /etc/docker/daemon.json
    {
      "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:

    Add swap space
    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=10
    10

    Troubleshooting

    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.