Guide de déploiement

Coder sur VPS : environnements de dev auto-hébergés

Déployer sur un VPS Cloud →

Tutoriel

Coder sur VPS : environnements de dev auto-hébergés

Self-hosting7 min de lecture3 étapes

Installer PHP, Node.js, la bonne version de PostgreSQL et une douzaine d'extensions sur le portable de chaque nouveau développeur prend du temps, et finit toujours par diverger d'un poste à l'autre. Les environnements de développement dans le cloud, comme GitHub Codespaces ou Gitpod, règlent le problème, mais facturent à l'heure et gardent votre code chez eux. Coder est une plateforme open source (licence AGPL-3.0) qui fait le même travail sur votre propre serveur : chaque développeur obtient en un clic un espace de travail identique, décrit par un modèle Terraform. Ce guide l'installe sur un VPS avec Docker Compose, le place derrière nginx en HTTPS, crée un premier espace de travail Docker et montre comment s'y connecter depuis VS Code, JetBrains ou SSH.

Sommaire· Ce que fait Coder1/12
  1. 01Ce que fait Coder
  2. 02Ce que Coder apporte
  3. 03Coder face aux autres options
  4. 04Prérequis
  5. 05Installer Coder avec Docker Compose
  6. 06Le socket Docker donne les clés du serveur
  7. 07Placer Coder derrière nginx en HTTPS
  8. 08Créer le premier modèle et le premier espace de travail
  9. 09Se connecter depuis VS Code, JetBrains ou SSH
  10. 10Arrêt automatique et ressources du VPS
  11. 11Sauvegarde et mise à jour
  12. 12Installation en un clic sur ServOrbit

Ce que fait Coder

Coder sépare deux choses que l'on confond souvent : l'éditeur et l'environnement. L'éditeur reste celui que vous aimez — VS Code dans le navigateur, VS Code sur votre poste, un IDE JetBrains ou un simple terminal. L'environnement, lui, vit sur le serveur : un conteneur qui porte le code, les langages, les bases de données de test et les outils du projet.

Cet environnement est décrit dans un modèle écrit en Terraform. L'administrateur le publie une fois ; chaque développeur crée ensuite son espace de travail à partir de ce modèle, le démarre quand il travaille et l'arrête quand il a fini. Un agent installé dans l'espace de travail se connecte au serveur Coder et transporte le terminal, les ports et les sessions d'éditeur.

Ce que Coder apporte

  • Espaces de travail identiques — tout le monde travaille sur le même environnement, décrit dans un modèle versionné.
  • Modèle Docker fourni — un conteneur par espace de travail sur le VPS, avec son volume /home persistant.
  • Tous les éditeurs — code-server dans le navigateur, VS Code Remote-SSH, JetBrains Gateway, coder ssh.
  • Redirection de ports — coder port-forward ouvre l'application en cours de développement sur votre poste.
  • Arrêt automatique — les espaces inactifs s'arrêtent selon la planification du modèle.
  • Comptes et connexion unique — comptes locaux, GitHub ou OpenID Connect.

Coder face aux autres options

Faites défiler le tableau

Coder sur VPScode-server seulGitHub Codespaces
UtilisateursUne équipe, avec comptes et rôlesUne personneComptes GitHub
EnvironnementModèle Terraform versionnéLe serveur lui-mêmeFichier devcontainer
ÉditeursNavigateur, VS Code, JetBrains, SSHNavigateurNavigateur, VS Code, JetBrains
Où vit le codeSur votre serveurSur votre serveurChez GitHub
CoûtPrix du VPSPrix du VPSÀ l'heure de calcul et au stockage

Prérequis

Un VPS Ubuntu 24.04 avec 2 Go de RAM et 20 Go de disque pour un ou deux développeurs — comptez 4 à 8 Go de RAM pour une petite équipe —, Docker et le plugin Compose installés, et un sous-domaine qui pointe vers le VPS, par exemple coder.example.com. Le HTTPS est indispensable : les agents des espaces de travail rappellent le serveur sur cette adresse, et les sessions d'éditeur passent par WebSocket.

Installer Coder avec Docker Compose

  1. Préparer le répertoire et les secrets

    Le fichier .env porte le mot de passe de la base, l'identifiant du groupe Docker de l'hôte — il permet au serveur d'utiliser le socket Docker sans tourner en root — et le domaine.

    mkdir -p /opt/coder && cd /opt/coder
    {
      echo "DB_PASSWORD=$(openssl rand -hex 16)"
      echo "DOCKER_GID=$(stat -c %g /var/run/docker.sock)"
      echo "DOMAIN=coder.example.com"
    } > .env
    chmod 600 .env
  2. Écrire le fichier docker-compose.yml

    Deux services : le serveur Coder, qui embarque Terraform, et PostgreSQL. Le port n'est publié que sur la boucle locale ; nginx s'occupera du HTTPS.

    services:
      coder:
        image: ghcr.io/coder/coder:v2.39.0
        restart: unless-stopped
        group_add:
          - "${DOCKER_GID}"
        depends_on:
          database:
            condition: service_healthy
        ports:
          - "127.0.0.1:7080:7080"
        environment:
          CODER_HTTP_ADDRESS: "0.0.0.0:7080"
          CODER_ACCESS_URL: "https://${DOMAIN}"
          CODER_PG_CONNECTION_URL: "postgresql://coder:${DB_PASSWORD}@database:5432/coder?sslmode=disable"
          CODER_TELEMETRY_ENABLE: "false"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
      database:
        image: postgres:17.11-alpine
        restart: unless-stopped
        environment:
          POSTGRES_USER: coder
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: coder
        volumes:
          - coder-db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U coder -d coder"]
          interval: 5s
          retries: 12
    volumes:
      coder-db: {}
  3. Démarrer et vérifier

    Le premier démarrage crée le schéma de la base en quelques secondes.

    docker compose up -d
    docker compose logs -f coder   # attendre « View the Web UI »
    curl -fsS http://127.0.0.1:7080/healthz

Le socket Docker donne les clés du serveur

Coder crée les espaces de travail par le socket Docker, et toute personne qui peut modifier un modèle peut lancer n'importe quel conteneur sur le VPS — donc agir en root sur l'hôte. Réservez les rôles de propriétaire et d'administrateur de modèles à des personnes de confiance, et ne publiez jamais le port 7080 sur l'adresse publique.

Placer Coder derrière nginx en HTTPS

Obtenez un certificat avec certbot certonly --nginx -d coder.example.com, puis déclarez le site. Les en-têtes Upgrade et Connection sont indispensables : sans eux, le terminal web et les connexions des agents échouent.

server {
    listen 443 ssl;
    http2 on;
    server_name coder.example.com;
    ssl_certificate     /etc/letsencrypt/live/coder.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/coder.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:7080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 1h;
    }
}

Rechargez nginx avec nginx -t && systemctl reload nginx, puis ouvrez https://coder.example.com. Créez immédiatement le premier compte : le premier visiteur de l'écran d'accueil devient propriétaire de l'installation.

Créer le premier modèle et le premier espace de travail

Dans Templates, cliquez sur Create Template et choisissez le modèle de départ Docker Containers. Coder télécharge les fournisseurs Terraform nécessaires et publie le modèle. Créez ensuite un espace de travail depuis ce modèle : un conteneur démarre sur le VPS, son agent se connecte, et la page affiche l'état Running avec un bouton pour ouvrir code-server.

Le modèle est un simple fichier main.tf. Pour l'adapter à votre projet, changez l'image de base, ajoutez les outils dans le script de démarrage de l'agent, puis publiez une nouvelle version : les espaces existants la proposent à leur prochain redémarrage.

Se connecter depuis VS Code, JetBrains ou SSH

Le navigateur suffit pour commencer, mais la plupart des développeurs préfèrent leur éditeur habituel. Installez la CLI sur votre poste et connectez-la au serveur :

curl -L https://coder.com/install.sh | sh
coder login https://coder.example.com
coder list
coder ssh mon-espace
coder port-forward mon-espace --tcp 3000:3000
coder config-ssh   # ajoute les hôtes coder.<espace> à ~/.ssh/config

Après coder config-ssh, VS Code Remote-SSH et JetBrains Gateway voient chaque espace de travail comme un hôte SSH ordinaire. La connexion passe par l'adresse HTTPS du serveur : aucun port SSH supplémentaire n'est ouvert sur le VPS.

Arrêt automatique et ressources du VPS

Au repos, le serveur Coder et sa base occupent environ 550 Mo de RAM, et un espace de travail inactif basé sur l'image du modèle Docker environ 200 Mo — bien plus pendant une compilation ou une suite de tests. Dans les paramètres du modèle, rubrique Schedule, définissez une durée d'arrêt automatique : un espace oublié le soir ne consomme plus rien la nuit. Le volume /home est conservé à l'arrêt, seul le conteneur est recréé au redémarrage.

Sauvegarde et mise à jour

Les comptes, modèles et réglages sont dans PostgreSQL ; le travail des développeurs est dans les volumes /home des espaces de travail.

cd /opt/coder
docker compose exec -T database pg_dump -U coder coder | gzip > coder-$(date +%F).sql.gz
docker volume ls --filter name=coder-   # volumes /home des espaces de travail

Pour mettre à jour, changez l'étiquette de l'image dans docker-compose.yml d'après la [page des versions](https://github.com/coder/coder/releases), puis lancez docker compose pull && docker compose up -d : le serveur migre sa base au démarrage. Faites une sauvegarde avant chaque montée de version majeure.

Installation en un clic sur ServOrbit

Sur un VPS ServOrbit, Coder s'installe depuis le Marketplace. Le script déploie le serveur et sa base PostgreSQL, génère le mot de passe administrateur et crée le compte propriétaire avant toute exposition — l'écran d'inscription du premier administrateur n'est donc jamais accessible depuis Internet. Il configure aussi le reverse proxy nginx en HTTPS avec WebSocket, sur un sous-domaine de votre domaine ou sur le sous-domaine gratuit du VPS. Connectez-vous avec l'adresse [email protected] et le mot de passe affiché dans votre espace client, puis changez-le dans les paramètres du compte.

Vos environnements de développement sur votre VPS

Un VPS ServOrbit Ubuntu 24.04 avec 2 Go de RAM suffit pour démarrer Coder ; prévoyez 4 Go ou plus pour une équipe. Installation en un clic depuis le Marketplace, HTTPS sur votre domaine ou sur le sous-domaine gratuit du VPS, compte propriétaire et mot de passe créés pour vous.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet