無事構築できたので書いてみます。動機としてはぶっちゃけやってみたかっただけなんですが、NASが5年以上使用して老朽化してたり、AmazonやAndroidTVでTVerの広告が多すぎるっていうクレームが家族からきたりという点もあります。
使用機材
Orange Pi One Plusとは
Raspberry Piみたいなシングルボードコンピュータです。ラズパイほど安定していませんが、中華ガジェットでは有名なAllwiner H5を搭載し、メモリも1GBあるのでなかなかパワフルです。技適はありませんがWiFiがついていないので安心して(?)使うこともできます。
【正規品】高性能シングルボードコンピューター Orange Pi One Plus(RAM:1GB)
- 出版社/メーカー: Xunlong Softwaer
- メディア: エレクトロニクス
- この商品を含むブログを見る
電源とケースも買いましたがケースだけまだ届きません。
OwnCloudのフォーク版NextCloudPiを使おう
とはいえ先人が多くのノウハウを公開していたので僕のは後追いになります。無事できたよという記事です。
OSはArmbianのStretchを使う
唯一のハマりポイントとしてはこれ。公式サイトにいくつかイメージが公開されているんですが、最新版は起動せず、古い奴はUSBにキーボードが刺さっていると起動しないといわれました。
また、そもそも使おうと思っていたNextCloudPiがDebian Stretchを公式にサポートしていたため、Armbianという有志がメンテしているイメージを使うことにしました。
https://qiita.com/masataka55/items/182ac6b2fdd0a984f641
Armbianインストール後、ユーザを追加・rootを無効化して、MACアドレスの固定化を行いました。ArmbianはまだTEST用で、起動ごとにRANDOM MAC ADDRESSになるのは不便なためです。
パスは違いますが、こちらの記事に従ってoneplusようのdtbを生成したところ、無事MACアドレスが固定されました。
https://gato.intaa.net/archives/8244
NextCloudPiをインストールします。ワンライナーでシェル実行するだけで30分ほどでインストールが完了しました。
ポートフォワーディングとLet's Encryptの実施
家の外からアクセスするため、ルーターの設定で80/443をあけ、DDNSをセットアップします。なんとNextCloudPiの管理画面からLet's Encryptが設定できるので、Web画面上で簡単に設定することができました。これで80番は閉じておいてもいいですね。
なぜかdnsmasqもすぐ使えた
なぜかわからないのですが各種DNSソフトウエアの導入も管理画面からできました。おそらくDDNSも運用できるようにという配慮かもしれません。
これでdnsmasqをいったん立ち上げて動作確認した後、この記事に沿ってDNSのBlacklistを埋め込むことにしました。
AdBlock用のconfを作成した後、dnsmasq.dの中に入れて読み込む形式で設置しました。いくつかネットサーフィンしてみて問題があればホワイトリストいりできるような運用体制を作ってみようと思います。
Mackerelのインストールと温度管理
さて、一通り動きましたがDNSサーバがたびたび止まるのはよくないので、死活監視することにしました。Mackerelをインストールします。※APIキーの取得が必要です
https://github.com/mackerelio/mackerel-agent
Releaseから最新版のlinux-armパッケージを落としてきます。/etc/ 配下に配置し、systemdとしてデーモン化します。
https://blog.adachin.me/archives/4007
通常の負荷だけでなく、温度も管理したいとおもいます。カスタムメトリクスを作ればいいようです。
Raspberry Piの温度をMackerelで監視し、アラートを飛ばす - Qiita
しかし、RasPiに含まれるvcgencmd がArmbianにはありません。そこでPythonで温度を取得することにしました。
#!/usr/bin/python2.7
import os
temp = 'cat /sys/class/thermal/thermal_zone0/temp'
temp = os.popen(temp).readline().strip()
temp = int(temp) / 1000
print( str(temp) )
ちょっと雑なコードなので動かなかったらごめんなさい。こんなかんじで無事温度の管理をすることができました!
というわけで実際にNextCloudPiを使っていきたいのですが旧NASの整理が終わらないのでここまでで。姫トランスとかでてきてやべえ