설정
설정 가이드
Dmail 봇을 자체 호스팅하기 위한 환경 변수 설정과 외부 서비스 연동 방법입니다.
이 가이드는 자체 호스팅(Self-hosting)을 위한 내용입니다. 공식 Dmail 봇을 사용하는 경우 빠른 시작 가이드를 참고하세요.
사전 요구사항
- Python 3.11 이상
- Node.js 18 이상
- PostgreSQL 데이터베이스
- Discord 개발자 계정
- Google Cloud Console 계정
1. 저장소 복제
git clone https://github.com/your-org/dmail.git cd dmail2. 의존성 설치
# Python 패키지 설치 pip install -r requirements.txt # Next.js (웹 서버) 설치 및 빌드 cd nextjs-web && npm install && npm run build && cd .. # Next.js (문서 서버) 설치 및 빌드 cd nextjs-docs && npm install && npm run build && cd ..3. 환경 변수 설정
프로젝트 루트에 .env 파일을 생성하고 아래 변수들을 설정합니다.
# Discord 봇 설정 DISCORD_BOT_TOKEN=your_bot_token_here DISCORD_PUBLIC_KEY=your_public_key_here OWNER=123456789,987654321 # 데이터베이스 DATABASE_URL=postgresql://user:password@localhost:5432/dmail # Google OAuth GOOGLE_CLIENT_ID=your_client_id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your_client_secret GOOGLE_REDIRECT_URI=http://localhost:8080/oauth/callback # 암호화 키 (생성: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())") TOKEN_CIPHER_KEY=your_fernet_key_here # AI 기능 (선택사항) GEMINI_API_KEY=your_gemini_api_key4. Google Cloud Console 설정
1
프로젝트 생성
Google Cloud Console에서 새 프로젝트를 생성합니다.
2
Gmail API 활성화
API 및 서비스 > 라이브러리에서 Gmail API를 검색하고 활성화합니다.
3
OAuth 2.0 클라이언트 생성
API 및 서비스 > 사용자 인증 정보에서 OAuth 2.0 클라이언트 ID를 생성합니다. 승인된 리디렉션 URI에 GOOGLE_REDIRECT_URI 값을 추가합니다.
5. Discord 개발자 포털 설정
1
봇 생성
Discord 개발자 포털에서 새 애플리케이션을 만들고 Bot 섹션에서 봇을 추가합니다.
2
봇 토큰 복사
Bot 탭에서 Reset Token을 클릭하여 토큰을 생성하고DISCORD_BOT_TOKEN에 설정합니다.
3
Privileged Intents 활성화
Bot 탭에서 Message Content Intent와Server Members Intent를 활성화합니다.
6. 봇 실행
# 개발 환경 python -m bot.main # 프로덕션 환경 (Railway) NODE_ENV=production python -m bot.main봇이 정상 실행되면 다음 포트에서 서비스가 시작됩니다:
:8080- OAuth 콜백 서버:3000- 상태 API:8000- 웹 서버 (nextjs-web):3030- 문서 서버 (nextjs-docs)
7. Railway 배포
Railway.app을 사용하면 간단하게 프로덕션 환경에 배포할 수 있습니다.
1
Railway 프로젝트 연결
Railway에서 GitHub 저장소를 연결하면 nixpacks.toml 설정에 따라 자동 빌드됩니다.
2
환경 변수 설정
Railway 대시보드의 Variables 탭에서 .env의 모든 변수를 입력합니다.
3
PostgreSQL 추가
Railway에서 PostgreSQL 플러그인을 추가하면 DATABASE_URL이 자동으로 설정됩니다.