#!/usr/bin/env bash # ============================================================ # hyb-oa - 同机部署服务器初始化脚本(在服务器上执行) # 适用:官网 hyb-web 已在同机运行,现新增 OA 子域名;默认使用 Caddy 做反向代理 # ============================================================ set -euo pipefail DEPLOY_USER="${DEPLOY_USER:-deploy}" REMOTE_DIR="${REMOTE_DIR:-/opt/hyb-oa-trialrun}" OA_HOST="${OA_HOST:-oa.hyinda.com}" APP_HOST_PORT="${APP_HOST_PORT:-3000}" CADDY_CONFIG_PATH="${CADDY_CONFIG_PATH:-/etc/caddy/Caddyfile}" if [[ ! "$APP_HOST_PORT" =~ ^[0-9]+$ ]] || (( APP_HOST_PORT < 1 || APP_HOST_PORT > 65535 )); then echo "[ERROR] APP_HOST_PORT 必须是 1-65535 的端口号" >&2 exit 1 fi need_cmd() { command -v "$1" >/dev/null 2>&1 || { echo "[ERROR] 缺少命令: $1" >&2 exit 1 } } if [[ "$(id -u)" -ne 0 ]]; then echo "[ERROR] 请以 root 执行该脚本" >&2 exit 1 fi echo ">>> 1. 安装 Docker / Compose 插件 / rsync / Caddy" export DEBIAN_FRONTEND=noninteractive apt-get update -y apt-get install -y docker.io rsync if apt-cache show caddy >/dev/null 2>&1; then apt-get install -y caddy else echo "[WARN] 未在当前软件源找到 caddy,请后续手工安装。" >&2 fi if apt-cache show docker-compose-plugin >/dev/null 2>&1; then apt-get install -y docker-compose-plugin elif apt-cache show docker-compose-v2 >/dev/null 2>&1; then apt-get install -y docker-compose-v2 elif apt-cache show docker-compose >/dev/null 2>&1; then apt-get install -y docker-compose else echo "[WARN] 未在当前软件源找到 Compose 插件/包,请后续手工安装 Docker Compose。" >&2 fi systemctl enable docker systemctl start docker if systemctl list-unit-files caddy.service >/dev/null 2>&1; then systemctl enable caddy || true systemctl start caddy || true fi echo ">>> 2. 让 ${DEPLOY_USER} 可运行 Docker" id "${DEPLOY_USER}" >/dev/null 2>&1 || { echo "[ERROR] 用户 ${DEPLOY_USER} 不存在,请先按官网方式创建 deploy 用户" >&2 exit 1 } usermod -aG docker "${DEPLOY_USER}" echo ">>> 3. 创建 OA 目录" mkdir -p "${REMOTE_DIR}/deploy/trialrun/data/postgres" mkdir -p "${REMOTE_DIR}/deploy/trialrun/data/storage" mkdir -p "${REMOTE_DIR}/deploy/trialrun/data/minio" chown -R "${DEPLOY_USER}:${DEPLOY_USER}" "${REMOTE_DIR}" echo ">>> 4. 初始化完成,后续手工操作:" echo " 1) 在 ${CADDY_CONFIG_PATH} 增加站点块:${OA_HOST} { reverse_proxy 127.0.0.1:${APP_HOST_PORT} }" echo " 2) 执行 systemctl reload caddy" echo " 3) 在 ${REMOTE_DIR}/deploy/trialrun/.env 写入 OA 环境变量" echo " 4) 切换到 deploy 用户后,从本地执行 deploy/trialrun/deploy.sh" echo " 5) 用 curl -I https://${OA_HOST}/ready 或首页访问做最小探活"