synology 에 docker 를 이용한 gitea 레포지토리 운영

gitea

git 은 기본적으로 Synology 에서 Git Server 를 제공 한다.
다만 GUI를 이용한 환경만 제공 하지 않기 때문에 어렵고 불편 하다.

그래서 Synology 서버에 docker 를 설치 하고 gitea 도커이미지를 이용해서 Container 를 띄움으로서 내부용 레포지토리를 운영 한다.
gitea go언어로 만들어져 가볍고 ssh 키 등록 및 http 연결을 잘 지원 하고 일반 사용법도 github와 비슷 하다.
ARM64 환경에서도 잘 되기 때문에 신규 사용자의 Amazon CodeCommit 이 중지된 지금 시점에서 클라우드내에 IaaS 으로 구축해 사용하기도 좋다.

 


 

  • Synology NAS 에서 docker 또는 Container Manager 를 설치 한다.(DSM 버전에 따라 패키지 명이 다를 수 있다.)

2024-12-18_165142

 

  • gitea/gitea 이미지를 다운로드 받는다.

2024-12-18_165554

 

  • 다운로드가 완료 되면 이미지를 실행해 시킨다.

2024-12-18_170015

내 경우엔 리소스를 제한하고 자동 재시작 옵션을 활성화 했다.
(gitea 는 golang 으로 만들어져 가볍지만(초기 메모리 사용량 100MB)  레포가 늘어 나면 메모리 사용량이 꾸준히 증가할 수 있다.

 

  • 다음 화면에서 연결될 포트를 선언 한다.

2024-12-18_170147

gitea 은 기본적으로 ssh, http 프로토콜을 사용한다.
DSM의 ssh 데몬과 충돌 하지 않도록 포트는 2222 으로 지정 하고 웹 포트는 3000을 사용 하도록 했다.

 

  • 파일 스테이션에서 연결할 폴더를 생성 한다.

2024-12-18_170330

Synology 에서 Container에 볼륨으로 연결될 드라이브는 docker 를 설치시 생성 되는 /docker 공유 폴더 아래에 있어야 권한 문제가 발생하지 않는다.

 

  • 스크롤을 내려서 연결할 볼륨 및 환경을 추가 한다.

2024-12-18_170421

참고로 내 Synology 의 관리자 아이디는 nas-admin 이 아니다. (쓸모 없는 =_= 공격금지)

 

  • 설정값 최종 점검 후 완료 버튼을 눌러 실행 한다.

2024-12-18_170444

 


 

  • gitea 으로 접속해 설치를 진행 한다. ( http://[Synology-Nas-IP]:3000 )

2024-12-18_173317

관리자 계정 설정의 ▶ 를 눌러서 관리자 정보를 입력 하는것을 잊지 말자.
중간에 빨간색, 파란색 칸은 Container 를 실행 할때 ssh, http 포트를 입력해야 하는 부분으로 맞추어 주어야 한다.

 

  • 테스트로 github 에 있는 레포지토리를 mirror 으로 생성 해본다.

2024-12-18_174235

2024-12-18_174248

2024-12-18_174347

미러로 생성 하는 경우 원본 에서 8시간 마다 원본에서 데이터 싱크를 해온다 ‘ㅅ’a

2024-12-19_093012

gitea 의 화면 구성은 github 과 비슷해 어렵지 않을 것이다.

 

  • 설정 변경

설치 화면에서 설정 할 수 있는 부분은 /admin 페이지에서 수정 되지 않는게 대부분 이다.
OPEN ID 차단 이나 회원 가입을 막는 부분등은 아래와 같이 /volume1/docker/gitea/gitea/conf/app.ini 설정 파일을 수정 해야 한다.

container를 사전에 정지 하고 파일 수정 한뒤에 다시 컨테이너를 시작 한다.

 

웹서버 성능 측정 with wrk

일반 적으로 apache 성능 측정은 기존에 아파치 재단에서 배포하는 ab 테스트를 진행 했었다.

 

docker로 하다보니 apache 가 컨테이너 안에 있어서.. 어짜피 별도로 httpd를 호스트에 설치하거나 별도 벤치 프로그램을 설치해야 한다.

그리고 테스트 하려는 서버가 docker – nginx (캐시활성화) 이고, php-fpm 설정값 계산기를 만들어서 웹서버 부하 테스트가 필요 했기에… 별도의 툴을 찾다가 wrk 를 찾게 되었는데,

컴파일을 필요로 하지만 설치가 간단하고 결과 값 시인성이 좋은 듯 하다 ‘ㅅ’a

 

git 주소:  https://github.com/wg/wrk

 

2024-11-25_170259

주요 하게 볼 부분은 Latency, request, timeout, non-2xx-3xx responses 정도 일듯.

 

출처:  https://domdom.tistory.com/411

Synology – M.2 볼륨 만들기(GUI) 및 Unknown ssd 인식 개선

Synology에 M.2 Nvme 드라이브를 추가 해서 운영 하고 있다.

2024-10-23_134855

n100 미니PC 에서 적출해서 Synology에 추가해서 SSH 접속해서 lvm 명령어로 수동으로 파티션을 생성 해서 사용 했었다.
그런데 주기적으로 DSM이 업데이트가 되고 나면 구성해둔 볼륨을 인식 못하는 문제가 발생하였다.
아울러서 Unknown으로 나오고 주의로 표시되는 부분도 그렇고…(위 스크린샷은 합성이다 -3-a)

 

1.  Synology에 장착된 DISK 정보를 읽어서 데이터베이스를 생성 해주는 스크립트

https://github.com/007revad/Synology_HDD_db

2. 저장소 관리자(GUI) 에서 스토리지 풀 및 볼륨을 구성하는 스크립트

https://github.com/007revad/Synology_enable_M2_volume


 

두 스크립트의 제작자가 같아 사용법이 거의 같다.

그래서 두개의 스크립트를 같이 진행하지만 본인의 상황에 따라 스크립트 줄이거나 실행 옵션을 바꾸어 적용한다.

먼저 위 스크립트는  bash shell 코드로 작성되어 있으며 DSM 6, DSM 7을 지원 하는 것으로 밝히고 있다.

 

예시는 집에서 쓰고 있는 DS420+ 이다.

CPU: J4025 (2.0Ghz)
MEM: 2GB + 1 slot(8GB) = 10GB
HDD: HGST Deskstar 10TB * 4EA
M.2: TEAM TM8FP6256G, KPART512GBC2DVT

 


 

1. 첫번째 디스크 풀에 공유폴더 _SCRIPT 를 생성 한다.

주의: 스크립트는 M.2를 인식 시키기 위한 것이기 때문에 M.2 에 공유폴더를 생성 하면 안된다.
2024-10-23_094941 2024-10-23_095124

 

2. github 사이트에서 최신 릴리즈의 배포 파일을 다운 받는다.

https://github.com/007revad/Synology_HDD_db/releases
https://github.com/007revad/Synology_enable_M2_volume/releases

 

3. _SCRIPT 폴더에 배포 파일을 넣고 모두 압축을 해제 한다.

2024-10-23_113419

M.2(KPART512GBC2DVT) – (알리발 N100 랩탑에서 적출함) 의 경우 Unknown으로 표시 되기 때문에  Synology 에 ssh 서비스를 활성화 하고 ssh 접속 후 스크립트를 실행해서 아래와 같은 메세지를 확인했다.

KPART512GBC2DVT는 구글 검색을 했을때 HUADISK으로 확인 되어 /volume1/_SCRIPT/Synology_HDD_db-3.5.103/syno_hdd_vendor_ids.txt 파일 하단에 0xefff="HUADISK" 추가 했다.
이후 스크립트를 실행하면 /usr/syno/etc.defaults/pci_vendor_ids.conf 에 코드에 맞는 벤더를 선언해서 Unknown을 지정한 벤더로 나오게 된다.

 

4. 나스 재시작시(자동 업데이트 후) 자동 적용을 위한 스케쥴러에 등록 한다.

2024-10-23_102940 2024-10-23_103115 2024-10-23_103147 2024-10-23_103313

syno_enable_m2_volume.sh는 별다른 옵션 없이 실행 하면 “저장소 관리자(GUI)” 에서 M.2 스토리지 풀 생성이 가능하다.

syno_hdd_db.sh은 /var/lib/disk-compatibility/ds420+_host_v7.db 파일을 ds420+_host_v7.db.bak 파일로 백업 하고 로컬에서 검색된 디스크 정보를 추가하여 ds420+_host_v7.db 파일을 생성 해주는 기능이 들어 있다.

syno_hdd_db.sh 의 추가된 스크립트 옵션은 다음과 같다.

--noupdate synology 의 hdd DB 업데이트 기능을 끈다.(이로 인해 synology 내부 메세지가 발생할 수 있다.)
--ram 내 가정용 DS420+는 최대 크기(8GB)를 넘어 10GB으로 사용하고 있기 때문에 필요한 옵션이다.
--autoupdate=3 이 스크립트는 자동 업데이트 기능이 있는데 새 버전이 나오면 3일 이후 업데이트를 한다.

내가 쓰지는 않았지만 유용한 옵션

--incompatible 12bay 이상에서 Synology HDD 사용을 하지 않을 경우 주의로 나오것을 방지 한다.
--pcie Synology 외의 PCI-E NVME 확장 카드를 사용 가능하도록 한다.
--wdda W/D 하드의 경우 사용 기간이 3년 넘어갈 경우 warning 이 표시되는것을 방지 한다.
--ssd=sata1 주 하드디스크(primary reads)를 선언할 수 있다. (sata1 | sata1,sata2 | sda 처럼 지정 하거나 기본값 restore 으로 설정 가능)


설정이 완료 되면 Synology NAS를 재시작 하고 웹으로 접속(DSM) 저장소 관리자 에서 M.2 디스크로 볼륨을 생성할 수 있다
2024-10-23_104745

mobaxtrem 을 통한 원격지 서버에서 firefox 실행

서버에서 GUI환경이 필요가 있을 때 xwindows 를 설치하고 vnc 또는 xrdp 를 이용한 접속을 해서 사용할 수 있다.

다만 그렇게 할 경우 불필요한 많은 프로그램을 서버에 설치해야 하기 때문에 ssh 접속을 통해 X11-forwarding 기능을 이용해서

프로세스는 서버에 떠있고 GUI 화면은 접속한 컴퓨터에서 사용할 수 있다.

 

서버의 OS 는 OCI – oraclelinux 8 버전이다.

 

서버 sshd 설정 변경

sshd 재 시작

!!!!!주의!!!!!: sshd 관련 설정을 변경한 뒤 재 시작할 경우 이미 접속한 세션은 문제가 없지만 새로운 ssh 접속이 불가능 하다.

때문에 sshd를 재 시작한 경우 새로운 터미널 창으로 ssh를 접속해서 문제가 없는지 확인 해야 한다.

 

관련 프로그램 및 라이브러리 설치

설치되는  xterm 은 간단한 테스트를 위한 프로그램(GUI  터미널 프로그램) 이다.

mesa-* 은 firefox를 실행 하기 위한 그래픽 관련 프로그램 이다.

 

위와 같이 설치 후에 ssh 아래와 같이 xtrem 을 실행하면 아래와 같이 gui 터미널 창이 실행 되는 것을 확인 할 수 있다.

2024-10-10_112043

ssh 접속을 해서 GUI 터미널을 열은 쓸모 없는 짓(=_=)이지만 검증을 위해 사용한다.

 


 

mobaxterm 설정 변경 및 실행

2024-10-10_1055252024-10-10_113739

 

Hyper-v 서버에 연결(원격)

Hyper-V Server 2016 / 2019 free 의 경우 서버 생성 및 관리를 위해서 서버에 접속하여 사용이 되지 않고

자신의 PC 에 Hyper-V를 활성화 한뒤에 “서버에 연결…” 기능을 통해서 관리가 가능 하다. (Hyper-V – 나무위키 (namu.wiki))

즉 자신의 PC 에서 설정을 한뒤 아래와 같이 화면이 나오면 이를 통해서 관리 할 수 있다.

20240710_164937

다만 그냥 연결을 시도 해봐야 연결이 될리가 없고 꽤 번거로운 설정이 필요 하다.

기존 메뉴얼의 경우 찾아 보았으나 IP를 근거로 활용해서 접속하는 방법과 2개 이상 Hyper-V Server 를 접속하는 방법을 찾아서 포스팅을 한다 ‘ㅅ’a

 


 

일단 Hyper-V Server 에 원격으로 접속된 화면 에서 다음과 같이 “7) 원격 데스크톱”이 사용(보안 수준이 높은 클라이언트만) 으로 설정 되어 있어야 한다.
20240710_161201

 


 

자신의 PC 에 Hyper-V를 설치 하고 PowerShell 창을 열어서 다음과 같은 명령어를 실행 한다.

Hyper-v 의 두개 일 경우에 대한 설명이기 때문에 자신에 맞게 하나만 쓴다던가 하자 ‘ㅅ’a

cmdkey 의 경우 자격 증명 관리자에 아래 그림과 같이 windows 자격 증명을 생성하게 된다.

20240710_163851

 


 

로컬 컴퓨터 정책(gpedit.msc) 을 실행해서 컴퓨터 구성 >> 관리 템플릿 >> 시스템 >> 자격 증명 위임 >> 서버 인증이 NTLM 전용일 경우 새로운 자격 증명 허용 으로 이동하고 아래 그림과 같이 진행한다.

20240710_16214420240710_16225620240710_162618

마지막 그림과 같이 WSman/192.168.0.10WSman/192.168.0.20을 추가 해야 한다.

 


 

마지막으로 접속할 PC의 Hyper-V 에서 “서버에 연결…” 버튼으로 연결을 한다.

20240710_163450

 

연결이 된다면 첫번째 스크린샷과 같이 자신의 PC 의 Hyper-V 와 원격 Hyper-V Server 가 목록에 나타나고 관리를 할 수 있다. 🙂