きっかけ
所属するエレクトーンサークルでは年6回ほどコンサートを開いている。
毎回コンサートの様子を録画しているのだが、この映像の共有がうまくいっていなかった。
要因としては
- なかなかプライベートな映像のため、youtube等の動画投稿サイトには上げられない
- 容量が大きく、googleドライブなどには収まらない
- 部室にハードディスクを設置して見れるようにしていたが、狭い部室にくる必要があった
- そもそも部室においてあるハードディスクにコンサートの映像があると周知できていなかった
というのがある。
これを解消するためにサークル専用のクラウドを立ち上げようと考えた。
構成
- minipc n100
- ubuntu 24.04
- samba
- nextcloud
- cloudflare dns,tunnel
- keyclaok
選定理由
ハードウェア
n100搭載のminipcを選択した。
大学の部室は夜になるとブレーカーが落ちてしまうので、大学でホストはできなかった。
このため、実家でホストすることにした。となると電気代が毎月かかって負担になるのでなるべく省電力で使えるサーバーを選択した。
os
構築当時はlinuxの知識がなかったため、情報がたくさんのっていそうなものにした。
当時はdockerを使いこなせていなかったため、そのままホストすることにした。
ストレージ共有方法
引継ぎ時、サーバーに詳しい人や興味のある人がいなかった場合に備えて、ntfsフォーマットにした。
そのままハードディスクを外してwindowsにつなぐことで不具合なく動作できるはずだと考えた。
samba経由でnextcloudを利用して公開することにした。
もともとはsambaを用いてファイル共有をしようと考えていたが、外部公開が難しく、パソコン操作が苦手なサークルメンバーもいたため、webで操作ができるnextcloudにマウントして公開する。
sambaでは読み書き可、nextcludは読み込み専用とすることで、意図しない削除等を防止できる。
認証
無料でソーシャルログイン、SSO、認証情報を自作ウェブアプリと連携可能という条件を満たすのはkeycloakしか見つけられなかった。
いちいちパスワードを覚えるのが大変なため、google認証を使いたかった。このクラウド以外に認証情報が欲しいウェブアプリの開発を予定していたのでこの条件になった。
インフラ
cloudflareでドメインを取得したので、これを使う。モダンで有名なのでこれを選択。
設定しやすく、とても使いやすい。
cloudflare tunnelはポート開放などをしなくてもよく、簡単にサーバーを公開できるが、通信料に100M制限があり、10Gの映像ファイルをやり取りするには厳しかった。
dnsのみにし、定期的にレコードを変更して対応。
keycloakは100Mの制限は問題にならないと思いtunnelにしたが、内部でhttp通信となる。
このため、secure cokkieを設定してくれず、googleのユーザープロフィールが参照できない。
proxyしてるからいいよって設定しているのに全く反映してくれなくて厳しい。
認証はできるため、現在はこれで運用している。
要改善。
運用状況
サークルメンバー約40人が使用している。
まだ周知していません。近しい人にテストで使ってもらってます。
毎日見るわけではないため、アクセスはそれほど多くないが、ありがたいとの声がある。
n100という安価で省電力なサーバーなためか、速度はそこそこ。動画視聴はギリギリ耐えられるくらいのレスポンス。
所感
cloudflare tunnelの通信料に100Mの制限があることに気づかず、かなり時間とトークン数を費やした。
固定ipが欲しい
keycloakの設定が難しい ドキュメントがわかりにくい