タグ: LXC

  • 私の自宅サーバ構成まとめ:中古ミニPCとProxmoxで作る低消費電力ホームラボ

    1. はじめに:なぜ自宅サーバを作っているのか

    私は現在、中古品やジャンク品(一部は新品)として手に入れたミニPCを使って、自宅ネットワーク内でセルフホストのサーバ環境を作っています。

    目的は、大きく分けると次の3つです。

    ・ProxmoxやOpenWrtなどを実際に使いながら、Linuxやサーバ運用の実態を学ぶこと

    ・NextcloudやVaultwardenなどを使って、クラウドサービスへの依存や費用を減らすこと

    ・WordPressブログを自分で運用すること

    以上です。サーバ運用を始めてから数ヶ月経ってからブログを始めたので、3つ目の目的は後から出てきたものですね。

    高価なラックサーバや業務用機材は使っていません。全て、Amazon、ヤフオク、ヤフーフリマ、あるいは大阪日本橋のPCショップで手に入れたPCとパーツで構成しています。

    2. 現在の全体構成(この構成はしばしば変更されます)

    Zimaboard232(Celeron N3350、メモリ2GB、eMMC 32GB):OpenWRT、ゲートウェイとして利用

    NEC MKM21/C(Core i7 8700Tに交換、メモリ32GB、NVMe SSD 2TB、GPUにNVIDIA P1000):MXLinux25.1、メインPCとして利用

    Lenovo M720q(Core i5 8500Tに交換、メモリ16GB、NVMe SSD 512GB、SATA SSD 1TB):ProxmoxVE9でメインのサーバとして運用

    DELL Wyse5070(CeleronJ4105、メモリ16GB):ProxmoxVE9で監視用・Proxmoxバックアップ用

    hp t520(AMD GX-212JC、メモリ8GB、SATA SSD 128GB):Proxmox VE 及び Proxmox Backup Serverの予備として保管

    Surface Go2(Pentium Gold 4425Y、メモリ4GB、eMMC 64GB、画面割れジャンク):ZorinOSでタブレット代わりに利用

    minisforum UN100P(Intel N100、メモリ4GB、NVMe SSD480GB):実験機

    現在のサーバ運用の中心となっているのは、Lenovo M720qに入れているProxmox VE 9です。

    このM720q上で、WordPress、Nextcloud、Vaultwarden、FreshRSS、Memos、Jellyfinなど様々なサーバを動かしています。

    一方で、監視とバックアップはDELL Wyse5070に分けています。

    メインサーバが止まったときに、監視やバックアップまで一緒に止まるのを避けるためです。

    3. ネットワーク構成

    インターネット

    nuro光 ONU/ルータ

    Zimaboard232(OpenWrt)

    家庭内LAN

    ├ Lenovo M720q(Proxmox VE)

    ├ DELL Wyse5070(Proxmox VE / PBS)

    ├ NEC MKM21/C(MXLinux)

    ├ Surface Go2(ZorinOS)

    └ スマートフォン

    4. ゲートウェイ:Zimaboard232

    ZimaboardはAmazonで新品として購入しました。x86系のシングルボードコンピュータといった感じの製品です。しかもPCIeスロットやSATAポートがある変態仕様です。私が購入したのはメモリ2GBのものなので用途は限られますが、8GBを搭載しているものなら出来ることはかなり多いでしょう。なお、現在は、CPUにN150を搭載している後継機のZimboard2が出ています。

    私が持っている初代Zimboardは、OSにOpenWRTを入れて、家庭内ネットワークのゲートウェイとして使っています。nuroから送られてきたルータにすべて任せるのではなく、OpenWrtを使うことで、DHCP、DNS、ファイアウォールなどを自分で管理しやすくなります。

    ただし、OpenWrtゲートウェイは設定を間違えると家庭内ネットワーク全体に影響します。そのため、誰にでも気軽にすすめるというより、ネットワーク構成を自分で理解したい人向けだと思います。他人にオススメはしません。何があっても自己責任です。メーカー製ルータを使っていても自己責任ではあるのですが。

    5. メインPC:NEC MKM21/C

    普段のメイン使いとしての作業用PCには、NEC MKM21/Cを使っています。日本橋のショップインバースさんでジャンク品として購入しました。

    CPUをCore i5 8500TからCore i7 8700Tに交換し、DDR4メモリ32GB、NVMe SSD 2TB、ライザーカードを使ってPCIeスロットに、GPUとしてNVIDIA P1000を搭載しています。

    OSはMXLinux 25.1です。

    このPCから、Proxmoxの管理画面、WordPressの編集、SSH接続、ファイル管理、ブログ執筆などを行っています。

    自宅サーバというとサーバ本体だけに目が行きがちですが、実際には管理用のメインPCもかなり重要ですよね。小型のノートPCだけだと使いづらいだと思います。外部モニターにつなげるなら良いですが、小さい画面だけだと、管理画面、コンソール、を開きながら、ウェブで調べたりAIに質問したりしていると、厳しいと思います。

    6. メインサーバ:Lenovo M720q

    現在の自宅サーバの中心は Lenovo M720q Tiny です。ちなみにLenovoのTinyシリーズは協業しているNECにも同構造のPCがあり、メインPCにしているMKM21/Cは色が違うだけです。こちらはヤフーフリマで購入しました。

    CPUはNEC機から抜き取ったCore i5 8500T(元はCore i3 8100T)に交換し、メモリ16GB、NVMe SSD 512GB、SATA SSD 1TBという構成にしています。

    このPCにProxmox VE 9を入れて、LXCとVMを使い分けながら複数のサービスを動かしています。

    小型PCなので本格的なサーバ機のような拡張性はありませんが、M.2とSATAのSSDを内部に入れられます。あるいはライザーカードを使えば、PCIeカードを使ってGPU、LANカード、M.2スロットなどなども増やせるので非常に便利なPCです。とりあえず個人用途のWordPress、Nextcloud、Vaultwarden、FreshRSS、Memos程度であれば、十分実用的です。

    7. 監視・バックアップ用:DELL Wyse5070

    DELL Wyse5070は、オフィスにおけるシンクライアント機として発売されたもので1年以上前にじゃんぱらのウェブ通販で購入しました。このマシンを手に入れてから、Linux・サーバ沼にハマった感じですね。

    Linuxのデスクトップ機として使ったり、NASにしたり、なんやかんやで使っていたPCですが、現在は監視とバックアップ用に使っています。

    このマシンにはProxmox VE 9を入れて、Uptime KumaをLXCで、Proxmox Backup ServerをVMで動かしています。

    メインサーバであるM720qにすべてを集約してしまうと、M720qが止まったときに監視もバックアップも一緒に止まってしまいますので、別マシンに監視とバックアップを分けています。

    なお、PBSの保管用ストレージは、外付けのUSB-HDD(2TB)にしています。このHDDはもう十数年使っていると思うのですが、壊れる気配が無いですね・・・。SSDならもう使えないくらいの書き込みしてきていると思いますが、HDDの耐久性はこういう用途(速度不要、容量と保管メイン)だと助かります。

    シンクライアントマシンはCPU、メモリ、ストレージが控えめなマシンが多いですが、用途を制限していれば使い道はまだまだ今後もあるでしょうね。特に性能の低いCPUなのでファンレスになっているのはむしろメリットです。

    8. サブ・実験機たち

    ここでは、hp t520、Surface Go2、UN100Pを軽く紹介します。

    hp t520

    こちらもシンクライアント端末です。ヤフオクで買いました。

    hp t520は、現在は常時稼働させず、Proxmox VEやProxmox Backup Serverの予備機として保管しています。

    常時動かしていないので電気代はかかりませんが、メイン環境にトラブルが起きたときの保険として残しています。2コア、メモリ8GBなので100%の代替にはなりませんが、緊急の用途としてはなんとかなるはずです。

    Surface Go2

    タッチカバー付きのWindowsタブレット端末です。ただ、Windows11で使うにはもう無理なスペックです。こちらはショップインバースで購入しました。画面割れのジャンク品ですが、ZorinOSを入れてタブレット代わりに使っています。

    性能は高くありませんが、軽い調べものや表示端末としては使えます。毎晩寝床で使うくらいですね。遠出の際にブログを書いたりする使い方も今後はあるはず。

    UN100P

    UN100Pはminisforum社がかつて販売していた、Intel N100搭載のミニPCです。minisforumはAppleみたいに整備済製品を販売するページがあり、そこでベアボーン(メモリ・ストレージ無し)として購入しました。

    N100は省電力で性能も高いため、Proxmoxの検証機としてはかなり魅力があります。ただ、現在の構成ではM720qとWyse5070で役割が足りているため、常時稼働させる必要がなくなりましたので、今後は何に使うか検討中です。

    9. Proxmox上で動かしているサービス一覧

    サービス種類用途
    Nginx Proxy ManagerLXCリバースプロキシ
    MemosLXC個人メモ
    VaultwardenLXCパスワード管理
    FreshRSSLXCRSSリーダー
    apt-cacher-ngLXCaptキャッシュ
    AdGuardHomeLXCDNS・広告ブロック
    Cloudflare TunnelLXC外部公開
    WordPressLXCブログ運用
    KittenTTSLXC音声生成
    JellyfinVMメディアサーバ
    TailscaleVMリモートアクセス
    NextcloudVMファイル・クラウド

    10.この構成で良かった点

    この構成で良かった点

    ・中古PC中心なので初期費用を抑えられた
    ・ミニPC中心なので置き場所は省スペース化出来る
    ・消費電力が比較的低い
    ・Proxmoxでサービスを分離できる
    ・メインサーバとバックアップサーバを分けられる
    ・Cloudflare Tunnelで自宅サーバを公開しやすい
    ・失敗してもLXCやVM単位で作り直しやすい

    以上、色んなメリットがあります。ブログ内にも連載のように書いていますが、CasaOSだけにまとめていたのも管理はしやすかったのですが、CasaOS自体に将来性に不安を覚えたので、やっぱりProxmoxに戻そうということになりました。

    以前は、1つのOS上にいろいろなサービスを直接入れる形にしていましたが、トラブル時の切り分けが面倒でした。

    Proxmoxにしてからは、WordPress、Vaultwarden、FreshRSS、Memosなどをそれぞれ別のLXCやVMに分けられるため、壊れたときに影響範囲を小さくできます。

    11. 困っている点・弱点

    この構成の弱点をざっと挙げるとこんな感じでしょうか。

    ・機器やOS、サービスが増えると管理対象も増える
    ・OpenWrtゲートウェイは設定ミスが怖い
    ・Proxmoxの知識がないと復旧時に困る
    ・メモリ16GBのM720qに全部載せると意外とメモリの余裕は少ない(常時7割くらい使っています)
    ・NextcloudやJellyfinは外部ストレージの取り扱いが難しい
    ・自宅回線や停電の影響を受ける
    ・バックアップを取っていても、復旧手順を試していないと不安が残る

    Proxmoxはネットの情報や生成AIだけに頼らず、紙の書籍も購入しました。

    仮想化環境の構築から運用まで Proxmox VE 実践ガイド

    ネットが使えないときにも確認するためです。

    12. これから改善したいこと

    今後やりたいこと
    ・Uptime Kumaの監視対象追加
    ・Netdataなどによるリソース監視
    ・VaultwardenやNextcloudのセキュリティ見直し
    ・UN100Pを使った様々なOSをテストしてみる
    ・停電時のデータ保全のためのUPS購入と導入

    梅雨、雷、台風の時期が来るまでには、UPSの運用を始めたいのですけれど、サーバの電源を抜いて整理するのが一番面倒・・・。

    13. これから自宅サーバを始める人へのおすすめ構成

    これから自宅サーバを始めるなら、最初から何台もPCを用意する必要はないと思います。

    まずは、中古のミニPCを1台用意して、Proxmoxを入れてみるだけでも十分です。昨今のメモリ・SSDの高騰により、新品のミニPCで安い出物は少なくなりましたし。

    おすすめは、メモリ16GB以上、SSD 512GB以上の小型PCです。もちろん、サービスの種類や数にもよります。
    最初はLXCで軽いサービスをいくつか動かし、慣れてきたらNextcloudやJellyfinのような少し重いサービスに挑戦するとよいと思います。

    Zimboardみたいな、LANポートが複数ある小型のミニPCならOpenWRTやOPNsenseやpysenseを入れてルータ・ファイアウォールとして使えますが、設定をミスすると大事なデータが世界中にフルオープンという悲惨なことにもなりかねないので、いきなりはオススメしません。

    14. まとめ

    現在の自宅サーバ環境は、Lenovo M720qを中心に、Zimaboard232をOpenWrtゲートウェイ、DELL Wyse5070を監視・バックアップ用として使う構成になっています。

    高価なサーバ機材ではなく、中古ミニPCや省電力PCを組み合わせた環境ですが、WordPress、Nextcloud、Vaultwarden、FreshRSS、Jellyfinなどを動かすには十分実用的です。

    もちろん、管理やバックアップの手間はあります。
    しかし、自分でネットワークやサーバを管理することで、クラウドサービスに任せきりでは分からないことを学べます。

    今後も、この環境を少しずつ改善しながら、自宅サーバやLinux環境の試行錯誤を記録していきます。

  • ミニPC「Lenovo M720q tiny」を購入してサーバに運用して苦労した話

    また、ミニPCを買ってしまった・・・。

    ヤフオクで購入したのは、Lenovo M720q tiny(Core i3 8300T、メモリ8GB)です。現在、メインPCとして使用している、NECのMK21と同じ構成で、色と型番や内蔵しているCPU、メモリ、SSDなどが異なるだけのものです。中身はそっくりそのままです。

    メインPCの方は、先日書いたブログ記事にあるように、

    CPUをアップグレードしていましたので、もともと入っていたCore i5が余っている状態です。これを今回購入したM720q tinyのCPUと換装して、ProxmoxのLXCとVMを運用することにしました。

    色が違うだけの同一機種ですでに換装作業していたので特に悩むところはありません。苦労するのも、ヒートシンクを止めているネジが固いことくらいです。

    とっとと交換して、手持ちのSSDを入れてProxmox VEをインストール。いつものようにUSBメモリに入れたVentoy経由です。Ventoyを考えた人マジ天才。

    すでに存在する別のPC(minisforum UN100P、DELL Wyse5070)のProxmoxとクラスター化して、いくつかのサーバをマイグレートしても問題なし。素晴らしく安定稼働しています。

    そう、ここまでは安定稼働していました。

    暗雲立ち込めたのは、メモリを8GB→16GBに増設してからです。

    なぜか、メモリ増設後のM720q tinyが、数分ごとにネット接続が切れてしまいます。Proxmoxの管理画面で繋がらなくなり、ただ実機の電源は落ちてはいません。この時点で電力不足の可能性はなさそうでした。

    追加したメモリも別PCで使っていたもので、Core i5 8500Tの必要とするDDR4−2666です。もしかしたら最初の8GBのものとの相性の可能性もあるかと思って、DELL Wyse5070に入れていたメモリ(PC-3200)の8GB✕2と入れ替えてみると、Wyse5070の方は全く落ちずに、やはりM720qの方だけがネットが途切れます。

    これは何だ?と悩み、AIに聞いてみました。GeminiでもChatGPTでも回答は同じで、

    Lenovo M720q(および同世代のTinyシリーズ)に搭載されているオンボードLANは Intel I219-V 等が多く、Linuxでは e1000e というドライバが使われますが、メモリを増設してデュアルチャネルになったり、アドレス空間が広がったりすると、特定の条件下で通信がハングアップする既知の不具合が世界中で報告されています。

    とのこと。なんじゃそら。そんな知らんわー。

    色々コマンドラインでの対策も教えてもらいましたが、面倒なので解決策の一つに挙げられていた、別のネットワークカードを使うという方法を試します。M720qにはPCIeスロットがあり、以前にNEC MK21をルータとして使っていたときのIntelチップのLANカードも余っています。しかしライザーカードが無いので、発注しようかと思いましたが、とりあえず、同じく余っていたUSB-LANアダプタを使ってみました。

    しかしこのUSB-LAN経由でもM720qのネット寸断は発生します。ずっと途切れているわけではなく、

    数分〜十数分接続→数十秒〜数分間遮断→数分〜十数分接続→数十秒〜数分間遮断

    が続く感じです。ということで、別の原因があるだろうということで再びGeminiとChatGPTに確認すると、Geminiの方で結論を出してきやがりました。

    USB-LANアダプタでの検証、誠にありがとうございます。この検証結果は非常に大きな手掛かりになります。USB-LANアダプタ(通信経路もドライバもオンボードLANとは全く別物)を使っても「同じように通信が途切れる」ということは、オンボードLAN(e1000e)のバグではありません。
    この事実から導き出される結論は、「ネットワークだけが切れているのではなく、M720qのシステム(Proxmox自体)が完全にフリーズ(ハングアップ)している」可能性が極めて高いということです。
    なぜ16GB(8GB×2枚)の時だけフリーズするのか?
    PCは、同じ容量のメモリを2枚挿す(8GB×2枚)と「デュアルチャネル」という高速モードで動作します。
    M720qに搭載されているCore i5-8500T(第8世代CPU)の場合、デュアルチャネルになると内蔵GPU(UHD Graphics 630)やメモリコントローラーの動作が高速化・複雑化します。
    実は、Linuxカーネル(Proxmox)のCPU/GPU省電力機能と、この第8世代CPUのデュアルチャネル時の動作には相性問題(バグ)があり、システム全体が突然フリーズするという症状が世界中で報告されています。
    これを解消するために、以下の手順でCPUとGPUの深い省電力機能をオフにしてみてください。

    いや、先にその可能性も言ってくれよ。

    対策:省電力機能(C-State / DC)の無効化
    M720qのProxmoxコンソールを開き、GRUBの設定ファイルを編集します。
    
    nano /etc/default/grub
    
    GRUB_CMDLINE_LINUX_DEFAULT="quiet" という行を探し、その括弧の中に以下のようにパラメータを追記します。
    
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_idle.max_cstate=1 i915.enable_dc=0"
    
    解説:
    intel_idle.max_cstate=1 : CPUが深すぎる省電力状態(スリープ)に入るのを防ぎ、フリーズを回避します。
    i915.enable_dc=0 : 内蔵GPUのディープスリープ機能を無効にします。
    
    保存(Ctrl + O → Enter → Ctrl + X)したら、設定を反映して再起動します。

    ホンマかいな、と思いつつ、試してみたらこれで確かにネット接続が途切れなくなりました。

    ホンマか? ホンマに大丈夫か?と疑いつつ、数時間経っても大丈夫だったので、改めて既存のProxmoxクラスタにM720qを参加させて、LXCとVMをマイグレートしていきました。

    このブログのWordpressサーバのLXCもマイグレートして動作しています。ネットも途切れません。

    結局、先の対処方法が正解だったのでしょう。ただ、「Lenovo M720qがメモリ2枚刺し時にネット接続が途切れる」ということは、検索しても見当たらないんですけどねえ・・・。

  • 脱CasaOS計画〜その8:JellyfinをProxmoxに移行

    脱CasaOS計画の最後は、こちらも外部ストレージを使っていたJellyfinです。動画ファイルを保存しているSSDは、今のCasaOSが入っている、UN100PというミニPCに内蔵SSD(SATA)の形で入っています。NVMeの方は起動ディスクとして使っていました。

    今回の移行計画でJellyfinを最後にした理由でもあるのですが、この元のCasaOSが入っているミニPCからSATA SSDを取り外さずに、ミニPCにProxmoxを入れてJellyfinを使えるようにして、Proxmox2台でのクラスタを組んで運用しよう、ということです。

    ということで、一旦、CasaOSを全てシャットダウンしてから、USBメモリを挿して起動し、Proxmoxをインストールします。

    インストール後、1台目のProxmoxとクラスタ化して、2台目のProxmoxでJellyfinのLXCを作成します。
    スペックは、
    コンテナイメージ:Debian12(13だとJellyfinのインストールが出来ませんでした)
    CPU:2コア
    メモリ:4GB
    スワップ:4GB
    ストレージ:20GB
    です。

    Jellyfinをインストール後、ブラウザから開きます。元々入っているSATA SSDを認識させ、そのマウントしたパスで、メディアライブラリーを作成すれば完了です。前の設定を持ってくるのは止めて、結局データ以外は一から設定したことになります。

    一応、これでCasaOSにおいて運用していたセルフホストのサービスは、全てProxmox上に移し終えました。

    3連休がガッツリ潰れましたが、それくらい時間がある時でないとやってられないですね。

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

    本当は、ゲートウェイに使っているPCを入れ替えたいのですが、やるとしたらゴールデンウィークかなあ・・・。

  • 脱CasaOS計画〜その6:VaultwardenをProxmoxに移行

    いよいよ移行済みのサービスが未移行のサービスを上回ってきましたが、まだ面倒なのが残っています。

    とりあえず外部ストレージを使っていないものを先に終わらせたいので、今回はVaultwardenのサーバの移行です。

    まず先に、CasaOSの
    /Root/DATA/AppData/vaultwarden/data
    の中身をダウンロードしておきます。

    Proxmoxで新しいLXCを作り、
    コンテナイメージ:Debian13
    CPU:1コア
    メモリ:1024MB(後に512MBに縮小)
    スワップ:1024MB(後に512MBに縮小)
    ストレージ:8GB
    メモリは後になって減らしましたが、後から減らせないストレージはそのままです。8GBも要らないですね。メモリもなんなら256MBでも大丈夫かも。

    さて、LXCでDockerを準備してから、SCPコマンドで先程保存しておいた旧サーバにあったデータを全て、新サーバにコピーしておきます。

    そして新環境でのVaultwardenを構築。さらにNginxProxyManagerでのIPアドレス指定を変更して、ブラウザでアクセスしてログインを確かめれば完了です。

    始め、SCPでコピーする先の指定を一つ下のフォルダにしてしまっていたため、ログイン時にマスターパスワードが通らなくて焦りました。コピーし直せば良いだけでしたけど。

    あと、最近何故かスマホでのVaultwardenへのログイン(Bitwardenアプリ)が出来ていなかったのですが、今回の移行後に試してみたら大丈夫でした。前のCasaOSでのVaultwardenの設定がおかしくなっていたのかも知れませんが、今回の移行で問題なくなって良かったです。

    これで外部ストレージを使っていないサーバの移行は全て終わりました。ここからが面倒なんですよね・・・。

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

  • 脱CasaOS計画〜その5:GhostをProxmoxに移行

    連続ブログ投稿の第5回目は、ブログサービスのGhostを、CasaOS上からProxmoxのLXCに移すお話です。

    中身自体はスッカスカのブログなので、テキストデータ量自体はかつてのフロッピーディスクに入る程度ですが、画像をたまに貼り付けているのでその移行が面倒ですね。

    とはいえ、昨年WordpressからGhostに移したこともありますので、それを思い出しながら実行します。

    まずはProxmoxでのLXCを作ります。
    コンテナイメージ:Ubuntu server 24.04
    CPU:1コア
    メモリ:1024MB
    スワップ:1024MB
    ストレージ:8GB
    で作成。Ghost用の一般ユーザーを作り、Node.jsをインストールしますが、ここで浅薄な知識を持つオジサンは、新しいバージョンのほうが良いだろうと勝手に思ってv25を入れてしまいましたが、後ほどエラーが出て進まなくなったので、削除してからv22を入れ直しました。

    MySQLも入れてデータベースの設定を行い、Nginxも入れて、Ghost-CLI のインストールと Ghost 構築を行います。

    Ghostインストール時に色々聞かれますが、私の環境ではNginxProxyManager経由で独自ドメインのSSLを設定しているので、このGhost自体ではSSLは設定しません。

    インストール完了後にGhostを起動して、同時にNginxProxyManagerのIPアドレスを古い方から新しい方に変更します。これで新しい方のGhostにアクセスできるようになりました。

    Ghostの初期画面でサインアップしてから、すでに古いGhostでエクスポートしたファイルを新しい方でインポートすると、記事自体の移行は完了です。

    私のブログはほぼ画像が無いですが、たまにあるのでそれも移行します。CasaOSのファイル機能から、
    /Root/DATA/AppData/big-bear-ghost/content/images
    の中身をダウンロードして、解凍したフォルダごと、SCPで新しいGhostの
    /var/www/ghost/content/images/
    にコピーしたら、画像も新しいブログで表示されました。

    ちなみに、起動しててリソースの逼迫具合を見てみると、意外と負荷がかかっています。

    CPUは大したことないですが、メモリが1GBのうち750MBも使っていて、この状態で安定していますので、これ以上は減らせないですね。やっぱりCMSというか、動的サイトはリソース食いますね。

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

  • 脱CasaOS計画〜その2:MemosをProxmoxに移行

    CasaOSで運用しているサービスのうち、まずFreshRSSをProxmoxに移行できたので、次はメモから文章にするエディタとして使っているMemosを移行します。

    Proxmoxのヘルパースクリプトで簡単楽ちん!と思ってやってみたら、そこで展開されるMemosのサービスが、なんか今使っているCasaOS内のMemosと雰囲気が違いました。バージョン違いかなんかあるのかも知れませんが、変更するよりもProxmoxで普通にLXCとして一から構築するのを選びました。

    LXCのスペックはこんな感じ。
    コンテナイメージ:Debian13
    CPU:1コア
    メモリ:512MB
    スワップ:512MB
    ストレージ:8GB
    作ってから言うのもなんですが、8GBも絶対いらんかった。Memos上で大量に画像データとかも保存していくならともかく、プレーンテキストしか書かないなら4GBでも十分だと思います。

    さて、今回は一発コピーとかが上手く行くか分からなかったので、新旧二つのMemosの画面を開きつつ、10個ほどのメモを手動でコピーして終わり。

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

  • 脱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

  • 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とかありますしね・・・。