diff --git a/alternative-git-servers.md b/alternative-git-servers.md new file mode 100644 index 0000000..26efc10 --- /dev/null +++ b/alternative-git-servers.md @@ -0,0 +1,298 @@ +# 시놀로지 NAS 대안 Git 서버 설치 방안 + +## 🚀 개요 + +시놀로지 Git Server 패키지가 작동하지 않을 때 사용할 수 있는 대안적인 Git 서버 설치 방법들을 제공합니다. + +## 🐳 방법 1: Docker를 이용한 Gitea 설치 (권장) + +### 1.1 장점 +- 웹 기반 Git 관리 인터페이스 +- GitHub와 유사한 사용자 경험 +- 이슈 관리, 위키, 프로젝트 관리 기능 +- 가벼움 (Go 언어 기반) + +### 1.2 설치 과정 + +#### Docker 설치 확인 +```bash +# DSM > 패키지 센터 > Docker 설치 +# 또는 SSH에서 확인 +docker --version +``` + +#### Gitea 컨테이너 실행 +```bash +# SSH로 NAS 접속 +ssh admin@your-nas-ip + +# Gitea 데이터 디렉토리 생성 +sudo mkdir -p /volume1/docker/gitea + +# Gitea 컨테이너 실행 +docker run -d \ + --name gitea \ + -p 3000:3000 \ + -p 222:22 \ + -v /volume1/docker/gitea:/data \ + -e USER_UID=1000 \ + -e USER_GID=1000 \ + gitea/gitea:latest +``` + +#### 웹 설정 +1. 브라우저에서 `http://your-nas-ip:3000` 접속 +2. 초기 설정 완료: + - 데이터베이스: SQLite3 (기본) + - 관리자 계정 생성 + - 저장소 루트 경로: `/data/git/repositories` + +### 1.3 저장소 생성 및 연결 +```bash +# 웹 인터페이스에서 새 저장소 'jaryo-file-manager' 생성 +# 로컬에서 연결 +git remote add gitea http://your-nas-ip:3000/username/jaryo-file-manager.git +git push gitea master +``` + +## 📦 방법 2: 순수 Git 서버 설치 + +### 2.1 수동 Git 설치 +```bash +# SSH로 NAS 접속 +ssh admin@your-nas-ip + +# 패키지 관리자 업데이트 +sudo apt update + +# Git 설치 +sudo apt install git git-daemon-run + +# 버전 확인 +git --version +``` + +### 2.2 Git 서비스 설정 +```bash +# Git 사용자 생성 +sudo adduser git +sudo su git +cd /home/git + +# SSH 키 디렉토리 생성 +mkdir .ssh && chmod 700 .ssh +touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys + +# Git 저장소 디렉토리 생성 +mkdir /home/git/repositories +``` + +### 2.3 systemd 서비스 설정 +```bash +# Git daemon 서비스 파일 생성 +sudo tee /etc/systemd/system/git-daemon.service << EOF +[Unit] +Description=Git Daemon +After=network.target + +[Service] +ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/home/git/repositories --export-all --verbose --enable=receive-pack +Restart=always +User=git +Group=git +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target +EOF + +# 서비스 활성화 +sudo systemctl enable git-daemon +sudo systemctl start git-daemon +sudo systemctl status git-daemon +``` + +### 2.4 저장소 생성 +```bash +# git 사용자로 전환 +sudo su git +cd /home/git/repositories + +# bare 저장소 생성 +git init --bare jaryo-file-manager.git +``` + +## 🌐 방법 3: GitLab CE Docker 설치 + +### 3.1 특징 +- 기업급 Git 관리 플랫폼 +- CI/CD 파이프라인 지원 +- 이슈 추적, 위키, 프로젝트 관리 +- 더 많은 리소스 필요 + +### 3.2 설치 과정 +```bash +# GitLab 데이터 디렉토리 생성 +sudo mkdir -p /volume1/docker/gitlab/{config,logs,data} + +# GitLab 컨테이너 실행 (최소 4GB RAM 권장) +docker run -d \ + --hostname your-nas-ip \ + --name gitlab \ + -p 8080:80 \ + -p 8443:443 \ + -p 8022:22 \ + -v /volume1/docker/gitlab/config:/etc/gitlab \ + -v /volume1/docker/gitlab/logs:/var/log/gitlab \ + -v /volume1/docker/gitlab/data:/var/opt/gitlab \ + gitlab/gitlab-ce:latest +``` + +### 3.3 초기 설정 +```bash +# 컨테이너 시작 대기 (2-3분) +docker logs -f gitlab + +# 브라우저에서 http://your-nas-ip:8080 접속 +# 초기 root 비밀번호 확인 +docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password +``` + +## 🔧 방법 4: Forgejo (Gitea Fork) 설치 + +### 4.1 특징 +- Gitea의 커뮤니티 중심 포크 +- 더 빠른 개발 주기 +- 오픈소스 중심 + +### 4.2 설치 과정 +```bash +# Forgejo 데이터 디렉토리 생성 +sudo mkdir -p /volume1/docker/forgejo + +# Forgejo 컨테이너 실행 +docker run -d \ + --name forgejo \ + -p 3000:3000 \ + -p 222:22 \ + -v /volume1/docker/forgejo:/data \ + -e USER_UID=1000 \ + -e USER_GID=1000 \ + codeberg.org/forgejo/forgejo:latest +``` + +## 📱 방법 5: 간단한 HTTP Git 서버 + +### 5.1 Python 기반 간단 서버 +```bash +# Python Git HTTP 서버 스크립트 생성 +cat > /volume1/web/git-http-server.py << 'EOF' +#!/usr/bin/env python3 +import os +import http.server +import socketserver +from subprocess import Popen, PIPE + +class GitHTTPHandler(http.server.SimpleHTTPRequestHandler): + def do_GET(self): + if self.path.endswith('.git/info/refs'): + # Git 정보 요청 처리 + self.send_response(200) + self.send_header('Content-type', 'text/plain') + self.end_headers() + + repo_path = self.path.split('/')[1] + git_dir = f'/volume1/git/{repo_path}' + + if os.path.exists(git_dir): + proc = Popen(['git', 'upload-pack', '--advertise-refs', git_dir], + stdout=PIPE, stderr=PIPE) + output, _ = proc.communicate() + self.wfile.write(output) + else: + self.wfile.write(b'Repository not found') + else: + super().do_GET() + +PORT = 8000 +with socketserver.TCPServer(("", PORT), GitHTTPHandler) as httpd: + print(f"Git HTTP Server running on port {PORT}") + httpd.serve_forever() +EOF + +# 실행 권한 부여 +chmod +x /volume1/web/git-http-server.py + +# 서버 실행 +python3 /volume1/web/git-http-server.py +``` + +## 🔀 방법별 비교표 + +| 방법 | 난이도 | 리소스 사용량 | 기능 | 웹 UI | 권장도 | +|------|--------|---------------|------|-------|--------| +| Gitea | 쉬움 | 낮음 | 풍부 | ✅ | ⭐⭐⭐⭐⭐ | +| 순수 Git | 보통 | 매우 낮음 | 기본 | ❌ | ⭐⭐⭐ | +| GitLab CE | 어려움 | 높음 | 매우 풍부 | ✅ | ⭐⭐⭐⭐ | +| Forgejo | 쉬움 | 낮음 | 풍부 | ✅ | ⭐⭐⭐⭐ | +| Python 서버 | 보통 | 낮음 | 제한적 | ❌ | ⭐⭐ | + +## 🚀 빠른 시작 가이드 (Gitea 권장) + +### 1단계: Docker 설치 확인 +```bash +# DSM 패키지 센터에서 Docker 설치 +``` + +### 2단계: Gitea 설치 +```bash +ssh admin@your-nas-ip +sudo mkdir -p /volume1/docker/gitea +docker run -d --name gitea -p 3000:3000 -p 222:22 -v /volume1/docker/gitea:/data gitea/gitea:latest +``` + +### 3단계: 웹 설정 +- `http://your-nas-ip:3000` 접속 +- 초기 설정 완료 +- 관리자 계정 생성 + +### 4단계: 저장소 생성 및 연결 +```bash +# 웹에서 새 저장소 생성 +# 로컬에서 연결 +cd /c/Users/COMTREE/claude_code/jaryo +git remote add gitea http://your-nas-ip:3000/admin/jaryo-file-manager.git +git push gitea master +``` + +## 🛠️ 문제 해결 + +### Docker 관련 문제 +```bash +# 컨테이너 상태 확인 +docker ps -a + +# 로그 확인 +docker logs gitea + +# 컨테이너 재시작 +docker restart gitea +``` + +### 포트 충돌 문제 +```bash +# 사용 중인 포트 확인 +sudo netstat -tulpn | grep :3000 + +# 다른 포트 사용 +docker run -d --name gitea -p 3001:3000 -p 223:22 -v /volume1/docker/gitea:/data gitea/gitea:latest +``` + +### 권한 문제 +```bash +# 데이터 디렉토리 권한 수정 +sudo chown -R 1000:1000 /volume1/docker/gitea +``` + +이 가이드를 통해 시놀로지 NAS Git Server 패키지 문제를 우회하여 안정적인 Git 서버를 구축할 수 있습니다. \ No newline at end of file diff --git a/create-git-repo.sh b/create-git-repo.sh new file mode 100644 index 0000000..0657132 --- /dev/null +++ b/create-git-repo.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +# 시놀로지 NAS Git 저장소 생성 스크립트 (개선 버전) +# 사용법: ./create-git-repo.sh [repo-name] [git-dir] + +# 기본 설정 +DEFAULT_GIT_DIR="/volume1/git" +DEFAULT_REPO_NAME="jaryo-file-manager" + +# 매개변수 처리 +REPO_NAME="${1:-$DEFAULT_REPO_NAME}" +GIT_DIR="${2:-$DEFAULT_GIT_DIR}" +REPO_PATH="$GIT_DIR/$REPO_NAME.git" + +echo "=== 시놀로지 NAS Git 저장소 생성 ===" +echo "저장소 이름: $REPO_NAME" +echo "Git 디렉토리: $GIT_DIR" +echo "저장소 경로: $REPO_PATH" +echo "==========================================" + +# 권한 확인 +if [ "$EUID" -ne 0 ] && [ "$(whoami)" != "admin" ]; then + echo "⚠️ 경고: 관리자 권한이 필요할 수 있습니다." + echo "sudo 또는 admin 계정으로 실행하세요." +fi + +# Git 설치 확인 +if ! command -v git &> /dev/null; then + echo "❌ Git이 설치되지 않았습니다." + echo "패키지 센터에서 Git Server를 설치하거나 다음 명령어를 실행하세요:" + echo "sudo apt update && sudo apt install git" + exit 1 +fi + +# Git 디렉토리 확인 및 생성 +echo "📁 Git 디렉토리 확인 중..." +if [ ! -d "$GIT_DIR" ]; then + echo "Git 디렉토리가 없습니다. 생성 중..." + mkdir -p "$GIT_DIR" || { + echo "❌ Git 디렉토리 생성 실패. 권한을 확인하세요." + exit 1 + } + + # 권한 설정 + if command -v chown &> /dev/null; then + chown admin:users "$GIT_DIR" 2>/dev/null || echo "⚠️ chown 권한 부족" + fi + chmod 755 "$GIT_DIR" 2>/dev/null || echo "⚠️ chmod 권한 부족" + echo "✅ Git 디렉토리 생성 완료: $GIT_DIR" +else + echo "✅ Git 디렉토리 존재 확인: $GIT_DIR" +fi + +# 기존 저장소 확인 +if [ -d "$REPO_PATH" ]; then + echo "⚠️ 저장소가 이미 존재합니다: $REPO_PATH" + read -p "삭제 후 재생성하시겠습니까? (y/N): " confirm + if [[ $confirm =~ ^[Yy]$ ]]; then + rm -rf "$REPO_PATH" + echo "🗑️ 기존 저장소 삭제 완료" + else + echo "❌ 작업을 취소합니다." + exit 1 + fi +fi + +# 저장소 디렉토리 생성 +echo "📂 저장소 디렉토리 생성 중..." +mkdir -p "$REPO_PATH" || { + echo "❌ 저장소 디렉토리 생성 실패" + exit 1 +} + +# Git 저장소 초기화 +echo "🔧 Git 저장소 초기화 중..." +cd "$REPO_PATH" || exit 1 +git init --bare || { + echo "❌ Git 저장소 초기화 실패" + exit 1 +} + +# 권한 설정 +echo "🔐 권한 설정 중..." +if command -v chown &> /dev/null; then + chown -R admin:users "$REPO_PATH" 2>/dev/null || echo "⚠️ chown 권한 부족" +fi +chmod -R 755 "$REPO_PATH" 2>/dev/null || echo "⚠️ chmod 권한 부족" + +# Git hooks 설정 (선택사항) +echo "🪝 Git hooks 설정 중..." +cat > "$REPO_PATH/hooks/post-receive" << 'EOF' +#!/bin/bash +# 자동 배포 hook (선택사항) +echo "푸시 완료: $(date)" +echo "저장소: $PWD" +EOF +chmod +x "$REPO_PATH/hooks/post-receive" 2>/dev/null + +# 저장소 설명 파일 생성 +echo "📄 저장소 설명 파일 생성 중..." +cat > "$REPO_PATH/description" << EOF +Jaryo File Manager - 시놀로지 NAS 자료실 파일 관리 시스템 +EOF + +# Git 서비스 확인 및 시작 +echo "🔄 Git 서비스 상태 확인 중..." +NAS_IP=$(hostname -I | awk '{print $1}' | tr -d ' ') + +# 다양한 방법으로 IP 확인 +if [ -z "$NAS_IP" ]; then + NAS_IP=$(ip route get 1 | awk '{print $7; exit}' 2>/dev/null) +fi +if [ -z "$NAS_IP" ]; then + NAS_IP="your-nas-ip" +fi + +echo "✅ Git 저장소 생성 완료!" +echo "==========================================" +echo "📋 저장소 정보:" +echo " - 이름: $REPO_NAME" +echo " - 경로: $REPO_PATH" +echo " - 설명: 자료실 파일 관리 시스템" +echo "" +echo "🌐 연결 URL:" +echo " SSH: ssh://admin@$NAS_IP$REPO_PATH" +echo " HTTP: http://$NAS_IP:3000/git/$REPO_NAME.git" +echo "" +echo "🔗 로컬에서 연결하는 방법:" +echo " git remote add nas ssh://admin@$NAS_IP$REPO_PATH" +echo " git push nas master" +echo "" +echo "📝 다음 단계:" +echo " 1. 로컬 프로젝트에서 원격 저장소 추가" +echo " 2. 첫 번째 push 실행" +echo " 3. Git 서비스 동작 확인" +echo "" +echo "🔧 Git 서비스 수동 시작 (필요시):" +echo " sudo systemctl start git-daemon" +echo " sudo git daemon --base-path=$GIT_DIR --export-all --reuseaddr &" +echo "" +echo "📖 자세한 설정은 synology-git-diagnostic.md 파일을 참조하세요." diff --git a/nas-git-connection-test.md b/nas-git-connection-test.md new file mode 100644 index 0000000..c231768 --- /dev/null +++ b/nas-git-connection-test.md @@ -0,0 +1,257 @@ +# 시놀로지 NAS Git 서버 연결 테스트 가이드 + +## 🧪 연결 테스트 단계별 가이드 + +### 1단계: 기본 연결 테스트 + +#### 1.1 SSH 연결 확인 +```bash +# NAS SSH 연결 테스트 +ssh admin@your-nas-ip + +# 성공시 NAS 터미널에 접속됨 +# 실패시 확인사항: +# - SSH 서비스 활성화 여부 +# - 방화벽 설정 +# - IP 주소 정확성 +``` + +#### 1.2 Git 설치 확인 +```bash +# NAS에서 Git 명령어 확인 +which git +git --version + +# Git 서비스 상태 확인 +sudo systemctl status git-daemon +ps aux | grep git +``` + +### 2단계: 저장소 생성 및 설정 + +#### 2.1 자동 스크립트 실행 +```bash +# 로컬에서 NAS로 스크립트 복사 +scp create-git-repo.sh admin@your-nas-ip:/tmp/ + +# NAS에서 스크립트 실행 +ssh admin@your-nas-ip +cd /tmp +chmod +x create-git-repo.sh +./create-git-repo.sh jaryo-file-manager +``` + +#### 2.2 수동 저장소 생성 (스크립트 실패시) +```bash +# NAS에서 직접 실행 +ssh admin@your-nas-ip + +# Git 디렉토리 생성 +sudo mkdir -p /volume1/git +sudo chown admin:users /volume1/git +cd /volume1/git + +# Bare 저장소 생성 +mkdir jaryo-file-manager.git +cd jaryo-file-manager.git +git init --bare +sudo chown -R admin:users . +``` + +### 3단계: 로컬에서 연결 테스트 + +#### 3.1 기존 프로젝트에 원격 저장소 추가 +```bash +# 현재 jaryo 프로젝트 디렉토리에서 +cd /c/Users/COMTREE/claude_code/jaryo + +# NAS Git 원격 저장소 추가 +git remote add nas ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git + +# 원격 저장소 확인 +git remote -v +``` + +#### 3.2 첫 번째 Push 테스트 +```bash +# 모든 변경사항 커밋 (필요시) +git add . +git commit -m "Initial commit for NAS deployment" + +# NAS로 푸시 +git push nas master + +# 성공시 출력 예시: +# Enumerating objects: X, done. +# Counting objects: 100% (X/X), done. +# Delta compression using up to Y threads +# Compressing objects: 100% (X/X), done. +# Writing objects: 100% (X/X), X.XX KiB | X.XX MiB/s, done. +# Total X (delta X), reused X (delta X), pack-reused 0 +# To ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git +# * [new branch] master -> master +``` + +### 4단계: 클론 테스트 + +#### 4.1 다른 디렉토리에서 클론 테스트 +```bash +# 테스트용 디렉토리 생성 +mkdir /tmp/git-test +cd /tmp/git-test + +# NAS에서 클론 +git clone ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git + +# 성공시 프로젝트 파일들이 다운로드됨 +cd jaryo-file-manager +ls -la +``` + +#### 4.2 HTTP 클론 테스트 (Git HTTP 서버 실행시) +```bash +# Git HTTP 서버가 실행 중인 경우 +git clone http://your-nas-ip:3000/jaryo-file-manager.git +``` + +### 5단계: 웹 인터페이스 테스트 + +#### 5.1 GitWeb 접속 테스트 +- 브라우저에서 `http://your-nas-ip/git` 접속 +- 또는 `http://your-nas-ip:3000` 접속 +- 저장소 목록에서 `jaryo-file-manager` 확인 + +#### 5.2 Git HTTP 서버 상태 확인 +```bash +# NAS에서 Git HTTP 서버 실행 확인 +sudo netstat -tulpn | grep :3000 +ps aux | grep git-daemon +``` + +## 🚨 문제 해결 + +### 연결 실패 시 체크리스트 + +#### ❌ "Connection refused" 오류 +```bash +# 1. SSH 서비스 확인 +ssh -v admin@your-nas-ip + +# 2. 포트 확인 (기본: 22) +ssh -p 22 admin@your-nas-ip + +# 3. 방화벽 확인 +# DSM > 제어판 > 보안 > 방화벽 +``` + +#### ❌ "Permission denied" 오류 +```bash +# 1. 사용자 권한 확인 +# DSM > 제어판 > 사용자 및 그룹 > admin > 애플리케이션 + +# 2. SSH 키 설정 (선택사항) +ssh-keygen -t rsa +ssh-copy-id admin@your-nas-ip +``` + +#### ❌ "Repository not found" 오류 +```bash +# 1. 저장소 경로 확인 +ssh admin@your-nas-ip +ls -la /volume1/git/ +ls -la /volume1/git/jaryo-file-manager.git/ + +# 2. 권한 확인 +sudo chown -R admin:users /volume1/git/jaryo-file-manager.git +chmod -R 755 /volume1/git/jaryo-file-manager.git +``` + +#### ❌ Git 명령어 없음 +```bash +# Git 설치 확인 +which git + +# 패키지 센터에서 Git Server 설치 +# 또는 수동 설치: +sudo apt update +sudo apt install git +``` + +### 네트워크 설정 문제 + +#### 내부 네트워크 접속 실패 +```bash +# IP 주소 확인 +ping your-nas-ip +nslookup your-nas-ip + +# 포트 스캔 +nmap -p 22,3000 your-nas-ip +``` + +#### 외부 네트워크 접속 설정 +```bash +# 라우터 포트 포워딩 설정 +# 22 (SSH) -> NAS_IP:22 +# 3000 (Git HTTP) -> NAS_IP:3000 + +# 동적 DNS 설정 (선택사항) +# your-domain.dyndns.org -> your-public-ip +``` + +## 📊 연결 성공 확인 + +### ✅ 성공 지표들 + +1. **SSH 연결**: `ssh admin@your-nas-ip` 성공 +2. **저장소 존재**: `/volume1/git/jaryo-file-manager.git` 확인 +3. **Push 성공**: `git push nas master` 완료 +4. **Clone 성공**: 다른 위치에서 클론 가능 +5. **웹 접속**: 브라우저에서 Git 저장소 확인 + +### 📈 성능 테스트 + +```bash +# 대용량 파일 Push 테스트 +dd if=/dev/zero of=test-large-file.bin bs=1M count=10 +git add test-large-file.bin +git commit -m "Large file test" +time git push nas master + +# 클론 속도 테스트 +time git clone ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git test-clone +``` + +## 🔧 고급 설정 + +### Git Hooks 활용 +```bash +# NAS에서 post-receive hook 설정 +ssh admin@your-nas-ip +cd /volume1/git/jaryo-file-manager.git/hooks + +# 자동 배포 hook +cat > post-receive << 'EOF' +#!/bin/bash +echo "코드 푸시 완료: $(date)" +# 자동 배포 로직 추가 가능 +# cd /volume1/web/jaryo && git pull +EOF + +chmod +x post-receive +``` + +### 백업 설정 +```bash +# 저장소 백업 스크립트 +#!/bin/bash +BACKUP_DIR="/volume1/backup/git" +REPO_DIR="/volume1/git" +DATE=$(date +%Y%m%d_%H%M%S) + +mkdir -p "$BACKUP_DIR" +tar -czf "$BACKUP_DIR/git-repos-$DATE.tar.gz" -C "$REPO_DIR" . +echo "백업 완료: $BACKUP_DIR/git-repos-$DATE.tar.gz" +``` + +이 가이드를 따라하면 시놀로지 NAS Git 서버와의 연결을 성공적으로 테스트하고 설정할 수 있습니다. \ No newline at end of file diff --git a/synology-git-diagnostic.md b/synology-git-diagnostic.md new file mode 100644 index 0000000..e480777 --- /dev/null +++ b/synology-git-diagnostic.md @@ -0,0 +1,203 @@ +# 시놀로지 NAS Git Server 진단 및 해결 가이드 + +## 🔍 1단계: Git Server 패키지 상태 확인 + +### 1.1 DSM 패키지 센터 점검 +1. **DSM 로그인** → **패키지 센터** +2. **설치됨** 탭에서 "Git Server" 검색 +3. 상태 확인: + - ✅ **실행 중**: 정상 동작 + - ⚠️ **중지됨**: 서비스 시작 필요 + - ❌ **미설치**: 패키지 설치 필요 + +### 1.2 Git Server 서비스 시작 +```bash +# SSH로 NAS 접속 후 +sudo systemctl status git-daemon +sudo systemctl start git-daemon +sudo systemctl enable git-daemon +``` + +## 🛠️ 2단계: 기본 설정 확인 + +### 2.1 SSH 서비스 활성화 +1. **DSM 제어판** → **터미널 및 SNMP** +2. **SSH 서비스 활성화** 체크 +3. 포트 번호 확인 (기본: 22) + +### 2.2 사용자 권한 설정 +1. **DSM 제어판** → **사용자 및 그룹** +2. 사용자 선택 → **편집** → **애플리케이션** +3. **Git Server** 권한 부여 + +### 2.3 방화벽 설정 +1. **DSM 제어판** → **보안** → **방화벽** +2. 다음 포트 허용: + - SSH: 22 + - Git HTTP: 3000 + - Git HTTPS: 3001 + +## 📁 3단계: Git 디렉토리 구조 확인 + +### 3.1 기본 경로 확인 +```bash +# SSH 접속 후 확인 +ls -la /volume1/ +ls -la /volume1/git/ + +# Git 설정 디렉토리 확인 +ls -la /usr/local/git/ +``` + +### 3.2 권한 문제 해결 +```bash +# Git 디렉토리 생성 +sudo mkdir -p /volume1/git +sudo chown -R admin:users /volume1/git +sudo chmod 755 /volume1/git + +# Git Server 사용자 추가 (필요시) +sudo adduser git +sudo usermod -a -G users git +``` + +## 🔧 4단계: 레포지토리 수동 생성 + +### 4.1 Bare 레포지토리 생성 +```bash +# SSH로 NAS 접속 +ssh admin@your-nas-ip + +# 프로젝트 디렉토리 생성 +cd /volume1/git +sudo mkdir jaryo-file-manager.git +cd jaryo-file-manager.git + +# Bare 레포지토리 초기화 +sudo git init --bare +sudo chown -R admin:users . +``` + +### 4.2 웹 인터페이스 활성화 +```bash +# Git HTTP 서버 시작 +cd /volume1/git +sudo git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack +``` + +## 🌐 5단계: 웹 인터페이스 설정 + +### 5.1 Git Web 설정 +```bash +# CGit 또는 GitWeb 설치 +sudo apt update +sudo apt install gitweb + +# Apache 설정 (Web Station 사용시) +sudo ln -s /usr/share/gitweb /volume1/web/git +``` + +### 5.2 브라우저에서 접속 +- URL: `http://your-nas-ip/git` +- 또는: `http://your-nas-ip:3000` + +## 🚨 6단계: 문제 해결 + +### 6.1 "레포지토리 설정이 안보임" 해결 +**원인 1: Git Server 패키지 미설치** +```bash +# 패키지 센터에서 Git Server 재설치 +# 또는 수동 Git 설치 +sudo apt update +sudo apt install git git-daemon-run +``` + +**원인 2: 서비스 시작 실패** +```bash +# 서비스 상태 확인 +sudo systemctl status git-daemon +sudo journalctl -u git-daemon + +# 수동 재시작 +sudo systemctl restart git-daemon +``` + +**원인 3: 권한 문제** +```bash +# 권한 재설정 +sudo chown -R www-data:www-data /volume1/git +sudo chmod -R 755 /volume1/git +``` + +### 6.2 포트 충돌 해결 +```bash +# 포트 사용 확인 +sudo netstat -tulpn | grep :3000 +sudo netstat -tulpn | grep :22 + +# 다른 포트로 변경 +sudo git daemon --port=3001 --reuseaddr --base-path=/volume1/git --export-all +``` + +## 📋 7단계: 연결 테스트 + +### 7.1 로컬에서 연결 테스트 +```bash +# SSH 연결 테스트 +ssh admin@your-nas-ip + +# Git 클론 테스트 +git clone ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git + +# 또는 HTTP 연결 +git clone http://your-nas-ip:3000/jaryo-file-manager.git +``` + +### 7.2 기존 프로젝트 푸시 +```bash +# 기존 프로젝트에서 +git remote add nas ssh://admin@your-nas-ip/volume1/git/jaryo-file-manager.git +git push nas master +``` + +## 🔄 8단계: 자동화 설정 + +### 8.1 systemd 서비스 생성 +```bash +# /etc/systemd/system/git-daemon.service +sudo tee /etc/systemd/system/git-daemon.service << EOF +[Unit] +Description=Git Daemon +After=network.target + +[Service] +ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/volume1/git --export-all --verbose --enable=receive-pack +Restart=always +User=git +Group=git + +[Install] +WantedBy=multi-user.target +EOF + +sudo systemctl enable git-daemon +sudo systemctl start git-daemon +``` + +## 📊 요약 + +레포지토리 설정이 보이지 않는 주요 원인: +1. ❌ Git Server 패키지 미설치/미실행 +2. ❌ SSH 서비스 비활성화 +3. ❌ 사용자 권한 부족 +4. ❌ 방화벽 차단 +5. ❌ Git 디렉토리 부재 + +해결 순서: +1. 패키지 설치/재시작 +2. SSH 및 권한 설정 +3. 수동 레포지토리 생성 +4. 연결 테스트 +5. 자동화 설정 + +이 가이드를 따라하면 시놀로지 NAS에서 Git 레포지토리를 성공적으로 설정할 수 있습니다. \ No newline at end of file