#!/bin/bash # ============================================================ # Synology DS1517 초기 설정 스크립트 # 사용법: ssh admin@nas-ip 에서 실행 # chmod +x setup-nas.sh && ./setup-nas.sh # ============================================================ set -e DEPLOY_DIR="/volume1/docker/autostock" INFRA_DIR="/volume1/docker/cicd" BACKUP_DIR="/volume1/docker/autostock/backups" echo "============================================" echo " Auto-Stock NAS 배포 환경 초기 설정" echo " NAS: Synology DS1517 (16GB)" echo "============================================" # 1. 디렉토리 생성 echo "[1/6] 디렉토리 생성..." sudo mkdir -p ${DEPLOY_DIR} sudo mkdir -p ${INFRA_DIR} sudo mkdir -p ${BACKUP_DIR} sudo mkdir -p ${DEPLOY_DIR}/logs # 2. CI/CD 인프라 시작 (Gitea + Jenkins) echo "[2/6] CI/CD 인프라 시작..." if [ -f "${INFRA_DIR}/docker-compose.infra.yml" ]; then cd ${INFRA_DIR} docker compose -f docker-compose.infra.yml up -d else echo " >> docker-compose.infra.yml을 ${INFRA_DIR}에 복사하세요" echo " >> 그 후 다시 실행하거나: cd ${INFRA_DIR} && docker compose -f docker-compose.infra.yml up -d" fi # 3. Jenkins Docker 소켓 권한 echo "[3/6] Docker 소켓 권한 설정..." sudo chmod 666 /var/run/docker.sock 2>/dev/null || true # 4. .env 템플릿 생성 echo "[4/6] .env 템플릿 생성..." if [ ! -f "${DEPLOY_DIR}/.env" ]; then cat > ${DEPLOY_DIR}/.env << 'ENVEOF' # ============================================================ # Auto-Stock 프로덕션 환경변수 (NAS) # 이 파일은 Git에 커밋하지 마세요! # ============================================================ # === Database === POSTGRES_USER=autostock POSTGRES_PASSWORD=CHANGE_ME_STRONG_PASSWORD POSTGRES_DB=autostock DATABASE_URL=postgresql+asyncpg://autostock:CHANGE_ME_STRONG_PASSWORD@postgres:5432/autostock # === Redis === REDIS_PASSWORD=CHANGE_ME_REDIS_PASSWORD REDIS_URL=redis://:CHANGE_ME_REDIS_PASSWORD@redis:6379/0 # === RabbitMQ === RABBITMQ_DEFAULT_USER=autostock RABBITMQ_DEFAULT_PASS=CHANGE_ME_RABBITMQ_PASSWORD RABBITMQ_URL=amqp://autostock:CHANGE_ME_RABBITMQ_PASSWORD@rabbitmq:5672/ # === AI Provider (claude + hybrid haiku/sonnet) === AI_PROVIDER=claude HYBRID_AI_ENABLED=true ANTHROPIC_API_KEY=sk-ant-xxx CLAUDE_MODEL=claude-sonnet-4-6-20250514 CLAUDE_HAIKU_MODEL=claude-haiku-4-5-20251001 GEMINI_API_KEY= GEMINI_MODEL=gemini-2.0-flash # === KIS API (virtual/real 전환: KIS_MODE만 변경) === KIS_MODE=virtual KIS_VIRTUAL_APP_KEY= KIS_VIRTUAL_APP_SECRET= KIS_VIRTUAL_ACCOUNT_NO= KIS_VIRTUAL_URL=https://openapivts.koreainvestment.com:29443 KIS_REAL_APP_KEY= KIS_REAL_APP_SECRET= KIS_REAL_ACCOUNT_NO= KIS_REAL_URL=https://openapi.koreainvestment.com:9443 # === Server === BACKEND_HOST=0.0.0.0 BACKEND_PORT=8000 MCP_SERVER_HOST=0.0.0.0 MCP_SERVER_PORT=8001 SECRET_KEY=CHANGE_ME_64_CHARS_RANDOM_STRING API_KEY=CHANGE_ME_API_KEY MCP_API_KEY=CHANGE_ME_MCP_API_KEY # === Frontend === VITE_API_URL=https://your-domain.com/api VITE_WS_URL=wss://your-domain.com/ws # === Features === AUTO_TRADE_ENABLED=true DAY_TRADE_ENABLED=true US_TRADING_ENABLED=false KIS_WS_ENABLED=true TOKEN_SAVE_MODE=true LOG_LEVEL=INFO DEBUG=false # === Telegram === TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= ENVEOF echo " >> ${DEPLOY_DIR}/.env 생성 완료 — 반드시 비밀번호를 변경하세요!" else echo " >> .env 이미 존재 — 스킵" fi # 5. Synology 방화벽 포트 안내 echo "[5/6] 필요한 포트 (Synology 제어판 → 방화벽):" echo " - 3001: Gitea (Git 웹 UI)" echo " - 8080: Jenkins (CI/CD 웹 UI)" echo " - 3000: Frontend (Nginx → 역방향 프록시 권장)" echo " - 8000: Backend API (내부 전용)" echo " - 8001: MCP Server (내부 전용)" # 6. 완료 echo "[6/6] 설정 완료!" echo "" echo "다음 단계:" echo " 1. ${DEPLOY_DIR}/.env 비밀번호 변경" echo " 2. Gitea 접속: http://nas-ip:3001 → 저장소 생성" echo " 3. Jenkins 접속: http://nas-ip:8080 → 파이프라인 설정" echo " 4. Gitea에 push → Jenkins 자동 빌드/배포" echo "" echo "첫 수동 배포:" echo " cd ${DEPLOY_DIR}" echo " docker compose --env-file .env up -d"