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
/homepersistant. - Tous les éditeurs — code-server dans le navigateur, VS Code Remote-SSH, JetBrains Gateway,
coder ssh. - Redirection de ports —
coder port-forwardouvre 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 VPS | code-server seul | GitHub Codespaces | |
|---|---|---|---|
| Utilisateurs | Une équipe, avec comptes et rôles | Une personne | Comptes GitHub |
| Environnement | Modèle Terraform versionné | Le serveur lui-même | Fichier devcontainer |
| Éditeurs | Navigateur, VS Code, JetBrains, SSH | Navigateur | Navigateur, VS Code, JetBrains |
| Où vit le code | Sur votre serveur | Sur votre serveur | Chez GitHub |
| Coût | Prix du VPS | Prix 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
Préparer le répertoire et les secrets
Le fichier
.envporte 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É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: {}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/configAprè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 travailPour 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.