0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

イントロ

セルフホスト & エンジニアといえば、Gitサーバーを立てたくなるものです。
代表的なものはGitLabですが、正直一人で使う分には重すぎます。。。

ということで、Gogsからフォークされた軽量GitサーバーであるGiteaを導入しました。

当然、GitHubでいいんじゃないの?という声が聞こえてきますが、プライベートリポジトリにさえデータを起きたくない、あるいは色々テストする上でローカルにある方が便利、GitHub Actionsの記載で色々試したい(Gitea Runner)と諸々の理由で立ち上げました。

なお、現在は14日目のアドベントカレンダーで紹介するForgejoをメインにしています。Giteaはバージョンアップの時に試す程度です。

Giteaの使い方

環境情報
$ docker version
Client: Docker Engine - Community
 Version:           29.1.3
 API version:       1.52
 Go version:        go1.25.5
 Git commit:        f52814d
 Built:             Fri Dec 12 14:49:51 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.1.3
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.5
  Git commit:        fbf3ed2
  Built:            Fri Dec 12 14:49:51 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.0
  GitCommit:        1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc:
  Version:          1.3.4
  GitCommit:        v1.3.4-0-gd6d73eb8
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

前提条件

  • Docker がインストールされていること
  • Traefik が導入されていること(リバースプロキシサーバー)

手順

  1. compose.ymlを作成する

    domain.tldは自分のドメインに置き換えてください。初期の頃に立ち上げたcontainerというのもあり、DB Passwordとかは直記載になっています。git管理する場合は.envファイルなどで管理してください。

    services:
      gitea:
        image: gitea/gitea:1.25
        restart: always
        container_name: gitea
        volumes:
          - ./data:/data
          - /etc/timezone:/etc/timezone:ro
          - /etc/localtime:/etc/localtime:ro
        ports:
          - 3000:3000
          - 2222:22
        environment:
          GITEA__database__DB_TYPE: postgres
          GITEA__database__HOST: db:5432
          GITEA__database__NAME: gitea
          GITEA__database__USER: gitea
          GITEA__database__PASSWD: gitea
          USER_UID: 1000
          USER_GID: 1000
          GITEA__webhook__ALLOWED_HOST_LIST: "*"
        depends_on:
          - db
        dns:
          - 1.1.1.1
        labels:
          traefik.enable: true
          traefik.http.services.gitea.loadbalancer.server.port: 3000
          traefik.http.routers.gitea.rule: Host(`gitea.domain.tld`)
          traefik.http.routers.gitea.entrypoints: websecure
          traefik.http.routers.gitea.tls: true
          traefik.http.routers.gitea.tls.certResolver: cloudflare
          traefik.docker.network: traefik-network
        networks:
          - traefik-network
          - service-gitea
          - runner-network
    
      docker:
        image: docker:dind-rootless
        container_name: gitea-docker
        restart: always
        privileged: true
        environment:
          DOCKER_TLS_CERTDIR: /certs
        expose:
          - 2376
        volumes:
          - ./gitea-certs:/certs
        networks:
          runner-network: {}
    
      gitea-runner:
        image: gitea/act_runner:0.2.13
        container_name: gitea-runner
        restart: always
        environment:
          GITEA_INSTANCE_URL: http://gitea:3000
          GITEA_RUNNER_REGISTRATION_TOKEN: zDESEykTYk0iZgjhaqqvwiM6eR5t9aUeUqQgV7OB
          GITEA_RUNNER_NAME: default-runner
          DOCKER_TLS_CERTDIR: /certs
          DOCKER_CERT_PATH: /certs/client
          DOCKER_TLS_VERIFY: 1
          DOCKER_HOST: tcp://docker:2376
        volumes:
          - ./runner:/data
          - ./gitea-certs:/certs
        depends_on:
          - gitea
          - docker
        networks:
          runner-network: {}
    
      db:
        image: postgres:14
        restart: always
        container_name: gitea-db
        environment:
          POSTGRES_USER: gitea
          POSTGRES_PASSWORD: gitea
          POSTGRES_DB: gitea
        volumes:
          - ./postgres:/var/lib/postgresql/data
        networks:
          - service-gitea
    
    networks:
      service-gitea:
      runner-network:
        name: runner-network
        external: false
      traefik-network:
        external: true
    
  2. Dockerコンテナを起動する

    docker compose -f compose.yml up -d
    

Giteaの感想

  • いいところ

    • 軽量で動作が速い
    • Gitea RunnerでGitHub Actionsと同等の動きができる
    • リポジトリのサイドパネルにツリービューがある
      13.gitea.png
  • イマイチなところ

    • labelerなどはGitHubでしか使えない
    • GitHub Actionsと互換性がない部分もある

以上、Giteaの紹介でした。
冒頭で記載したForgejoに移行した理由については次の記事で。

クラウドもあるよ!(これが原因でForgejoが誕生したり...)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?