HAL 제어 평면(릴리스·서버·Agent·작업·모듈 배포·운영자 계정·긴급 복구·재해복구·공개 상태), Node Agent, 배포 스크립트·유닛·nginx 템플릿, 릴리스 도구, 포털 HAL 클라이언트 (§28·§29·§32~§34)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
zzabisagent-lab
2026-10-26 11:58:15 +00:00
co-authored by Claude Fable 5.1
parent 403d0fb845
commit 6b5a014041
49 changed files with 2584 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# AriMail(도입 모듈) — 원본 deploy/systemd/mail-gateway.service.in 과 같은 내용. 서버에 이미 있는 유닛(arihakdang-mail/arimail/heart-mail)은 그대로 두고 current 심링크만 바꾸므로 보통 쓰이지 않는다.
[Unit]
Description={{UNIT}} — AriMail gateway ({{VERSION}})
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{USER}}
Group={{USER}}
WorkingDirectory={{APP_DIR}}/current
EnvironmentFile={{ENV_FILE}}
Environment=NODE_ENV=production
Environment=HOST=127.0.0.1
Environment=PORT=8790
ExecStart={{NODE}} server/index.mjs
Restart=always
RestartSec=3
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths={{APP_DIR}}/data
StandardOutput=journal
StandardError=journal
SyslogIdentifier={{UNIT}}
[Install]
WantedBy=multi-user.target
+24
View File
@@ -0,0 +1,24 @@
[Unit]
Description=Ariweb Node Agent ({{VERSION}})
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{USER}}
Group={{USER}}
WorkingDirectory={{APP_DIR}}/current
Environment=NODE_ENV=production
Environment=ARIWEB_AGENT_DATA={{APP_DIR}}/data
Environment=NODE_OPTIONS=--no-warnings
Environment=PATH=/usr/local/bin:/usr/bin:/bin:/snap/bin
{{ENV_LINES}}
ExecStart={{NODE}} agent/index.mjs run
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ariweb-agent
[Install]
WantedBy=multi-user.target
+29
View File
@@ -0,0 +1,29 @@
[Unit]
Description=Ariweb HAL — 제어 평면 ({{VERSION}})
Documentation=https://source.ibit.kr/OZ-Group/AriWeb-Suite
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{USER}}
Group={{USER}}
WorkingDirectory={{APP_DIR}}/current
Environment=NODE_ENV=production
Environment=HOST=127.0.0.1
Environment=PORT=8900
Environment=ARIWEB_HAL_DATA={{APP_DIR}}/data
Environment=NODE_OPTIONS=--no-warnings
ExecStart={{NODE}} hal/index.mjs
Restart=always
RestartSec=3
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ReadWritePaths={{APP_DIR}}
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ariweb-hal
[Install]
WantedBy=multi-user.target
+27
View File
@@ -0,0 +1,27 @@
[Unit]
Description=Ariweb Portal — 고객 포털 ({{VERSION}})
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{USER}}
Group={{USER}}
WorkingDirectory={{APP_DIR}}/current
Environment=NODE_ENV=production
Environment=HOST=127.0.0.1
Environment=PORT=8910
Environment=ARIWEB_PORTAL_DATA={{APP_DIR}}/data
Environment=NODE_OPTIONS=--no-warnings
{{ENV_LINES}}
ExecStart={{NODE}} portal/index.mjs
Restart=always
RestartSec=3
NoNewPrivileges=yes
PrivateTmp=yes
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ariweb-portal
[Install]
WantedBy=multi-user.target
+25
View File
@@ -0,0 +1,25 @@
# 관리형 동적(Node) 사이트 실행 유닛 — Agent 가 site.deploy(runtime=node) 때 만든다. 사이트 번들의 ariweb.json { "start": "node server.js", "port": N } 을 따른다.
[Unit]
Description=Ariweb site {{SITE_ID}}
After=network-online.target
[Service]
Type=simple
User={{USER}}
WorkingDirectory={{SITE_DIR}}/current
Environment=NODE_ENV=production
Environment=PORT={{PORT}}
Environment=ARIWEB_SITE_DATA={{SITE_DIR}}/data
ExecStart={{NODE}} {{START}}
Restart=always
RestartSec=3
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ReadWritePaths={{SITE_DIR}}/data
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ariweb-site-{{SITE_ID}}
[Install]
WantedBy=multi-user.target
+25
View File
@@ -0,0 +1,25 @@
# Webmaker(도입 모듈 WebHosting_AI_agent) — 원본 deploy/webhosting-agent.service 를 바탕으로 HAL 배치 레이아웃(releases/current)에 맞춘 유닛.
# 데이터·포트·경로 환경 변수(DATA_ROOT·DATA_DIR·SITES_ROOT·STATS_LOG·PUBLIC_BASE_URL 등)는 서버에 있던 기존 유닛의 Environment 줄({{ENV_LINES}})을 그대로 보존한다.
[Unit]
Description=AI Webmaker ({{VERSION}}, Ariweb Suite managed)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{USER}}
Group={{USER}}
WorkingDirectory={{APP_DIR}}/current
Environment=NODE_ENV=production
Environment=HOST=127.0.0.1
Environment=PORT=3080
{{ENV_LINES}}
ExecStart={{NODE}} server.js
Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal
SyslogIdentifier=webmaker
[Install]
WantedBy=multi-user.target