Démarrage rapide

Sur un VPS Debian/Ubuntu fraîchement installé (root ou sudo) :

curl -fsSL https://install.vpscontrol.wazestudio.com | sudo bash

Le script installe Docker, Go et Nginx automatiquement si nécessaire, compile le panel, crée les dossiers de travail et installe un service systemd qui démarre VPS Control automatiquement (y compris après un redémarrage du serveur). Il vous pose ensuite deux questions, détaillées ci-dessous : le domaine (ou non) à utiliser, et si vous voulez activer les mises à jour automatiques.

À la première visite du panel, un écran vous invite à créer le premier compte administrateur — un identifiant propre à VPS Control, distinct de vos accès SSH/root.

Vous préférez cloner le dépôt vous-même plutôt que passer par le script en une commande ?

git clone https://github.com/VPSControl/vps-control.git
cd vps-control
sudo bash scripts/install.sh

Les deux méthodes lancent exactement le même installeur — celle du haut le télécharge juste pour vous au préalable.

Domaine ou IP, HTTPS

Pendant l'installation, une question vous est posée :

Nom de domaine pointant déjà vers ce VPS (laisser vide pour utiliser directement l'IP du serveur) :

Vous avez un nom de domaine — entrez-le. L'installeur configure Nginx puis lance Certbot pour obtenir un certificat Let's Encrypt. Certbot vous posera lui-même ses questions habituelles (email de contact, acceptation des conditions) exactement comme si vous l'aviez lancé à la main.

Pensez à pointer un enregistrement DNS de type A vers l'IP du VPS avant de lancer l'installation (ou juste après — vous pouvez relancer Certbot ensuite avec sudo certbot --nginx -d votredomaine.com).

Vous n'avez pas de domaine — laissez vide et appuyez sur Entrée. L'installeur vous demande alors un port (8443 par défaut), génère un certificat auto-signé et configure Nginx pour servir le panel en HTTPS directement sur l'IP du VPS :

https://VOTRE_IP:8443
Avec un certificat auto-signé, le navigateur affiche un avertissement de sécurité la première fois — c'est normal, cliquez sur « avancé » puis « continuer ». Vous pourrez toujours passer à un vrai domaine plus tard en relançant l'installeur.

Mises à jour

L'installeur demande aussi si vous voulez activer les mises à jour automatiques quotidiennes. Trois façons de mettre à jour VPS Control, dans tous les cas :

  • Depuis le panel — un bouton dans l'onglet Système déclenche git pull + recompilation + redémarrage du service, sans avoir à vous reconnecter en SSH.
  • Automatiquement — si activé à l'installation, un minuteur systemd (vpscontrol-update.timer) vérifie une fois par jour et met à jour tout seul s'il y a du nouveau.
  • Manuellement en SSH — à tout moment : sudo bash /opt/vpscontrol-src/scripts/update.sh

Dans les trois cas, la mise à jour ne redémarre le service que si la recompilation réussit — en cas d'erreur, le panel continue de tourner sur la version précédente.

Variables d'environnement

Modifiables dans /etc/systemd/system/vpscontrol.service puis systemctl daemon-reload && systemctl restart vpscontrol.

VariablePar défautRôle
VPSCONTROL_LISTEN127.0.0.1:8090Adresse d'écoute du panel (Nginx fait le reverse proxy)
VPSCONTROL_DATA_DIR/opt/vpscontrol/dataComptes, connexions DB, déploiements (JSON)
VPSCONTROL_DEPLOY_ROOT/opt/vpscontrol/appsDossier des applications déployées
VPSCONTROL_FILES_ROOT/homeRacine exposée par le gestionnaire de fichiers
VPSCONTROL_SRC_DIR/opt/vpscontrol-srcDossier du code source (utilisé pour les mises à jour)
VPSCONTROL_REPO_URLgithub.com/VPSControl/vps-controlDépôt d'origine, utilisé pour détecter les nouvelles versions

Fonctionnalités

  • Comptes admin propres au panel, séparés du SSH/root, multi-comptes (admin / lecture seule)
  • Gestionnaire de fichiers web complet (parcourir, éditer, uploader, télécharger, supprimer)
  • Gestion des services Docker (start/stop/restart/suppression, logs)
  • Déploiement depuis un dépôt GitHub public ou un fichier .zip, avec détection automatique du stack
  • Création rapide d'une base MySQL ou PostgreSQL en conteneur
  • Navigateur de base de données (tables, lignes, requêtes SQL libres)
  • Mises à jour en un clic depuis le panel, ou automatiques

Architecture

Le panel est un unique binaire Go : le frontend (HTML/CSS/JS vanilla) est embarqué dedans via go:embed, donc rien à installer côté Node ou build step. Les comptes, connexions aux bases et déploiements sont stockés dans un simple fichier JSON local — pas de base de données à faire tourner pour le panel lui-même. Chaque application déployée tourne dans son propre conteneur Docker, ce qui isole les apps entre elles et permet au panel de piloter leur cycle de vie (start/stop/ restart) via la CLI Docker. Nginx sert de reverse proxy et termine le TLS (Let's Encrypt via Certbot, ou certificat auto-signé pour un accès direct par IP).

Limites connues

  • Un conteneur par application — pas d'orchestration multi-conteneurs automatique (pas de docker-compose généré)
  • Les mots de passe de connexion aux bases de données sont stockés en clair dans le fichier JSON local (permissions restreintes à root)
  • Pas encore de logs de build en direct pendant un déploiement
  • Le service tourne en root pour piloter Docker et parcourir les fichiers du système
  • Pas de rôles fins par déploiement (un compte "lecture seule" voit tout, sans découpage par projet)

Roadmap

  • Logs de build en streaming pendant le déploiement
  • Chiffrement au repos des mots de passe de connexions aux bases
  • Templates docker-compose pour les stacks multi-conteneurs (app + DB + cache)
  • Webhooks GitHub pour redéployer automatiquement à chaque push
  • Historique des déploiements avec rollback
  • Statistiques CPU/RAM par conteneur sur le tableau de bord