Self hosted Gitea 구축하기 (시놀로지)

Self hosted Gitea 구축하기 (시놀로지)
Photo by Yancy Min / Unsplash

이번 시간에는 Self hosted Service Gitea에 대해서 설명하고자 합니다. 가볍고 Go 언어로 작성되어있기때문에 경략화와 빠른 속도를 자랑합니다. 도커를 사용하는 시스템이라면 자체 도메인연결로 호스팅도 가능합니다.

대부분의 사용자가 시놀로지를 사용하기에 그에 맞는 상황으로 정리 하겠습니다.

시놀로지에서

폴더 생성 및 역방향프록시 설정은 제외하였습니다. (도커 사용할 실력자라면 아실듯)

docker-compose.yml (portainer stack에서 하셔도 됩니다.)

아래의 내용은 샘플입니다. 사용자에 맞도록 수정하세요.

version: "3.8"

services:
  db:
    image: postgres:14
    container_name: gitea-db
    restart: unless-stopped
    hostname: gitea-db
    environment:
      POSTGRES_USER: gitea
      POSTGRES_PASSWORD: strongpassword
      POSTGRES_DB: giteadb
    volumes:
      - /volume1/docker/gitea/postgres:/var/lib/postgresql/data
    tmpfs:
      - /tmp
    security_opt:
      - no-new-privileges:true
    read_only: true
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U gitea"]
      interval: 10s
      timeout: 5s
      retries: 5

  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    hostname: gitea
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      - USER_UID=1026
      - USER_GID=100
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=giteadb
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=strongpassword
      - ROOT_URL=https://gitea.사용자도메인
    volumes:
      - /volume1/docker/gitea/web:/data
    security_opt:
      - no-new-privileges:true
    ports:
      - "3053:3000"     # Web UI
      - "22222:22"      # SSH 접속 시놀로지 사용자라면 ssh 부분포트적용
    user: "1026:100"
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
      interval: 15s
      timeout: 5s
      retries: 5

  1. UID / GID 부분은 대부분 시놀로지 사용자는 admin 권한그룹 사용자가 많기 때문에 혹시 우분투 등에서 docker권한을 나눠준 사용자가 해당 yml파일을 생성할 경우는 UID /GID 변경하셔야합니다.
  2. SSH 접속 포트 부분 내용입니다. 22222:22 뒤부분의 22는 아마도 시놀로지 사용자라면 SSH를 22 말고 다른 포트 사용하실테니 그 포트를 적어두세요.

초기세팅

portainer 에서 stack하고 나면, ROOT_URL에서 지정한 도메인으로 접속하면 초기 세팅 부분이 나옵니다.

사용자를 추가 받지 않으려면

/data/gitea/conf/app.ini 파일 안에 내용 중 아래의 내용을 false -> true 로 변경하면된다.

수정하고 container 를 restart 해준다.

ssk-key 등록 해서 ssh git push 하자

key 생성

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/gitea10

gitea10 이라는 키가 생성됩니다.

ls -l ~/.ssh/ 를 터미널에서 입력하면 생성된 키를 확인 할 수 있습니다. 키를 만들면 2개의 파일이 생성됩니다. "gitea10 , gitea10.pub" pub 파일을 공개키입니다.

agent 추가

ssh-add ~/.ssh/gitea10

이렇게 하면 agent에 추가됩니다. 주의 가끔 맥에서 추가된것이 사라짐? 발생하는 경우가 있으니 아래의 작업을 합니다.

日本語ーマシンを再起動すると消えるのでその場合、再度ssh-addする必要がある。それを防止方法は以下になります。

vscode를 사용한다면 터미널에서 code ~/.ssh/config

Host gitea도메인
    User git
    HostName gitea도메인
    Port 22222
    IdentityFile ~/.ssh/gitea10
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes

설명1 : AddKeysToAgent yes와 UseKeychain yes는 SSH 클라이언트가 키를 자동으로 SSH 에이전트에 추가하고, macOS Keychain과 연동하도록 하는 설정입니다.

설명2 : Port 22222 <- yml 에서 지정한 포트

ssh-add -l 명령어로 agent에 추가 되었는지 확인하자.

key 복사하고 gitea 설정에 넣자

터미널에서 ‌$ pbcopy < ~/.ssh/gitea10.pub 키를 클립보드에 복사한다.
아니면 cat ~/.ssh/gitea10.pub 해서 화면에 나온것을 복사해도된다.

다시 터미널로 넘어와서 config에서 지정한 hostname으로 ssh접속을 시도 해보자.

뭔가 많이 나오는데 Successfully 라는 부분이 나오기 때문에 gitea10 개인키로 만든 gitea에 접속이 가능하게 되었다. 이제 ssh로 push 도 가능하다.