Files
jaryo/alternative-git-servers.md
vibsin9322 6477a488c2 Add comprehensive Synology NAS Git server setup guides
- Add synology-git-diagnostic.md: complete troubleshooting guide
- Enhance create-git-repo.sh: improved error handling and user feedback
- Add nas-git-connection-test.md: step-by-step connection testing
- Add alternative-git-servers.md: Docker-based Git server alternatives
- Cover Gitea, GitLab, Forgejo, and manual Git server installation
- Include troubleshooting and performance optimization tips
2025-08-21 13:58:24 +09:00

7.1 KiB

시놀로지 NAS 대안 Git 서버 설치 방안

🚀 개요

시놀로지 Git Server 패키지가 작동하지 않을 때 사용할 수 있는 대안적인 Git 서버 설치 방법들을 제공합니다.

🐳 방법 1: Docker를 이용한 Gitea 설치 (권장)

1.1 장점

  • 웹 기반 Git 관리 인터페이스
  • GitHub와 유사한 사용자 경험
  • 이슈 관리, 위키, 프로젝트 관리 기능
  • 가벼움 (Go 언어 기반)

1.2 설치 과정

Docker 설치 확인

# DSM > 패키지 센터 > Docker 설치
# 또는 SSH에서 확인
docker --version

Gitea 컨테이너 실행

# 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 저장소 생성 및 연결

# 웹 인터페이스에서 새 저장소 '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 설치

# SSH로 NAS 접속
ssh admin@your-nas-ip

# 패키지 관리자 업데이트
sudo apt update

# Git 설치
sudo apt install git git-daemon-run

# 버전 확인
git --version

2.2 Git 서비스 설정

# 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 서비스 설정

# 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 저장소 생성

# 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 설치 과정

# 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 초기 설정

# 컨테이너 시작 대기 (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 설치 과정

# 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 기반 간단 서버

# 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 설치 확인

# DSM 패키지 센터에서 Docker 설치

2단계: Gitea 설치

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단계: 저장소 생성 및 연결

# 웹에서 새 저장소 생성
# 로컬에서 연결
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 관련 문제

# 컨테이너 상태 확인
docker ps -a

# 로그 확인
docker logs gitea

# 컨테이너 재시작
docker restart gitea

포트 충돌 문제

# 사용 중인 포트 확인
sudo netstat -tulpn | grep :3000

# 다른 포트 사용
docker run -d --name gitea -p 3001:3000 -p 223:22 -v /volume1/docker/gitea:/data gitea/gitea:latest

권한 문제

# 데이터 디렉토리 권한 수정
sudo chown -R 1000:1000 /volume1/docker/gitea

이 가이드를 통해 시놀로지 NAS Git Server 패키지 문제를 우회하여 안정적인 Git 서버를 구축할 수 있습니다.