Ubuntu Serverへの移行

11月の目標の1つだった、自宅ラズパイをUbuntu DesktopからServerに移行を行った

これは結局デスクトップ使わないとか、あまり使わないサービスとか入れてたのでもうちょっとシンプルにしたかったのが理由

基本的に自宅サーバで稼働させているメインのサービスはGiteaというセルフホストGitとWiki.jsというWikiアプリで、ほぼ自宅用の文房具代わりみたいなものになっている

  • GiteaはSSH対応とリリースアップロードがまともに機能することが目標で、特にgo-relaeserのようなツールや将来k8s構成を作成し、Argo CDのようなツールでCI構成を作成した際(やるか分からんが)に使えるようにしておきたかった

  • Wiki.jsはマークダウンで書けるのが魅力だったのと、公式イメージベースでARM対応があり、構築が楽なので選んだ。機能が足りなかったり、保存が遅いという欠点はあるのだが、個人で使うには結構良かった(ちゃんとしたの使いたい場合はGrowiとかが良いと思うけど、MongoDBを避けたかったのと今後に期待して)

  • ラズパイ自体にはmDNS対応した。自宅ブラウザからドメインでアクセスできるようにしたかった

  • 他、サブNAS代わりのNextcloudとサブ物書き用にGhost、管理用にPortainerを採用(多分あんまり使わない)

みたいなことを目標に移行を実施した

そもそもラズパイを買った当初は、結構四苦八苦してたのだが、ノウハウが溜まってきたことと、Raspberry Pi Imagerの進歩のおかげで分思ったよりスムーズにできた

CIツールのような大げさなものは使ってないのだが、サービス自体はdocker-composeベースでGithubで構成は管理し、Makefileによる総合管理とmainブランチをプルすることで更新するような手法にした。このブログと作り方は似ていたりもする

以前は単にSFTPで単独のファイルを送り込んで、一々一つ一つサービスを構成するやり方だったが、ローカルでテストしたものを一度リモートを経由してセルフPRを行うことで、安定的に取り込めるようになったので、今のところかなり運用がしやすくなったのではないかと思っている

移行の際に感じた注意点など

大体は意外とすんなりとできてしまったが、多少引っかかった部分もあった

専用シンタックス

Giteaのリストアは容易だったが、移行前のWikiではdokuwikiを運用していたため、node.jsスクリプトによってpandocを経由しGithub Markdown形式に一括変換を行った。これによって移行作業は楽になってるのだが、カラープラグインなどを稀に使っていたため、結局手動で随時書き直したりしている。専用シンタックスを使うソフトウェアの場合は、あまりあれこれ入れないほうが得策なのはありがちなのかも。あるいはもう少し精査して、しっかりと変換スクリプトを書いたほうが良かった

正直これは今もぼちぼち手作業でやっている

ipv6の無効化

最新のRaspberry Pi ImagerとUbuntuが素晴らしく、初めからAvahiが入っておりmDNSブロードキャストが出来たりするのだが、この解決にipv6アドレスを使っており、解決できなかったことでSSH接続に大幅な遅滞があることが分かった

この現象は、以下でトレースして気付いた

ssh -v user@adress

この原因はラズパイ側にあり、ip aeth0にinet6が記載されていると、それが悪さをする。これを抑止するには、ipv6接続を無効化する必要があり、/etc/sysctl.confに以下を記述する

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

また、この設定はそのままだと起動時に/etc/init.d/procpsが読み込まれない為、以下のように/etc/rc.localを編集し、775のパーミッションで権限を与える

#!/bin/bash
/etc/init.d/procps restart
exit 0

nginx-proxyの設定変更

以前はHTTPエントリポイントのロードバランサにTraefikを使っていたのだが、nginx-proxyの方がシンプルに扱える為、こちらを採用することにした。ただ、少し大きいサイズのファイルの送信時、エラーを吐いて使えなかった

これは非常に理由は簡単で、内部のnginxのclient_max_body_sizeが1MBに設定されているので、小規模なファイルしかアップロードできない

この解決法は簡単で、/etc/nginx/conf.d/にカスタムの設定ファイルをマウントすれば良い

とりえあず、色々スッキリしたかなと思う
非常に安定しているので、このままぼちぼちと使っていきたい