Files
Todo-Project/deploy-synology.sh
Hyungi Ahn 0b967a84fa 🚀 시놀로지 배포 준비 완료
 주요 변경사항:
- 단일 docker-compose.yml로 통합 (로컬/시놀로지 환경 지원)
- 시놀로지 볼륨 매핑 설정 (volume1: 이미지, volume3: 데이터)
- 통합 배포 가이드 및 자동 배포 스크립트 추가
- 완전한 Memos 스타일 워크플로우 구현

🎯 새로운 기능:
- 📝 메모 작성 (upload.html) - 이미지 업로드 지원
- 📥 수신함 (inbox.html) - 메모 편집 및 Todo/보드 변환
-  Todo 목록 (todo-list.html) - 오늘 할 일 관리
- 📋 보드 (board.html) - 프로젝트 관리, 접기/펼치기, 이미지 지원
- 📚 아카이브 (archive.html) - 완료된 보드 보관
- 🔐 초기 설정 화면 - 관리자 계정 생성

🔧 기술적 개선:
- 이미지 업로드/편집 완전 지원
- 반응형 디자인 및 모바일 최적화
- 보드 완료 후 자동 숨김 처리
- 메모 편집 시 제목 필드 제거
- 테스트 로그인 버튼 제거 (프로덕션 준비)
- 과거 코드 정리 (TodoService, CalendarSyncService 등)

📦 배포 관련:
- env.synology.example - 시놀로지 환경 설정 템플릿
- SYNOLOGY_DEPLOYMENT_GUIDE.md - 상세한 배포 가이드
- deploy-synology.sh - 원클릭 자동 배포 스크립트
- Nginx 정적 파일 서빙 및 이미지 프록시 설정

🗑️ 정리된 파일:
- 사용하지 않는 HTML 페이지들 (dashboard, calendar, checklist 등)
- 복잡한 통합 서비스들 (integrations 폴더)
- 중복된 시놀로지 설정 파일들
2025-09-24 09:12:39 +09:00

180 lines
5.3 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# Todo-Project 시놀로지 배포 스크립트
# =============================================================================
set -e # 오류 발생 시 스크립트 중단
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 로그 함수
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 시놀로지 환경 확인
check_synology_environment() {
log_info "시놀로지 환경 확인 중..."
# Docker 설치 확인
if ! command -v docker &> /dev/null; then
log_error "Docker가 설치되지 않았습니다. Container Manager 또는 Docker 패키지를 설치하세요."
exit 1
fi
# Docker Compose 확인
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose가 설치되지 않았습니다."
exit 1
fi
log_success "Docker 환경 확인 완료"
}
# 디렉토리 생성
create_directories() {
log_info "시놀로지 디렉토리 구조 생성 중..."
# 이미지 업로드 저장소 (volume1)
sudo mkdir -p /volume1/todo-project/uploads
sudo chmod 755 /volume1/todo-project/uploads
sudo chown -R 1000:1000 /volume1/todo-project
# 설정 및 데이터베이스 저장소 (volume3)
sudo mkdir -p /volume3/docker/todo-project/config/migrations
sudo mkdir -p /volume3/docker/todo-project/postgres
sudo chown -R 999:999 /volume3/docker/todo-project/postgres
sudo chown -R 1000:1000 /volume3/docker/todo-project/config
log_success "디렉토리 구조 생성 완료"
}
# 환경 파일 설정
setup_environment() {
log_info "환경 파일 설정 중..."
if [ ! -f .env ]; then
if [ -f env.synology.example ]; then
cp env.synology.example .env
log_warning ".env 파일이 생성되었습니다. 필수 설정을 수정하세요:"
log_warning "- SECRET_KEY"
log_warning "- POSTGRES_PASSWORD"
log_warning "- CORS_ORIGINS (시놀로지 IP 추가)"
echo
read -p "환경 설정을 완료했습니까? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_error "환경 설정을 완료한 후 다시 실행하세요."
exit 1
fi
else
log_error "env.synology.example 파일이 없습니다."
exit 1
fi
else
log_success "기존 .env 파일을 사용합니다."
fi
}
# 마이그레이션 파일 복사
copy_migrations() {
log_info "데이터베이스 마이그레이션 파일 복사 중..."
if [ -d backend/migrations ]; then
sudo cp -r backend/migrations/* /volume3/docker/todo-project/config/migrations/
log_success "마이그레이션 파일 복사 완료"
else
log_warning "마이그레이션 파일이 없습니다."
fi
}
# Docker 이미지 빌드 및 배포
deploy_application() {
log_info "Todo-Project 배포 중..."
# 기존 컨테이너 중지 및 제거
if docker-compose ps -q | grep -q .; then
log_info "기존 컨테이너 중지 중..."
docker-compose down
fi
# 이미지 빌드 및 컨테이너 시작
log_info "Docker 이미지 빌드 및 컨테이너 시작 중..."
docker-compose up -d --build
# 컨테이너 시작 대기
log_info "컨테이너 시작 대기 중..."
sleep 30
# 헬스체크
log_info "서비스 상태 확인 중..."
if curl -f http://localhost:9000/health &> /dev/null; then
log_success "백엔드 서비스 정상 작동"
else
log_error "백엔드 서비스 오류"
docker-compose logs backend
exit 1
fi
}
# 배포 완료 안내
show_completion_info() {
log_success "🎉 Todo-Project 시놀로지 배포 완료!"
echo
echo "=== 접속 정보 ==="
echo "웹 인터페이스: http://$(hostname -I | awk '{print $1}'):${FRONTEND_PORT:-4000}"
echo "API 서버: http://$(hostname -I | awk '{print $1}'):${BACKEND_PORT:-9000}"
echo
echo "=== 다음 단계 ==="
echo "1. 웹 브라우저에서 접속하여 관리자 계정을 생성하세요"
echo "2. 리버스 프록시 설정 (선택사항)"
echo "3. 방화벽 설정 확인"
echo
echo "=== 유용한 명령어 ==="
echo "로그 확인: docker-compose logs -f"
echo "컨테이너 상태: docker-compose ps"
echo "서비스 재시작: docker-compose restart"
echo "완전 재배포: docker-compose down && docker-compose up -d --build"
}
# 메인 실행 함수
main() {
echo "=== Todo-Project 시놀로지 배포 스크립트 ==="
echo
# 루트 권한 확인
if [ "$EUID" -ne 0 ]; then
log_error "이 스크립트는 root 권한이 필요합니다. sudo로 실행하세요."
exit 1
fi
# 단계별 실행
check_synology_environment
create_directories
setup_environment
copy_migrations
deploy_application
show_completion_info
}
# 스크립트 실행
main "$@"