- deployment.md: 구체적 IP/VMID/LXC ID 제거 → 일반화 - stack.md: DB 호스트 정보 제거 - SPRINT-004: LXC 참조 제거 - migration: LXC ID 제거 → 역할 기반 - install.sh: 하드코딩 repo URL 제거 → RAILS_REPO_URL 또는 --repo 필수 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Design — Deployment (rails 배포 위치)
결정: Rails orchestrator 는 SSOT / Dev 서버에서 PM2 로 가동.
왜 SSOT 서버?
| 이유 | 상세 |
|---|---|
| 모든 프로젝트가 여기서 가동 | PM2 로 12+ 프로세스 관리 |
| SSOT | 프로젝트 shared 자산 보관 |
| Node 22 이미 설치됨 | 추가 세팅 불필요 |
| PM2 이미 가동 중 | 일관된 프로세스 관리 |
| 중립 위치 | agent 어느 호스트에도 속하지 않음 — orchestrator 역할에 적합 |
| 같은 내부 네트워크 | 모든 agent 호스트 + Gitea 접근 가능 |
| Gitea webhook | 같은 네트워크 → 즉시 도달 |
배포 경로
<ssot-server>/
├── hanarang/ # 기존 SSOT
│ ├── shared/
│ ├── sisters/
│ └── scripts/
├── hanarang-rails/ # ← NEW: rails 설치 위치
│ ├── src/
│ ├── data/ # 로그 등
│ ├── .env
│ └── ...
├── <project-a>/ # 기존 프로젝트
├── <project-b>/ # 기존
└── ...
PM2 설정
// ecosystem.config.cjs
module.exports = {
apps: [{
name: 'hanarang-rails',
script: 'dist/cli/index.js',
args: 'serve',
cwd: __dirname,
env: {
NODE_ENV: 'production',
},
max_restarts: 10,
restart_delay: 5000,
error_file: './logs/error.log',
out_file: './logs/out.log',
merge_logs: true,
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
}]
}
설치
# install.sh 사용 (권장)
bash install.sh --dir /path/to/hanarang-rails
# 또는 원격
curl -fsSL <repo-raw>/install.sh | bash
상세는 install.sh --help 참조.
네트워크 요구사항
Rails 서버에서 다음 접근이 필요:
| 대상 | 프로토콜 | 용도 |
|---|---|---|
| Agent 호스트들 | Discord 또는 SSH | SisterTransport |
| Gitea 서버 | HTTPS | webhook 수신 + API 호출 |
| Discord API | HTTPS (외부) | 봇 통신 |
| MariaDB | TCP (3306) | 상태 저장 |
범용성 (다른 사용자)
다른 사용자는 자기 환경에 맞게:
# rails.config.yaml
deployment:
mode: standalone # or pm2, docker, systemd
dataDir: ./data
logDir: ./logs
port: 18800 # webhook receiver + status API
지원 배포 모드:
standalone: 단일 프로세스 (rails serve)pm2: ecosystem.config.cjs 자동 생성docker: Dockerfile + docker-compose.yml 제공systemd: .service 파일 생성
참고
OVERVIEW.md— 프로젝트 범위transports.md— SisterTransport 추상화install.sh— 원클릭 설치 스크립트