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