153 lines
3.5 KiB
Bash
Executable File
153 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
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:-}"
|
|
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}"
|
|
AUTH_SECRET="${AUTH_SECRET:-}"
|
|
CPF_ENC_KEY="${CPF_ENC_KEY:-}"
|
|
CPF_HASH_KEY="${CPF_HASH_KEY:-}"
|
|
SMTP_HOST="${SMTP_HOST:-}"
|
|
SMTP_PORT="${SMTP_PORT:-587}"
|
|
SMTP_USER="${SMTP_USER:-}"
|
|
SMTP_PASS="${SMTP_PASS:-}"
|
|
SMTP_FROM="${SMTP_FROM:-}"
|
|
|
|
need() {
|
|
if [ -z "$2" ]; then
|
|
echo "Variavel obrigatoria ausente: $1" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
gen_secret() {
|
|
if command -v openssl >/dev/null 2>&1; then
|
|
openssl rand -base64 32
|
|
else
|
|
head -c 32 /dev/urandom | base64
|
|
fi
|
|
}
|
|
|
|
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
|
|
|
|
if [ -z "$AUTH_SECRET" ]; then
|
|
AUTH_SECRET="$(gen_secret)"
|
|
fi
|
|
|
|
if [ -z "$CPF_ENC_KEY" ]; then
|
|
CPF_ENC_KEY="$(gen_secret)"
|
|
fi
|
|
|
|
if [ -z "$CPF_HASH_KEY" ]; then
|
|
CPF_HASH_KEY="$(gen_secret)"
|
|
fi
|
|
|
|
if ! command -v git >/dev/null 2>&1; then
|
|
echo "Instale git antes de continuar." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "Instale Docker antes de continuar." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if docker compose version >/dev/null 2>&1; then
|
|
COMPOSE="docker compose"
|
|
elif command -v docker-compose >/dev/null 2>&1; then
|
|
COMPOSE="docker-compose"
|
|
else
|
|
echo "Instale Docker Compose antes de continuar." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -d "$INSTALL_DIR/.git" ]; then
|
|
echo "Atualizando projeto em $INSTALL_DIR"
|
|
git -C "$INSTALL_DIR" pull --ff-only
|
|
else
|
|
echo "Clonando projeto em $INSTALL_DIR"
|
|
mkdir -p "$(dirname "$INSTALL_DIR")"
|
|
git clone "$REPO_URL" "$INSTALL_DIR"
|
|
fi
|
|
|
|
cd "$INSTALL_DIR"
|
|
|
|
cat > .env <<EOF
|
|
POSTGRES_DB=briefing
|
|
POSTGRES_USER=briefing
|
|
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
|
|
DATABASE_URL=postgresql://briefing:$POSTGRES_PASSWORD@db:5432/briefing?schema=public
|
|
AUTH_SECRET=$AUTH_SECRET
|
|
APP_URL=$APP_URL
|
|
APP_DOMAIN=$APP_DOMAIN
|
|
LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL
|
|
CPF_ENC_KEY=$CPF_ENC_KEY
|
|
CPF_HASH_KEY=$CPF_HASH_KEY
|
|
SMTP_HOST=$SMTP_HOST
|
|
SMTP_PORT=$SMTP_PORT
|
|
SMTP_USER=$SMTP_USER
|
|
SMTP_PASS=$SMTP_PASS
|
|
SMTP_FROM=$SMTP_FROM
|
|
ADMIN_EMAIL=$ADMIN_EMAIL
|
|
ADMIN_INITIAL_PASSWORD=$ADMIN_INITIAL_PASSWORD
|
|
EVOLUTION_API_URL=
|
|
EVOLUTION_API_KEY=
|
|
EVOLUTION_API_INSTANCE=
|
|
ADMIN_WHATSAPP=
|
|
UPLOAD_DIR=/app/storage/uploads
|
|
UPLOAD_MAX_MB=25
|
|
BACKUP_DIR=./backups
|
|
BACKUP_RETENTION_DAYS=14
|
|
EOF
|
|
|
|
chmod 600 .env
|
|
|
|
echo "Construindo e subindo banco"
|
|
$COMPOSE -f "$COMPOSE_FILE" up -d db
|
|
|
|
echo "Rodando migrations e seed"
|
|
$COMPOSE -f "$COMPOSE_FILE" run --rm release
|
|
|
|
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: $APP_URL"
|
|
echo "Admin: $ADMIN_EMAIL"
|
|
echo "O Postgres nao foi exposto publicamente."
|