ラズベリーパイでセルフホストのサービスを立ち上げよう(1)前提編 - Devil!Daredevil!! -dev challenge-

#Raspberrypi #SelfHost #ClaudFlare #自鯖

 こんにちは、如月翔也(@showya_kiss)です。
 今日はハックでもなければ開発でもない内容、「ラズベリーパイを使ってセルフホストのサービスを立ち上げよう」という内容についてお送りしようと思います。

 この連載はDevil!Daredevil!の読者さん想定である(見てる人いるのか?)「パソコンで色々やりたいけど詳しい事何にもわかんないんですよね」というレベルの人を対象に記事を追加していきます。

この連載を読む事であなたが得られるメリット

 この連載を読むと、あなたは次を知り・技術を得る事ができます。

  • なぜ今ラズベリーパイなのか
  • 今選ぶべきラズベリーパイは何か
  • なぜ自分でサーバーを建てて自分でサービスを立ち上げるのか
  • 立ち上げると便利なサービスは何か
  • なぜCloudFlareを使ってSSLを使うのか・その利点
  • なぜDockerを使ってサービスを動かすのか・その利点

 ほとんどは今回記事で答えを出します。また、次回以降は実際の操作手順なども含めて詳細に解説していきますので(これは自分の備忘録も兼ねます)、手を動かしながら一緒に作業すると色々わかってくると思います。

まず、私の経緯からお伝えします。

 本記事は僕が思いついて一気に一晩で行った作業を連載にして説明していく形になります。
 では、何故僕が今回「ラズベリーパイでセルフホストのサービスを立ち上げよう」と思うに至ったかについて説明します。

 僕は基本的に電子工作に興味がなく、そのためラズベリーパイにはそもそもあまり興味がなかったのです。しかし、最近のラズベリーパイは値段に比べてマシンパワーが高くなり、チャットAIの軽量級モデルなら普通に動くという情報が舞い込むようになってきました。
 軽量級とは言えチャットAIがまともに動くのであれば、昔僕が趣味でやっていた「自鯖」(自宅サーバーの略で、自宅に専用のPCを用意してネット上にサーバーを公開する事です。セキュリティを守るのが大変で途中でやめました)のレベルは越えているな、と思ったのです。
 なら、安い自鯖としてラズベリーパイはありだな、と思ったんですよね。

 そして、私生活で色々あり、衝動買いの一環でラズベリーパイを買ってしまったのです。買ったのであれば活用したい。ので、活用する事にしました。

なぜ今ラズベリーパイなのか

 では、なぜ今ラズベリーパイなのか、というと、実は自宅にサーバーを置きたいだけなら「安い中古のノートパソコンを用意する」でもいいんですが、自分でLinuxを入れて色々設定するのはかなり面倒くさいです。
 また中古のノートパソコンは電源周りが結構厳しく、ラズベリーパイに比べると電力を食いますし発熱もするんですよね。
 そういう意味では握りこぶし1個サイズに全部収まって冷却性能もそれなりでそもそも大して発熱しないラズベリーパイは値段も安いですし、何より「もう組んであるセット」を買えば安いのに自分で工作しなくていいので便利なのです。

今選ぶべきラズベリーパイは何か

 では、今選ぶべきラズベリーパイは何か、というと、まあ基本スペックを考えるとラジベリーパイ5がいいです。4でも十分なんですが、長く使う事を考えると新しいモデルのほうが長生きなのは事実なので。
 そして、選択肢として「メモリは8GBか16GBか」「ストレージはmicroSDかUSBでSSDを付けるか」という選択肢があります。

 まず、「8GBでmicroSD」で全然問題ありません。載せるサービスを選べばいいだけです。

 片方しか選べない場合、microSDはわりと簡単にだめになるので、接続速度も考えてSSDをお勧めします。
 両方選べる場合最高ですね。僕は衝動買いだったので両方選びました。

なぜ自分でサーバーを建てて自分でサービスを立ち上げるのか

 この話は前の「ラズベリーパイの選択肢」にも繋がるのですが、「サービスをいっぱい立ち上げる」ならメモリもSSDも欲しいんですよね。
 ただ、じゃあ「なぜ自分でサーバーを建てて自分でサービスを立ち上げるのか」という部分がわかっていないと、何のサービスをどれだけ立ち上げれば良いか判断がつきません。

 では、「なぜ自分でサーバーを建てて自分でサービスを立ち上げるのか」というと、以下です。

  • 無料サービスは突然の方向転換で有料になる場合がある
  • 他人の提供するサービスは改変で使いづらくなる場合がある
  • サービスを利用すると、データが提供者に渡る可能性がある
  • 立ちあげたサービスは技術があれば自分で改変できる
  • そもそもサーバーを立てるのが楽しい

 はい、サービスは無料だろうが有料だろうが、提供者の判断に全て任されてしまうので、突然の改悪やいきなり有料化があります。
 しかし、サービスを自分で立ち上げていればそんなの関係ありません。自分の立ち上げたサービスは壊れるまで安定して使えますし、壊れた時に復旧できるようにバックアップ体制を整えておけば半永久的に使えます。
 また、サービス提供者を通じてサービスを受けていないので、データがサービス提供者に渡る可能性が非常に低いです(立ち上げたサービスによっては渡るものがあります)。
 あと、サーバーを立てるのは楽しいですし、将来的に技術が身につけばサービス自体を改変して自分向けにカスタマイズも可能です。

 こういう理由から、便利なサービスであれば人のサービスを使ってもいいんですが、ラズパイが用意できるなら電気代だけでかなりの数のサービスが立ち上げられるのでめちゃくちゃ便利です。

立ち上げると便利なサービスは何か

 じゃあ実際どんなサービスが有るの?というと、僕が立ち上げただけで言うと以下があります。

  • Cloudflared :CloudFlareを使うためのサービスです。
  • FreshRSS :FeedlyやinoreaderみたいなRSSサービスです。
  • Wallabag :Pocket(死んだね!)みたいな「あとで読む」サービスです。
  • Nextcloud :iCloudやOneDriveみたいな「ファイルサーバー」です。
  • OpenClaw :ラズパイ上にチャットAIを動かすサービスです。
  • uptime-Kuma :ラズパイ上のサービスのダウンを感知するサービスです。
  • Beszel :ラズパイの稼働状況を教えてくれるサービスです。
  • glance :自分用のポータルサイトを作るサービスです。

 僕はラズパイ5に「Pi OS Lite」を入れて、上記の7サービスを常時稼働していますが、Beszelで確認した範囲ではCPUが1パーセント以下、メモリが10パーセント程度なので、まあメモリ8GBでも20パーセントですよね。サービスの要求が低すぎてラズパイ5で余裕でこなせています。もしかしたら4でもいいかも?

 上記サービスを入れる事で

  • CloudFlare経由でSSLでサービスにアクセスできる(後で説明します)
  • RSSサービスを自分向けに提供できる
  • RSSでもブラウザでも「あとで読む」ができる
  • いらないSSDを使ってファイルサーバーを作り家族に容量を共有できる
  • 自分でチャットAIを動かす事ができる(無料でできますからね)
  • ラズパイの状態やサービスの稼働状況も確認できる
  • 上記サービスへのポータルを作ってアクセスできる

 という環境ができます。これは普通に便利です。
 ちなみにこれらサービス、「OpenClaw」と「glance」以外は普通に日本語画面にできますし、「OpenClaw」も画面こそ英語ですが会話は日本語でOKです。

なぜCloudFlareを使ってSSLを使うのか・その利点

 ではここで「CludFlare」という言葉が出てきましたが、今回の連載では「CloudFlare」というサービスを使って、自分で建てたサービスに対してSSLで通信できるようにします。
 SSLというのは大雑把に言うと通常の接続と違ってかなりセキュリティに気をつけた通信方法を指し、SSLなしで自分のサーバーにアクセスすると途中で情報を抜かれてそれを利用して不正利用されたりするので危険なのです。
 しかし、SSLって設定するために手間が凄くかかる上に条件が厳しく、かつ一回やったとしても「期限が切れる」ものなので期限が切れるともう一回手続き、と、ハッキリ言って発狂します。
 ですが、CloudFlareを使ってドメインを登録して手続きすると、完全無料ではないんですが普通に使っている分には課金が発生ないレベル(相当おかしな使い方しても無料範囲内ですのでご安心を)の緩い制限でSSLを使えるのでかなり便利なのです。
 まあ正式に言うとClaudFlareはトンネル技術でSSL接続を自分のサーバーに流してくれるという形なのですが、このあたりはサービスを立ち上げるだけの段階では特に必要ない知識なので、必要になったら調べてみて下さい。

なぜDockerを使ってサービスを動かすのか・その利点

 この言葉は今まで出てきていないのですが、今回の連載ではサービスの立ち上げについては可能な限り「Docker」というコンテナ技術を使って実装します。

 コンテナ技術について簡単に説明すると、コンテナ技術を使ってソフトを導入するとそれは「コンテナ」という単位の一つの環境として扱われ、それ自体は他に影響を与えません。
 これがどうして良いかと言うと、ソフトってだいたい単品で作られておらず、「何という部品パックのバージョン何の部品を使う」という形で組まれているんですね。
 ただ、部品パックは環境に対して1個しか使えなかったりするので、Aと言うソフトでバージョン1、Bというソフトでバージョン2を求められた場合環境にはバージョン2が入るんですが、バージョンが変わると部品の使い方が変わったり機能がなくなったりするので、Bを入れたせいでAが動かなくなったりするんです。
 これがコンテナになると、「Aというコンテナには部品パックのバージョン1」「Bというコンテナには部品パックのバージョン2」を入れられるのでぶつからないのと、あとコンテナ外のOSそのものにはなんの影響も出ないんですね。これがとても良い。

 コンテナ技術が出るまでの自鯖界隈は「新しいアプリを入れたら全部動かなくなった」「入れたものを抜いても駄目だ」「リカバリしかない」みたいなのがごく普通で、新しいアプリを入れて色々駄目で設定し直し、10回くらいリカバリして「使えたらラッキー」「使えない場合もままある」だったんですね。
 でも、コンテナ技術によって、「アプリを入れたら動かない」「コンテナごと消してやり直そう」が普通に通用するので素晴らしいんですよ。

 というわけで、僕自身がリカバリをするのが嫌なので、コンテナ技術を採用します。
 コンテナ技術を使うとそのままインストールするよりちょっとだけ要求性能が高くなるんですが、ラズパイ5なら無視できる範囲内です。多分ラズパイ4でも大丈夫です。

というわけで、今後の予定をお知らせします。

 というわけで、「ラズパイ5(または4)」「CloudFlare」「Docker」を使って、自分でサーバーを建ててサービスを立ち上げる記事をお届けします。
 予定としては以下の内容になる予定です。

  1. 前提の共有(この記事です)
  2. ドメインをとって、CloudFlareに登録する
  3. Dockerを使って「cloudfrared」を動かす
  4. Dockerを使って「FreshRSS」を動かす
  5. Dockerを使って「wallabag」を動かす
  6. Dockerを使って「NextCloud」を動かす
  7. Dockerを使って「OpenClaw」を動かす。Discordのチャットボットも作りましょう。
  8. Dockerを使って「uptime-Kuma」を動かす。
  9. Dockerを使って「Beszel」を動かす。
  10. Dockerを使って「glance」を動かす

 次記事からはスクショも含めて手順を紹介していくので、ステップバイステップで一緒にやっていきましょう!

この記事を書いた人 Wrote this article

如月 翔也 男性