Instalación

Pon sh0 en funcionamiento en un servidor limpio en menos de un minuto. Un solo comando descarga el binario -- sh0 maneja todas las dependencias automáticamente.

Requisitos del sistema

RequisitoMínimoRecomendado
SOLinux (cualquier distribución)Ubuntu 22.04+ / Debian 12+
RAM1 GB2 GB+
Disco10 GB20 GB+ (SSD)
CPU1 vCPU2 vCPUs+
DockerInstalado automáticamente por sh0 si falta
Note
En reposo, sh0 y su Caddy usan juntos unos 140 MB de memoria. El requisito de RAM es principalmente para Docker y las aplicaciones que despliegues. Un servidor de 1 GB puede ejecutar cómodamente sh0 más 2-3 aplicaciones pequeñas.

Plataformas compatibles

sh0 proporciona binarios precompilados para las siguientes arquitecturas:

  • x86_64 (AMD64) -- La mayoría de servidores en la nube y proveedores VPS
  • aarch64 (ARM64) -- AWS Graviton, Oracle Ampere, Raspberry Pi 4+
Cero dependencias
sh0 debe instalarse en un servidor limpio. Cuando ejecutas sh0 serve como root, detecta e instala Docker y Caddy automáticamente si faltan. No se requiere configuración manual.

Instalar sh0

Instalación rápida (recomendada)

El script de instalación detecta tu arquitectura, descarga el último binario y configura el servicio systemd automáticamente:

Terminal
curl -fsSL https://get.sh0.dev | bash
Terminal output showing the sh0 install script downloading the binary, setting permissions, and starting the service
El script de instalación se completa en unos segundos

El script realiza estos pasos:

  1. Detecta la arquitectura de tu CPU (x86_64 o aarch64)
  2. Descarga el último binario de sh0 en /usr/local/bin/sh0
  3. Establece los permisos de ejecución
  4. Crea una unidad de servicio systemd
  5. Habilita e inicia el servicio

Descarga manual

Si prefiere instalar manualmente, descargue el archivo de la versión desde GitHub y compruébelo con las sumas de verificación publicadas antes de extraerlo:

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

Una instalación manual no crea el servicio systemd: configúrelo como se indica a continuación y luego inícielo.

Verificar la instalación

Verifica que sh0 esté instalado y en ejecución:

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
Una instalación saludable de sh0

El endpoint de salud debería devolver una respuesta JSON confirmando que el servidor está operativo:

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

Configuración del servicio systemd

Si utilizó el script de instalación rápida, el servicio systemd ya está configurado. Para una instalación manual, cree el mismo archivo de servicio que escribe el instalador:

/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
Conserve KillMode=process. Sin este ajuste, reiniciar el servicio sh0 también detiene los procesos que lanzó, y sus aplicaciones caen durante el reinicio.

Luego habilita e inicia el servicio:

Terminal
sudo systemctl daemon-reload
sudo systemctl enable sh0
sudo systemctl start sh0
Tip
El servicio systemd garantiza que sh0 se inicie automáticamente después de un reinicio del servidor y se reinicie si falla. Los registros están disponibles vía journalctl -u sh0 -f.
Note
El almacenamiento de objetos del sistema (MinIO) usa la imagen comunitaria pgsty/minio (Pigsty), fijada por digest. No es una fuente oficial de MinIO. Para usar otra imagen compatible con MinIO, añada Environment=SH0_MINIO_IMAGE=<image> al entorno del servicio, ejecute systemctl daemon-reload, elimine el contenedor sh0-system-minio y reinicie sh0: la imagen solo se aplica al crear el contenedor y el volumen de datos se conserva.

Configuración de firewall

sh0 requiere que los siguientes puertos sean accesibles:

PuertoProtocoloPropósito
80TCPTráfico HTTP (redirige a HTTPS)
443TCPTráfico HTTPS para tus aplicaciones desplegadas
9000TCPPanel de control y API de sh0

Si estás usando ufw (Ubuntu/Debian):

Terminal
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 9000/tcp
Seguridad del panel de control
El puerto 9000 proporciona acceso completo a tu panel de control de sh0. En producción, considera restringir el acceso a IPs de confianza o colocarlo detrás de una VPN. También puedes configurar sh0 para servir el panel de control a través de Caddy en un dominio personalizado con SSL.

Actualizar sh0

Su configuración, sus aplicaciones desplegadas y sus datos viven en el directorio de datos, no dentro del binario, así que actualizar solo reemplaza el binario. El comando integrado descarga la última versión final, la verifica y conserva la versión anterior para una reversión:

Terminal
sudo sh0 update

Los canales, la reversión y las comprobaciones del host de sh0 doctor se describen en Actualizaciones y diagnóstico.

Note
sh0 maneja automáticamente las migraciones de base de datos al iniciar. Después de actualizar, cualquier cambio de esquema se aplica de forma transparente.