Add HTTP install mode without domain

This commit is contained in:
2026-10-04 11:54:20 -03:00
parent f6cc5b2bea
commit bcdf42e63d
3 changed files with 107 additions and 8 deletions
+12
View File
@@ -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. 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: Para atualizar:
```sh ```sh
+64
View File
@@ -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
+31 -8
View File
@@ -4,6 +4,7 @@ set -eu
REPO_URL="${REPO_URL:-https://gitea.seconectai.com.br/tiago/SeConectai_Web.git}" REPO_URL="${REPO_URL:-https://gitea.seconectai.com.br/tiago/SeConectai_Web.git}"
INSTALL_DIR="${INSTALL_DIR:-/opt/seconectai-web}" INSTALL_DIR="${INSTALL_DIR:-/opt/seconectai-web}"
APP_DOMAIN="${APP_DOMAIN:-}" APP_DOMAIN="${APP_DOMAIN:-}"
APP_URL="${APP_URL:-}"
LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-}" LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-}"
ADMIN_EMAIL="${ADMIN_EMAIL:-}" ADMIN_EMAIL="${ADMIN_EMAIL:-}"
ADMIN_INITIAL_PASSWORD="${ADMIN_INITIAL_PASSWORD:-}" ADMIN_INITIAL_PASSWORD="${ADMIN_INITIAL_PASSWORD:-}"
@@ -32,11 +33,28 @@ gen_secret() {
fi fi
} }
need APP_DOMAIN "$APP_DOMAIN"
need LETSENCRYPT_EMAIL "$LETSENCRYPT_EMAIL"
need ADMIN_EMAIL "$ADMIN_EMAIL" need ADMIN_EMAIL "$ADMIN_EMAIL"
need ADMIN_INITIAL_PASSWORD "$ADMIN_INITIAL_PASSWORD" 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 if [ -z "$POSTGRES_PASSWORD" ]; then
POSTGRES_PASSWORD="$(gen_secret)" POSTGRES_PASSWORD="$(gen_secret)"
fi fi
@@ -89,7 +107,7 @@ POSTGRES_USER=briefing
POSTGRES_PASSWORD=$POSTGRES_PASSWORD POSTGRES_PASSWORD=$POSTGRES_PASSWORD
DATABASE_URL=postgresql://briefing:$POSTGRES_PASSWORD@db:5432/briefing?schema=public DATABASE_URL=postgresql://briefing:$POSTGRES_PASSWORD@db:5432/briefing?schema=public
AUTH_SECRET=$AUTH_SECRET AUTH_SECRET=$AUTH_SECRET
APP_URL=https://$APP_DOMAIN APP_URL=$APP_URL
APP_DOMAIN=$APP_DOMAIN APP_DOMAIN=$APP_DOMAIN
LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL
CPF_ENC_KEY=$CPF_ENC_KEY CPF_ENC_KEY=$CPF_ENC_KEY
@@ -114,16 +132,21 @@ EOF
chmod 600 .env chmod 600 .env
echo "Construindo e subindo banco" 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" 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" if [ "$COMPOSE_FILE" = "docker-compose.prod.yml" ]; then
$COMPOSE -f docker-compose.prod.yml up -d --build app caddy 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
echo "Instalacao concluida." echo "Instalacao concluida."
echo "Acesse: https://$APP_DOMAIN" echo "Acesse: $APP_URL"
echo "Admin: $ADMIN_EMAIL" echo "Admin: $ADMIN_EMAIL"
echo "O Postgres nao foi exposto publicamente." echo "O Postgres nao foi exposto publicamente."