O Conn2Flow é instalado por um instalador web: um pacote pequeno que você coloca na pasta pública do site e abre no navegador. Ele baixa o sistema (o Gestor), cria o banco, gera as chaves e o .env, cria o usuário administrador e, no fim, se transforma no ponto de entrada público do site e apaga a si mesmo.
1. Baixe a última versão do instalador
O instalador é publicado no GitHub como instalador.zip (com o instalador.zip.sha256 ao lado), em releases com tag instalador-vX.Y.Z.
Baixar a última versão do instalador
Pelo terminal, este comando sempre busca a versão mais recente e confere a integridade:
TAG=$(curl -fsSL "https://api.github.com/repos/otavioserra/conn2flow/releases?per_page=50" \
| grep -o '"tag_name": *"instalador-v[^"]*"' | head -1 | sed 's/.*"\(instalador-v[^"]*\)"/\1/')
echo "Versão: $TAG"
curl -fsSLO "https://github.com/otavioserra/conn2flow/releases/download/$TAG/instalador.zip"
curl -fsSLO "https://github.com/otavioserra/conn2flow/releases/download/$TAG/instalador.zip.sha256"
echo "$(cat instalador.zip.sha256) instalador.zip" | sha256sum -c -2. Prepare o servidor
O instalador não confere a versão do PHP nem as extensões: se faltar algo, o erro aparece no meio de uma etapa. Garanta antes:
| Item | Por quê |
|---|---|
| PHP 8.3 ou superior (a linha 2.x é testada até o 8.5) | O Gestor usa sintaxe e funções dessas versões |
Extensões mysqli, pdo_mysql, curl, zip, openssl, mbstring, gd |
Banco (Gestor e instalador), download do GitHub, extração do pacote, chaves RSA, texto e imagens |
| MySQL 8 ou MariaDB, com um banco e um usuário já criados | O instalador não cria o banco, só as tabelas |
Apache com mod_rewrite e .htaccess ativos, ou Nginx |
Todo o site passa por um front-controller |
Saída HTTPS para api.github.com e github.com |
O instalador baixa o Gestor da última release gestor-v* |
| Permissão de escrita na pasta pública e na pasta-mãe do caminho de instalação | O instalador cria a pasta do Gestor e depois reescreve a própria pasta |
3. Envie e abra o instalador
-
Extraia o
instalador.zipdentro da pasta pública do site (ou de uma subpasta, se o site vai morar em/subpasta/). -
Abra o endereço no navegador (
https://seu-dominio/). -
Chave de segurança: na primeira visita, o instalador grava uma chave aleatória em
install-key.txt, na própria pasta, e pede essa chave. Abra o arquivo por FTP, SSH ou pelo gerenciador de arquivos da hospedagem e cole o conteúdo. Isso impede que alguém instale o sistema no seu servidor antes de você.
4. Preencha o formulário
| Campo | O que informar |
|---|---|
| Idioma | pt-br ou en: vira o LANGUAGE_DEFAULT do site |
| Banco (host, nome, usuário, senha) | A conexão é testada antes de qualquer arquivo ser baixado |
| Domínio | O domínio do site. Nomeia a pasta de configuração e os cookies |
| Pasta de instalação do Gestor | Caminho absoluto onde o Gestor ficará. A pasta-mãe precisa existir e aceitar escrita |
| Servidor web | Apache ou Nginx (vem pré-selecionado pelo que o instalador detectou) |
| SSL/HTTPS configurado? | Com "Não", o redirecionamento forçado para HTTPS sai do .htaccess |
| Instalação limpa | Apaga todas as tabelas do banco informado antes de instalar |
| Administrador (nome, e-mail, senha) | Vira o usuário de id 1. O login é o e-mail |
5. O que o instalador faz
-
Valida os campos, o caminho e a conexão com o banco.
-
Baixa o
gestor.zipda releasegestor-v*mais recente (pela API do GitHub) e confere ogestor.zip.sha256antes de extrair. Se a API falhar (por exemplo, por limite de requisições), usa uma versão fixa conhecida (gestor-v2.10.1) e registra o aviso no log. -
Extrai o Gestor na pasta de instalação e cria
autenticacoes/<domínio>/a partir deautenticacoes.exemplo/dominio/:-
.env, com o banco, o domínio, oURL_RAIZdetectado, o idioma e senhas aleatórias paraOPENSSL_PASSWORDeUSUARIO_HASH_PASSWORD; -
o par de chaves RSA em
chaves/gestor/(publica.key/privada.key), protegido por essa senha.
-
-
Cria o banco:
-
executa
controladores/atualizacoes/atualizacoes-banco-de-dados.php(migrações e dados iniciais) e remove a pastadb/do Gestor; -
cria ou atualiza o administrador (senha em Argon2id, ou bcrypt se indisponível);
-
deixa o administrador já logado (cookie persistente).
-
-
Publica o site: troca o
index.phpdo instalador pelo front-controller do Gestor, que aponta para a pasta de instalação.-
No Apache, grava o
.htaccess, comRewriteBasese estiver em subpasta. -
No Nginx, grava
nginx-conn2flow.conf.examplena pasta de instalação e testa se o rewrite chega ao PHP.
-
-
Limpa: apaga
src/,views/,assets/,lang/,temp/, o log, a trava e a chave. Por fim, abre a página de sucesso (/instalacao-sucesso/).
Se a pasta de instalação já tiver um Gestor (gestor.php e config.php), o instalador se recusa a continuar (HTTP 409).
Nginx
O .htaccess não vale no Nginx. O arquivo de exemplo gravado na pasta de instalação traz o bloco location que manda todas as requisições para o index.php, com o parâmetro _gestor-caminho. Aplique-o ao virtual host e recarregue o Nginx. O instalador avisa se a sonda de rewrite falhou.
6. Depois de instalar
A configuração do site fica em <pasta de instalação>/autenticacoes/<domínio>/.env. Pontos que o instalador deixa para você:
-
E-mail: vem desligado (
EMAIL_ACTIVE=false), comnoreply@<domínio>e sem senha. ConfigureEMAIL_HOST,EMAIL_USER,EMAIL_PASS,EMAIL_PORTeEMAIL_SECUREe ligueEMAIL_ACTIVE, senão cadastro, recuperação de senha e formulários não enviam mensagens. Só TLS implícito funciona: use a porta 465 comEMAIL_SECURE=true(comunicacao.php). -
Captcha: vem desligado (
CAPTCHA_PROVIDERvazio eUSUARIO_RECAPTCHA_ACTIVE=false). Para Cloudflare Turnstile, definaCAPTCHA_PROVIDER=cloudflare-turnstile,TURNSTILE_SITE_KEYeTURNSTILE_SECRET_KEY; para Google reCAPTCHA,CAPTCHA_PROVIDER=google-recaptchacom chaves reais. Os valoresUSUARIO_RECAPTCHA_*gravados pelo instalador são aleatórios (preenchimento), e não chaves válidas do Google. -
HTTPS: se você respondeu "Não" e depois instalou um certificado, restaure o redirecionamento no
.htaccessou no servidor. -
Rotinas automáticas: o instalador não agenda nada. Registre no agendador do servidor um tick por frequência (
php gestor/cron.php frequencia=diarioetc.); veja biblioteca cron.php.
A maior parte do .env também pode ser editada pelo painel, em Ambiente.
Solução de problemas
| Sintoma | Causa provável |
|---|---|
| Página pedindo "chave de segurança" | É a proteção do passo 3: leia install-key.txt |
| HTTP 423 | Outra sessão está instalando. Aguarde, ou espere 30 min sem atividade |
| Erro ao baixar o Gestor | Servidor sem saída HTTPS para o GitHub, ou curl ausente |
| "Diretório pai não existe" / "não é possível escrever" | Crie a pasta-mãe do caminho de instalação e dê permissão ao usuário do PHP |
| Site abre mas as rotas dão 404 | Rewrite inativo: mod_rewrite/AllowOverride no Apache, ou o bloco do Nginx não aplicado |
Durante a instalação, os detalhes de cada etapa vão para installer.log, na pasta do instalador. Ele é apagado no final, junto com o resto do instalador.