Storage (ที่เก็บไฟล์)
เพิ่ม S3 / Cloudflare R2 หรือ Host Storage ให้ Instance ตั้ง Path Prefix และ Storage หลัก
Storage คืออะไร
ไฟล์ที่คุณอัปโหลดเองต้องมีที่เก็บ - นั่นคือ Storage Instance หนึ่งมีได้หลาย Storage และมี 2 ชนิด:
| ชนิด | คืออะไร | เหมาะกับ |
|---|---|---|
| S3 / R2 | บริการเก็บไฟล์ที่เข้ากับ S3 เช่น Cloudflare R2, AWS S3, MinIO อัปโหลดตรงจากเบราว์เซอร์ผ่าน Presigned URL | ไฟล์ขนาดใหญ่ ต้องการความเสถียรและ CDN |
| Host Storage | เซิร์ฟเวอร์เก็บไฟล์ที่คุณติดตั้งเอง - มีแพ็กเกจให้ดาวน์โหลด ดู ติดตั้ง Host Storage | อยากควบคุมที่เก็บเอง ไม่อยากใช้บริการคลาวด์ |
ม็อดที่ติดตั้งจาก Modrinth และไฟล์ที่มาจาก .mrpack ถูกดาวน์โหลดจากต้นทางโดยตรง ไม่ผ่าน Storage ของคุณ (เฉพาะไฟล์ overrides ของ .mrpack ที่ต้องอัปโหลด) ส่วนไอคอนใช้ CDN กลาง
เพิ่ม Storage
แท็บ การตั้งค่า → การ์ด Storage → เพิ่ม Storage เลือกชนิดแล้วกรอก:
S3 / R2
| ช่อง | รายละเอียด |
|---|---|
| ชื่อ Storage | ชื่อเรียก ห้ามซ้ำใน Instance เดียวกัน เช่น R2 หลัก |
| Endpoint | เช่น https://<account>.r2.cloudflarestorage.com |
| Bucket | ชื่อ bucket |
| Access Key | Access Key ID |
| Secret Access Key | ความลับของ key - ถูกเข้ารหัสก่อนเก็บและจะไม่ถูกแสดงกลับมาอีก |
| Public URL | ไม่บังคับ: URL ที่เปิดอ่านไฟล์ใน bucket ได้สาธารณะ (เช่น โดเมน CDN ของ bucket) ใช้เป็นลิงก์ดาวน์โหลดของผู้เล่น ถ้าเว้นว่าง bucket เป็นส่วนตัวได้ ระบบจะสร้างลิงก์ที่ลงนามชั่วคราว (ใช้ได้ 6 ชั่วโมง) ให้ผู้เล่น launcher และเซิร์ฟเวอร์เกมทุกครั้งที่ดาวน์โหลด |
| Path prefix | โฟลเดอร์นำหน้าใน bucket ดูหัวข้อ Path prefix ด้านล่าง |
Host Storage
| ช่อง | รายละเอียด |
|---|---|
| ชื่อ Storage | ชื่อเรียก |
| Base URL ของ Storage Server | ค่า PUBLIC_URL ของเซิร์ฟเวอร์ Host Storage ของคุณ เช่น https://storage.example.com ต้องเข้าถึงได้จากอินเทอร์เน็ต |
| API Key | ต้องตรงกับ API_KEY ในไฟล์ .env ของ Host Storage ถูกเข้ารหัสและไม่แสดงกลับ |
| Path prefix | โฟลเดอร์นำหน้าใน Storage ดูด้านล่าง |
ไฟล์ถูกอัปโหลดจากเบราว์เซอร์ไปยัง bucket โดยตรง จึงต้องเปิด CORS ที่ bucket ให้โดเมนของ dashboard ใช้เมธอด PUT ได้ มิฉะนั้นการอัปโหลดจะล้มเหลวด้วยข้อผิดพลาดเครือข่าย ตัวอย่างสำหรับ Cloudflare R2:
[
{
"AllowedOrigins": ["https://your-dashboard.example.com"],
"AllowedMethods": ["PUT", "GET", "HEAD"],
"AllowedHeaders": ["Content-Type"],
"MaxAgeSeconds": 3600
}
]Path prefix
Path prefix คือโฟลเดอร์ที่ไฟล์ของ Instance นี้ถูกวางไว้ใน Storage เพื่อไม่ให้ปนกับของอื่น ค่าเริ่มต้นคือชื่อ (ID) ของ Instance ที่ถูกเติมให้อัตโนมัติ ไฟล์จะถูกเก็บด้วยชื่อสุ่ม (UUID) ภายใต้ prefix:
<Path prefix>/<uuid>
ตัวอย่าง: my_server/3f2c9a1e-5b7d-4c0a-9e88-1d2f6a7b8c90- Path ที่คุณตั้งตอนอัปโหลด (เช่น
mods/foo.jar) เป็น path ภายใน Instance เก็บในฐานข้อมูล ไม่ใช่ชื่อไฟล์ใน Storage - ลบ prefix ให้ว่างได้ถ้าไม่ต้องการ prefix (ไฟล์จะอยู่ที่ราก)
- เปลี่ยน prefix ภายหลังมีผลกับไฟล์ที่อัปโหลดหลังจากนั้นเท่านั้น ไฟล์เดิมยังอยู่ที่เดิมและลบได้ตามปกติเพราะระบบจำตำแหน่งจริงของแต่ละไฟล์ไว้
Storage หลัก (default)
- Storage อันแรกที่สร้างจะเป็น Storage หลักอัตโนมัติ
- ตอนอัปโหลดไฟล์ ระบบเลือก Storage หลักให้ก่อน - ถ้า Instance มีมากกว่า 1 อัน จะมีตัวเลือกให้เปลี่ยนในหน้าต่างอัปโหลด
- ตั้งอันอื่นเป็นหลักได้ด้วยปุ่ม ☆ ตั้งเป็น Storage หลัก (มีข้อความแจ้งเมื่อสำเร็จ) หรือติ๊ก ใช้เป็น Storage หลัก ตอนเพิ่ม/แก้
- ถ้าลบ Storage หลัก ระบบจะตั้งอันที่เก่าที่สุดที่เหลือเป็นหลักให้
ใช้ Storage เก็บไฟล์ที่มาจาก Modrinth
นอกจากไฟล์ที่อัปโหลดเอง Storage ใช้เก็บสำเนาของไฟล์ Modrinth / ลิงก์ภายนอกได้ เพื่อให้ผู้เล่นโหลดจากเรา ไม่พึ่งต้นทาง (ต้นทางล่มหรือถอนม็อด) ใช้ปุ่ม ย้ายไป Storage ในหน้าไฟล์ ซึ่งให้เลือกได้ว่าจะเก็บที่ Storage ไหน (เริ่มที่ Storage หลัก) ดู จัดการไฟล์
แก้ไข / ลบ
- แก้ไข (ไอคอนดินสอ): เปลี่ยนชื่อ Endpoint ฯลฯ ได้ แต่เปลี่ยนชนิดไม่ได้ ช่อง Secret / API Key เว้นว่างไว้เพื่อใช้ค่าเดิม
- ลบ (ไอคอนถังขยะ): ต้องยืนยัน และลบไม่ได้ถ้ายังมีไฟล์อยู่ใน Storage นั้น (ระบบบอกจำนวนไฟล์) ให้ลบหรือย้ายไฟล์ก่อน
- แต่ละแถวบอกชนิด (S3/R2 หรือ Host), bucket หรือ URL และจำนวนไฟล์
ความปลอดภัยของ key
- Secret Access Key และ API Key ถูกเข้ารหัสก่อนบันทึก และไม่ถูกส่งกลับไปหน้าเว็บอีก
- ใช้ key ของ bucket ที่ให้สิทธิ์เท่าที่จำเป็น (เขียนและลบ object ใน bucket นั้น)
ต่อไป: จัดการไฟล์ · ติดตั้ง Host Storage

