Referência v3
Voltar à plataforma

Instalação

Do zero ao servidor rodando em minutos.

Instalação assistida recomendada

Em uma VPS Ubuntu nova, o comando sudo bash install.sh conduz domínio, administrador, Docker, PHP 8.5, bancos, HTTPS, Redis, WebSocket e runtimes isolados. Cada etapa é validada e a URL final é exibida.

1. Preparar os domínios

Para seudominio.com, a arquitetura recomendada usa quatro registros apontando para o IPv4 público da VPS:

TipoNome na CloudflareResultadoProxy inicial
Apainelpainel.seudominio.comDNS only
Arealtimerealtime.seudominio.comDNS only
Astreamstream.seudominio.comDNS only
A*.apps<projeto>.apps.seudominio.comDNS only

Comece com a nuvem cinza para o Caddy emitir os certificados diretamente. Depois, painel e realtime podem ser proxied. Mantenha stream como DNS only e só proxie *.apps se o certificado da Cloudflare cobrir *.apps.seudominio.com. Em SSL/TLS, use Full (strict).

bash
getent hosts painel.seudominio.com
getent hosts realtime.seudominio.com
getent hosts stream.seudominio.com
getent hosts teste.apps.seudominio.com

2. Preparar a VPS

No firewall do provedor, libere TCP 22 para SSH e TCP 80/443 para HTTP, HTTPS e certificados. Não publique PostgreSQL, Redis ou Adminer.

bash
ssh ubuntu@IP_DA_VPS
sudo apt update
sudo apt install -y git
sudo mkdir -p /var/www/vupi
sudo chown "$USER:$USER" /var/www/vupi

3. Autorizar um repositório privado

O GitHub não aceita senha comum no Git. Gere uma Deploy Key somente leitura:

bash
ssh-keygen -t ed25519 -C "vupi-vps" -f ~/.ssh/vupi_deploy -N ""
cat ~/.ssh/vupi_deploy.pub

No GitHub, abra Settings → Deploy keys → Add deploy key, cole a chave e não habilite escrita. Depois teste:

bash
ssh -i ~/.ssh/vupi_deploy -o IdentitiesOnly=yes -T git@github.com

A resposta “successfully authenticated, but GitHub does not provide shell access” confirma que funcionou.

4. Clonar e iniciar o assistente

Antes de iniciar, crie em Cloudflare → Turnstile um widget gerenciado autorizado para o hostname do painel. Guarde a Site Key e a Secret Key: o instalador solicitará ambas e manterá a chave privada oculta.

bash
GIT_SSH_COMMAND="ssh -i $HOME/.ssh/vupi_deploy -o IdentitiesOnly=yes" \
git clone --branch main --single-branch \
  git@github.com:sweflow/api_sweflow_php.git /var/www/vupi

cd /var/www/vupi
sudo bash install.sh

Para testar uma branch antes da mesclagem, substitua main pelo nome da branch. No campo da senha, Enter gera uma senha forte. Uma senha manual precisa ter 12+ caracteres, maiúscula, minúscula, número e símbolo.

5. O que o instalador executa

  1. Dependências básicas e código da plataforma.
  2. Docker Engine e PHP 8.5 com extensões.
  3. Composer e arquivo .env com segredos exclusivos.
  4. PostgreSQL principal e banco dos projetos.
  5. Migrations, seeders, PHP-FPM, Caddy e HTTPS.
  6. Worker dos projetos isolados.
  7. Redis, Pub/Sub e gateway WebSocket.
  8. Testes de saúde, autorreparo e exibição da URL e credenciais.
Fluxo automático: o instalador verifica Docker, os dois bancos PostgreSQL, PHP-FPM, Caddy, worker dos projetos, Redis, realtime, TLS e os endereços públicos. Ao detectar inconsistência, repara o componente e repete os testes até três vezes. Não copie o Caddyfile.fpm nem execute os scripts internos separadamente depois da instalação.

Em uma reexecução, os segredos e a senha administrativa são preservados sem voltar a ser exibidos no terminal.

6. Validar a instalação

As validações abaixo já fazem parte do instalador e são apresentadas apenas para auditoria manual:

bash
sudo systemctl is-active docker php8.5-fpm caddy \
  vupi-project-runtime-worker vupi-realtime
curl -I https://painel.seudominio.com
curl -fsS https://realtime.seudominio.com/health
cd /var/www/vupi && sudo docker compose ps

Ubuntu 26.04 e retomada após falhas

O Ubuntu 26.04 (resolute) já fornece PHP 8.5. O instalador detecta essa versão, usa o repositório oficial e desativa de forma recuperável um PPA antigo incompatível. O aviso de kernel pendente não interrompe a instalação e a Vupi nunca reinicia a VPS automaticamente.

Se ocorrer uma falha, corrija o primeiro [ERRO] e execute novamente:

bash
cd /var/www/vupi
sudo bash install.sh

Instalação manual e ambiente de desenvolvimento

Antes de começar, certifique-se de ter instalado:

RequisitoVersão mínimaVerificar
PHP8.5php -v
Composer2.xcomposer -V
Git2.xgit --version
PostgreSQL ou MySQL15+ / 8+psql -V / mysql -V

Instalar PHP 8.5 (Ubuntu 26.04)

bash
sudo apt update
sudo apt install -y php8.5 php8.5-cli php8.5-fpm php8.5-common \
  php8.5-curl php8.5-mbstring php8.5-xml php8.5-zip \
  php8.5-bcmath php8.5-intl php8.5-opcache php8.5-gd \
  php8.5-pgsql php8.5-mysql

Instalar Composer

bash
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Instalar extensões de banco de dados

Para PostgreSQL:

bash
sudo apt-get install php8.5-pgsql
# Windows: habilite 'extension=pgsql' e 'extension=pdo_pgsql' no php.ini

Para MySQL:

bash
sudo apt-get install php8.5-mysql
# Windows: habilite 'extension=mysqli' e 'extension=pdo_mysql' no php.ini

Banco de dados com Docker (alternativa recomendada)

Se não quiser instalar PostgreSQL ou MySQL localmente, use o Docker. O projeto já vem com um docker-compose.yml pronto.

Instalar Docker + Compose (Ubuntu)

bash
# Remove versões antigas
sudo apt-get remove -y docker docker-engine docker.io containerd runc

# Instala dependências
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# Adiciona chave GPG oficial do Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Adiciona repositório
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instala Docker Engine + Compose plugin
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Permite rodar sem sudo (requer logout/login)
sudo usermod -aG docker $USER

Windows / macOS

Instale o Docker Desktop — já inclui o Compose.

Subir o banco com docker-compose.yml

Com o repositório clonado, escolha o banco que preferir:

bash
# Apenas PostgreSQL (recomendado)
docker compose up -d postgres

# Apenas MySQL
docker compose up -d mysql

# PostgreSQL + Adminer (interface web na porta 8080)
docker compose up -d postgres adminer

# Tudo (PostgreSQL + MySQL + Adminer)
docker compose up -d
Adminer

Com o Adminer rodando, acesse http://localhost:8080 para gerenciar o banco via interface web. Servidor: postgres, usuário: admin, senha: conforme DB_SENHA no .env.

Parar os containers

bash
docker compose down          # para e remove containers (dados preservados)
docker compose down -v       # para e remove containers + volumes (apaga dados)
Configuração automática

O Docker Compose lê as variáveis DB_NOME, DB_USUARIO, DB_SENHA e APP_TIMEZONE diretamente do seu .env. Configure-as antes de subir os containers.

Clonar o repositório

bash
git clone https://github.com/sweflow/api_sweflow_php.git /var/www/vupi
cd /var/www/vupi

Instalar dependências

bash
composer install --no-dev --optimize-autoloader   # produção
composer install                                   # desenvolvimento

Setup automático (recomendado)

O projeto possui um comando de setup completo com menu interativo:

bash
php vupi setup

O menu interativo permite:

  • Gerar secrets JWT automaticamente
  • Criar banco de dados via Docker
  • Executar migrations e seeders
  • Subir o servidor PHP em background
  • Configurar Caddy para HTTPS automático

Ou tudo de uma vez sem interação:

bash
php vupi setup --auto --db-mode=docker --server=php --jwt=if-empty
Ver todas as opções

php vupi setup --help lista todas as flags disponíveis.

Setup manual (passo a passo)

1

Copiar o arquivo de ambiente

bash
cp EXEMPLO.env .env
# Windows:
copy EXEMPLO.env .env
2

Editar o .env com suas configurações

Preencha pelo menos: DB_HOST, DB_NOME, DB_USUARIO, DB_SENHA, JWT_SECRET e JWT_API_SECRET.

Veja a seção Configuração do Ambiente para detalhes de cada variável.

3

Executar migrations

bash
php vupi migrate --seed
4

Iniciar o servidor

bash
php -S localhost:3005 index.php

Acesse: http://localhost:3005

Instalação rápida (Ubuntu)

Em uma VPS Ubuntu compatível, o assistente instala e valida o ambiente completo:

bash
git clone https://github.com/sweflow/api_sweflow_php.git /var/www/vupi
cd /var/www/vupi
sudo bash install.sh

Instala PHP 8.5, Docker, drivers de banco, Composer, bancos, migrations, seeders, HTTPS, Redis, tempo real e runtimes isolados.