Add one-command server installer
This commit is contained in:
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
APP_DOMAIN="${APP_DOMAIN:-localhost}"
|
||||
LETSENCRYPT_EMAIL="${LETSENCRYPT_EMAIL:-admin@example.com}"
|
||||
ADMIN_EMAIL="${ADMIN_EMAIL:-admin@example.com}"
|
||||
ADMIN_INITIAL_PASSWORD="${ADMIN_INITIAL_PASSWORD:-admin12345}"
|
||||
|
||||
APP_DOMAIN="$APP_DOMAIN" \
|
||||
LETSENCRYPT_EMAIL="$LETSENCRYPT_EMAIL" \
|
||||
ADMIN_EMAIL="$ADMIN_EMAIL" \
|
||||
ADMIN_INITIAL_PASSWORD="$ADMIN_INITIAL_PASSWORD" \
|
||||
INSTALL_DIR="${INSTALL_DIR:-$(pwd)}" \
|
||||
REPO_URL="${REPO_URL:-https://gitea.seconectai.com.br/tiago/SeConectai_Web.git}" \
|
||||
sh scripts/install-server.sh
|
||||
Executable
+129
@@ -0,0 +1,129 @@
|
||||
#!/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:-}"
|
||||
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 APP_DOMAIN "$APP_DOMAIN"
|
||||
need LETSENCRYPT_EMAIL "$LETSENCRYPT_EMAIL"
|
||||
need ADMIN_EMAIL "$ADMIN_EMAIL"
|
||||
need ADMIN_INITIAL_PASSWORD "$ADMIN_INITIAL_PASSWORD"
|
||||
|
||||
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=https://$APP_DOMAIN
|
||||
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 docker-compose.prod.yml up -d db
|
||||
|
||||
echo "Rodando migrations e seed"
|
||||
$COMPOSE -f docker-compose.prod.yml run --rm release
|
||||
|
||||
echo "Subindo app e proxy HTTPS"
|
||||
$COMPOSE -f docker-compose.prod.yml up -d --build app caddy
|
||||
|
||||
echo
|
||||
echo "Instalacao concluida."
|
||||
echo "Acesse: https://$APP_DOMAIN"
|
||||
echo "Admin: $ADMIN_EMAIL"
|
||||
echo "O Postgres nao foi exposto publicamente."
|
||||
Reference in New Issue
Block a user