Add global production install and update commands
This commit is contained in:
@@ -20,28 +20,41 @@ Confirme:
|
|||||||
dig +short condominio.seconectai.com.br
|
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
|
```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`
|
- `DB_PASSWORD`
|
||||||
- `JWT_SECRET`
|
- `JWT_SECRET`
|
||||||
- `EVOLUTION_GLOBAL_API_KEY`
|
- `EVOLUTION_GLOBAL_API_KEY`
|
||||||
- `ABACATEPAY_WEBHOOK_SECRET`
|
- `ABACATEPAY_WEBHOOK_SECRET`
|
||||||
- `EVOLUTION_DATABASE_CONNECTION_URI` com senha URL-encoded
|
- `EVOLUTION_DATABASE_CONNECTION_URI` com senha URL-encoded
|
||||||
- `MASTER_PASSWORD_HASH` a partir da senha Master informada
|
- `MASTER_PASSWORD_HASH` a partir da senha Master inicial
|
||||||
|
|
||||||
Depois sobe tudo com Docker Compose:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker compose -f docker-compose.prod.yml up -d --build
|
|
||||||
```
|
|
||||||
|
|
||||||
Acesse:
|
Acesse:
|
||||||
|
|
||||||
@@ -49,32 +62,35 @@ Acesse:
|
|||||||
https://condominio.seconectai.com.br
|
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
|
```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
|
./scripts/update-prod.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Esse comando faz:
|
## 6. Logs úteis
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git fetch
|
docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml ps
|
||||||
git pull --ff-only
|
docker compose -f /opt/SeConectai_Condominios/docker-compose.prod.yml logs -f app
|
||||||
docker compose -f docker-compose.prod.yml up -d --build --remove-orphans
|
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
|
## 7. Testes
|
||||||
|
|
||||||
```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
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -I https://condominio.seconectai.com.br
|
curl -I https://condominio.seconectai.com.br
|
||||||
@@ -87,20 +103,26 @@ Resposta esperada:
|
|||||||
{"status":"ok"}
|
{"status":"ok"}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 6. Webhook AbacatePay
|
## 8. Webhook AbacatePay
|
||||||
|
|
||||||
Depois da instalação, o script mostra o link completo. O formato é:
|
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
|
```text
|
||||||
https://condominio.seconectai.com.br/api/master/webhooks/abacatepay?webhookSecret=SEU_SEGREDO
|
https://condominio.seconectai.com.br/api/master/webhooks/abacatepay?webhookSecret=SEU_SEGREDO
|
||||||
```
|
```
|
||||||
|
|
||||||
Use o valor gerado em `ABACATEPAY_WEBHOOK_SECRET` no `.env`.
|
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.
|
- 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.
|
- Postgres e Redis não ficam publicados na internet no compose de produção.
|
||||||
- Caddy emite HTTPS automaticamente.
|
- 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`.
|
- Faça backup dos volumes Docker e da pasta `uploads`.
|
||||||
|
|||||||
@@ -47,3 +47,19 @@ mvn clean package
|
|||||||
```
|
```
|
||||||
|
|
||||||
O JAR executável é gerado em `target/condocontab-0.1.0.jar`.
|
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).
|
||||||
|
|||||||
Executable
+9
@@ -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"
|
||||||
Executable
+43
@@ -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"
|
||||||
Executable
+13
@@ -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
|
||||||
Reference in New Issue
Block a user