สารบัญ
Steam Cache คืออะไร?
Steam Cache หรือ LanCache คือ Local Caching Proxy Server ที่ทำหน้าที่เก็บไฟล์เกมที่ดาวน์โหลดแล้วไว้ในเครือข่ายภายใน เมื่อเครื่องอื่นต้องการดาวน์โหลดเกมเดียวกัน จะดาวน์โหลดจาก Cache Server แทนที่จะดาวน์โหลดจากอินเทอร์เน็ตโดยตรง
หลักการทำงาน:
- 1 PC 1 ดาวน์โหลดเกมจาก Steam → ไฟล์ถูก Cache ไว้
- 2 PC 2 ดาวน์โหลดเกมเดียวกัน → ดาวน์โหลดจาก Cache Server
- 3 ความเร็วเพิ่มขึ้น 10-100 เท่า!
LanCache Monolithic
Container หลักที่รวบรวม Cache สำหรับทุก Platform ใน Container เดียว
- รองรับ Steam, Origin, Epic, Battle.net
- ใช้ Nginx เป็น Proxy Cache
- รองรับ HTTP Range Requests
- Cache Size ปรับได้
ข้อดีสำหรับร้านเกมส์
เร็วขึ้น 10-100x
ดาวน์โหลดจาก LAN แทนอินเทอร์เน็ต
ประหยัด Bandwidth
ลดการใช้อินเทอร์เน็ต 70-90%
ลูกค้าพอใจ
ไม่ต้องรอนาน Update เกมเร็ว
คุ้มค่า
ลดค่าอินเทอร์เน็ตรายเดือน
ตัวอย่างการประหยัด
เกมใหญ่ (เช่น GTA V, RDR2)
100+ GB
ร้าน 20 เครื่อง ดาวน์โหลดเกมเดียวกัน
2,000 GB = 2 TB
มี Cache Server
100 GB เท่านั้น!
Platform ที่รองรับ
Steam
Valve
- รองรับทุกเกมบน Steam
- Workshop Content
- Game Updates
Origin
EA Games
- FIFA, Battlefield, Apex
- EA Play Games
- Game Updates
Epic Games
Epic Store
- Fortnite
- Free Games
- Game Updates
Battle.net
Blizzard
- Overwatch, WoW, Diablo
- Hearthstone
- StarCraft II
Riot Games
League of Legends
- League of Legends
- Valorant
- Legends of Runeterra
Windows Update
Microsoft
- Windows Updates
- Driver Updates
- Store Apps
สิ่งที่ต้องเตรียม
Hardware Requirements
- CPU: 2 Cores ขึ้นไป (แนะนำ 4 Cores)
- RAM: 4 GB ขึ้นไป (แนะนำ 8-16 GB)
- Storage: SSD 500 GB - 2 TB (ขึ้นกับจำนวนเกม)
- Network: Gigabit LAN
แนะนำสำหรับร้าน 10-20 เครื่อง:
- • Intel NUC / Mini PC ราคาประหยัด
- • HP EliteDesk / Dell OptiPlex (มือสอง)
- • Custom PC: i3/i5 + 8GB RAM + 1TB SSD
Software Requirements
- OS: Ubuntu Server 20.04/22.04 หรือ Debian 11/12
- Docker: Docker Engine 20.x ขึ้นไป
- Router: ที่สามารถตั้งค่า DNS ได้
Network Requirements:
- • Cache Server ต้องมี Static IP
- • Router ต้องตั้งค่า DNS ได้
- • แนะนำให้แยก VLAN สำหรับ Cache
ข้อควรระวัง
การตั้งค่า DNS Poisoning อาจส่งผลต่อการทำงานของเว็บไซต์บางแห่ง หากพบปัญหาให้ตรวจสอบ DNS Configuration หรือปิด Cache Server ชั่วคราว
สถาปัตยกรรมระบบ
หลักการทำงาน
- 1. Lancache-DNS ทำ DNS Hijack ให้ Steam CDN ชี้ไปที่ Cache Server
- 2. เมื่อ PC ดาวน์โหลดเกม จะส่ง Request ไปที่ Cache Server
- 3. Cache Server ตรวจสอบว่ามีไฟล์อยู่แล้วหรือไม่
• มี → ส่งไฟล์จาก Cache (เร็ว!)
• ไม่มี → ดาวน์โหลดจาก CDN แล้ว Cache ไว้
ติดตั้ง Docker
ติดตั้ง Docker Engine บน Ubuntu Server
# Update system sudo apt update && sudo apt upgrade -y # Install Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # Add current user to docker group sudo usermod -aG docker $USER # Start Docker sudo systemctl start docker sudo systemctl enable docker # Verify installation docker --version docker run hello-world
รัน LanCache Monolithic
สร้าง Cache Server หลัก
ก่อนรันคำสั่ง ให้ตรวจสอบ IP Address ของ Cache Server ด้วย hostname -I
# Create directories for cache data and logs sudo mkdir -p /cache/data sudo mkdir -p /cache/logs # Set permissions (adjust as needed) sudo chown -R $USER:$USER /cache
# Run LanCache Monolithic container docker run --restart unless-stopped \ --name lancache \ --detach \ -v /cache/data:/data/cache \ -v /cache/logs:/data/logs \ -p 80:80 \ -p 443:443 \ -e CACHE_MEM_SIZE=500m \ -e CACHE_DISK_SIZE=1000g \ -e CACHE_MAX_AGE=3650d \ lancachenet/monolithic:latest # Check container status docker ps | grep lancache
Environment Variables
| Variable | Default | Description |
|---|---|---|
| CACHE_MEM_SIZE | 500m | Memory สำหรับ Cache Metadata (1MB ≈ 8000 entries ≈ 8GB disk) |
| CACHE_DISK_SIZE | 1000g | ขนาด Cache สูงสุดบน Disk |
| CACHE_MAX_AGE | 3650d | อายุ Cache ก่อนลบ (10 ปี) |
| UPSTREAM_DNS | 8.8.8.8 8.8.4.4 | DNS Server สำหรับ Resolve จริง |
รัน Lancache DNS
ตั้งค่า DNS Server สำหรับ Hijack CDN
HOST_IP คือ IP ของ Cache Server (เครื่องที่รัน Docker)
# Get your host IP export HOST_IP=$(hostname -I | cut -d' ' -f1) echo "Cache Server IP: $HOST_IP" # Run Lancache DNS container docker run --restart unless-stopped \ --name lancache-dns \ --detach \ -p 53:53/udp \ -p 53:53/tcp \ -e USE_GENERIC_CACHE=true \ -e LANCACHE_IP=$HOST_IP \ lancachenet/lancache-dns:latest # Check container status docker ps | grep dns
ตรวจสอบว่าทำงานถูกต้อง
# Test DNS from another machine nslookup lancache.steamcontent.com [CACHE_SERVER_IP] # Should return your Cache Server IP # Example: 192.168.1.100
ตั้งค่า Router
กำหนด DNS Server ให้ Client ใช้ Cache DNS
ขั้นตอนสำคัญ
Router ต้องส่ง DNS IP = Cache Server IP ให้กับ Client ทุกเครื่อง
ถ้า Router ไม่รองรับ อาจต้องตั้งค่า DNS บนแต่ละเครื่องแทน
วิธีที่ 1: ตั้งค่า DHCP DNS (แนะนำ)
เข้าไปที่ Router Settings → LAN / DHCP แล้วเปลี่ยน DNS Server เป็น IP ของ Cache Server
ตัวอย่าง Configuration:
DHCP Range:
192.168.1.100 - 192.168.1.200
DNS Server (Primary):
192.168.1.100 (Cache Server)
Gateway:
192.168.1.1
DNS Server (Secondary):
ไม่ต้องใส่!
วิธีที่ 2: ตั้งค่า DNS บนแต่ละเครื่อง
# Set DNS to Cache Server (run as Admin) netsh interface ip set dns "Ethernet" static 192.168.1.100 primary # Flush DNS cache ipconfig /flushdns # Verify DNS nslookup lancache.steamcontent.com
สำหรับ MikroTik Router
# Set DHCP Server to use Cache DNS /ip dhcp-server network set [find] dns-server=192.168.1.100 # Or create new network with Cache DNS /ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 \ dns-server=192.168.1.100
ทดสอบระบบ
ตรวจสอบว่า Cache ทำงานถูกต้อง
Test 1: ตรวจสอบ DNS
# Flush DNS first ipconfig /flushdns # Test Steam CDN DNS nslookup lancache.steamcontent.com # Expected result: Should return your Cache Server IP # Name: lancache.steamcontent.com # Address: 192.168.1.100 # Test other CDNs nslookup origin-a.akamaihd.net nslookup epicgames-download1.akamaized.net
Test 2: ทดสอบดาวน์โหลดเกม
-
1
ดาวน์โหลดเกมใดก็ได้จาก Steam (ครั้งแรก)
ความเร็วจะใกล้เคียงความเร็วอินเทอร์เน็ตปกติ
-
2
ลบเกมและดาวน์โหลดใหม่ (ครั้งที่ 2)
ความเร็วควรเพิ่มขึ้นอย่างเห็นได้ชัด!
-
3
ทดสอบจากเครื่องอื่นดาวน์โหลดเกมเดียวกัน
ความเร็วควรเท่ากับครั้งที่ 2 (ดึงจาก Cache)
ตรวจสอบ Cache Stats
# View access logs in real-time docker exec -it lancache tail -f /data/logs/access.log # Check cache size du -sh /cache/data # List cached files ls -la /cache/data/ # Check container logs docker logs lancache
การ Pre-fill Cache
Pre-fill คือการดาวน์โหลดเกมลง Cache ล่วงหน้า เพื่อให้เวลาลูกค้ามาเล่นไม่ต้องรอดาวน์โหลดนาน
เกมที่ควร Pre-fill
- Valorant - เกมยอดนิยม eSports
- Apex Legends - Battle Royale
- League of Legends - MOBA
- CS2 - FPS ยอดนิยม
- GTA V - Open World
วิธี Pre-fill
- 1 ติดตั้ง Steam บนเครื่อง Test
- 2 Login และดาวน์โหลดเกมที่ต้องการ
- 3 รอจนเสร็จ → เกมอยู่ใน Cache แล้ว
- 4 ทำซ้ำกับเกมอื่นๆ
Tips
- • Pre-fill ช่วงเวลาที่ร้านปิดหรือไม่มีลูกค้า
- • ใช้ Off-peak hours เพื่อประหยัด Bandwidth
- • Pre-fill เกมใหม่ที่กำลังฮิต
การดูแลระบบ
ตรวจสอบประจำวัน
- ตรวจสอบ Container Status
- ตรวจสอบ Disk Space
- ตรวจสอบ Access Logs
# Quick status check
docker ps -a | grep -E "lancache|dns"
df -h /cache
Maintenance
- Update Container ทุกเดือน
- Clear Cache เก่าที่ไม่ใช้
- Monitor Disk Space
# Update containers
docker pull lancachenet/monolithic:latest
docker restart lancache lancache-dns
การแก้ไขปัญหา
ปัญหา: Steam ไม่ดึงจาก Cache
สาเหตุที่เป็นไปได้:
- • DNS ไม่ได้ชี้ไปที่ Cache Server
- • Client ใช้ DNS อื่น (เช่น 8.8.8.8)
- • Firewall บล็อก Port 80/443
วิธีแก้:
- • ตรวจสอบ
nslookup lancache.steamcontent.com - • ตั้งค่า DNS เฉพาะ Cache Server
- • ตรวจสอบ iptables / firewall
ปัญหา: Container ไม่ Start
สาเหตุที่เป็นไปได้:
- • Port 80/443 ถูกใช้แล้ว
- • Docker ไม่ทำงาน
- • ไม่มี Disk Space
วิธีแก้:
- •
sudo netstat -tlnp | grep :80 - •
sudo systemctl start docker - •
df -h
ปัญหา: Cache เต็ม
สาเหตุที่เป็นไปได้:
- • CACHE_DISK_SIZE ไม่พอ
- • Disk ใกล้เต็ม
วิธีแก้:
- • เพิ่ม
CACHE_DISK_SIZE - • ลบไฟล์ Cache เก่า:
rm -rf /cache/data/* - • เพิ่ม Hard Disk
คำถามที่พบบ่อย (FAQ)
Q: ต้องใช้เครื่อง Server แพงไหม?
A: ไม่จำเป็น! Mini PC หรือ PC เก่าที่มี 4GB RAM + 500GB SSD ก็ใช้ได้แล้ว สำหรับร้าน 10-20 เครื่อง ถ้าร้านใหญ่กว่านั้นควรเพิ่ม RAM และ Storage
Q: ถ้าลูกค้ามาดาวน์โหลดเกมใหม่ที่ยังไม่มีใน Cache?
A: เกมใหม่จะดาวน์โหลดจากอินเทอร์เน็ตตามปกติ แต่จะถูก Cache ไว้โดยอัตโนมัติ ครั้งต่อไปที่มีคนดาวน์โหลดเกมเดียวกันจะได้จาก Cache
Q: รองรับ Windows Update ด้วยไหม?
A: ใช่! LanCache รองรับ Windows Update ด้วย ช่วยลด Bandwidth เวลามี Update ใหญ่ๆ ทุกเครื่องจะไม่ต้องโหลดจาก Microsoft ซ้ำ
Q: Cache จะหมดอายุไหม?
A: ตั้งค่า CACHE_MAX_AGE ได้
Default = 10 ปี (3650 วัน) ถ้าเกมมี Update ใหม่ Cache เก่าจะถูกแทนที่อัตโนมัติ
Q: ต้องเปิดเครื่อง Cache Server ตลอดเวลาไหม?
A: ควรเปิดตลอดเวลาที่ร้านเปิด ถ้าปิด Cache Server ลูกค้าจะไม่สามารถดาวน์โหลดเกมได้ (เพราะ DNS ชี้ไปที่ Cache Server)
สรุป
สิ่งที่เรียนรู้:
- ติดตั้ง Docker และ LanCache
- ตั้งค่า Lancache DNS
- ตั้งค่า Router DHCP DNS
- ทดสอบและ Monitor Cache
- Pre-fill Cache ล่วงหน้า
Best Practices:
- ใช้ SSD สำหรับ Cache Storage
- Pre-fill เกมฮิตก่อนเปิดร้าน
- Update Container สม่ำเสมอ
- Monitor Disk Space