Instalação

Coloque o sh0 em funcionamento em um servidor limpo em menos de um minuto. Um comando baixa o binário -- o sh0 cuida de todas as dependências automaticamente.

Requisitos de Sistema

RequisitoMínimoRecomendado
SOLinux (qualquer distro)Ubuntu 22.04+ / Debian 12+
RAM1 GB2 GB+
Disco10 GB20 GB+ (SSD)
CPU1 vCPU2 vCPUs+
DockerInstalado automaticamente pelo sh0 se ausente
Note
Em repouso, o sh0 e o seu Caddy usam juntos cerca de 140 MB de memória. O requisito de RAM é principalmente para o Docker e as aplicações que você implanta. Um servidor de 1 GB pode rodar confortavelmente o sh0 mais 2-3 aplicações pequenas.

Plataformas Suportadas

O sh0 fornece binários pré-compilados para as seguintes arquiteturas:

  • x86_64 (AMD64) -- A maioria dos servidores cloud e provedores VPS
  • aarch64 (ARM64) -- AWS Graviton, Oracle Ampere, Raspberry Pi 4+
Zero Dependências
O sh0 deve ser instalado em um servidor limpo. Quando você executa sh0 serve como root, ele detecta e instala automaticamente Docker e Caddy se estiverem ausentes. Nenhuma configuração manual necessária.

Instalar sh0

Instalação Rápida (Recomendada)

O script de instalação detecta sua arquitetura, baixa o binário mais recente e configura o serviço systemd automaticamente:

Terminal
curl -fsSL https://get.sh0.dev | bash
Terminal output showing the sh0 install script downloading the binary, setting permissions, and starting the service
O script de instalação é concluído em poucos segundos

O script realiza estas etapas:

  1. Detecta a arquitetura da sua CPU (x86_64 ou aarch64)
  2. Baixa o binário sh0 mais recente para /usr/local/bin/sh0
  3. Define permissões de execução
  4. Cria uma unidade de serviço systemd
  5. Habilita e inicia o serviço

Download Manual

Se preferir instalar manualmente, baixe o arquivo da versão no GitHub e confira-o com as somas de verificação publicadas antes de extraí-lo:

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

Uma instalação manual não cria o serviço systemd: configure-o como descrito abaixo e depois inicie-o.

Verificar Instalação

Verifique se o sh0 está instalado e em execução:

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
Uma instalação sh0 saudável

O endpoint de saúde deve retornar uma resposta JSON confirmando que o servidor está operacional:

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

Configuração do Serviço Systemd

Se você usou o script de instalação rápida, o serviço systemd já está configurado. Numa instalação manual, crie o mesmo arquivo de serviço que o instalador grava:

/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
Mantenha KillMode=process. Sem essa opção, reiniciar o serviço sh0 também encerra os processos que ele iniciou, e suas aplicações caem durante a reinicialização.

Depois habilite e inicie o serviço:

Terminal
sudo systemctl daemon-reload
sudo systemctl enable sh0
sudo systemctl start sh0
Tip
O serviço systemd garante que o sh0 inicie automaticamente após uma reinicialização do servidor e reinicie caso trave. Logs estão disponíveis via journalctl -u sh0 -f.
Note
O armazenamento de objetos do sistema (MinIO) usa a imagem comunitária pgsty/minio (Pigsty), fixada por digest. Não é uma fonte oficial do MinIO. Para usar outra imagem compatível com MinIO, adicione Environment=SH0_MINIO_IMAGE=<image> ao ambiente do serviço, execute systemctl daemon-reload, remova o contêiner sh0-system-minio e reinicie o sh0: a imagem só se aplica na criação do contêiner, e o volume de dados é mantido.

Configuração de Firewall

O sh0 requer que as seguintes portas estejam acessíveis:

PortaProtocoloFinalidade
80TCPTráfego HTTP (redireciona para HTTPS)
443TCPTráfego HTTPS para suas aplicações implantadas
9000TCPPainel e API do sh0

Se estiver usando ufw (Ubuntu/Debian):

Terminal
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 9000/tcp
Segurança do Painel
A porta 9000 fornece acesso total ao seu painel sh0. Em produção, considere restringir o acesso a IPs confiáveis ou colocá-lo atrás de uma VPN. Você também pode configurar o sh0 para servir o painel através do Caddy em um domínio personalizado com SSL.

Atualizando o sh0

Sua configuração, suas aplicações implantadas e seus dados ficam no diretório de dados, não dentro do binário, então atualizar substitui apenas o binário. O comando integrado baixa a versão final mais recente, verifica-a e guarda a versão anterior para um rollback:

Terminal
sudo sh0 update

Os canais, o rollback e as verificações de host do sh0 doctor estão descritos em Atualizações e diagnóstico.

Note
O sh0 lida automaticamente com migrações de banco de dados ao iniciar. Após atualizar, quaisquer alterações de schema são aplicadas de forma transparente.