デジタルダウンロード:永続化の修正と過去の注文への自動配信

2026年9月13日

本日、サーバーアップデート後に一部のデジタルダウンロードファイルが消えてしまうバグを修正しました。そして同じく重要なこととして、販売者がファイルを(再)アップロードした瞬間に購入者へ自動的にアクセス権が付与されるようにしました。

何が起きていたか

一部の購入者が、注文が支払い済みでダウンロード項目も存在するにもかかわらず、マイダウンロードのダウンロードボタンをクリックすると 「file not found on disk」(ディスク上にファイルが見つかりません) というエラーを目にしていました。

技術的な原因

私たちのゲームサービスは、各地域のVPS上でDockerコンテナ内で動作しています。アップロードされたダウンロードファイルは /var/lib/erleuchtung/shop-downloads に書き込まれます — これはホストサーバー上の永続フォルダで、コンテナにマウントされるはずのものでした。

このマウントは開発環境の設定には存在していましたが、更新エージェントがVPSノードにインストールするデプロイ用composeファイルには含まれていませんでした。その結果、アップロードされたファイルはコンテナ自身のファイルシステムレイヤー内に保存されていました。アップデートがコンテナを再作成するたびにそのレイヤーは破棄され — ファイルは消え、データベースレコード(PostgreSQLに格納)だけが残っていました。

結果として、存在しなくなったファイルを指す有効なダウンロード項目が残っていたのです。

修正内容

  • 全ノードでの永続ストレージ。 ダウンロードディレクトリは、すべての地域サーバー(US、IN、EU2、SG、およびMAASステージングノード)でホストストレージへ正しくマウントされるようになりました。アップロードはアップデートやコンテナ再作成を越えて保持されます。
  • アップロード時の自動バックフィル。 以前は、ダウンロードアクセスは支払い時点でのみ付与され — しかもその時点で存在するファイルのみが対象でした。今後は、販売者が商品にファイルをアップロードすると、その商品の支払い済み注文を持つすべての購入者に自動的に付与され、即時通知が送られます。
  • 自己修復するダウンロードリスト。 「マイダウンロード」を開くと、すべての支払い済み注文について欠落しているアクセス権が修復されます — 過去の購入も自動的に治ります。
  • 発送時の付与。 販売者が注文を発送済み/配達済みとしてマークすると、添付ファイルは即座に付与されます — デジタル商品は配達時に支払われるべきものです。

販売者の方へ

この修正以前にアップロードされ、アップデート中に失われたファイルは復元できません — それらは破棄されたコンテナレイヤー内にのみ存在していました。

以前にファイルをアップロードしていた場合: 商品を開き、古いダウンロード項目を削除して、ファイルを再アップロードしてください。アップロードした瞬間に、過去のすべての購入者が自動的にアクセスを取り戻します — 手作業は不要です。

透明性について

一部の方が受け取った「発送済み」通知メールには、実際には添付されていなかったダウンロード可能なファイルについての記述がありました — あのテキストは販売者の発送メモであり、ファイルの配信ではありませんでした。このリリース以降、「マイダウンロード」のダウンロードボタンが唯一の信頼できる情報源です:ファイルがそこに表示されていれば、サーバー上に存在し、ダウンロードできます。

ご辛抱いただきありがとうございます — そして問題を迅速に報告してくださったコミュニティメンバーの皆様に特別な感謝を。

— Erleuchtung チーム