Files
hanarang-rails/.plans/design/deployment.md
이랑이 e58945dc2c chore: 내부망 IP/인프라 정보 제거 — 공개 레포 정리
- 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>
2026-04-10 13:37:26 +09:00

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 — 원클릭 설치 스크립트