Discourseの自動更新をcronジョブで行うことを考えています。例えば、2週間に一度、夜間に以下のcronジョブを実行します。
cd /var/discourse
./launcher rebuild app
これは安全に行えると思いますか?それとも手動で行うべきでしょうか?
Discourseの自動更新をcronジョブで行うことを考えています。例えば、2週間に一度、夜間に以下のcronジョブを実行します。
cd /var/discourse
./launcher rebuild app
これは安全に行えると思いますか?それとも手動で行うべきでしょうか?
何かがうまくいかなくなり、サイトが壊れる可能性があります。実行する際には注意してください。
はい。ビルドの出力をすべてメールで送信しようと考えていました。そうすれば、朝に確認できます。
個人的には、自分のサイトでも全く同じことをしていますが、ブートストラップが失敗した場合に備えて、2つのコンテナを使用しています。
ブートストラップが正常に完了した場合にのみ、古いコンテナが停止し、新しいコンテナが起動します。
今のところ問題はありません。
ジェイが言ったように、稀なケースですが、アップデートによって不具合が生じることがあります(Discourse本体やプラグイン/コンポーネントの問題を含む場合もあります)。
過去数年間で私が実際に目にしたのは数回ですが、非常に稀です。修正も迅速に行われますが、この経験から、私はインスタンスを再構築する前にアップデートに関する情報を収集し(#contribute:bug カテゴリ
を確認するなど)、新しいバージョンが正式にリリースされてから数日待つようにしています。
また、適宜 ./launcher cleanup を実行することもあります。
つまり、私は情報を集めた上で、自分が望むタイミングでアップデートを行うようにしています。潜在的な被害を最小限に抑えられるので、より安全だからです。
2026年について何か新しい情報はありますか?
本番サイトが停止するリスクを冒してでも、セキュリティアップデートをできるだけ早く適用したいと考えています(手動でのアップデートを避けるため)。Discourseはセキュリティアップデートとその他のアップデートを実際には区別していないので、毎日すべてを更新しても構いません。まだcronジョブが最善の方法ですか?
私個人としてはやりません。一つには、セキュリティ修正のためだけに毎月更新する必要があるわけではなく、リリースノートを読んで判断を下すからです。もう一つには、毎日更新すると、システムが停止する稀なケースに遭遇する可能性が高くなります。間違いなくダウンタイムは増えるでしょう。
誰か熟練した人が修正に来るまで、cronジョブがフォーラムを停止させることがあっても構わないのであれば、もちろんcronジョブを実行しても構いません。しかし、その熟練した人がここにいる開発者に連絡を取り、問題が診断され修正されるまでさらに数時間待つ必要があるかもしれない、ということを念頭に置いてください。
Discourseのアップデートは過去4年間、私のフォーラムを壊したことがないので、心配していません。もし稀に壊れたとしても、対応できます。
私の懸念は、よりセキュリティに関連する部分にあります。最近の出来事(1週間前のAxios npmパッケージの件など)では、ライブラリのハッキングが相次いでおり、新しいリリースから7日経ってからライブラリを更新する方が良いかもしれません。
もしセキュリティ関連の更新を即座に行い、それ以外は7日の遅延で更新できるのであれば、それが理想的だとは思いますが、Discourseではそのような機能はサポートされていないようです。
更新に関する問題は、フォーラムをクラッシュさせるだけでなく、目立たずに新しいバグ、機能の破損、プラグインやコンポーネントの互換性の問題などを引き起こす可能性があります。ただし、それは稀なことです。
フォーラムの更新頻度を劇的に上げることがクラッシュやバグに直面するリスクを高める可能性はありますが、それでも様子を見て、問題が多すぎれば元に戻すこともできます。
私が言いたいのは、誰かによっては「最善のアイデア」ではないかもしれませんが、それほどリスクが高いわけでもないということです。