ดาวน์โหลดดิจิทัล: แก้ไขการจัดเก็บถาวรและส่งมอบอัตโนมัติสำหรับคำสั่งซื้อก่อนหน้า

13 กันยายน 2026

วันนี้เราได้แก้ไขบั๊กที่ทำให้ไฟล์ดาวน์โหลดดิจิทัลบางไฟล์หายไปหลังจากอัปเดตเซิร์ฟเวอร์ — และที่สำคัญไม่แพ้กัน เราได้ทำให้ผู้ซื้อได้รับสิทธิ์เข้าถึงโดยอัตโนมัติทันทีที่ผู้ขายอัปโหลดไฟล์ (อีกครั้ง)

เกิดอะไรขึ้น

ผู้ซื้อบางคนเห็นข้อความ «file not found on disk» (ไม่พบไฟล์บนดิสก์) เมื่อคลิกปุ่มดาวน์โหลดใน ดาวน์โหลดของฉัน ทั้งที่คำสั่งซื้อชำระเงินแล้วและรายการดาวน์โหลดก็มีอยู่

สาเหตุทางเทคนิค

บริการเกมของเราทำงานในคอนเทนเนอร์ Docker บน VPS แต่ละภูมิภาค ไฟล์ดาวน์โหลดที่อัปโหลดจะถูกเขียนไปที่ /var/lib/erleuchtung/shop-downloads — ซึ่งควรจะเป็นโฟลเดอร์ถาวรบนเซิร์ฟเวอร์โฮสต์ที่เมาท์เข้าไปในคอนเทนเนอร์

การเมาท์นี้มีอยู่ในการตั้งค่าการพัฒนาของเรา แต่ขาดหายไปในไฟล์ compose สำหรับ deployment ที่เอเจนต์อัปเดตของเราติดตั้งบนโหนด VPS ผลคือไฟล์ที่อัปโหลดถูกจัดเก็บอยู่ในเลเยอร์ระบบไฟล์ของตัวคอนเทนเนอร์เอง ทุกครั้งที่การอัปเดตสร้างคอนเทนเนอร์ใหม่ เลเยอร์นั้นจะถูกทิ้ง — ไฟล์หายไป ในขณะที่บันทึกฐานข้อมูล (ซึ่งอยู่ใน PostgreSQL) ยังคงอยู่

ผลลัพธ์: รายการดาวน์โหลดที่ถูกต้องชี้ไปยังไฟล์ที่ไม่มีอยู่อีกต่อไป

สิ่งที่เราแก้ไข

  • ที่จัดเก็บถาวรบนทุกโหนด ไดเรกทอรีดาวน์โหลดตอนนี้ถูกเมาท์ไปยังที่จัดเก็บของโฮสต์อย่างถูกต้องบนเซิร์ฟเวอร์ภูมิภาคทั้งหมด (US, IN, EU2, SG และโหนด staging MAAS ของเรา) การอัปโหลดจะรอดจากการอัปเดตและการสร้างคอนเทนเนอร์ใหม่
  • เติมสิทธิ์อัตโนมัติเมื่ออัปโหลด ก่อนหน้านี้ สิทธิ์การดาวน์โหลดจะถูกมอบให้เฉพาะตอนชำระเงินเท่านั้น — และเฉพาะไฟล์ที่มีอยู่ในขณะนั้น ตอนนี้ เมื่อผู้ขายอัปโหลดไฟล์ไปยังผลิตภัณฑ์ ไฟล์นั้นจะถูกมอบให้ผู้ซื้อทุกคนที่มีคำสั่งซื้อที่ชำระแล้วสำหรับผลิตภัณฑ์นั้นโดยอัตโนมัติ พร้อมการแจ้งเตือนทันที
  • รายการดาวน์โหลดที่ซ่อมตัวเอง การเปิด «ดาวน์โหลดของฉัน» ตอนนี้จะซ่อมแซมสิทธิ์ที่ขาดหายไปสำหรับคำสั่งซื้อที่ชำระแล้วทั้งหมดของคุณ — การซื้อเก่าจะซ่อมตัวเอง
  • มอบสิทธิ์เมื่อจัดส่ง เมื่อผู้ขายทำเครื่องหมายคำสั่งซื้อว่าจัดส่งแล้ว ไฟล์ที่แนบมาจะถูกมอบให้ทันที — สินค้าดิจิทัลครบกำหนดเมื่อจัดส่ง

ผู้ขายต้องทำอะไร

ไฟล์ที่อัปโหลดก่อนการแก้ไขนี้และหายไประหว่างการอัปเดตไม่สามารถกู้คืนได้ — ไฟล์เหล่านั้นเคยมีอยู่เฉพาะในเลเยอร์คอนเทนเนอร์ที่ถูกทิ้งเท่านั้น

หากคุณเคยอัปโหลดไฟล์ไว้ก่อนหน้านี้: เปิดผลิตภัณฑ์ของคุณ ลบรายการดาวน์โหลดเก่าออก แล้วอัปโหลดไฟล์ใหม่ ในขณะที่คุณอัปโหลด ผู้ซื้อเดิมทั้งหมดจะได้รับสิทธิ์กลับคืนโดยอัตโนมัติ — ไม่ต้องทำอะไรด้วยตนเอง

บันทึกเรื่องความโปร่งใส

อีเมลแจ้งเตือน «จัดส่งแล้ว» ที่บางคนได้รับกล่าวถึงไฟล์ที่ดาวน์โหลดได้ซึ่งไม่เคยถูกแนบมาจริง — ข้อความนั้นเป็นบันทึกการจัดส่งของผู้ขาย ไม่ใช่การส่งมอบไฟล์ ด้วยรุ่นนี้ ปุ่มดาวน์โหลดใน «ดาวน์โหลดของฉัน» คือแหล่งข้อมูลที่เชื่อถือได้เพียงแหล่งเดียว: หากไฟล์แสดงอยู่ที่นั่น ไฟล์นั้นมีอยู่บนเซิร์ฟเวอร์และสามารถดาวน์โหลดได้

ขอบคุณสำหรับความอดทนของทุกคน — และขอขอบคุณเป็นพิเศษสำหรับสมาชิกชุมชนที่รายงานปัญหาได้อย่างรวดเร็ว

— ทีม Erleuchtung