- 현재 상태 분석 (미배포 상태) - Gitea Actions 자동 배포 워크플로우 설계 - SSH 원격 배포 전략 (51123 → 51124) - 환경변수 설정 가이드 - 단계별 실행 체크리스트 - 트러블슈팅 및 보안 고려사항
4.7 KiB
4.7 KiB
skill-slack 서비스 배포 계획 (51124 서버)
날짜: 2025-09-19
작성자: Claude
관련 서비스: skill-slack (포트 8502)
목적: 51124 서버에 skill-slack 자동 배포 설정
1. 현재 상태 분석
1.1 서비스 현황
- 위치:
/home/happybell/projects/ivada/skill-slack - 포트: 8502
- 상태: 미배포 (docker ps 결과 없음)
- Gitea Actions: cicd.yml 파일 존재하지만 deploy.yml 필요
1.2 기존 파일 구조
skill-slack/
├── .gitea/workflows/cicd.yml # 기존 CI/CD (비활성)
├── app/ # 애플리케이션 코드
├── docker-compose.yml # 개발용 compose
├── Dockerfile # 이미지 빌드
└── requirements.txt # Python 의존성
1.3 문제점
- cicd.yml은 self-hosted runner 사용 (51123 서버용)
- 51124 서버 배포를 위한 별도 워크플로우 필요
- 환경변수 설정 필요 (Slack 토큰 등)
2. 배포 전략
2.1 서버별 역할
| 서버 | 역할 | 배포 방식 |
|---|---|---|
| 51123 | Gitea Actions 실행 | self-hosted runner |
| 51124 | skill-slack 실행 | SSH 원격 배포 |
2.2 배포 흐름
1. Git Push → 2. Gitea Actions (51123) → 3. SSH 배포 (51124)
3. 구현 계획
3.1 deploy.yml 작성 (새 파일 생성)
경로: .gitea/workflows/deploy.yml
name: Deploy skill-slack to 51124
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Deploy to 51124 server
run: |
ssh happybell@51124 "cd ~/projects/ivada/skill-slack && \
git pull && \
docker compose down && \
docker compose up -d --build"
- name: Health check on 51124
run: |
sleep 10
curl -f http://51124:8502/health || exit 1
3.2 환경변수 설정
51124 서버 .env 파일 (수동 생성 필요):
# Slack 토큰 (실제 값 필요)
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
SLACK_BOT_TOKEN_RB8001=xoxb-...
# 서비스 연결
LLM_GATEWAY_URL=http://localhost:8001
STATE_SERVICE_URL=http://localhost:8507
# 기본 설정
SERVICE_NAME=skill-slack
PORT=8502
ENVIRONMENT=production
3.3 docker-compose.yml 수정
services:
skill-slack:
# ... 기존 설정 ...
ports:
- "8502:8502" # 포트 명시적 매핑 추가
environment:
# 환경변수는 .env 파일에서 로드
- SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}
# ...
4. 실행 단계별 체크리스트
4.1 사전 준비 (51124 서버)
- skill-slack 디렉토리 존재 확인
- git remote 설정 확인
- .env 파일 생성 및 토큰 설정
- Docker 설치 상태 확인
4.2 Gitea Actions 설정
- .gitea/workflows/deploy.yml 생성
- SSH 키 설정 (51123 → 51124)
- workflow_dispatch 트리거 활성화
4.3 초기 배포
- 수동 git pull (51124 서버)
- docker compose up -d --build 실행
- 헬스체크: curl http://localhost:8502/health
- 로그 확인: docker logs skill-slack
4.4 연동 테스트
- rb8001 → skill-slack API 호출 테스트
- Slack 메시지 포맷팅 기능 테스트
- 에러 로그 모니터링
5. 트러블슈팅
5.1 일반적인 문제
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 포트 충돌 | 8502 이미 사용 중 | `ss -tlnp |
| 헬스체크 실패 | 서비스 시작 지연 | start_period 늘리기 |
| Slack 토큰 에러 | 잘못된 토큰 | .env 파일 확인 |
5.2 로그 위치
- Docker 로그:
docker logs skill-slack - 애플리케이션 로그:
./logs/디렉토리 - Gitea Actions 로그: 웹 UI에서 확인
6. 보안 고려사항
6.1 토큰 관리
- Slack 토큰은 .env 파일로만 관리
- .env는 절대 git에 커밋하지 않음
- 서버별로 다른 토큰 사용 권장
6.2 네트워크
- network_mode: host 사용 주의
- 필요시 bridge 네트워크 고려
- 방화벽 규칙 확인 필요
7. 향후 개선사항
7.1 단기 (1주일 내)
- 자동 배포 워크플로우 테스트
- 롤백 전략 수립
- 모니터링 대시보드 설정
7.2 장기 (1개월 내)
- Blue-Green 배포 전략 도입
- 로드 밸런싱 설정
- 자동 스케일링 검토