#fedimovie 早朝のメンテ後に、キャッシュ系のやらかしでユーザー全員管理者アカウントでログイン状態となる重大な不具合を発生させてしまったため、現在停止中です。
ご報告いただいたみなさま、ありがとうございます。
不具合の修正は既に完了していますが、影響範囲を確認後に状況に応じた対応、というカタチになりますので、少々お待ちください。
以上、ひとまず。
#fedimovie インシデント第二報です。
本日5:19、FediMovieのnginxキャッシュ設定の変更により、PeerTubeのWebUIが過剰にキャッシュされ、ユーザーセッションが切り替わらず、アクセスすると管理アカウントを兼ねるnoellaboでログインした状態となりました。
管理者権限があるため、他の利用者の情報表示、変更等が可能な状態となりました。
同日8:02、サーバ本体のプロセスを停止。nginxプロセスも追って停止。
現在、この間の履歴について確認を行っています。
ほぼ問題ないことが確認できておりますが、精査の上で対応しますので、いましばらく停止状態継続とさせていただきます。
利用者の方にはご不便をおかけしますが、よろしくお願いします。
#fedimovie インシデント第三報です。
諸々手を打ち、サービス再開しました。
本件、都合上、noellaboを削除しました。それ以外の変更点はありません。
大きな事故につながる不具合を発生させ、また対応が遅れまして、大変申し訳ありません。
ユーザーがログインする仕組みのWebサービス(サイト)では非常に危険かつ初歩的なミス(やってはいけないこと)であり、お恥ずかしい限りです。
なお、本トラブル発生中にアクセスされたみなさんは、事情を察し、自身はアクセスを打ち切り、それぞれ報告をあげてくださいました。
本件が最小の対応で解決できたのは、すべてみなさんの善意によるものです。
一般にこのようなことは想定できないところで、極めてレアな、幸運な状況でした。ありがとうございました。
少し技術的なフォローをしておきます。
PeerTubeのようなログインベースのシステムは、同じURLに対するアクセスでも、ログイン状態やログインしているユーザーにより異なる内容を表示します。
他方、nginxやCloudflareのようなコンテンツをキャッシュするサーバは、基本的な動作としては、URLをキーにして、同じURLに対する2回目以降のリクエストを代理で応答する仕組みです。
そのままではユーザーごとに違う内容を返すシステムがうまく動かないので、キャッシュしてはいけない情報をアプリケーション(PeerTube)からつたえたり、キャッシュしてよい期限を短く指定するなど、キャッシュサーバが中継することを前提として、配慮した設計にします。
この点、MastodonやMisskeyはしっかり作られていて、単純にキャッシュサーバを介すようにしても問題は起きません。
PeerTubeはこのあたりはまだ調整中といったところで、基本的にはキャッシュは利用できず、一部、実験的な設定方法が案内されている段階です。
(つづく)
#fedimovie
あ、ちなみにPeerTube、Cloudflareでキャッシュダメです。動画のストリーミングに使っちゃダメってのと、実際にちゃんと動かないというのがあります。