4.9 KiB
4.9 KiB
CaStAD 서버 배포 가이드
도메인 정보
- Primary: https://castad.ktenterprise.net
- Secondary: https://ado2.whitedonkey.kr
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