エンジニアリングマネージャー見習いの個人開発備忘録

ラズパイを買って自宅サーバ入門した話

背景

年末年始でだったので、ラズパイを買ってファイルサーバでも作ってみるか、と思って作り始めた。諸々で 2 日ほどかかった。
https://amzn.to/3vvqlhK

ちょうどたまたま家に使わなくなった以下のものがあったので、それを有効活用したいみたいな気持ちもあった。

  • 200GB の microSD
    • 元 switch の SD カード
    • ゲームが入らなくなってきたので 512GB を買ったのでこれが退役した
  • 2TB の HDD(Gdrive)
    • https://amzn.to/3NVXlGn
    • 元々は前の前の mac のバックアップ用途で買った
    • SSD が 256GB だったのでバックアップから復活させると簡単に容量を食い潰してしまうため、結局使わなかった

あとは icloud の容量が 200GB を超えそうだったので、自宅にバックアップ取れるならこれ以上プランを上げなくてもいいかな、みたいな気持ちがあった。

やったこと

OSのインストール

普通の Recommended のやつを入れたら OMV6 が入らない(対応してない)と言われ、OMV6 を入れたら ssh ができなくなる、みたいな罠を踏んで 4 回くらい入れ直した。結局入れたのは Lite の方。

Debian12 系に当たるので巷の記事が微妙に古くて参考にならないものばかりだった。流れだけ参考にして公式ドキュメントを見るという王道に戻って解決。

OMV6のインストール(回避)

参考にしたもの: https://koh-sen.jp/blog/archives/12238
OMV6 を入れるところまではなんとか行ったものの、なんか動作が不安定で先に進めなくなったので回避。
別にファイルサーバが作れればいいので OMV6 にこだわる必要はなかった。

NextCloudのインストール

参考にしたもの: https://qiita.com/hiro2do/items/f8eed40acab713f20693
色々apt 経由で入れられないか試行錯誤している中で、調査してたら見つけた。snap という便利パッケージ管理ツール的なのが出ていて、それを使ったら一瞬で入った。すごい。
公式: https://snapcraft.io/docs

外付けHDD有効化

↑のブログ参考に、mount 系のコマンドは別で調べてやったら入った。素晴らしいね。
df -h で自分の意図したものが出てきた時は軽く感動。普段仕事ではクラウド上の EC2 とかしか触ってないから。物理サーバは実感が湧くのでいいね。

外部公開とHTTPS(TODO)

↑のブログに言われるまま tailscale とか色々入れてたら、どうも証明書関連でうまく行ってないっぽく全世界に公開しそう(一瞬した)なった。一旦内部公開で止めることにした。別にそれでも要件は満たせるので。

NextCloudを写真のバックアップ先に設定

参考にしたもの: https://denor.jp/iphone%E3%81%A7%E6%92%AE%E5%BD%B1%E3%81%97%E3%81%9F%E5%86%99%E7%9C%9F%E3%82%84%E5%8B%95%E7%94%BB%E3%82%92nextcloud%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97
やるだけ。

ここまで 1 日目。この後監視入れて wiki サーバでも建ててみるかという気分になり、引き続きインストールをしていた。

mackerel導入

入れるのはやるだけ。カスタムメトリックのプラグインを導入するのが苦労した。やりたかったのはラズパイの CPU 温度の監視。
公式: https://mackerel.io/ja/docs/entry/advanced/custom-metrics
最終的に書いたもの

[plugin.metrics.temp]
command = ["bash", "/home/xxx/temp.sh"]

最初は command="/home/xxx/temp.sh" と書いていた。これでも動いていてくれて良くない?と思ったがなぜかメトリクスが送られなかったので書き方を変えた。

ちゃんと discord にも通知するようにした✌️ notify

mediawiki導入(回避)

公式: https://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Debian_or_Ubuntu/ja

これに沿って初回のセットアップページまでは進んだ。(そこにいくまでに apache2 に mod-php を入れてなくてただの php ファイルがそのまま表示されるみたいな罠を踏んだ。1 回休み。)
ただ、NextCloud が MySQL を立ち上げてるっぽく競合してしまったので、仕方なく諦めた。DB を共存させたりポート変えたりとかの回避手段はあるものの、そこまでしたいわけでもないので諦めた。(try はした)

dokuwiki導入

なんと dokuwiki は DB を立ち上げる必要がないので、いけそう!と思って入れた。
公式: https://www.dokuwiki.org/install:debian

なんとか入ってくれたのでよかった。ただ普通に記法に慣れない w
最近のドキュメント書くツールは便利なんだなあというのを改めて感じる。

メールを送る(TODO)

dokouwiki のユーザー登録にメール送信が必要なのだが、いつまで経ってもメールが来なかった。ログを見ると sendmail が入ってないよって言われたから入れてみるも挙動変わらず。
どうやらメールサーバの設定とか Gmail のアプリパスワード?的な色々準備が必要そうなので、宿題。

viのモードを治す

参考にしたもの: https://yaru-yaru.net/reizo/raspberrypi%E3%81%AEvi%E3%81%A7%E6%96%B9%E5%90%91%E3%82%AD%E3%83%BC%E3%82%92%E6%8A%BC%E3%81%99%E3%81%A8abcd%E3%81%8C%E5%87%BA%E3%82%8B%E5%95%8F%E9%A1%8C/
vi 互換モードというのになっていたらしい。 最初ユーザーのホームディレクトリにのみ .vimrc 書いてたら、sudo vi した時に現象が解決しなくて焦った。仕方なく root の方にも書いてあげたら治った。こういう細かい課題を解決できるようになったのは進歩を感じるね。

構成図を書いた

ちゃんと覚えてるうちにポートとかパスをメモっておいた。

幸運だったこと

一人暮らしを始めていた

これによりルーターの全権を握れているのが大きい。また、契約時にメールサーバももらっていたのでその辺の検証もしやすい。自分の城があるって大事だよね。

仕事で触ってた

困ったら公式ドキュメントを見る。落ち着いてエラーログを確認する。みたいな一連の所作は仕事で息をするように身につけていた(そうしないと仕事にならない)ので、万策尽きた!みたいになることが少なくてよかった。

大学の時の数年前の自分は調べる力が弱かったのでこういう時に解決できず諦めるしかなかった。

反省

調査ログを途中から取り始めた

最初はまあすぐ終わるやろ、と思いながらやっていた。trello のコメントにフロー情報的に残していた。

そうだとしても調査ログは残すべきだった。コマンドとやったことを書いておくだけで後から見直した時に価値が出る。結局 notion にストック情報としてまとめなおした。

TODO

個人開発にすぎないので気が向いたらやること一覧

  • 外部公開と HTTPS
  • メールを送る
  • 温度、湿度、二酸化炭素濃度などのモニタリング