友人と一緒にゲームを作成することになり、バージョン管理をどうしようかなと考えた際に初めに思い浮かんだのは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://<ドメイン>へアクセスして確認しましょう。