最近、スクリプトを書く機会が増えてきた。といっても長くても100行程度のものだし、これまで普通にファイルを保存しておけばいいかなと思っていたんだけれど、ねこめしさんのブログを読んでみたら、やっぱりGitで管理したほうがいいような気がしてきた。Githubが王道なんだが、ソースを公開するつもりもないし、使ったことないし(Pull専)で、勉強を兼ねて、オープンソースのGitサーバー「Gitea」をローカルのRaspberry Pi 5に立ててみることにした。Giteaのアイコンはティーバッグなので、たぶんギティーと読む。アクセントの置き方によってはギッティーか?(あんまりこだわらんでもいいところか?) 以下、備忘。Dockerは導入済み。
Dockerの操作(サーバー側)
Dockerボリュームの作成
この1行はなくても大丈夫だと思う。
docker volume create gitea_data
Giteaコンテナの起動
ウェブアクセス用のPortは空いていた3000に。SSHのPortがかぶらないように22を222に。
docker run -d --name gitea -p 3000:3000 -p 222:22 -v gitea_data:/data gitea/gitea:latest
Giteaのセットアップ
- ブラウザで
http://your_machine.local:3000
にアクセス - セットアップ画面が表示される
- データベースは SQLite(デフォルトでOK)
- ドメイン:
your_machine.local
- SSHポート:
222
に変更 - ユーザー名やパスワードを設定して管理者アカウントを作成
- ログイン完了
Giteaのインストールと初期セットアップ作業は以上。設定で多少手間取ったのは次の点。
SSHポートが222になるようにGitea設定変更
Gitea上でリポジトリを作成した際に表示される[コマンドラインから新しいリポジトリを作成]はデフォルトではSSHの接続先が22になっているので、コピペとかで間違いがないよう222に表示するように変更したい。下記の要領で、app.iniを編集する(nanoがインストールされていない場合は別途インストールするか、viなど別のエディタを指定)。
docker exec -it gitea sh
nano /data/gitea/conf/app.ini
編集箇所
[server]
SSH_DOMAIN = your_machine.local
SSH_PORT = 222
SSH_LISTEN_PORT = 22
START_SSH_SERVER = true
保存後、コンテナを再起動:
docker restart gitea
公開SSH鍵の作成(開発機側)
GiteaにPublic Keyを入力する場所があるので、Public Keyがない場合は次の要領で公開鍵を作成しておく。その際の質問には、そのままEnterでOK。
ssh-keygen -t ed25519 -C "開発機の名前にしておくといいかも?"
鍵は、~/.sshにできる。id_ed25519が秘密鍵(人に見せちゃだめなやつ)。id_ed25519.pubが公開鍵(Giteaに登録するやつ)。公開鍵を開いて確認し、Gitea に登録する。 Giteaでの登録方法
- 右上プロフィール →
Settings
- 左メニュー「SSH / GPG Keys」→「Add Key」
- .pubファイルを開いて出てくる公開鍵の文字列を貼り付けて登録
感想など
以上だと思うんだが、ぬけもれあるかも? その他、.gitignoreファイルを作って、venvがアップロードされないようにしておくとか、前準備は必要。Gitも覚えること多くて、頭が追いつかん。自宅サーバーでも、その気になれば公開・共有する機能はある。公開はしないけど、コミットの意味の重さをひしひしと感じる。
この記事へのコメント
流石ですね。Gitサーバを自分で立てるアイデアはありませんでした。
ラズパイなら消費電力も少ないし、もしかして作られたデジタル時計の中で動かしているんですか?
Dockerをすでに入れていたというだけの理由で、デジタル時計とは別のラズパイで動かしてます。Gitサーバーなら負荷は小さそうですし、デジタル時計をGitサーバーにすればスマートですね!