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:
co-authored by
Claude Fable 5.1
parent
403d0fb845
commit
6b5a014041
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user