From be414c5c8fd93d64c20c330b5a135556ea04611b Mon Sep 17 00:00:00 2001 From: Tiago Date: Tue, 29 Sep 2026 12:37:37 -0300 Subject: [PATCH] Add global production install and update commands --- DEPLOY.md | 82 ++++++++++++++++++---------- README.md | 16 ++++++ scripts/install-commands.sh | 9 +++ scripts/seconectaicondominio.install | 43 +++++++++++++++ scripts/seconectaicondominio.update | 13 +++++ 5 files changed, 133 insertions(+), 30 deletions(-) create mode 100755 scripts/install-commands.sh create mode 100755 scripts/seconectaicondominio.install create mode 100755 scripts/seconectaicondominio.update diff --git a/DEPLOY.md b/DEPLOY.md index 4a3f9a0..3f72d39 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -20,28 +20,41 @@ Confirme: dig +short condominio.seconectai.com.br ``` -## 2. Primeira instalação com um comando +## 2. Instalar os comandos globais no servidor -No servidor, dentro da pasta do projeto: +Na primeira vez, você precisa ter este projeto no servidor ou baixar só os scripts. Dentro da pasta do projeto, rode: ```bash -./scripts/install-prod.sh "SENHA_MASTER_AQUI" +sudo ./scripts/install-commands.sh ``` -O script gera automaticamente: +Isso instala dois comandos no servidor: + +```bash +seconectaicondominio.install +seconectaicondominio.update +``` + +## 3. Primeira instalação com um comando + +Depois de instalar os comandos globais, rode: + +```bash +seconectaicondominio.install 10031992 +``` + +O valor `10031992` é a senha Master inicial. Depois da instalação, você entra no painel Master usando essa senha. + +O comando baixa/atualiza o código do Gitea em `/opt/SeConectai_Condominios`, gera automaticamente o `.env` e sobe o Docker. + +Ele gera automaticamente: - `DB_PASSWORD` - `JWT_SECRET` - `EVOLUTION_GLOBAL_API_KEY` - `ABACATEPAY_WEBHOOK_SECRET` - `EVOLUTION_DATABASE_CONNECTION_URI` com senha URL-encoded -- `MASTER_PASSWORD_HASH` a partir da senha Master informada - -Depois sobe tudo com Docker Compose: - -```bash -docker compose -f docker-compose.prod.yml up -d --build -``` +- `MASTER_PASSWORD_HASH` a partir da senha Master inicial Acesse: @@ -49,32 +62,35 @@ Acesse: https://condominio.seconectai.com.br ``` -## 3. Atualizar o sistema depois de novos commits +## 4. Atualizar o sistema depois de novos commits -No servidor, dentro da pasta do projeto: +No servidor, rode de qualquer pasta: ```bash +seconectaicondominio.update +``` + +Esse comando entra em `/opt/SeConectai_Condominios`, baixa as atualizações do Gitea e recria os containers Docker. + +## 5. Alternativa sem comandos globais + +Se preferir rodar pela pasta do projeto: + +```bash +./scripts/install-prod.sh "SENHA_MASTER_INICIAL" ./scripts/update-prod.sh ``` -Esse comando faz: +## 6. Logs úteis ```bash -git fetch -git pull --ff-only -docker compose -f docker-compose.prod.yml up -d --build --remove-orphans +docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml ps +docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml logs -f app +docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml logs -f evolution-api +docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml logs -f caddy ``` -## 4. Logs úteis - -```bash -docker compose -f docker-compose.prod.yml ps -docker compose -f docker-compose.prod.yml logs -f app -docker compose -f docker-compose.prod.yml logs -f evolution-api -docker compose -f docker-compose.prod.yml logs -f caddy -``` - -## 5. Testes +## 7. Testes ```bash curl -I https://condominio.seconectai.com.br @@ -87,20 +103,26 @@ Resposta esperada: {"status":"ok"} ``` -## 6. Webhook AbacatePay +## 8. Webhook AbacatePay Depois da instalação, o script mostra o link completo. O formato é: +```text +https://condominio.seconectai.com.br/api/master/webhooks/abacpay?webhookSecret=SEU_SEGREDO +``` + +O endpoint correto no sistema é: + ```text https://condominio.seconectai.com.br/api/master/webhooks/abacatepay?webhookSecret=SEU_SEGREDO ``` Use o valor gerado em `ABACATEPAY_WEBHOOK_SECRET` no `.env`. -## 7. Observações +## 9. Observações - O arquivo `.env` gerado contém segredos reais e não deve ir para Git. - Postgres e Redis não ficam publicados na internet no compose de produção. - Caddy emite HTTPS automaticamente. -- Uploads ficam em `./uploads` no servidor. +- Uploads ficam em `/opt/SeConectai_Condominios/uploads` no servidor. - Faça backup dos volumes Docker e da pasta `uploads`. diff --git a/README.md b/README.md index 489fc6c..da4f115 100644 --- a/README.md +++ b/README.md @@ -47,3 +47,19 @@ mvn clean package ``` O JAR executável é gerado em `target/condocontab-0.1.0.jar`. + +## Deploy rápido em produção + +Depois de instalar os comandos globais no servidor: + +```bash +seconectaicondominio.install SENHA_MASTER_INICIAL +``` + +Para atualizar depois de novos commits: + +```bash +seconectaicondominio.update +``` + +Veja detalhes em [DEPLOY.md](DEPLOY.md). diff --git a/scripts/install-commands.sh b/scripts/install-commands.sh new file mode 100755 index 0000000..6a7227d --- /dev/null +++ b/scripts/install-commands.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +install -m 0755 scripts/seconectaicondominio.install /usr/local/bin/seconectaicondominio.install +install -m 0755 scripts/seconectaicondominio.update /usr/local/bin/seconectaicondominio.update + +echo "Comandos instalados:" +echo " seconectaicondominio.install SENHA_MASTER_INICIAL" +echo " seconectaicondominio.update" diff --git a/scripts/seconectaicondominio.install b/scripts/seconectaicondominio.install new file mode 100755 index 0000000..6c79a49 --- /dev/null +++ b/scripts/seconectaicondominio.install @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_URL="${REPO_URL:-https://producao-gitea.0jo7zj.easypanel.host/tiago/Condominio_SeConectai.git}" +INSTALL_DIR="${INSTALL_DIR:-/opt/SeConectai_Condominios}" +BRANCH="${BRANCH:-main}" +DOMAIN="${DOMAIN:-condominio.seconectai.com.br}" + +if [[ $# -lt 1 || -z "${1:-}" ]]; then + echo "Uso: seconectaicondominio.install SENHA_MASTER_INICIAL" + echo "Exemplo: seconectaicondominio.install 10031992" + exit 1 +fi + +MASTER_PASSWORD="$1" + +if ! command -v git >/dev/null 2>&1; then + echo "Erro: git nao encontrado. Instale com: apt update && apt install -y git" + exit 1 +fi + +if ! command -v docker >/dev/null 2>&1; then + echo "Erro: Docker nao encontrado. Instale Docker antes de continuar." + exit 1 +fi + +mkdir -p "$(dirname "$INSTALL_DIR")" + +if [[ -d "$INSTALL_DIR/.git" ]]; then + echo "Repositorio ja existe em $INSTALL_DIR. Atualizando codigo..." + git -C "$INSTALL_DIR" fetch origin "$BRANCH" + git -C "$INSTALL_DIR" checkout "$BRANCH" + git -C "$INSTALL_DIR" pull --ff-only origin "$BRANCH" +else + if [[ -e "$INSTALL_DIR" && -n "$(ls -A "$INSTALL_DIR" 2>/dev/null || true)" ]]; then + echo "Erro: $INSTALL_DIR ja existe e nao esta vazio." + exit 1 + fi + git clone --branch "$BRANCH" "$REPO_URL" "$INSTALL_DIR" +fi + +cd "$INSTALL_DIR" +DOMAIN="$DOMAIN" ./scripts/install-prod.sh "$MASTER_PASSWORD" diff --git a/scripts/seconectaicondominio.update b/scripts/seconectaicondominio.update new file mode 100755 index 0000000..24ead88 --- /dev/null +++ b/scripts/seconectaicondominio.update @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail + +INSTALL_DIR="${INSTALL_DIR:-/opt/SeConectai_Condominios}" +BRANCH="${BRANCH:-main}" + +if [[ ! -d "$INSTALL_DIR/.git" ]]; then + echo "Erro: repositorio nao encontrado em $INSTALL_DIR. Rode primeiro: seconectaicondominio.install SENHA_MASTER_INICIAL" + exit 1 +fi + +cd "$INSTALL_DIR" +BRANCH="$BRANCH" ./scripts/update-prod.sh