タグ: 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→移行完了

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