From bcdf42e63dbd3ba76244be1c42d5a817a3333921 Mon Sep 17 00:00:00 2001 From: Tiago Date: Sun, 4 Oct 2026 11:54:20 -0300 Subject: [PATCH] Add HTTP install mode without domain --- README.md | 12 ++++++++ docker-compose.http.yml | 64 +++++++++++++++++++++++++++++++++++++++ scripts/install-server.sh | 39 +++++++++++++++++++----- 3 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 docker-compose.http.yml diff --git a/README.md b/README.md index aa847ad..d8c767b 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,18 @@ SMTP_FROM=contato@dominio.com.br Evite colocar senha em parâmetro de URL. URL pode ficar gravada em histórico, logs e proxy. Passe segredo por variável de ambiente no comando ou edite o `.env` no servidor. +Sem domínio, para testar por IP em HTTP na porta `3000`: + +```sh +curl -fsSL https://gitea.seconectai.com.br/tiago/SeConectai_Web/raw/branch/main/scripts/install-server.sh \ + | SERVER_IP=45.13.59.110 \ + ADMIN_EMAIL=tiago27.dossantos@gmail.com \ + ADMIN_INITIAL_PASSWORD='troque-esta-senha' \ + sh +``` + +Depois acesse `http://45.13.59.110:3000`. + Para atualizar: ```sh diff --git a/docker-compose.http.yml b/docker-compose.http.yml new file mode 100644 index 0000000..ea978f4 --- /dev/null +++ b/docker-compose.http.yml @@ -0,0 +1,64 @@ +services: + release: + build: + context: . + target: build + command: sh scripts/release.sh + restart: "no" + env_file: + - .env + depends_on: + db: + condition: service_healthy + volumes: + - uploads:/app/storage/uploads + networks: + - briefing + + app: + build: + context: . + target: runner + restart: unless-stopped + env_file: + - .env + depends_on: + release: + condition: service_completed_successfully + ports: + - "3000:3000" + volumes: + - uploads:/app/storage/uploads + healthcheck: + test: ["CMD-SHELL", "node -e \"fetch('http://localhost:3000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + networks: + - briefing + + db: + image: postgres:16 + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB:-briefing} + POSTGRES_USER: ${POSTGRES_USER:-briefing} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-briefing} -d ${POSTGRES_DB:-briefing}"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - pgdata:/var/lib/postgresql/data + networks: + - briefing + +volumes: + pgdata: + uploads: + +networks: + briefing: + driver: bridge diff --git a/scripts/install-server.sh b/scripts/install-server.sh index 1d245ab..f5e110d 100755 --- a/scripts/install-server.sh +++ b/scripts/install-server.sh @@ -4,6 +4,7 @@ set -eu REPO_URL="${REPO_URL:-https://gitea.seconectai.com.br/tiago/SeConectai_Web.git}" INSTALL_DIR="${INSTALL_DIR:-/opt/seconectai-web}" APP_DOMAIN="${APP_DOMAIN:-}" +APP_URL="${APP_URL:-}" LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-}" ADMIN_EMAIL="${ADMIN_EMAIL:-}" ADMIN_INITIAL_PASSWORD="${ADMIN_INITIAL_PASSWORD:-}" @@ -32,11 +33,28 @@ gen_secret() { fi } -need APP_DOMAIN "$APP_DOMAIN" -need LETSENCRYPT_EMAIL "$LETSENCRYPT_EMAIL" need ADMIN_EMAIL "$ADMIN_EMAIL" need ADMIN_INITIAL_PASSWORD "$ADMIN_INITIAL_PASSWORD" +if [ -n "$APP_DOMAIN" ]; then + APP_URL="${APP_URL:-https://$APP_DOMAIN}" + COMPOSE_FILE="docker-compose.prod.yml" +else + SERVER_IP="${SERVER_IP:-}" + + if [ -z "$APP_URL" ]; then + if [ -n "$SERVER_IP" ]; then + APP_URL="http://$SERVER_IP:3000" + else + APP_URL="http://localhost:3000" + fi + fi + + COMPOSE_FILE="docker-compose.http.yml" + APP_DOMAIN="${APP_DOMAIN:-localhost}" + LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-admin@example.com}" +fi + if [ -z "$POSTGRES_PASSWORD" ]; then POSTGRES_PASSWORD="$(gen_secret)" fi @@ -89,7 +107,7 @@ POSTGRES_USER=briefing POSTGRES_PASSWORD=$POSTGRES_PASSWORD DATABASE_URL=postgresql://briefing:$POSTGRES_PASSWORD@db:5432/briefing?schema=public AUTH_SECRET=$AUTH_SECRET -APP_URL=https://$APP_DOMAIN +APP_URL=$APP_URL APP_DOMAIN=$APP_DOMAIN LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL CPF_ENC_KEY=$CPF_ENC_KEY @@ -114,16 +132,21 @@ EOF chmod 600 .env echo "Construindo e subindo banco" -$COMPOSE -f docker-compose.prod.yml up -d db +$COMPOSE -f "$COMPOSE_FILE" up -d db echo "Rodando migrations e seed" -$COMPOSE -f docker-compose.prod.yml run --rm release +$COMPOSE -f "$COMPOSE_FILE" run --rm release -echo "Subindo app e proxy HTTPS" -$COMPOSE -f docker-compose.prod.yml up -d --build app caddy +if [ "$COMPOSE_FILE" = "docker-compose.prod.yml" ]; then + echo "Subindo app e proxy HTTPS" + $COMPOSE -f "$COMPOSE_FILE" up -d --build app caddy +else + echo "Subindo app HTTP na porta 3000" + $COMPOSE -f "$COMPOSE_FILE" up -d --build app +fi echo echo "Instalacao concluida." -echo "Acesse: https://$APP_DOMAIN" +echo "Acesse: $APP_URL" echo "Admin: $ADMIN_EMAIL" echo "O Postgres nao foi exposto publicamente."