VPS Linux : les commandes essentielles pour débuter

VPS Linux : les commandes essentielles pour débuter

Un VPS Linux BoxToPlay est une machine virtuelle distante qui fonctionne en permanence sur notre infrastructure. Contrairement à un PC Windows classique, il est généralement livré sans bureau graphique. Vous le pilotez depuis votre propre ordinateur avec un terminal et vous y installez les logiciels qui feront fonctionner votre site, votre bot, votre serveur de jeu ou une autre application.

Ce guide BoxToPlay ne suppose aucune connaissance de Linux. Chaque commande est expliquée avant de passer à la suivante et, lorsqu’un équivalent Windows existe, il est indiqué pour vous aider à retrouver vos repères.

À la fin, vous saurez :

  • vous connecter au VPS depuis Windows.
  • comprendre et saisir une commande Linux.
  • installer et mettre à jour des logiciels.
  • créer, modifier, transférer et décompresser des fichiers.
  • comprendre les utilisateurs et les permissions.
  • lancer une application comme un service.
  • consulter les performances et les logs.
  • ouvrir uniquement les ports nécessaires.
  • préparer une sauvegarde.

Les exemples utilisent Debian ou Ubuntu, l’adresse fictive 203.0.113.10, le compte root et des chemins comme /opt/mon-service. Remplacez toujours ces valeurs par les informations de votre propre serveur.

Les blocs marqués bash se saisissent dans le terminal SSH du VPS, donc dans PuTTY, Termix ou un autre client SSH déjà connecté. Les blocs marqués powershell se saisissent sur votre PC Windows.

Si vous débutez, avancez dans cet ordre :

  1. Ouvrir une connexion SSH depuis Windows.
  2. Vérifier le compte connecté et la version Linux.
  3. Mettre à jour le système.
  4. Comprendre root, sudo et la création éventuelle d’un utilisateur.
  5. Apprendre à naviguer, copier et modifier des fichiers.
  6. Installer les outils utiles.
  7. Lancer votre application comme service, puis vérifier les logs, le pare-feu et les sauvegardes.

Passer de Windows à un VPS Linux : les repères qui changent

Sur votre PC Windows, vous utilisez généralement des fenêtres, des menus, l’Explorateur de fichiers, le Gestionnaire des tâches et des installateurs graphiques. Un VPS Linux minimal se pilote surtout à distance en ligne de commande, ce qui économise de la mémoire et reste pratique avec une connexion lente. L’affichage change, mais la plupart des actions ont un équivalent familier sous Windows.

Sous Windows Sur un VPS Linux
Bureau à distance Connexion SSH
Explorateur de fichiers ls, cd, cp, mv ou client SFTP
Disques C:\ et D:\ Arborescence unique commençant par /
Antislash \ dans les chemins Slash / dans les chemins
Exécuter en tant qu’administrateur et contrôle UAC Commande sudo ou compte root
Bloc-notes Éditeur nano ou vim
Gestionnaire des tâches htop, ps, free et df
Console Services systemctl
Observateur d’événements journalctl et fichiers de logs
Windows Update ou winget Gestionnaire de paquets apt
Pare-feu Windows Defender ufw, nftables ou iptables

Linux distingue généralement les majuscules et les minuscules. Config.yml, config.yml et CONFIG.yml peuvent donc représenter trois fichiers différents.

Il n’existe pas non plus de lettre de lecteur. Le caractère / représente le sommet de toute l’arborescence, un peu comme la racine d’un disque Windows. Les dossiers /home, /opt, /etc et /var se trouvent tous sous cette même racine. Nous détaillons ces dossiers un peu plus loin, avec leur rôle concret pour héberger une application.

Quel logiciel utiliser depuis Windows ?

Vous n’avez pas besoin d’installer un bureau graphique sur le VPS. Le logiciel de connexion fonctionne sur votre ordinateur Windows et envoie vos commandes au serveur grâce au protocole SSH.

SSH signifie « Secure Shell ». Il crée une connexion chiffrée vers le terminal du VPS. On peut le rapprocher du Bureau à distance sous Windows, mais SSH affiche principalement du texte au lieu d’un bureau complet.

Pour suivre ce guide, il vous faut deux capacités : ouvrir le terminal SSH du VPS et transférer des fichiers en SFTP. Termix regroupe ces deux usages dans une seule application. PuTTY avec WinSCP reste le duo classique si vous préférez séparer le terminal et la gestion des fichiers.

PuTTY : une fenêtre SSH avec des sessions enregistrées

PuTTY convient si vous préférez une application dédiée au terminal SSH. Vous renseignez l’adresse du VPS et son port SSH, puis vous pouvez enregistrer cette connexion.

Téléchargez PuTTY depuis son site officiel.

PuTTY vous servira à ouvrir le terminal du VPS. Une fois connecté, les commandes Linux saisies dans cette fenêtre restent les mêmes que dans ce guide.

WinSCP : l’équivalent visuel de l’Explorateur de fichiers

WinSCP affiche les fichiers du PC d’un côté et ceux du VPS de l’autre. Il se rapproche donc de l’Explorateur Windows.

Choisissez le protocole SFTP. SFTP signifie « SSH File Transfer Protocol » : les fichiers passent dans la connexion SSH chiffrée. Il n’est pas nécessaire d’installer un serveur FTP supplémentaire.

WinSCP est pratique si vous avez choisi PuTTY pour le terminal et que vous voulez un outil séparé pour envoyer une archive, récupérer une sauvegarde ou modifier un petit fichier.

Termix : SSH et fichiers dans une seule interface

Termix réunit notamment un terminal SSH, un gestionnaire de fichiers distant compatible SFTP, des tunnels, des statistiques et une organisation des connexions.

Termix devient donc le choix à recommander en premier si vous voulez tout faire au même endroit : ouvrir le terminal, transférer des fichiers et retrouver vos connexions. PuTTY avec WinSCP reste une alternative classique si vous préférez deux outils séparés, très connus et légers.

Avant de commencer : comment lire une commande Linux

Une commande se compose généralement de trois parties :

commande option argument
  • La commande désigne le programme à exécuter, par exemple ls.
  • Une option modifie son comportement. Elle commence souvent par - ou --, comme -h ou --help.
  • Un argument indique l’élément ciblé, par exemple le chemin /opt/mon-service.

Dans la commande suivante :

ls -lah /opt
  • ls demande d’afficher le contenu d’un dossier.
  • -l demande une liste détaillée.
  • -a affiche aussi les fichiers cachés.
  • -h affiche les tailles dans un format lisible, comme 12K ou 4G.
  • /opt est le dossier à consulter.

Plusieurs options courtes peuvent être regroupées : -lah signifie ici -l -a -h.

Quelques symboles reviendront souvent :

  • ~ représente votre dossier personnel, comme C:\Users\VotreNom sous Windows.
  • $USER est une variable qui contient le nom de l’utilisateur connecté, comme $env:USERNAME dans PowerShell.
  • * est un caractère générique qui représente plusieurs noms.
  • | transmet la sortie d’une commande à la commande suivante, comme le pipeline | de PowerShell.
  • Ctrl+C interrompt généralement une commande en cours sans fermer la session SSH.

Repère Windows : une commande Linux joue le même rôle qu’une commande PowerShell. Les noms et les chemins changent, mais la logique « programme + options + cible » reste la même.

Pour ouvrir l’aide intégrée d’une commande :

man ls
ls --help
  • man ls ouvre le manuel complet de ls. Utilisez les flèches pour naviguer et q pour quitter.
  • ls --help affiche une aide plus courte directement dans le terminal.

Préparer les informations de connexion

Après la livraison d’un VPS BoxToPlay, vous retrouvez généralement dans votre espace client :

  • une adresse IPv4 ou un nom d’hôte.
  • l’utilisateur SSH initial root.
  • un mot de passe initial ou une clé SSH.
  • un port SSH, généralement 22.

Le compte root est le super-administrateur de Linux. Chez BoxToPlay, c’est le compte normal de première administration du VPS. Il peut modifier tout le système, comme un compte Administrateur Windows, mais sans les mêmes fenêtres de confirmation. Une erreur saisie en root peut donc avoir des conséquences immédiates.

Conservez ces informations dans un gestionnaire de mots de passe. Ne placez jamais une clé privée dans une archive envoyée au serveur, un dossier partagé ou un dépôt Git.

Si SSH ne répond plus, la console de secours BoxToPlay joue le rôle d’un écran directement branché au VPS. Elle permet de corriger un pare-feu, une mauvaise configuration réseau ou une erreur qui bloque l’accès SSH.

Se connecter pour la première fois avec votre client SSH

Ouvrez le client SSH choisi, par exemple PuTTY ou Termix, puis créez une nouvelle connexion. Renseignez les informations affichées dans votre espace client BoxToPlay :

  • Hôte ou adresse : 203.0.113.10.
  • Port : 22 ou le port SSH indiqué.
  • Protocole : SSH.
  • Utilisateur : root.
  • Authentification : mot de passe initial ou clé privée.

Dans PuTTY, saisissez l’adresse dans Host Name, vérifiez Port, gardez le type SSH, puis enregistrez la session si vous voulez la retrouver plus tard.

Dans Termix, créez un serveur ou une connexion, puis indiquez l’hôte, le port, l’utilisateur et le mode d’authentification.

Dans WinSCP, choisissez SFTP, indiquez les mêmes informations, puis connectez-vous pour gérer les fichiers. WinSCP ne remplace pas complètement un terminal : gardez PuTTY ou Termix pour saisir les commandes d’administration.

Lors de la première connexion, votre outil affiche l’empreinte de la machine. Cette empreinte est l’identité cryptographique du serveur. Comparez-la avec les informations affichées côté BoxToPlay lorsqu’elles sont disponibles, puis acceptez-la uniquement si l’adresse ciblée est correcte.

Le mot de passe ne s’affiche pas pendant la saisie, pas même sous forme d’astérisques. C’est normal.

Une fois connecté dans le terminal SSH, identifiez votre session avec quatre commandes simples :

whoami
hostname
cat /etc/os-release
uname -r
  • whoami affiche le nom du compte connecté. Cette commande existe également sous Windows.
  • hostname affiche le nom de la machine. Elle existe aussi sous Windows.
  • cat affiche le contenu d’un fichier texte. Le fichier /etc/os-release décrit la distribution Linux et sa version.
  • uname -r affiche la version du noyau Linux. Le noyau est la partie centrale du système qui communique avec le matériel.

Sur un VPS Ubuntu 24.04 neuf, le retour ressemblait à ceci :

root
vps-demo
PRETTY_NAME="Ubuntu 24.04.4 LTS"
6.8.0-136-generic

La première ligne confirme le compte utilisé. La deuxième indique le nom de la machine. Les deux dernières lignes identifient la distribution Linux et le noyau.

Repère Windows : cat /etc/os-release et uname -r remplissent un rôle proche de la commande PowerShell Get-ComputerInfo ou de la fenêtre winver.

Comprendre sudo, apt et apt-get avant la première mise à jour

Debian et Ubuntu distribuent leurs logiciels sous forme de paquets. Un paquet contient un programme, sa version et les informations nécessaires à son installation. Ces paquets sont téléchargés depuis des dépôts, c’est-à-dire des catalogues officiels configurés sur le serveur.

apt est le gestionnaire de paquets destiné à une utilisation interactive. Il permet de rechercher, installer, mettre à jour ou supprimer des logiciels.

Vous rencontrerez aussi apt-get, avec un tiret. Les deux utilisent les mêmes dépôts et installent les mêmes paquets :

  • apt présente un affichage plus lisible pour une personne dans un terminal.
  • apt-get conserve un comportement très stable, souvent préféré dans les scripts automatisés.

Voici deux commandes équivalentes pour mieux reconnaître les deux syntaxes :

Avec apt Ancienne syntaxe courante avec apt-get Action
apt update apt-get update Actualiser le catalogue des paquets
apt install htop apt-get install htop Installer le paquet htop

Dans ce guide, nous utilisons apt. Il n’est pas nécessaire d’exécuter ensuite la même action avec apt-get.

sudo signifie « exécuter la prochaine commande avec les droits administrateur ». C’est l’équivalent du clic droit « Exécuter en tant qu’administrateur » et de la confirmation UAC sous Windows.

Repère Windows : apt se rapproche à la fois de Windows Update pour les mises à jour et de winget pour l’installation de logiciels. Linux utilise cependant un catalogue commun pour le système et de nombreux programmes.

Sur certaines installations minimales de Debian, sudo peut ne pas encore être installé. Ce cas concerne uniquement une session déjà ouverte avec le compte root. Si le terminal affiche sudo: command not found, utilisez :

apt update
apt install sudo
  • apt update actualise le catalogue des paquets sans utiliser sudo, puisque root possède déjà les droits administrateur.
  • apt install sudo télécharge et installe le paquet qui fournit la commande sudo.

Ne saisissez pas ces deux lignes depuis un compte normal dépourvu de droits administrateur : elles seraient refusées.

Faire les premières mises à jour sans perdre l’accès

Si whoami a affiché root, vous possédez déjà les droits administrateur et pouvez retirer le mot sudo des commandes de cette section. Si vous utilisez un compte d’administration normal, gardez sudo.

Commencez par actualiser le catalogue des logiciels disponibles :

sudo apt update
  • sudo exécute l’action avec les droits administrateur.
  • apt ouvre le gestionnaire de paquets.
  • update télécharge la liste actuelle des paquets et de leurs versions.

Cette commande ne met encore aucun logiciel à jour. Elle actualise seulement le catalogue, comme Windows Update lorsqu’il recherche les mises à jour disponibles.

Installez ensuite les mises à jour trouvées :

sudo apt upgrade
  • upgrade compare les logiciels installés avec le catalogue récupéré par apt update.
  • APT affiche les paquets concernés, l’espace disque nécessaire et demande une confirmation.

Lisez le résumé, puis saisissez Y et appuyez sur Entrée pour accepter. Dans une commande automatisée, on peut ajouter -y pour répondre automatiquement « oui » :

sudo apt upgrade -y

Pour une première utilisation, la version sans -y est préférable, car elle vous permet de lire ce que le système va modifier.

Repère Windows : apt update correspond à la recherche des mises à jour. apt upgrade correspond à leur téléchargement et leur installation.

Régler le fuseau horaire et vérifier l’horloge

Une heure correcte est indispensable pour comprendre les logs, exécuter les tâches planifiées au bon moment et vérifier les certificats HTTPS. Commencez par afficher la configuration actuelle :

timedatectl status
  • timedatectl consulte et configure l’heure du système.
  • status affiche l’heure locale, l’heure universelle UTC, le fuseau horaire et l’état de la synchronisation réseau.
  • Aucun sudo n’est nécessaire, car cette commande ne modifie rien.

Exemple de retour sur un VPS Ubuntu 24.04 neuf :

Local time: Sun 2026-08-02 00:59:56 UTC
Universal time: Sun 2026-08-02 00:59:56 UTC
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active

La sortie reste souvent en anglais. Ici, System clock synchronized: yes indique que l’horloge est synchronisée, et NTP service: active indique que la synchronisation réseau fonctionne. Selon la version de Debian ou Ubuntu, cette synchronisation peut être gérée par chrony ou systemd-timesyncd. N’installez pas un second service de temps sans avoir identifié celui qui fonctionne déjà.

Affichez les fuseaux disponibles si vous ne connaissez pas leur nom exact :

timedatectl list-timezones
  • list-timezones affiche les identifiants reconnus, par exemple Europe/Paris.
  • Utilisez les flèches pour parcourir la liste et appuyez sur q pour quitter si elle s’ouvre dans un lecteur.

Définissez ensuite le fuseau correspondant à votre région :

sudo timedatectl set-timezone Europe/Paris
  • sudo autorise la modification d’un réglage système.
  • set-timezone change le fuseau horaire utilisé pour afficher les dates.
  • Europe/Paris est l’identifiant de l’exemple à remplacer si vous travaillez dans une autre région.

Relancez timedatectl status pour vérifier le résultat.

Repère Windows : ces commandes correspondent aux réglages Date et heure de Windows. Le fuseau influence l’affichage des dates, tandis que la synchronisation NTP joue le rôle de l’option « Régler l’heure automatiquement ».

Vérifier les mises à jour automatiques de sécurité

Une vérification manuelle avec apt update et apt upgrade reste utile, mais un serveur connecté en permanence doit aussi recevoir régulièrement ses correctifs de sécurité. Ubuntu installe généralement le paquet unattended-upgrades par défaut. Une image Debian ou une image minimale peut ne pas l’avoir ou ne pas l’avoir activé.

Vérifiez d’abord si le paquet est installé :

apt policy unattended-upgrades
  • apt policy affiche la version installée et la version disponible d’un paquet.
  • unattended-upgrades est le paquet qui peut installer automatiquement les mises à jour autorisées.
  • La mention Installed: (none) signifie que le paquet n’est pas installé.

Vérifiez ensuite les planifications APT connues de systemd :

systemctl list-timers apt-daily.timer apt-daily-upgrade.timer --no-pager
  • systemctl list-timers affiche les tâches déclenchées à une heure planifiée.
  • apt-daily.timer actualise périodiquement les informations des paquets.
  • apt-daily-upgrade.timer lance le traitement des mises à jour automatiques.
  • --no-pager affiche le résultat directement dans le terminal.

Si le paquet est absent et que vous souhaitez activer ce mécanisme sur Debian ou Ubuntu :

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
  • apt install unattended-upgrades installe le mécanisme de mise à jour automatique.
  • dpkg-reconfigure rouvre l’assistant de configuration du paquet déjà installé.
  • Répondez oui à la proposition d’activer les mises à jour automatiques de sécurité.

Ce mécanisme ne met pas automatiquement à jour toutes les applications téléchargées manuellement ni tous les dépôts ajoutés par un tiers. Continuez à surveiller votre service, ses sauvegardes et ses propres annonces de sécurité.

Certaines mises à jour du noyau ou de composants centraux demandent un redémarrage. Ne redémarrez pas au milieu d’une opération : vérifiez vos sauvegardes, prévoyez l’interruption puis utilisez, uniquement lorsqu’un redémarrage est demandé :

sudo reboot
  • sudo demande les droits administrateur.
  • reboot ferme les services puis redémarre le VPS.
  • La connexion SSH se coupe immédiatement et doit redevenir disponible après le démarrage.

Repère Windows : unattended-upgrades joue un rôle proche de l’installation automatique des mises à jour de sécurité par Windows Update. sudo reboot correspond à Redémarrer, pas à Arrêter.

Créer un nouvel utilisateur Linux (optionnel)

Sur un VPS BoxToPlay, l’administration se fait généralement avec le compte root. Créer un autre utilisateur n’est donc pas une étape obligatoire pour débuter. Cette commande est surtout utile si vous voulez séparer un accès, créer un compte pour une autre personne ou comprendre la logique des utilisateurs Linux.

Pour créer un utilisateur simple :

sudo adduser utilisateur
id utilisateur
  • sudo adduser utilisateur crée l’utilisateur, son mot de passe et son dossier personnel /home/utilisateur avec les droits administrateur.
  • id utilisateur affiche l’identifiant, le groupe principal et les groupes de l’utilisateur.

Par défaut, cet utilisateur n’est pas administrateur. Si vous voulez lui permettre d’exécuter des commandes avec sudo, ajoutez-le explicitement au groupe sudo :

sudo usermod -aG sudo utilisateur
id utilisateur
  • sudo usermod modifie un utilisateur existant avec les droits administrateur.
  • L’option -a signifie « ajouter sans retirer les groupes déjà présents ».
  • L’option -G sudo ajoute l’utilisateur au groupe nommé sudo.

Repère Windows : créer l’utilisateur seul ressemble à un compte local standard. L’ajouter au groupe sudo revient à lui donner la possibilité d’élever certaines commandes, comme un compte Windows placé dans le groupe Administrateurs.

Si vous testez ce nouveau compte, gardez votre session root ouverte, ouvrez une deuxième connexion avec utilisateur, puis lancez :

sudo whoami
  • sudo exécute uniquement whoami avec les droits administrateur.
  • La réponse attendue est root, car la commande a temporairement été exécutée comme super-administrateur.

Gardez toujours la session root ouverte pendant une modification de SSH ou du pare-feu. Elle sert de voie de secours si une nouvelle connexion échoue.

Utiliser une clé SSH depuis Windows

Une clé SSH repose sur deux fichiers :

  • la clé privée reste sur votre PC et ne doit jamais être partagée.
  • la clé publique est copiée sur le VPS et peut être communiquée sans révéler la clé privée.

Ce mécanisme remplace l’envoi d’un mot de passe à chaque connexion.

Dans PowerShell, créez une clé :

ssh-keygen -t ed25519 -a 100
  • ssh-keygen est le générateur de clés fourni avec OpenSSH.
  • -t ed25519 sélectionne le type de clé Ed25519, moderne et largement pris en charge.
  • -a 100 renforce la protection de la clé privée lorsque vous définissez une phrase secrète.

Le chemin proposé est généralement C:\Users\VotreNom\.ssh\id_ed25519. Le fichier sans extension est privé. Le fichier terminé par .pub est public.

Repère Windows : PuTTY propose l’outil graphique PuTTYgen pour accomplir la même opération. Une clé SSH n’est pas l’équivalent exact du mot de passe Windows : elle ressemble davantage à un certificat personnel conservé sur votre ordinateur.

Pour ajouter la clé publique au compte root sans effacer d’autres clés déjà autorisées, vous pouvez utiliser PowerShell :

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys"
  • Get-Content lit le fichier public sur Windows.
  • $env:USERPROFILE contient le chemin de votre profil Windows, par exemple C:\Users\VotreNom.
  • | envoie le contenu de la clé publique à la commande suivante.
  • ssh [email protected] exécute ici une commande distante sur le compte root.
  • umask 077 force la création de fichiers privés pour ce compte.
  • mkdir -p ~/.ssh crée le dossier .ssh s’il n’existe pas.
  • cat >> ~/.ssh/authorized_keys ajoute la clé à la fin du fichier au lieu de remplacer les clés existantes.

Termix et le client OpenSSH de Windows peuvent utiliser directement la clé privée créée avec ssh-keygen. Pour PuTTY, ouvrez PuTTYgen, choisissez Conversions > Import key, sélectionnez la clé privée OpenSSH, puis enregistrez-la au format .ppk. WinSCP peut également utiliser ce fichier .ppk pour l’authentification.

Repère Windows : le dossier .ssh est caché parce que son nom commence par un point. Il joue un rôle proche du dossier de profil qui conserve les informations d’authentification d’un utilisateur Windows.

Testez ensuite une nouvelle connexion root dans Termix avec la clé OpenSSH, ou dans PuTTY avec le fichier .ppk créé par PuTTYgen. Votre outil peut demander la phrase secrète de la clé, mais il ne doit plus demander le mot de passe du compte Linux.

Ne désactivez pas l’authentification par mot de passe et ne changez pas la configuration SSH avant d’avoir confirmé que la clé fonctionne dans une nouvelle session et que la console de secours BoxToPlay est accessible.

Vous pouvez continuer à administrer le VPS avec root. Si vous avez créé un utilisateur supplémentaire, configurez sa clé SSH séparément dans le fichier ~/.ssh/authorized_keys de ce compte.

Comprendre les dossiers utiles pour l’hébergement

Commencez par explorer sans modifier de fichier :

pwd
ls -lah
cd /opt
ls -lah
cd ~
  • pwd signifie « print working directory » et affiche le chemin du dossier actuel. L’équivalent PowerShell est Get-Location.
  • ls -lah affiche le contenu détaillé, y compris les éléments cachés, avec des tailles lisibles. L’équivalent PowerShell est Get-ChildItem -Force.
  • cd /opt déplace votre terminal dans le dossier /opt. L’équivalent PowerShell est Set-Location.
  • Le deuxième ls -lah affiche le contenu de /opt.
  • cd ~ revient dans votre dossier personnel.

Les principaux emplacements sont :

  • /root : dossier personnel du compte root, proche de C:\Users\Administrateur.
  • /home/utilisateur : dossier personnel d’un utilisateur créé avec adduser, proche de C:\Users\Utilisateur.
  • /opt/mon-service : emplacement courant pour une application autonome, proche de C:\Program Files\MonService.
  • /etc/mon-service : configuration système, sans équivalent Windows unique.
  • /var/lib/mon-service : données persistantes d’une application, proche de C:\ProgramData\MonService.
  • /var/log : nombreux journaux du système et des applications, proche de l’Observateur d’événements et des dossiers de logs Windows.
  • /var/www : fichiers d’un serveur web classique, proche de C:\inetpub\wwwroot avec IIS.
  • /tmp : fichiers temporaires, proche de %TEMP%.

Un chemin commençant par / est absolu : il part de la racine. Un chemin sans / initial est relatif au dossier affiché par pwd.

Créer le dossier d’une application

Créez un emplacement dans /opt :

sudo mkdir -p /opt/mon-service
sudo chown "$USER":"$(id -gn)" /opt/mon-service
cd /opt/mon-service
pwd
  • mkdir crée un dossier. Son équivalent PowerShell est New-Item -ItemType Directory.
  • -p crée aussi les dossiers parents manquants et ne signale pas d’erreur si le dossier existe déjà.
  • sudo est nécessaire car un utilisateur normal ne peut pas écrire directement dans /opt.
  • chown change le propriétaire du dossier.
  • "$USER":"$(id -gn)" signifie « l’utilisateur connecté et son groupe principal ».
  • cd entre dans le nouveau dossier.
  • pwd confirme que le terminal se trouve bien au bon endroit.

Repère Windows : chown se rapproche du changement de propriétaire dans l’onglet Sécurité des propriétés d’un dossier.

Créer, copier, renommer et supprimer des fichiers

Exécutez ces commandes une ligne après l’autre :

mkdir -p config sauvegardes
touch config/config.yml
cp config/config.yml config/config.yml.bak
mv config/config.yml.bak sauvegardes/config.yml.bak
ls -lah config sauvegardes
  • mkdir -p config sauvegardes crée deux sous-dossiers. PowerShell utiliserait New-Item -ItemType Directory.
  • touch config/config.yml crée un fichier vide s’il n’existe pas. PowerShell peut utiliser New-Item -ItemType File.
  • cp source destination copie un fichier. L’équivalent PowerShell est Copy-Item.
  • mv source destination déplace ou renomme un fichier. L’équivalent PowerShell est Move-Item.
  • ls -lah config sauvegardes affiche le contenu des deux dossiers pour vérifier le résultat.

Pour supprimer le fichier de sauvegarde :

rm sauvegardes/config.yml.bak
  • rm supprime le fichier indiqué.
  • L’équivalent PowerShell est Remove-Item.

Une suppression avec rm ne passe généralement pas par une corbeille. Vérifiez toujours le chemin avant d’appuyer sur Entrée, surtout avec sudo, l’option récursive -r ou le caractère générique *.

Lire et modifier un fichier

Pour afficher entièrement un fichier court :

cat config/config.yml
  • cat écrit le contenu dans le terminal.
  • L’équivalent PowerShell est Get-Content.
  • cat ne permet pas de modifier le fichier.

Pour parcourir un fichier long page par page :

less config/config.yml
  • less ouvre un lecteur dans le terminal.
  • Les flèches et les touches Page précédente/Page suivante permettent de se déplacer.
  • Appuyez sur q pour quitter.
  • Sous Windows, la commande more fournit une lecture paginée plus simple.

Si Nano n’est pas installé sur l’image de départ, installez-le d’abord :

sudo apt install nano
  • apt install installe le paquet demandé.
  • nano est le paquet qui fournit l’éditeur utilisé dans les exemples suivants.

Pour modifier le fichier :

nano config/config.yml
  • nano est un éditeur de texte dans le terminal, proche du Bloc-notes.
  • Ctrl+O enregistre.
  • Entrée confirme le nom du fichier.
  • Ctrl+X ferme l’éditeur.
  • Ctrl+W recherche un texte.

Pour un fichier système appartenant à root, créez d’abord une copie puis ouvrez l’original avec les droits administrateur :

sudo cp /etc/mon-service/config.yml /etc/mon-service/config.yml.bak
sudo nano /etc/mon-service/config.yml
  • La première ligne utilise cp avec sudo pour créer une copie .bak.
  • La seconde ouvre le fichier original dans Nano avec les droits nécessaires.

Repère Windows : cela revient à copier un fichier de configuration puis à ouvrir le Bloc-notes en tant qu’administrateur.

Envoyer une archive depuis Windows

Avec WinSCP, créez une connexion SFTP vers l’adresse du VPS, son port SSH et le compte root. Envoyez d’abord l’archive dans /root, le dossier personnel de root, plutôt que directement dans un chemin système final.

La même opération peut être effectuée dans PowerShell :

scp "$env:USERPROFILE\Downloads\mon-service.zip" [email protected]:/root/
  • scp copie le fichier dans la connexion SSH.
  • Le premier chemin est le fichier présent dans le dossier Téléchargements de Windows.
  • La partie située après l’espace est la destination Linux.
  • Le / final indique que l’on conserve le nom mon-service.zip.

Pour envoyer un dossier complet :

scp -r "$env:USERPROFILE\Documents\mon-service" [email protected]:/root/
  • -r signifie « récursif » : scp copie le dossier et tout son contenu.

Pour télécharger une sauvegarde du VPS vers Windows, inversez la source et la destination :

scp [email protected]:/root/mon-service-backup.tar.gz "$env:USERPROFILE\Downloads\"
  • La source distante apparaît maintenant en premier.
  • Le dossier Téléchargements de Windows devient la destination.

Repère Windows : WinSCP fournit le même résultat par glisser-déposer, comme entre deux fenêtres de l’Explorateur.

Vous pouvez aussi ouvrir un mode de transfert interactif :

sftp [email protected]
  • sftp ouvre une session dédiée aux fichiers.
  • put fichier.zip envoie un fichier.
  • get fichier.zip télécharge un fichier.
  • ls affiche les fichiers distants.
  • exit ferme la session SFTP.

Comprendre et extraire les archives

Un fichier ZIP ou tar.gz regroupe plusieurs fichiers. ZIP est courant sous Windows. Sous Linux, tar.gz est également très répandu : tar regroupe les fichiers et gzip les compresse.

Installez les outils ZIP :

sudo apt update
sudo apt install unzip zip
  • apt update actualise le catalogue, comme expliqué précédemment.
  • apt install demande l’installation des paquets qui suivent.
  • unzip permet d’extraire et d’inspecter les ZIP.
  • zip permet de créer un ZIP.
  • APT affiche les dépendances et demande confirmation avant l’installation.

Repère Windows : PowerShell propose Expand-Archive et Compress-Archive. L’application 7-Zip remplit également ce rôle avec une interface graphique.

Avant d’extraire une archive, affichez son contenu :

unzip -l ~/mon-service.zip
tar -tzf ~/mon-service.tar.gz | head -n 30
  • unzip -l liste le contenu du ZIP sans l’extraire.
  • Dans tar -tzf, t signifie « lister », z indique une compression gzip et f annonce le nom du fichier.
  • | envoie cette liste à la commande suivante.
  • head -n 30 limite l’affichage aux 30 premières lignes.

Exemple de retour avec une archive tar.gz simple :

mon-service/
mon-service/config/
mon-service/config/config.yml

Si vous voyez des chemins absolus comme /etc/..., des chemins qui remontent avec ../ ou des fichiers inattendus, arrêtez-vous avant l’extraction et vérifiez la source de l’archive.

Créez un dossier isolé et extrayez le ZIP :

mkdir -p ~/imports
unzip ~/mon-service.zip -d ~/imports
ls -la ~/imports/mon-service
  • mkdir -p crée le dossier de destination.
  • unzip ouvre l’archive.
  • -d indique le dossier dans lequel les fichiers doivent être placés.
  • ls -la permet de vérifier le dossier extrait avant de le copier vers l’emplacement final.

Pour un fichier tar.gz :

mkdir -p ~/imports
tar -xzf ~/mon-service.tar.gz -C ~/imports
ls -la ~/imports/mon-service
  • Dans -xzf, x signifie « extraire », z indique gzip et f annonce le fichier source.
  • -C demande à tar de se placer dans le dossier indiqué avant l’extraction.
  • Adaptez ~/imports/mon-service si l’archive contient un autre dossier racine.

Pour une archive tar.xz, utilisez :

tar -xJf ~/mon-service.tar.xz -C ~/imports
  • J remplace z car la compression utilisée est XZ et non gzip.

Après avoir vérifié les fichiers du dossier extrait, copiez son contenu dans le dossier final :

sudo cp -a ~/imports/mon-service/. /opt/mon-service/
  • cp copie les fichiers.
  • -a active le mode archive : copie récursive tout en conservant au mieux les dates, permissions et liens.
  • /. signifie « le contenu de ce dossier » et évite de créer un niveau mon-service supplémentaire.
  • sudo permet d’écrire dans /opt.

N’extrayez jamais une archive inconnue directement dans /, /etc ou /opt. Inspectez-la et utilisez d’abord un dossier isolé dans votre espace personnel.

Installer la boîte à outils d’administration

Installez les utilitaires courants :

sudo apt update
sudo apt install nano htop curl wget git unzip zip jq rsync tmux tree ncdu lsof ca-certificates ufw
  • La première ligne actualise le catalogue de paquets.
  • La seconde demande à APT d’installer tous les paquets listés. APT calcule automatiquement leurs dépendances et demande confirmation.

Chaque paquet répond à un besoin :

  • nano : éditeur de texte, proche du Bloc-notes.
  • htop : vue interactive des processus, proche du Gestionnaire des tâches.
  • curl : interroge une adresse web ou une API depuis le terminal.
  • wget : télécharge un fichier depuis une URL.
  • git : récupère et met à jour le code d’un projet.
  • unzip et zip : gèrent les archives ZIP. La commande tar est généralement déjà présente sur Debian et Ubuntu, mais vous la retrouverez souvent dans les guides d’installation.
  • jq : lit et filtre du JSON, comme ConvertFrom-Json dans PowerShell.
  • rsync : copie et synchronise efficacement des dossiers, proche de robocopy.
  • tmux : conserve une session terminal même si SSH se déconnecte. Il n’existe pas d’équivalent Windows exact.
  • tree : affiche les dossiers sous forme d’arbre. La commande tree existe aussi sous Windows.
  • ncdu : explore l’espace disque, proche de l’affichage Stockage de Windows.
  • lsof : indique quels processus utilisent des fichiers ou des ports, proche du Moniteur de ressources.
  • ca-certificates : fournit les autorités de certification utilisées pour vérifier les connexions HTTPS.
  • ufw : simplifie la gestion du pare-feu Linux.

Installez ensuite uniquement le runtime demandé par votre application, par exemple Java, Node.js, Python, PHP ou Docker. Un runtime est le moteur nécessaire à l’exécution du programme.

Si votre service utilise Docker ou Docker Compose, suivez notre guide Installer Docker sur Linux.

Comprendre les propriétaires et les permissions

Linux ne donne pas les mêmes droits à tout le monde. Chaque fichier et chaque dossier possède un propriétaire, un groupe, puis des droits pour le propriétaire, le groupe et les autres utilisateurs. C’est ce qui empêche un service, un script ou un utilisateur local de lire ou modifier des fichiers qui ne le concernent pas.

Affichez les droits d’un dossier et d’un fichier :

ls -ld /opt/mon-service
ls -l /opt/mon-service/config/config.yml

Exemple de sortie :

drwxr-x--- 3 monservice monservice 4096 Aug  2 02:34 /opt/mon-service
-rw-r----- 1 monservice monservice   17 Aug  2 02:34 /opt/mon-service/config/config.yml

Le début de chaque ligne indique le type et les droits :

  • d indique un dossier, - indique un fichier.
  • r signifie lecture.
  • w signifie écriture.
  • x signifie exécution pour un fichier, ou accès à l’intérieur d’un dossier.
  • Les trois premiers droits concernent le propriétaire.
  • Les trois suivants concernent le groupe.
  • Les trois derniers concernent tous les autres utilisateurs.

Dans l’exemple, le dossier /opt/mon-service peut être lu et traversé par le propriétaire et le groupe, mais pas par les autres utilisateurs. Le fichier config.yml peut être lu et modifié par son propriétaire, lu par le groupe, et reste invisible pour les autres.

Créez un compte réservé à l’application, puis attribuez-lui tout le dossier :

sudo useradd --system --user-group --home-dir /opt/mon-service --shell /usr/sbin/nologin monservice
sudo chown -R monservice:monservice /opt/mon-service
  • useradd crée ici le compte monservice.
  • --system crée un compte technique plutôt qu’un utilisateur humain.
  • --user-group crée aussi un groupe monservice.
  • --home-dir définit le dossier associé au compte.
  • --shell /usr/sbin/nologin empêche une connexion interactive avec ce compte.
  • chown -R change récursivement le propriétaire et le groupe de tout le dossier.

Repère Windows : un compte de service Linux ressemble à un compte dédié utilisé par un service Windows. chown et chmod remplissent le rôle des propriétaires et ACL NTFS visibles dans l’onglet Sécurité.

Protégez un fichier de configuration contenant un secret :

sudo chmod 640 /opt/mon-service/config/config.yml
  • 6 donne lecture et écriture au propriétaire.
  • 4 donne seulement la lecture au groupe.
  • 0 ne donne aucun accès aux autres.

Pour changer les droits de tout un répertoire déjà rempli, utilisez une commande récursive :

sudo chmod -R u=rwX,g=rX,o= /opt/mon-service
  • chmod -R applique les droits à tout le contenu existant.
  • u=rwX donne lecture et écriture au propriétaire, avec accès aux dossiers.
  • g=rX donne lecture et accès aux dossiers au groupe.
  • o= retire tous les droits aux autres utilisateurs.
  • Le X majuscule ajoute le droit d’exécution seulement aux dossiers et aux fichiers déjà exécutables, ce qui évite de rendre tous les fichiers exécutables par erreur.

Cette commande est utile après l’extraction d’une archive, un transfert SFTP ou une restauration de sauvegarde, quand les fichiers n’ont pas le bon propriétaire ou des droits trop ouverts.

N’utilisez pas chmod -R 777 pour résoudre un problème. 777 autorise tous les utilisateurs à lire, modifier et exécuter les fichiers. Cela masque le vrai problème et affaiblit fortement la sécurité.

Surveiller le CPU, la mémoire et le disque

Ouvrez la vue interactive des processus :

htop

htop affiche notamment le CPU, la mémoire et les processus. Utilisez les flèches pour naviguer et F10 ou q pour quitter.

Repère Windows : htop est l’équivalent le plus proche du Gestionnaire des tâches.

Pour un diagnostic rapide :

uptime
free -h
df -h
du -sh /opt/mon-service
ps aux --sort=-%mem | head
  • uptime affiche depuis combien de temps le VPS fonctionne et sa charge moyenne.
  • free -h affiche la mémoire vive et le swap avec des unités lisibles.
  • df -h affiche l’espace libre et occupé sur chaque système de fichiers.
  • du -sh /opt/mon-service calcule la taille totale du dossier. -s résume et -h rend la taille lisible.
  • ps aux affiche tous les processus.
  • --sort=-%mem place les processus utilisant le plus de mémoire en premier.
  • | head conserve les premières lignes de cette liste.

Exemple de retour simplifié pour uptime, free -h et df -h / :

00:59:56 up 4:08, 1 user, load average: 0.00, 0.00, 0.00
Mem:   15Gi  554Mi   14Gi
Swap: 7.8Gi     0B  7.8Gi
/dev/sda2  99G  12G  83G  12% /

La charge moyenne proche de 0.00 indique un serveur peu sollicité. La ligne Mem montre la mémoire utilisée et disponible. La ligne montée sur / indique ici que le disque principal est utilisé à 12 %.

Repère Windows : le Gestionnaire des tâches couvre le CPU, la mémoire et les processus. L’application Paramètres > Stockage et l’Explorateur couvrent l’espace disque.

Affichez les ports sur lesquels des programmes attendent des connexions :

sudo ss -tulpn
  • ss affiche les connexions et sockets réseau.
  • -t inclut TCP.
  • -u inclut UDP.
  • -l conserve les ports en écoute.
  • -p affiche le processus concerné.
  • -n affiche les numéros de port au lieu de noms de services.
  • sudo permet d’obtenir davantage d’informations sur les processus.

Exemple de lignes utiles :

tcp LISTEN 0 4096 0.0.0.0:22  0.0.0.0:* users:(("sshd"))
tcp LISTEN 0 511  0.0.0.0:80  0.0.0.0:* users:(("nginx"))

0.0.0.0:22 signifie que SSH écoute sur toutes les interfaces IPv4. 127.0.0.1:8080 signifierait au contraire que le service écoute seulement depuis le VPS lui-même.

Repère Windows : utilisez le Moniteur de ressources, netstat -ano ou Get-NetTCPConnection dans PowerShell.

Vérifiez qu’une application web répond localement sur le port 8080 :

curl -I http://127.0.0.1:8080
  • curl contacte l’adresse indiquée.
  • -I demande uniquement les en-têtes HTTP, pas toute la page.
  • 127.0.0.1 désigne toujours la machine elle-même. On l’appelle aussi localhost.
  • 8080 est le port de l’exemple.

Repère Windows : Test-NetConnection 127.0.0.1 -Port 8080 vérifie l’ouverture du port. Invoke-WebRequest peut interroger la page HTTP.

Tester d’abord 127.0.0.1 permet de distinguer une application qui ne démarre pas d’une application fonctionnelle mais bloquée par le pare-feu.

Faire fonctionner une application comme un service

Une application lancée directement dans le terminal peut s’arrêter lorsque la session SSH se ferme. systemd est le gestionnaire de services utilisé par Debian et Ubuntu. Il peut démarrer l’application automatiquement au démarrage du VPS et la relancer en cas d’échec.

Repère Windows : systemd et systemctl correspondent à la console Services et à la commande sc.exe.

Dans cet exemple, l’application fournit le script /opt/mon-service/start.sh. Adaptez toujours ce chemin à la documentation du logiciel.

Rendez le script exécutable et attribuez les fichiers au compte de service :

sudo chmod +x /opt/mon-service/start.sh
sudo chown -R monservice:monservice /opt/mon-service
  • chmod +x ajoute le droit d’exécuter le script.
  • chown -R attribue récursivement l’application au compte monservice.

Créez le fichier qui décrit le service :

sudo nano /etc/systemd/system/mon-service.service
  • nano ouvre l’éditeur.
  • sudo permet d’écrire dans le dossier système /etc/systemd/system.
  • L’extension .service indique à systemd qu’il s’agit d’un service.

Ajoutez :

[Unit]
Description=Mon service hébergé
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=monservice
Group=monservice
WorkingDirectory=/opt/mon-service
ExecStart=/opt/mon-service/start.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Chaque directive a un rôle :

  • Description donne un nom lisible au service.
  • After attend que le réseau soit considéré comme disponible.
  • Wants demande également l’activation de cette cible réseau.
  • Type=simple indique que le processus lancé reste au premier plan.
  • User et Group choisissent le compte technique.
  • WorkingDirectory définit le dossier de travail.
  • ExecStart indique l’exécutable et ses arguments. Ce n’est pas une ligne shell libre : pour enchaîner plusieurs commandes, utiliser cd, charger des variables ou lancer npm start, passez plutôt par un script comme /opt/mon-service/start.sh.
  • Restart=on-failure relance le programme s’il s’arrête avec une erreur.
  • RestartSec=5 attend cinq secondes avant une relance.
  • WantedBy=multi-user.target permet l’activation au démarrage normal du VPS.

Enregistrez avec Ctrl+O, confirmez avec Entrée, puis quittez avec Ctrl+X.

Demandez à systemd de relire les fichiers et démarrez le service :

sudo systemctl daemon-reload
sudo systemctl enable --now mon-service
sudo systemctl status mon-service --no-pager
  • systemctl pilote systemd.
  • daemon-reload relit les fichiers .service après une création ou une modification.
  • enable configure le démarrage automatique lors des prochains redémarrages.
  • --now demande aussi un démarrage immédiat.
  • status affiche l’état actuel et les dernières lignes de log.
  • --no-pager affiche directement le résultat sans ouvrir le lecteur less.

Consultez les logs en direct :

sudo journalctl -u mon-service -f
  • journalctl lit le journal de systemd.
  • -u mon-service filtre les messages du service indiqué.
  • -f suit les nouveaux messages en temps réel.
  • Utilisez Ctrl+C pour arrêter le suivi.

Repère Windows : journalctl remplit un rôle proche de l’Observateur d’événements. L’option -f ressemble à un journal qui se met à jour en direct.

Les commandes courantes sont :

sudo systemctl restart mon-service
sudo systemctl stop mon-service
sudo systemctl start mon-service
sudo systemctl disable mon-service
  • restart arrête puis redémarre le service.
  • stop l’arrête.
  • start le démarre.
  • disable retire son démarrage automatique sans forcément arrêter le processus déjà lancé.

Un statut failed n’indique pas la cause. Consultez journalctl pour trouver le fichier manquant, le port occupé ou le problème de permission.

Ouvrir uniquement les ports nécessaires

Un port est une porte logique associée à un service réseau. SSH écoute généralement sur 22, HTTP sur 80 et HTTPS sur 443. Votre application peut utiliser un autre port, comme 8080.

Un programme peut répondre sur 127.0.0.1 tout en restant inaccessible depuis Internet. Il faut alors vérifier son adresse d’écoute, le pare-feu Linux et les règles réseau disponibles côté BoxToPlay.

UFW signifie « Uncomplicated Firewall ». Il fournit des commandes plus simples au-dessus du système de pare-feu Linux.

Commencez par afficher son état :

sudo ufw status
  • ufw pilote le pare-feu.
  • status indique s’il est actif et liste ses règles.
  • Cette commande ne modifie rien.

Repère Windows : UFW correspond à l’interface simplifiée du Pare-feu Windows Defender.

Sur un serveur où UFW n’est pas encore actif, le retour peut simplement être :

Status: inactive

Cela signifie que l’outil est présent, mais que ce pare-feu n’applique pas encore de règles.

Vérifiez que le profil SSH prédéfini existe :

sudo ufw app list
  • app list affiche les profils d’applications enregistrés dans UFW.
  • Vérifiez que OpenSSH apparaît avant d’utiliser ce nom de profil.

Autorisez SSH avant toute première activation. Pour un site web derrière Nginx ou Apache, ouvrez ensuite les ports publics habituels :

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status numbered
  • allow OpenSSH ajoute la règle prédéfinie qui conserve l’accès SSH d’administration.
  • allow 80/tcp autorise HTTP, souvent utilisé pour la redirection et la validation de certificat.
  • allow 443/tcp autorise HTTPS.
  • status numbered affiche les règles avec un numéro utile pour les gérer plus tard.

N’ouvrez 8080/tcp que si vous voulez volontairement exposer directement une application qui écoute sur ce port. Pour une application web placée derrière un reverse proxy, gardez plutôt l’application sur 127.0.0.1:8080 et n’ouvrez pas ce port sur Internet.

Si votre port SSH est différent de 22, vérifiez que la règle OpenSSH correspond bien à votre configuration ou autorisez explicitement le port personnalisé avant d’activer UFW.

Si UFW est encore inactif et que vous souhaitez l’utiliser :

sudo ufw enable
sudo ufw status verbose
  • enable active le pare-feu et applique les règles préparées.
  • status verbose affiche un état plus détaillé.

Gardez la session SSH actuelle ouverte et ouvrez immédiatement une deuxième connexion. Si elle fonctionne, la règle SSH est correcte.

Repère Windows : dans le Pare-feu Windows Defender, cette opération correspond à la création de règles de trafic entrant puis à l’activation du profil de pare-feu.

Si l’image système ou la configuration livrée sur le VPS gère déjà le pare-feu avec nftables ou iptables, n’activez pas UFW par-dessus. Consultez d’abord la configuration existante sans la modifier :

sudo nft list ruleset
sudo iptables -S
  • nft list ruleset affiche toutes les règles connues de nftables.
  • iptables -S affiche les règles iptables actuelles sous forme de commandes.
  • Ces deux commandes sont en lecture seule. Suivez ensuite la méthode de la distribution ou la documentation BoxToPlay liée à ces règles.

Ajouter un nom de domaine, un reverse proxy et HTTPS

Une application web écoute souvent seulement sur 127.0.0.1:8080. Un reverse proxy comme Nginx reçoit les connexions publiques sur 80 et 443, puis les transmet à l’application interne.

Si l’application n’intègre pas déjà une authentification fiable, ne l’exposez pas directement à tout Internet. Ajoutez une protection dédiée, par exemple une authentification Basic Auth dans Nginx, une restriction IP ou un accès privé.

L’ordre habituel est le suivant :

  1. Créer l’enregistrement DNS du domaine vers l’adresse IP du VPS.
  2. Garder l’application sur un port local quand c’est possible.
  3. Configurer Nginx pour le domaine.
  4. Tester la configuration.
  5. Obtenir un certificat HTTPS.

Installez Nginx :

sudo apt install nginx

Créez un fichier de site :

sudo nano /etc/nginx/sites-available/exemple.com

Ajoutez une configuration de base, en remplaçant exemple.com et le port interne :

server {
    listen 80;
    server_name exemple.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • listen 80 accepte les connexions HTTP.
  • server_name indique le domaine concerné.
  • proxy_pass transmet la requête vers l’application locale.
  • Les en-têtes X-Real-IP, X-Forwarded-For et X-Forwarded-Proto aident l’application à connaître l’adresse du visiteur et le protocole d’origine.

Activez le site avec un lien symbolique :

sudo ln -s /etc/nginx/sites-available/exemple.com /etc/nginx/sites-enabled/exemple.com

Testez la configuration avant de recharger Nginx :

sudo nginx -t

Un retour sain ressemble à ceci :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Rechargez seulement après ce succès :

sudo systemctl reload nginx

Pour générer un certificat HTTPS sur Debian ou Ubuntu avec Nginx, installez Certbot puis lancez l’assistant Nginx :

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d exemple.com
  • python3-certbot-nginx permet à Certbot de lire et d’adapter la configuration Nginx.
  • certbot --nginx demande le certificat et peut ajouter automatiquement la configuration HTTPS.
  • Remplacez exemple.com par votre domaine réel et suivez les questions affichées.

Repère Windows : IIS peut remplir un rôle comparable de serveur web, reverse proxy et terminaison TLS.

Créer une sauvegarde

Une sauvegarde utile doit couvrir les fichiers de configuration, les données persistantes, les bases de données éventuelles et les secrets nécessaires à une restauration.

L’exemple ci-dessous sauvegarde seulement le dossier /opt/mon-service. Si votre application utilise MySQL, MariaDB, PostgreSQL ou une autre base de données, prévoyez aussi un export dédié de cette base.

Créez une archive datée du dossier de l’application :

backup=~/backups/mon-service-$(date +%F-%H%M).tar.gz
mkdir -p ~/backups
sudo tar -czf "$backup" -C /opt mon-service
sudo chown "$USER":"$(id -gn)" "$backup"
chmod 600 "$backup"
tar -tzf "$backup" | head
  • backup=... prépare le nom du fichier une seule fois afin de le réutiliser dans les commandes suivantes.
  • mkdir -p ~/backups crée le dossier de sauvegarde dans votre espace personnel.
  • tar -czf crée (c) une archive compressée avec gzip (z) dans le fichier (f) indiqué.
  • $(date +%F-%H%M) exécute la commande date et insère la date et l’heure dans le nom, par exemple 2026-07-28-1530.
  • -C /opt mon-service demande à tar de se placer dans /opt puis d’archiver le dossier mon-service.
  • chown rend l’archive au compte connecté afin qu’il puisse la télécharger.
  • chmod 600 limite la lecture et l’écriture de l’archive à son propriétaire, car une sauvegarde peut contenir des secrets.
  • tar -tzf liste ensuite le contenu pour vérifier que l’archive est lisible.

Exemple de retour :

mon-service/
mon-service/config/
mon-service/config/config.yml

Cette vérification ne prouve pas que toute restauration fonctionnera, mais elle détecte déjà une archive illisible ou vide.

Repère Windows : PowerShell peut créer des ZIP avec Compress-Archive. L’Horodatage ajouté au nom joue le même rôle qu’un nom de sauvegarde daté.

Pour synchroniser les fichiers sans les compresser :

mkdir -p ~/backups/mon-service
sudo rsync -a /opt/mon-service/ ~/backups/mon-service/
sudo chown -R "$USER":"$(id -gn)" ~/backups/mon-service
  • La première ligne crée la destination.
  • rsync -a copie récursivement en conservant les principales métadonnées.
  • Le / final de /opt/mon-service/ signifie « copier le contenu du dossier ».
  • chown -R attribue récursivement la copie à l’utilisateur connecté.

Repère Windows : rsync est proche de robocopy, qui sait recopier uniquement les différences.

Téléchargez ensuite les sauvegardes importantes sur un autre système avec WinSCP, SFTP ou scp. Une copie située uniquement sur le même disque disparaît avec ce disque.

Les sauvegardes proposées côté BoxToPlay sont une protection supplémentaire. Elles ne remplacent pas les sauvegardes propres à l’application. Testez régulièrement une restauration.

Entretenir le VPS

Pour une vérification régulière :

sudo apt update
sudo apt upgrade
sudo systemctl --failed
df -h
free -h
  • apt update recherche les versions actuellement disponibles.
  • apt upgrade propose leur installation.
  • systemctl --failed liste les services systemd actuellement en échec.
  • df -h vérifie l’espace disque.
  • free -h vérifie la mémoire.

Repère Windows : cela regroupe le rôle de Windows Update, de la console Services, du Gestionnaire des tâches et de l’affichage Stockage.

Lisez les changements proposés avant une mise à jour importante, puis vérifiez l’état et les logs de vos services.

La méthode universelle pour héberger un service

Quel que soit le logiciel choisi, vous pouvez suivre cet ordre :

  1. Lire ses prérequis et identifier le runtime, les ports et les dossiers persistants.
  2. Se connecter en SSH avec le compte root BoxToPlay.
  3. Installer uniquement les dépendances nécessaires avec apt.
  4. Créer un dossier dédié dans /opt ou utiliser le chemin recommandé.
  5. Envoyer ou télécharger les fichiers depuis leur source officielle.
  6. Inspecter puis extraire les archives dans un dossier isolé.
  7. Créer un compte de service et appliquer les permissions adaptées.
  8. Placer la configuration et les secrets avec des droits restrictifs.
  9. Lancer le programme localement et lire ses logs.
  10. Configurer son démarrage durable avec systemd ou Docker.
  11. Tester le port sur 127.0.0.1.
  12. Configurer le pare-feu, le DNS, le reverse proxy et HTTPS selon le besoin.
  13. Préparer une sauvegarde et vérifier une restauration.

Si l’application se prête mieux aux conteneurs, continuez avec notre guide : Installer Docker sur Linux : guide pratique pour bien démarrer.

Votre checklist avant de mettre un service en ligne

Avant de considérer votre VPS prêt, vérifiez que :

  • vous comprenez les commandes avant de les exécuter.
  • le fuseau horaire est correct et l’horloge est synchronisée.
  • votre stratégie de mises à jour automatiques de sécurité est connue.
  • vous savez vous connecter avec root et, si vous créez un autre utilisateur, vous savez s’il possède sudo.
  • votre clé SSH fonctionne dans une deuxième session.
  • l’application possède son propre dossier et son propre utilisateur lorsque c’est possible.
  • les secrets ne sont pas lisibles par tous les comptes.
  • le service redémarre après un reboot.
  • les logs sont accessibles avec journalctl.
  • le service répond d’abord sur 127.0.0.1.
  • seuls SSH, HTTP, HTTPS et les ports réellement nécessaires sont ouverts.
  • le DNS et HTTPS sont configurés pour une interface publique.
  • une sauvegarde existe sur une autre machine.
  • vous savez comment restaurer cette sauvegarde.

Vous n’avez pas besoin de connaître tout Linux avant d’héberger votre premier service. En comprenant ce que font SSH, sudo, apt, les chemins, les permissions, systemd, le pare-feu et les logs, vous disposez déjà des bases nécessaires pour suivre la majorité des guides d’installation.

Pour mettre ces étapes en pratique sur Debian ou Ubuntu, vous pouvez configurer un VPS Linux BoxToPlay et avancer une commande à la fois.