ちょっとしたリポジトリを管理したいがgithubに入れるほどでもない。というかgithubはなんか遅くて普段使いには向かない気がする。
単に置いとくだけだと何を作ったのかすらわからなくなる。せっかくraspiを買ったのでgitサーバを入れようと思った。
ローカルで動かすgithubみたいなものとしてgitlabがあるけど、自分しか使わないのにローカルで動かすには重すぎる。できるだけ軽そうなやつを探してgiteaとやらを入れてみた。
インストール
raspi debianにパッケージはなさそうだったので手動で入れる。
参考URL: https://docs.gitea.com/installation/install-from-binary
書いてある通りにユーザを作る
# On Ubuntu/Debian:
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
次にインストール先を作る
見たところインストール先は任意に決められそうだったので、設定やらなにやら全部一か所にまとめて入れることにした。
cd /mnt/disk/gitea
mkdir -p etc var/lib/{custom,data,log} bin
インストール先のディレクトリ構成は以下のような感じにした。etcに設定ファイル、binに実行ファイルを入れる。varにリポジトリ等が入るはず。
gitea/
gitea/etc
gitea/var
gitea/var/lib
gitea/var/lib/log
gitea/var/lib/custom
gitea/var/lib/data
gitea/bin
binにバイナリを置く
wget https://dl.gitea.com/gitea/1.25.4/gitea-1.25.4-linux-arm64
chmod a+x gitea-1.25.4-linux-arm64
mv gitea-1.25.4-linux-arm64 gitea/bin
systemdのサービスを置く。サンプルがあるので取ってきて編集。
参考URL: https://docs.gitea.com/installation/linux-service
wget https://raw.githubusercontent.com/go-gitea/gitea/refs/heads/release/v1.25/contrib/systemd/gitea.service
mv gitea.service gitea/etc
gitea.serviceを編集。以下の行を変えたくらい
WorkingDirectory=/mnt/disk/gitea/var/lib/
ExecStart=/mnt/disk/gitea/bin/gitea web --config /mnt/disk/gitea/etc/app.ini
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/mnt/disk/gitea/var/lib
とりあえず全部gitユーザにする
chown -R git:git gitea/
systemdに置く(リンクにした)
cd /etc/systemd/system
ln -s /mnt/disk/gitea/gitea.service ./
サービス有効&サービス起動
systemctl enable gitea
systemctl start gitea
動いた。(以下はいくつかリポジトリを登録した後)
まだ大して使ってないが、なかなか軽くてよさげな気がする。gitlabよりgithubに近い感じ。
これで適当に書き散らかしていたプログラムを集約できる。(すでに行方不明になっているものも多いが)
sshアクセス
httpで毎回パスワード聞かれるのがうっとおしいのでsshでアクセスしたい。が、sshでcloneしようとするとgitユーザになってパスワードを聞かれる。ssh-keygenで作ったpubkeyは登録してあるが。。。
git clone git@192.168.11.50:ttfugapiyo/photofix.git
git@192.168.11.50's password:
検索したところgitユーザをssd_configで許可すればいいようだ。
参考URL: https://forum.gitea.com/t/gitea-requests-password-with-a-correct-ssh-key/7870
/etc/ssh/ssd_configを見ると、うちのraspiではAllowGroupsで_sshグループが許可されている。(いつ入ったのか不明。raspi osのデフォルトなのか、openmediavaultの設定なのか)
なのでgitユーザを_sshグループに入れればよさそう。
usermod -aG _ssh git
これでclone / push / pullできた。