破 - 無料枠のGCPでGitサーバーを建てたい - Gitea導入編
3 min read
こんにちは、無能です。
今回はGitea
をGCE上にインストールとWireGuard
のVPN設定編です。
必要なものをインストール
よくは無いですがroot
ユーザでいきます。
詳しくは要公式ドキュメント。
apt install -y git mariadb-server mariadb-client
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
ufw allow 3000/tcp
ufw reload
最新のバイナリをwget
で持ってきます。
wget -O gitea https://dl.gitea.com/gitea/1.22.4/gitea-1.22.4-linux-amd64
chmod +x gitea
mv gitea /usr/local/bin/gitea
DB設定
mysql -u root -p
CREATE DATABASE gitea;
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
FLUSH PRIVILEGES;
EXIT;
デーモンファイル設定
いつもSupervisor
でセットアップしてますがたまにはSystemd
に触れることにします。
私は以下のように設定しました。
$ sudo cat /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/bin/gitea
Restart=always
Environment=USER=gitea HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
systemctl enable gitea
systemctl start gitea
systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; preset: enabled)
Active: active (running) since Sun 2024-11-24 15:16:30 UTC; 3 days ago
Main PID: 3276 (gitea)
Tasks: 9 (limit: 1136)
Memory: 114.6M
CPU: 2min 4.743s
CGroup: /system.slice/gitea.service
└─3276 /usr/local/bin/gitea
~~~
こんな感じでActive
になっていればOKです。
WireGuard VPNをセットアップ
よくWireGuard
のクライント側のセットアップをするのですがめんどくさくなってきたので出来る限り生成することにしました。
wg-genconf/wg-client.sh at main · haturatu/wg-genconf · GitHub
悪しき対話的なものですがほぼ自分用みたいなものです。
最後に"サーバー側に以下を設定してください。"でそのままサーバー側のconf
ファイルに貼り付けるだけで終わるお手軽セットアップです。
以下で繋がっていそうだったらGitea
の標準ポート3000番に向けてcurl
してみます。
wg-quick up wg0
wg
サーバー側
wg-quick down wg0
wg-quick up wg0
wg
ping -c 5 10.1.0.6
curl 10.1.0.6:3000
これでcurl
の標準出力としてGitea
のページが表示されていればOKです。
DNS設定
DNSレコードにgit.mydomain.jp
の先をVPNサーバ側のAレコードとしてIPアドレスに設定しnslookup
でいつ反映されたか確認して反映されたので次へ
Nginxでリバースプロキシ
無事にDNSが更新されたのでcertbot
で証明書も取得します。
server {
if ($host = git.mydomain.jp) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name git.mydomain.jp;
location / {
proxy_pass http://10.1.0.6:3000/;
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;
}
}
server {
listen 443 ssl;
server_name git.mydomain.jp;
location / {
proxy_pass http://10.1.0.6:3000/;
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;
}
ssl_certificate /usr/local/etc/letsencrypt/live/git.mydomain.jp/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/git.mydomain.jp/privkey.pem; # managed by Certbot
}
ちなみに、SSL証明書取得する場合
certbot --nginx -d git.mydomain.jp
で取得します。
構文チェックして再起動
nginx -t
service nginx reload
ブラウザで確認
うまく行きました。
それでは、Qに続きます。