Docs / Premiers pas / Installation

Installation

Installez sh0 sur un serveur propre en moins d'une minute. Une seule commande télécharge le binaire -- sh0 gère automatiquement toutes les dépendances.

Configuration système requise

ExigenceMinimumRecommandé
SELinux (toute distribution)Ubuntu 22.04+ / Debian 12+
RAM1 GB2 GB+
Disque10 GB20 GB+ (SSD)
CPU1 vCPU2 vCPUs+
DockerInstallé automatiquement par sh0 si absent
Note
Au repos, sh0 et son Caddy occupent ensemble environ 140 Mo de mémoire. L'exigence en RAM est principalement pour Docker et les applications que vous déployez. Un serveur de 1 Go peut confortablement exécuter sh0 plus 2 à 3 petites applications.

Plateformes prises en charge

sh0 fournit des binaires préconstruits pour les architectures suivantes :

  • x86_64 (AMD64) -- La plupart des serveurs cloud et fournisseurs VPS
  • aarch64 (ARM64) -- AWS Graviton, Oracle Ampere, Raspberry Pi 4+
Zéro dépendance
sh0 devrait être installé sur un serveur propre. Lorsque vous exécutez sh0 serve en tant que root, il détecte et installe automatiquement Docker et Caddy s'ils sont absents. Aucune configuration manuelle requise.

Installer sh0

Installation rapide (recommandée)

Le script d'installation détecte votre architecture, télécharge le dernier binaire et configure le service systemd automatiquement :

Terminal
curl -fsSL https://get.sh0.dev | bash
Terminal output showing the sh0 install script downloading the binary, setting permissions, and starting the service
Le script d'installation se termine en quelques secondes

Le script effectue les étapes suivantes :

  1. Détecte votre architecture CPU (x86_64 ou aarch64)
  2. Télécharge le dernier binaire sh0 vers /usr/local/bin/sh0
  3. Définit les permissions d'exécution
  4. Crée une unité de service systemd
  5. Active et démarre le service

Téléchargement manuel

Si vous préférez installer à la main, téléchargez l'archive de la version sur GitHub et vérifiez-la avec les sommes de contrôle publiées avant de l'extraire :

Terminal
# Download the archive and the checksums (use sh0-linux-arm64.tar.gz on ARM64)
curl -fsSLO https://github.com/zerosuite-inc/sh0/releases/latest/download/sh0-linux-x64.tar.gz
curl -fsSLO https://github.com/zerosuite-inc/sh0/releases/latest/download/checksums.txt

# Check the archive, then extract it
sha256sum --ignore-missing -c checksums.txt
tar -xzf sh0-linux-x64.tar.gz

# Install the binary
sudo install -m 0755 sh0 /usr/local/bin/sh0
sh0 --version
Output
sh0-linux-x64.tar.gz: OK
sh0 1.10.2

Une installation manuelle ne crée pas le service systemd : configurez-le comme indiqué ci-dessous, puis démarrez-le.

Vérification de l'installation

Vérifiez que sh0 est installé et en cours d'exécution :

Terminal
# Check the version
sh0 --version

# Check the service status
systemctl status sh0

# Verify the API answers
curl -s http://localhost:9000/api/v1/health
Terminal showing sh0 version output and systemctl status showing the service as active and running
Une installation sh0 saine

Le point de terminaison de santé devrait retourner une réponse JSON confirmant que le serveur est opérationnel :

Health Response
{"data":{"license":{"plan":"business","status":"active"},"mode":"selfhosted","needs_setup":false,"status":"ok","version":"1.10.3-rc9"}}

Configuration du service systemd

Si vous avez utilisé le script d'installation rapide, le service systemd est déjà configuré. Pour une installation manuelle, créez le même fichier de service que celui qu'écrit l'installateur :

/etc/systemd/system/sh0.service
[Unit]
Description=sh0 -- Self-Hosted PaaS
Documentation=https://sh0.dev/docs
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service

[Service]
Type=simple
ExecStart=/usr/local/bin/sh0 serve
Restart=always
RestartSec=5
Environment=RUST_LOG=info
WorkingDirectory=/var/lib/sh0
KillMode=process
NoNewPrivileges=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
LockPersonality=true
LimitNOFILE=65535:524288
StandardOutput=journal
StandardError=journal
SyslogIdentifier=sh0

[Install]
WantedBy=multi-user.target
Note
Conservez KillMode=process. Sans ce réglage, redémarrer le service sh0 arrête aussi les processus qu'il a lancés, et vos applications tombent le temps du redémarrage.

Puis activez et démarrez le service :

Terminal
sudo systemctl daemon-reload
sudo systemctl enable sh0
sudo systemctl start sh0
Tip
Le service systemd garantit que sh0 démarre automatiquement après un redémarrage du serveur et redémarre en cas de plantage. Les logs sont disponibles via journalctl -u sh0 -f.
Note
Le stockage d'objets système (MinIO) tourne sur l'image communautaire pgsty/minio (Pigsty), épinglée par empreinte. Ce n'est pas une source officielle MinIO. Pour utiliser une autre image compatible MinIO, ajoutez Environment=SH0_MINIO_IMAGE=<image> à l'environnement du service, lancez systemctl daemon-reload, supprimez le conteneur sh0-system-minio et redémarrez sh0 : l'image ne s'applique qu'à la création du conteneur, et le volume de données est conservé.

Configuration du pare-feu

sh0 nécessite que les ports suivants soient accessibles :

PortProtocoleObjectif
80TCPTrafic HTTP (redirige vers HTTPS)
443TCPTrafic HTTPS pour vos applications déployées
9000TCPTableau de bord et API sh0

Si vous utilisez ufw (Ubuntu/Debian) :

Terminal
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 9000/tcp
Sécurité du tableau de bord
Le port 9000 donne un accès complet à votre tableau de bord sh0. En production, envisagez de restreindre l'accès aux IP de confiance ou de le placer derrière un VPN. Vous pouvez également configurer sh0 pour servir le tableau de bord via Caddy sur un domaine personnalisé avec SSL.

Mise à jour de sh0

Votre configuration, vos applications déployées et vos données vivent dans le répertoire de données, pas dans le binaire : une mise à jour ne remplace que le binaire. La commande intégrée télécharge la dernière version finale, la vérifie et garde la version précédente pour un retour arrière :

Terminal
sudo sh0 update

Les canaux, le retour arrière et les contrôles d'hôte de sh0 doctor sont décrits dans Mises à jour et diagnostic.

Note
sh0 gère automatiquement les migrations de base de données au démarrage. Après la mise à jour, toutes les modifications de schéma sont appliquées de manière transparente.