#!/bin/bash # 서버(192.168.20.66)에 nginx 설정과 systemd 서비스를 설치한다. sudo 필요. set -euo pipefail HERE=$(cd "$(dirname "$0")" && pwd) sudo apt-get install -y nginx python3-docx >/dev/null sudo mkdir -p /var/www/sites sudo chown master:master /var/www/sites sudo chmod 755 /var/www/sites # v1.3.17 (B27): 사이트 설정이 쓰는 접속 통계 로그 형식(wmstats)을 먼저 설치 — 없으면 아래 nginx -t 가 실패해 설치가 멈췄다 sudo cp "$HERE/nginx-wmstats.conf" /etc/nginx/conf.d/wmstats.conf sudo cp "$HERE/nginx-webhosting.conf" /etc/nginx/sites-available/webhosting sudo ln -sf /etc/nginx/sites-available/webhosting /etc/nginx/sites-enabled/webhosting sudo rm -f /etc/nginx/sites-enabled/default sudo nginx -t # 방화벽(ufw): 사설망에서 80 포트 허용 if sudo ufw status | grep -q '^Status: active'; then sudo ufw allow from 192.168.20.0/24 to any port 80 proto tcp comment 'AI web hosting agent (nginx)' >/dev/null sudo ufw allow from 192.168.10.0/24 to any port 80 proto tcp comment 'AI web hosting agent (nginx) LAN 10' >/dev/null fi sudo systemctl reload nginx sudo cp "$HERE/webhosting-agent.service" /etc/systemd/system/webhosting-agent.service sudo systemctl daemon-reload sudo systemctl enable --now webhosting-agent sudo systemctl restart webhosting-agent sleep 1 systemctl --no-pager --lines=5 status webhosting-agent # v1.5.7 (요구 1~4): 설정 파일 · 초기 설정 페이지 · 연동 서비스 # - 유닛의 Environment= 값을 설정 파일(data/config.json)로 옮긴다(없는 항목만 — 기존 운영 값 보존) # - 초기 설정 페이지 서비스(webmaker-setup, 기본 포트 8795 — v1.5.11)를 설치하고, 설정 페이지가 서비스를 재시작할 수 있게 sudoers 규칙을 둔다 # - 이미 설치된 연동 서비스(Gitea·Arimail)가 있으면 설정 파일에 등록한다 ROOT=$(cd "$HERE/.." && pwd) (cd "$ROOT" && node scripts/config.js import-env --unit /etc/systemd/system/webhosting-agent.service && node scripts/config.js set service.systemdUnit webhosting-agent >/dev/null) sudo cp "$HERE/webmaker-setup.service" /etc/systemd/system/webmaker-setup.service printf '%s ALL=(root) NOPASSWD: /usr/bin/systemctl restart webhosting-agent, /usr/bin/systemctl restart webmaker-setup\n' "$(id -un)" | sudo tee /etc/sudoers.d/webmaker-setup >/dev/null && sudo chmod 440 /etc/sudoers.d/webmaker-setup sudo systemctl daemon-reload && sudo systemctl enable --now webmaker-setup >/dev/null && sudo systemctl restart webmaker-setup # v1.5.11 (요구 2): 설정 페이지 기본 포트 8795(모든 인터페이스) — 방화벽에 허용하고 1.5.7 의 3081 사설망 규칙은 지운다. 접속은 토큰·관리자 로그인·시도 제한으로 보호 SETUP_PORT=$(cd "$ROOT" && node scripts/config.js get service.setupPort); SETUP_PORT=${SETUP_PORT:-8795} if sudo ufw status | grep -q '^Status: active'; then for net in 192.168.20.0/24 192.168.10.0/24; do sudo ufw delete allow from "$net" to any port 3081 proto tcp >/dev/null 2>&1 || true; done; sudo ufw allow "$SETUP_PORT"/tcp comment 'AI Webmaker setup page' >/dev/null; fi (cd "$ROOT" && node scripts/backup-data.js --tag install 2>&1 | sed 's/^/ /') || true # v1.6.31 (요구 29) "$HERE/install-services.sh" --check --service webhosting-agent || true # v1.5.17 (요구 1): 서버에 미리 받아 둔 *.<플랫폼 도메인> 인증서가 있으면 알리고 서브 도메인 사이트에 적용 (서비스 기동 때도 자동) echo "== 와일드카드 인증서"; (cd "$ROOT" && node scripts/ssl-wildcard.js --apply | sed 's/^/ /') || true echo "UI: http://192.168.20.66/" echo "== 초기 설정 페이지 (설치 점검표·설정 파일 — 접속 토큰 포함; 점검표가 끝나기 전에는 UI 첫 화면도 /setup 으로 넘어감):"; (cd "$ROOT" && node scripts/config.js setup-url | sed 's/^/ /')