castad-pre-v0.3/castad-data/DEPLOY.md

4.9 KiB

CaStAD 서버 배포 가이드

도메인 정보


1. 서버 요구사항

항목 최소 권장
CPU 2 Core 4 Core
RAM 4GB 8GB
Storage 50GB 100GB SSD
OS Ubuntu 20.04+ Ubuntu 22.04 LTS

필수 소프트웨어

# Node.js 18+
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# PM2 (프로세스 관리)
sudo npm install -g pm2

# Nginx
sudo apt-get install -y nginx

# FFmpeg (영상 렌더링)
sudo apt-get install -y ffmpeg

# Python 3 (Instagram 서비스)
sudo apt-get install -y python3 python3-pip

# Chromium (Puppeteer용)
sudo apt-get install -y chromium-browser

# Certbot (SSL 인증서)
sudo apt-get install -y certbot python3-certbot-nginx

2. 프로젝트 클론

# 디렉토리 생성
sudo mkdir -p /var/www/castad
sudo chown $USER:$USER /var/www/castad

# Git 클론
cd /var/www/castad
git clone https://github.com/waabaa/19-claude-saas-castad.git .

# 실행 권한 부여
chmod +x startserver.sh

3. 환경 변수 설정

# .env 파일 생성
cp .env.production.example .env

# 편집
nano .env

필수 변경 항목:

# JWT 시크릿 (반드시 변경!)
JWT_SECRET=your-unique-secret-key-here

# Gemini API 키
VITE_GEMINI_API_KEY=your-key

# Suno API 키
SUNO_API_KEY=your-key

# Instagram 암호화 키 (생성 명령)
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

4. YouTube OAuth 설정

# Google Cloud Console에서 다운로드한 파일을 복사
cp /path/to/client_secret.json server/client_secret.json

5. Nginx 설정

# Nginx 설정 파일 복사
sudo cp nginx/castad.conf /etc/nginx/sites-available/castad.conf

# 심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/castad.conf /etc/nginx/sites-enabled/

# 기본 사이트 비활성화 (선택)
sudo rm /etc/nginx/sites-enabled/default

# 문법 검사
sudo nginx -t

# Nginx 재시작
sudo systemctl restart nginx

6. SSL 인증서 발급

# Let's Encrypt SSL 인증서 발급
sudo certbot --nginx -d castad.ktenterprise.net -d ado2.whitedonkey.kr

# 자동 갱신 테스트
sudo certbot renew --dry-run

Nginx 설정 업데이트 (자동 수정됨): 인증서 경로가 다를 경우 nginx/castad.conf 수정:

ssl_certificate /etc/letsencrypt/live/castad.ktenterprise.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/castad.ktenterprise.net/privkey.pem;

7. 서버 시작

# 서버 시작 (빌드 포함)
./startserver.sh start

# 상태 확인
./startserver.sh status

# 로그 보기
./startserver.sh logs

8. PM2 시작 시 자동 실행 설정

# 현재 상태 저장
pm2 save

# 시스템 시작 시 자동 실행
pm2 startup

# 표시되는 명령어 실행 (예시)
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u ubuntu --hp /home/ubuntu

9. 방화벽 설정 (선택)

# UFW 설정
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable

명령어 요약

명령어 설명
./startserver.sh start 서버 시작 (빌드 포함)
./startserver.sh stop 서버 중지
./startserver.sh restart 서버 재시작
./startserver.sh status 상태 확인
./startserver.sh logs 로그 보기
./startserver.sh update Git pull + 재빌드 + 재시작

업데이트 방법

cd /var/www/castad

# 간단한 방법
./startserver.sh update

# 또는 수동으로
git pull origin main
npm install --legacy-peer-deps
cd server && npm install --legacy-peer-deps && cd ..
npm run build
pm2 restart all

트러블슈팅

502 Bad Gateway

# 백엔드 상태 확인
pm2 status
pm2 logs castad-backend

# 포트 확인
sudo netstat -tlnp | grep 3001

SSL 인증서 오류

# 인증서 갱신
sudo certbot renew

# Nginx 재시작
sudo systemctl restart nginx

Puppeteer 오류

# Chromium 설치 확인
chromium-browser --version

# 또는 환경변수 설정
export PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

Instagram 서비스 오류

# Python 의존성 재설치
pip3 install -r server/instagram/requirements.txt

# 서비스 재시작
pm2 restart castad-instagram

백업

# 데이터베이스 백업
cp server/database.sqlite backups/database_$(date +%Y%m%d).sqlite

# 업로드 파일 백업
tar -czvf backups/uploads_$(date +%Y%m%d).tar.gz server/downloads/

모니터링

# PM2 모니터링
pm2 monit

# 시스템 리소스
htop

# Nginx 접속 로그
tail -f /var/log/nginx/castad_access.log

# Nginx 에러 로그
tail -f /var/log/nginx/castad_error.log