【Gitea】Giteaを使ってみる。

友人と一緒にゲームを作成することになり、バージョン管理をどうしようかなと考えた際に初めに思い浮かんだのはGitLabで管理することでした。ただ、GitLabをセルフホストする場合はサーバーのRAMが8GB近くある必要があるらしく…。私が契約しているXServerは4GBしかありませんが…?

最低限の機能なら4GBでも動きはするみたいですが、ただバージョン管理したいだけなのに4GBをフルで使用されるのは困ります。Redmineとかも運用したいし。

というわけで代替品を探していたところGiteaがよさそうだったので導入します。

環境

環境は下記のとおりです。 現在はTailscaleで中継器としてしか使用していません。

OS:Ubuntu 26.04 LTS
CPU:AMD EPYC Milan Processor
CPUコア数:4コア(4 vCPU)
メモリ:4GB(3.8GiB)
Swap:2GB
ストレージ:150GB
空きストレージ:約139GB
アーキテクチャ:x86_64
仮想化方式:KVM

導入

導入を進めます。なぜかdockerすら入っていないのでそこからになります。

docker

まず、docker公式のGPGキーとリポジトリの登録を行います。

sudo apt update
sudo apt install -y ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

次に、リポジトリの登録を行います。

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

最後に、docker本体をインストールします。

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ここまで問題問題なければ導入は完了しています。最後にテストしてみます。 まずは下記で確認します。

docker --version
docker compose version
sudo systemctl status docker

Active: active (running) となっていればDockerは正常に起動しています。また、enabled となっていればOS起動時にDockerが自動起動します。

sudo docker run hello-world

で、「Hello from Docker!」が返ってくれば、正常に動作しています。

Gitea

さて、では本題であるGiteaを導入します。 まずはGitea向けのフォルダを作成し、作成したフォルダへ移動します。

事前にポートを開放しておきまず。 解放吸う必要のあるポートは下記のとおりです。

TCP 22
TCP 3000
TCP 80
TCP 443
TCP 2222
(今回は将来的にSSH経由でGitを利用できるよう、TCP 2222番も開放しています。HTTPSのみ利用する場合は不要です。)

gitea用のディレクトリを作成します。

mkdir -p /opt/gitea
cd /opt/gitea

compose.yamlを作成します。

作成方法は

nano compose.yaml

中身は

services:
  gitea:
    image: docker.gitea.com/gitea:1
    container_name: gitea
    restart: unless-stopped

    environment:
      - USER_UID=1000
      - USER_GID=1000

      # SSH
      - GITEA__server__SSH_PORT=2222

    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro

    ports:
      - "3000:3000"
      - "2222:22"

作成できたら起動します。

docker compose up -d

起動ができたら下記コマンドで確認します。

docker compose ps

表示されたリストの中にGiteaがいればOKです。 IPアドレス:3000でアクセスしてみましょう。

無事に初期設定画面が表示されれば成功です! 次はドメインの設定とSSHに対応しましょう。

ドメインとHTTPSの対応

※ドメインは所有済み、設定済みの想定です。

ドメインの設定

まず、Nginxを導入します。

sudo apt update
sudo apt install -y nginx

NginxのGitea用の設定ファイルを作成します。

sudo nano /etc/nginx/sites-available/gitea

中身は下記のとおりです。

server {
    listen 80;
    server_name <ドメイン>;

    location / {
        client_max_body_size 512M;

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Connection $http_connection;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

設定を有効化します。

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea

確認

sudo nginx -t

下記のように出力されれば問題ありません。

syntax is ok
test is successful

最後に

sudo systemctl reload nginx

で完了になります。

ここまでできれば

http://<ドメイン>

でアクセスできるはずです。 アクセスできらインストールして一旦Giteaの導入は完了です。

HTTPS化

Certbotをインストールします。

sudo apt update
sudo apt install -y certbot python3-certbot-nginx

証明書を発行します。

sudo certbot --nginx -d <ドメイン>

メールアドレスを求められたら入力してください。

No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@x85-131-251-162:/opt/gitea# sudo certbot --nginx -d <domain>
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address or hit Enter to skip.

以上で残りは規約などに同意すればhttps通信が可能になります。

https://<ドメイン>へアクセスして確認しましょう。