タグ: docker

  • 脱CasaOS計画〜その1:FreshRSSをProxmoxに移行

    CasaOSの開発・更新を大元のIceWhaleが行わないっぽいので、docker ceのアップデートで混乱したりすることになりました。以前の投稿で書いたように、今はdockerのアップデートもできるように設定しましたが、そもそものCasaOS自体が先が見えない状態で、IceWhale社としてはZimaOSに移行してね!というスタンスのようです。

    ただ、移行したところでそのZimaOSがいつまで続くかも分かりませんし、将来的には有料化やサブスク化など、好き勝手に使えなく未来もありえますので、CasaOSにまとめる前のようにProxmoxでそれぞれの機能ごとにVMやLXCで運用することにしました。

    まず手始めに、トラブルが起きても一番損害が少ないRSSリーダーのFreshRSSを移行します。

    ProxmoxのLXCで、
    コンテナイメージ:Debian13
    CPU:1コア
    メモリ:256MB
    スワップ:256MB
    ストレージ:4GB
    とかなり低めにしました。他のVMやLXCもたくさん作る予定ですので。

    LXCでFreshRSSをインストールしてからブラウザでアクセスしてログイン。

    元のCasaOS上のFreshRSSから購読フィードのデータをエクスポートして、それを新しいFreshRSSでインポートして終わりです。超絶簡単。

    失敗してもゼロからやればいいだけですし、Proxmoxのコンテナなんて1分かからず作れますからね。

    ・CasaOSで運用中のセルフホストのサービス
    FreshRSS→移行完了
    Jellyfin
    Nextcloud
    AdGuardHome
    Memos
    Vaultwarden
    PhotoPrism
    Ghost

  • CasaOSのDockerを最新版に更新してもOKなように設定変更

    昨年11月25日の投稿で、

    docker ce がバージョン29以上になると、CasaOSが正常に機能しなくなる、と言う問題があり、結局その時はその場しのぎの対策として、dockerのバージョンを古いままに固定する、という対策を取りました。

    3ヶ月近く経ちましたが、やはりCasaOSの未来はもうないみたいですのでどうするかを考えなければなりません。

    今後の選択肢をGeminiに聞いてみたらこんな返答がありました。

    ===============================
    CasaOSの開発が停滞しているため、長期的な運用を考える場合は以下の選択肢を検討してください。
    案A:ZimaOSへ移行する
    IceWhaleが公式に推奨している後継OSです。CasaOSをベースにしていますが、よりNAS向けに洗練されています。現在、CasaOSからZimaOSへの移行ガイドも公開されています。
    
    案B:管理ツールを「Dockge」や「Portainer」へ切り替える
    CasaOSは「見た目の良いランチャー」として使い、実際のDocker管理(更新・作成)はよりメンテナンス頻度の高いDockge(軽量・直感的)やPortainer(多機能)に移行する手法です。これらはCasaOS上のアプリとしてインストール可能です。
    
    案C:APIを修正してこのまま使い続ける←(API修正については後述)
    CasaOS自体はDebian上で動く「単なるWeb UI」に過ぎません。OS(Debian)とDockerさえ自分でセキュリティアップデートしていれば、UIが更新されなくても致命的な問題にはなりにくいです。
    

    まとめ

    まずはAPI修正での対策を行ってください。これにより、Debian側で自由にDockerをアップデートしてもCasaOSが壊れなくなります。その上で、UIの古さが気になるようであればZimaOSやDockgeへの移行を検討するのが最もスムーズです。
    ===============================

    さらに言うと、案DとしてProxmox上のコンテナやVMにCasaOS上のアプリケーションを移行していく方法がありました。

    案Bは結局API修正しないと、CasaOS上のアプリとして起動できないはず。

    案Aがスッキリはしますけれど、CasaOSからZimaOSへの移行が果たしてすんなり問題なく実行できるか不安。

    ということで案CのAPI修正で、ひとまず現行のCasaOSの寿命を延ばすことにします。これも推奨される方法ではないのでしょうけれど。

    1,SSHでCasaOSを入れているDebian13にログイン
    2,Dockerサービスのオーバーライド設定ディレクトリを作成

    sudo mkdir -p /etc/systemd/system/docker.service.d

    3,設定ファイルを作成・編集

    sudo nano /etc/systemd/system/docker.service.d/override.conf

    4,以下の内容を貼り付けて保存して、終了

    [Service]
    Environment=DOCKER_MIN_API_VERSION=1.24

    5,設定を反映してDockerを再起動

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    6,バージョンアップされないようにしていたdockerの設定を解除

    sudo apt-mark unhold docker-ce docker-ce-cli

    7,もう一度Dockerを再起動

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    これで、CasaOSが入っているOSでdockerを最新版にアップデートしても、CasaOSが起動しなくなることがなくなりました。

    いつかはちゃんとした環境を構築しないといけないのでしょうけれど、今のCasaOSに入れている各種サービスが以下これだけあると、なかなか踏ん切りが付きません。

    FreshRSS
    Jellyfin
    Nextcloud
    AdGuardHome
    Memos
    Vaultwarden
    PhotoPrism

    環境構築、移行、正常動作まで持っていくのに土日潰れても駄目だと、平日の仕事終わった後の夜にも作業をしないといけなくなります。どこかの連休で頑張ってみることにします。

    RSSとかJellyfinとかMemosとかは別に1週間でも10日でも止まっていても問題ないですが、AdGuardHome・Nextcloud・Vaultwardenが止まるとマジで不便です。まあそういう不便が嫌ならセルフホストのサービスなんか使っちゃいけないのですけれど。その点、ローカル環境がどうなっていようとネットさえつながれば問題ないクラウドサービスはさすがに便利ですね。

  • CasaOSを入れているDebianやUbuntuをアップデートしたらCasaOSがおかしくなった件(復旧済み)

    現在、自宅ネットワークでCasaOSは2つのPCで稼働させています。1つはDebian13にCasaOSを入れて、AdguardHome、Memos、Vaultwarden、FreshRSS、NextCloud、Jellyfin、PhotoPrismを稼働させています。

    もう一つは、このブログを動かしているGhostだけのCasaOSを、ProxmoxのVMに入れたUbuntu Server24.04に入れています。

    さて、先日これらDebianやUbuntuをアップデートしたのですが、するとCasaOSがおかしくなってしまいました。

    日本語での情報が少なくて困りましたが、Xに書いている人がいて、どうやらdockerをダウングレードしたら直るらしい。dockerバージョンが29以上になると、CasaOSが動かないようです。

    ということで、生成AIに聞いてダウングレードを決行。まずは失敗した時のダメージが少ない、Ghostだけを動かしているCasaOSの方から行います。

    メインマシンから、CasaOSを入れているProxmoxのVMにSSHで入ります。
    以下は、生成AIに聞いた内容そのままを記載しています。

    ========================

    ダウングレードの実行

    1.利用可能なDockerバージョンの確認

    sudo apt update
    sudo apt-cache madison docker-ce

    2.Dockerサービスの完全停止

    まず、DockerとDockerソケットの両方を停止します:

    sudo systemctl stop docker.socket
    sudo systemctl stop docker.service

    3.現在のDockerパッケージの削除

    sudo apt remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    4.特定バージョンのDockerをインストール

    リストから5:28.5.2-1~ubuntu.24.04~nobleを選択してインストールします:

    sudo apt install docker-ce=5:28.5.2-1~ubuntu.24.04~noble docker-ce-cli=5:28.5.2-1~ubuntu.24.04~noble containerd.io docker-buildx-plugin docker-compose-plugin

    5.Dockerの自動更新を防止

    ダウングレード後、Dockerが自動的に最新版に更新されないようにパッケージをホールドします:

    sudo apt-mark hold docker-ce docker-ce-cli

    6.Dockerサービスの起動

    sudo systemctl start docker.socket
    sudo systemctl start docker.service

    7.バージョンの確認

    正しくダウングレードされたことを確認します:

    docker version

    注意事項
    この方法では既存のDockerイメージやコンテナは削除されません
    ダウングレード作業は必ずSSHまたは直接接続したターミナルから実行してください
    作業完了後、CasaOSのWeb UIが正常に動作することを確認してください

    ホールドを解除したい場合は、以下のコマンドを実行します:

    sudo apt-mark unhold docker-ce docker-ce-cli

    ========================

    これで確かにこのブログとCasaOSがちゃんと動くようになりました。

    次は、色々セルフホストしているサーバの多いCasaOSですが、やることは同じです。ダウングレードするdockerのバージョン名が少し変わるだけですね。

    sudo apt install docker-ce=5:28.5.2-1~debian.13~trixie docker-ce-cli=5:28.5.2-1~debian.13~trixie containerd.io docker-buildx-plugin docker-compose-plugin

    これで無事、二つともCasaOSとその上のサーバも復旧できました。ただ、新しいdockerバージョンに対応していないのは厳しいですねえ。

    Redditを読んでると、CasaOSが無くなる!とかZimaOSに吸収される!とか慌てて焦っている人がいます。Zimaspaceが、商売に直結しているZimaOSの方に注力するのはまあ当然なことでもあります。

    将来的にCasaOSが使い物にならなくなった時のこともそうていしておかないといけないでしょうね。

    Proxmox上で、LXCやVMで一つずつサーバを動かせば良いのですし、以前はそうしていたので無理ではないですが、ファイルサーバの取り扱いが面倒ですね。自分一人しか使わないサーバ群なのですから、もっと簡単に扱いたいものです。

    調べていると、UmbrelOSというものがあるらしい。CasaOSに近い機能があるようですが、ビットコインノードを動かすのがメイン機能のようです。どこかでCasaOSを見限る前に試しておきたいですね。

  • WordPressからGhostにブログを移行してみた

    このブログはWordpressを使って運営していますが、自分のブログの方針として、面倒くさいのでゴテゴテした感じにするつもりはないし、テキストと写真・リンク以外のものが存在しないので、Wordpressは結構過剰な仕様なんですよね。

    ということで、もっとシンプルに使えるものとして、同じCMSながらブログ・ニュースレターに特化したGhostというセルフホスト可能なサービスを使うことにしました。

    https://ghost.org/

    ウェブサービスとしても使えますが、セルフホストも可能というのはWordpressとWordpress.orgみたいな感じでしょうか。

    移行にあたっては、まずは既存のWordpressでGhost移行用プラグインをインストールします。プラグイン検索でGhostで検索すると見つかりますので、それを入れたあとに有効化すると、エクスポートできます。json1つだけ出力されるのと、画像込みZipを出力するのとがありますので、一応両方エクスポートしておきます。

    肝心のGhostについては、最初はProxmoxのLXCコンテナで作るつもりでしたが、DBとか面倒くさいなあと思ったので、VMを作ってCasaOSを入れて、CasaOSのアプリとしてGhostを入れました。勝手にDBを入れるところまでやってくれるので楽です。

    まずはプライベートIPアドレスでGhostを起動します。ポートは2368がデフォルトです。

    最初の画面でメールアドレスとパスワードを設定して初回ログイン。先ほどエクスポートしたWordpressの中身をインポートしようとすると、画像込みのZipファイルを読んでくれません。仕方無しにjsonでインポートします。画像入れてる投稿は1つくらいしか無かったので別に良いのですが、画像が多いブログを移行する場合は大変ですね。

    さて、問題なさそうなので独自ドメイン(https://hrsgmb.com)に移行・・・する前にテストとして、
    https://new.hrsgmb.com
    で使えるか試してみます。

    Cloudflareの設定で上記のテスト用サブドメインのDNSレコードを固定IPに設定し、
    AdguardHomeでサブドメインをNginxProxyManagerに向けて設定、
    NginxProxyManagerでCasaOSのIPアドレスに向けるのとSSL設定を行い、
    さあサブドメインでテスト運用!と思っていました。

    しかし、このサブドメインをブラウザで開き、設定画面で初回ログイン時に設定したメールアドレスとパスワードを使うとエラーが出てログインできません。

    訳が分かりませんでしたが、調べてみるとどうやらログイン時に作成したクッキーがないと強制的に2段階認証が発動するようです。そして、メール送信の仕組みを設定していないため、そのメールアドレス宛への2段階認証のコードを送ることすら出来ないという状況になっていました。

    先達の方々のブログも読んで、configファイルにCasaOSのアプリのターミナルから普段使わないviで書いたりしましたが、それでも2段階認証のメール送信が出来ません。

    結局、困ったときはいつもの通り生成AIです。聞いてみると、configを編集するよりも、dockerなら環境変数で設定したほうが良いとのこと。こういうことはやっぱり知識がないと駄目ですね。

    言われたとおり、CasaOSのGhostの設定画面で環境変数に追加してみました。ちなみに使用するメールはGmailで、送信システムもGmailのSMTPを使用します。

    この時に、Gmailのアプリパスワードという仕組みを使いましたが、セキュリティのことを考えるといずれこの仕組みはGoogleが廃止しそうな気がします。その時までに、自宅ネットワーク内でのメールサーバを立ち上げておかないといけないのでしょうか。

    それはともかく、生成AIのおかげで2段階認証のメールがちゃんと届き、ログインできました。

    まだテスト用のサブドメイン運用ですので、
    https://new.hrsgmb.com
    となっているものを全て、
    https://hrsgmb.com
    に変更していきまして、Ghostの設定画面にも再び2段階認証でログインできました。これで移行完了です。あ、上記のテスト用サイトは

    大してビュー数も無く、画像もあまり貼っておらず、ポスト数もまだまだ少ないブログですので、WordpressでもGhostでも表示速度に差は無いと思いますが、とにかくシンプルなのは良いですね。

    設定画面が全部英語で、日本語ローカライズも無いようですが、難しい英語が書かれているわけではないですし、ブラウザの翻訳機能を使えば誰でも使えるでしょう。

    結構良いなと思ったのですが、少なくとも日本での知名度も利用度もWordpressと比ぶべくもないくらい隔絶しています。まあ、シンプルなブログを書きたいなら、GoogleのBloggerとか、私も書いているnoteとかありますしね・・・。