ブログシステム「Ghost」をアップデートしようとしてはまった話w
このブログは「Ghost」と言うシステムを使用しています。
自分で運用すれば、オープンソースなので無料で利用できます。
とは言え、サーバーレンタル費用やドメインの費用など細々と費用がかかるので、どっちが得とかは無いと思います。
むしろ「Ghost」の有料サービスの方が得まであります。(「Ghost」の標準プランは月$8です)
なぜ「WordPress」を使わなかったのか?ですが、標準になりすぎて、攻撃対象になりやすい(設置直後に不正アクセスを狙うBTOが来る)
一般的な物を使うのが面白くないw
そんな感じです。一番はセキュリティーですかね。
使ってみて思った違いを、簡単に書きます。
良い点
・システムの維持費無料
・自分で色々カスタマイズできる
・サーバーを維持する勉強になる
・サーバーはブログ以外の用途に利用できる
悪い点
・サーバー維持費がかかる
・自分でシステムをメンテナンスする必要がある(アップデートとか)
・「Ghost」の本家でしか提供されていないサービスが使えない
結局ブログを書くのが目的なら、メンテナンスや色々なサービス(アクセス解析や有料会員機能など)が受けられるので、自分運用するメリットはあまり無いかもしれません。
てな訳で、「Ghost」運用したりメンテナンスしたりする勉強だったり、何が大変かとか運用しないと分からない事もあるので、自分でやってみている感じです。
失敗しても自分のブログが見られなくなるとか、被害がほぼ無いですしw
結局自分で運用しているから発生する話なので、私が馬鹿な事をやっている面白話として読んでもらえればと思います。
「Ghost」のバージョンは5系で運用していましたが、少し前に6が出ました。
6が出てすぐにアップデートすると、はまる可能性があるので(知見が溜まってからの方がよいと思って)、少し放置していましたが、サーバーOSをアップデートするのと一緒に色々アップデートしようと言う事で、アップデートしました。
一応下調べをすると、「Ghost6」はNode.jsが22系が必要と公式のアップデートマニュアルに書いてあったので、まずそこをアップデートします。
元々は「Ghost5」はNode.jsが20系だったので、アップデート必須な訳です。
あらかじめ準備を整えて、いざアップデートを開始
アップデートそのものは、実は簡単で「ghost update」を実行すると、何事も問題無ければ自動的にアップデートが終了して最新版になります。
・・・
でも、分かりますよね・・・
これが普通に失敗するって・・・
エラーが出るんです。しかもタイムアウト・・・
[sudo: #node-sudo-passwd#] Password:
sudo-rs: timed out
エラーで問題を指摘してもらえれば、手も打ちやすいのですが、タイムアウトって・・・・
タイムアウトは、時間経ちすぎたので「時間切れ終了!」って事です・・・
なんで時間切れになっているの?
って所が問題なんですが、エラーを見ていくと、権限問題でパスワードを求めたがパスワードの入力が一定時間無かったのでタイムアウト(時間切れ)で終了していたみたいです。
でも、見ていましたが特にパスワードを求められてないので、言いがかりだ!
って怒ってもしょうがないのですが、なんだか分からないので、ここはAIに聞いてみます。
エラーとか状況を説明して、どうしたらいいかを聞いてみました。今回は「GPT5.1」君にお願いしました。
そうすると、あらかじめ権限を上げておけばいいらしい(そらそうか)
そんな訳で、AIの言う通りにやっていくと、タイムアウトは出なくなります。
でも今度は、「Ghost」5系の最終状態にしていないとダメで、いきなり「Ghost」6系にアップしてもダメらしい(これもエラーをAIに聞いた結果)
となると、「Ghost」5系を最終版にアップしようとすると、今度はNode.jsが22系なのでアップデートできない!!!ってエラーが
Node.jsをまた20系にダウングレードする時に、簡単にはできなくて、エラーが出まくる物のAIのおかげで、エラーを回避しつつNode.js20系にします
そうしたら、「Ghost」6系にするので、Node.jsを22系にまたアップデートして、アップグレード開始!
ここまですれば、アップデートできるはず!!
流石に「Ghost」6にアップグレードは成功して、起動も確認!
いやー良かった良かった!って事で無事アップグレード成功しました。
で、ここで終わるとは思ってないですよね・・・
「Ghost」にログインして書き込みをしようと思った所で、大きな問題にぶつかります・・・・・
ログインできない・・・・・
IDもパスワードも合っているはずなのに・・・・
エラーメッセージっぽいのが出ていて、それを見ると、「メールを送信できませんでした」的な事が書かれています。
メール!?????
サーバーからメールを発信する機能は無く、そんな設定もそんな準備もしていません。
調べると、どうやらメールを送信して、そのメールに1タイムパスワードを送信して、認証する仕組みが入っています。
「Ghost」からメールを送信できる仕組みを導入しないとダメなようです。
こうなると、AIに聞くしかありません。
いくつか方法を提示されましたが、お勧めかつ一番簡単で簡易的な方法が、自分のgmailを利用する方法です。
「Ghost」をメールアプリとして自分のgmailから自分にメールを出すという仕組みです。
なるほどって感じです。
AIに聞かなければ、たどり着くのにどれだけ時間がかかったか・・・。
gmailの機能で、アプリからgmailを経由してメールのやりとりをするための機能があり、特殊なパスワードをgoogleのアカウントページで発行する事ができるらしいのですが、書かれている通りにやっても、項目が無い・・・・
利用するには2段階認証を設定している事が条件と書いてあって、その条件はクリアしている物の表示されません。
ググってみても、特にそれ以外の条件は無いですが、ダメで、公式の説明ページに、リンクがあり、ここからアプリ登録をしてパスワードを発行するって、ズバリなページへのリンクがあります。
そこからアクセスしてみると、あら不思議!アプリ用のパスワードがあっさりと発行できました!!
これで解決かと思いきや、実はログインした状態じゃ無いと、メールの設定ができない!!!!
幸いサーバーには入れるので、直接設定する方法は無いか、AIに聞いてみます。こんな時ホントに助かるw
そんな事も考慮されてなので、その部分の設定は外出しされていて、特定のファイルを修正するだけで済みました。
これがデータベース内に保存されているとかだと、膝から崩れる所でした。(できなか無いけど、色々大変なので・・・)

そんな訳で、無事アクセスできるようになって、この文章を書いています。
ただアップデートするだけで、この騒ぎですよw
最初にメリットデメリット書きましたが、これを楽しめるぐらいじゃないと、提供されたサービスを使う方が無難ですね・・・
最後に今回のエピソードを動画にまとめてもらいました。
最後Geminiのveo3.1で作成しましたが、なんかよく分からんw