ogochan
前々から「パーソナルサーバ」というものを考えていました。
「Cassette Server」とか「SBCはもっと普及するはずだと思ってます」とかのエントリはその思考の過程や試行錯誤の様子です。
そういったことでCasaOSを評価を評価しました。
RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する
今回はTipiというシステムを試してみました。
あちこちで「Runtipi」という名前と「Tipi」という名前が混在していますが、多分アプリの名前としては「Tipi」が正しいんだと思います。
このシステムは、CasaOSと同様、パーソナルクラウドを構築するためのものです。
操作もアーキテクチャもだいたい同じですが、TipiはTypeScriptで書かれているという点が異なります。
これらを動かしてみて、「パーソナルサーバ」についてあらためて考えてみようと思います。
Tipiについて
冒頭にも書いたように、TipiはCasaOSと同じようなパーソナルクラウドOSです。
内部的にDockerを使ってアプリのインストールを簡単にしている点も同じです。ごく雑な言い方をすれば、Docker用にウェブアプリケーションのイメージを用意して、それを簡単に操作できるようにしたものです。インストールをワンクリックにするとか、起動停止をダッシュボードで行うとか。そういった意味ではCasaOSと全く同じと言って良いでしょう。
ではCasaOSと何が違うかと言えば、開発のアクティビティと含まれているアプリの数(と種類)です。CasaOSはGithubのスター数が約24,000(執筆時)と多いのですが、最近のアクティビティがちょっと低めです。
片やTipiの方はスター数や7,200(執筆時)と少ないのですが、最近もアクティビティが維持されています。
まぁ更新量が多いからと言って良いとゆーわけではないですけれど、エンジニアの常として「安定したら次のことがやりたい」わけでして、それを考えると更新が同じようなペースでずっと続いているということは、それだけアクティブに開発されているのではないかと思うわけです。
それを裏付けるように、使えるソフトウェアの数がCasaOSは101個(執筆時)ですが、Tipiには251個(執筆時)あります。とは言え、CasaOSにはサードパーティーのアプリストアがあるので、総数となると異なりますけれども(重複したものもあって総数は数えにくい)。Tipiもサードパーティーのアプリストアに変更できるようですが、知られたアプリストアはありませんし、追加できるわけではありません。CasaOSのサードパーティーのアプリストア、内容を見ると玉石混交です。中にはウェブアプリでないものも含まれていたりします。結局ここで優劣つけてもしょうがないんじゃないかという感じがあります。
CasaOSはその起源がZimaBoardのバンドルソフトにあります。ZimaBoardはKickstarterで資金集めして作られたパーソナルクラウド用SBCです。Tipiにはそのような背景はないような感じです。
ということで、パーソナルクラウドの第二選択として興味を持ちました。
インストール
インストール方法はCasaOSとだいたい同じです。
$ curl -L https://setup.runtipi.io | bash
Dockerが既にインストールされている状態であればインストール済みのものが、そうでなければ新規にインストールされるようです。まぁCasaOSやTipiを使わなくてもDockerは有用なものなので、先にdistroのDockerを入れておくのが良いんじゃないかと思います。
問題なくインストールされると、あれこれ動いて勝手に起動されます。問題なくインストールされればこれだけで全てが終わります。インストールしたサーバのポート80をHTTPでアクセスする(=ブラウザで見る)と、初回アクセスでアカウントを作れと言われて、作るとダッシュボードに入ることができます。
日本語で出てますね。
TIPS
実は私はここで結構ハマりました。
Tipiは起動の時に自分で使うためにPostgreSQLのコンテナを起動します。ところが既存のPostgreSQLがある場合は干渉してしまいます。ポートが重複してしまうので、TipiのDBコンテナの起動に失敗してしまいます。
このポート番号は設定で変更できることになっているのですが、どうもこれがちゃんと機能しません。あれやこれやいじっても、結局失敗してしまいます。Docker関係の設定ファイルは、起動時にTipiが自分で生成してしまうので、この辺をいじっても意味がありません(書き潰される)。この辺の動作のログを見る限りでは、バグ臭いです。まぁこの手のものは「動いているのは自分だけ」という前提を持っているはずなので、開発者がそこに気がつかなくても仕方無いのかも知れません。
とは言え、起動の時に失敗しているだけなので、ホストのPostgreSQLを止めておいて、Tipiが起動してから改めて起動することで回避できます。あるいはホストのPostgreSQLのポート番号を変更するというのでも解決可能です。今回私は後者の方法で解決することを選びました。
操作
操作はある意味自明です。最初はアプリは何もありませんから、とりあえずアプリストアに行きます。
入れたいアプリをクリックすると、
このようにアプリ説明が表示されます。「インストール」ボタンをクリックするとインストールできるのですが、その前に確認ダイアログが表示されます。
面白いのは、ここで外部公開するかどうかを聞いて来ます。これは逆プロキシを使って、当該サービスを外に開くかどうかということです。とは言え、Node-REDのコンソールをそのまま公開するのはちょっと...
ここで「インストール」をあらためてクリックすると、インストールが始まります。完了すると、
というようにボタンが増えます。インストールが完了すると、勝手にプロセスは起動されるようです。「開く」をクリックすると、当該アプリケーションが開きます。
この状態の画面は、インストール済みアプリの一覧である「マイアプリ」をクリックしても表示されます。
稼動状態もここで見れますね。
他にも細かいことが出来たりしますが、基本的にはこれだけです。
Tipiの感想
実も蓋もないことを言うと、「特にどうってことない」というのが感想です。
前にCasaOSを動かしているということがあるので、それとの操作の違いは特に感じません。アプリも同じものを入れてしまえば同じです。CasaOSの方が画面のデザインが洗練されていて綺麗だなとは思いますが、できることに違いがあるわけではありません。
そういった意味ではCasaOSとどっちを使うかは、「どっちが好きになれるか」程度のものでしかないかも知れません。
「パーソナルクラウドOS」の考察
さてこれからが本題です。
しばらくCasaOSやTipiを使っていると、いくつか気になるところが出て来ます。そこについてちょっと考えてみます。
私が気になったのは以下です。
- 全てがroot権限
- 個々のアプリの認証系は基本的にはない(あるものもないわけではない)
- 自分の世界になりがち
という点です。
それぞれについて説明します。
全てがroot権限
色々な手間の関係で、原則的に全てがroot権限で操作されます。Tipiは工夫すればroot以外でも動かせることを示唆していますが、それでも結局root権限で動かす方が運用は楽です。
これが厄介なのは、
アクセスできてしまえばroot権限で操作できる
ということです。当たり前ですね。
ちょっとでもセキュリティのことを齧った人なら、いやそれ以前の人であっても、これはとても落ちつかないことだとわかります。
もちろんいきなりrootで入れるわけではありませんし、そのまま何でもできるわけでもありませんが、いつでもrootであることが気持ち悪いことには変わりはありませんし、何かあったら全部の権限が奪われるというリスクを内包していることにも変わりはありません。
個々のアプリの認証系もない(unixユーザもない)
同じように、個々のアプリの認証系もほぼありません。
もちろんこれは個々のアプリの問題なのですが、ここでも「全てがroot権限」という問題がついて来ます。もちろんそれがそのまま害を及ぼすことのないように工夫はされているわけですが、ほとんどのアプリが単一ユーザの権限で動くことには変わりはありません。
これはセキュリティ的に厳しいということの他に、「他の人にも使わせる」ことを困難にします。
たとえば、どちらの環境にも「パーソナルに使えるノート」というアプリがいくつもあります。このノートを誰かに見てもらう時には、「自分」の権限で見せるしかありません。つまり、多くの場合更新ができてしまいます。見せるだけならread onlyで見て欲しいと思うのですが、それはできません。Jupyterとか結局そうなってしまうのですが、あれは「個々人のサーバを起動する」という方法があって、そうすれば何とかなるわけなのですが、CasaOSにしろTipiにしろrootでしか動いてないので、複数サーバを動かして共存するということもできません。
結局、「パーソナルクラウド」はパーソナルなものであって、そこに「他人」が入る余地はないということです。
自分の世界になりがち
CasaOSにしてもTipiにしても、これらは「OS」を主張しています。ですから、その中にある環境が全てであって、「その外」のことは全く考えてありません。
これはどういったことかと言えば、たとえば既に使っているサーバに後からTipiを入れても、そこには「Tipiという環境」がプラスされるだけであって、今まで使っていた環境にある諸々は扱えないということです。ですから、気持ち良く使うためには最初からCasaOSなりTipiなりを入れて、その配下のアプリだけを使えということになります。
とは言え、「配下のアプリ」だけで何でもできるかと言えばそうとは限りません。そうなると、何らかの「脱獄」をするか、諦めて別々の環境として動かすということになります。
結局、「パーソナルクラウドOS」はOSであって、そこに「他のOS」が関わる余地はないということです。
「パーソナルクラウド」の使い道
これらのことを考えると、「パーソナルクラウド」をどう使うかということが見えて来ると思います。
私は当初、NASのような位置づけで使える、その延長上にあるもの---たとえば今時のNASにはオプションアプリがあって、ワンクリックで入れられたりします---みたいなものだと思っていました。
CasaOSの説明とか見ると、そんなことを思ってしまうと思うのですが、どうやら現状の「パーソナルクラウドOS」はそうではないようです。似てはいるのですが、同じではありません。
現状の制限や特性を考えると、何かの「箱」のサーバに入れると言うよりは、WSLの1つのインスタンスに入れてウェブアプリを使うというような使い方の方が、間違いがないような感じです。Nextcloudのようなアプリがワンクリックで入ってくれて嬉しそうに思えるのですが(実際嬉しい)、期待するほど便利になるかと言えばそうでもありません。それよりは
ウェブアプリを自分の環境で手軽に動かす方法
と思っておく方が間違いがありませんし、そういったものだと思っておくと便利に使えます。実際そこに限れば便利ですから。
事情とか環境とか考えると「そうなるよね」という感じではありますが、現状ではそんな感じに思っておく方が間違いがありません。わざわざ「箱」を用意するほどのものではないし、そうしてる方がメリットを享受しやすいです。
まとめ
「パーソナルクラウドOS」については、ちょっと残念な評価になってしまいました。もちろんこれは本質的にダメというわけではなくて、私の求めているものとの齟齬があるだけのことだろうとは思います。
逆に言えば、この世界はまだまだ何かをする余地があるという意味でもあります。ここで何かしたい人は頑張ってみる余地もあると思います。
現実の使い方やセキュリティのことも含んで考えると、現状の「パーソナルクラウドOS」というアプローチではなくて、「グループウェアOS」というアプローチの方が嬉しいように思うことが多いです。まぁそれは私の使い方のせいかも知れませんけどね。