การตัดแต่ง Node Monero: รัน Full Node ด้วยพื้นที่จัดเก็บจำกัด
ทำไมต้องรัน Monero Node ของตัวเอง
การรัน Monero node ของตัวเองเป็นหนึ่งในสิ่งที่สำคัญที่สุดที่คุณสามารถทำได้เพื่อความเป็นส่วนตัวส่วนบุคคลและสุขภาพของเครือข่าย Monero เมื่อคุณเชื่อมต่อ wallet กับ node ของตัวเอง การสอบถามธุรกรรมของคุณจะไม่ออกไปนอกเครื่อง ลดความเสี่ยงที่ผู้ดำเนินการ remote node จะบันทึก IP address ของคุณร่วมกับข้อมูลธุรกรรม
นอกจากนี้ node ทุกตัวในเครือข่ายยังช่วยเสริมความแข็งแกร่งให้กับ Monero โดยรวม ยิ่งมี node มาก เครือข่ายก็ยิ่งกระจายศูนย์และทนทานต่อการโจมตีมากขึ้น อย่างไรก็ตาม การรัน full node แบบเต็มรูปแบบต้องใช้พื้นที่จัดเก็บมากกว่า 160 GB ซึ่งเป็นอุปสรรคสำคัญสำหรับผู้ใช้หลายคน โดยเฉพาะในประเทศไทยที่ SSD ราคาสูงยังคงเป็นข้อจำกัดสำหรับหลายคน นี่คือที่มาของ การตัดแต่ง node (node pruning)
การตัดแต่ง Node คืออะไร
การตัดแต่ง node เป็นโหมดพิเศษที่ monerod รองรับ ซึ่งช่วยให้คุณรัน full node ที่ตรวจสอบทุกธุรกรรมได้ โดยใช้เพียงประมาณ หนึ่งในสามของพื้นที่จัดเก็บปกติ (ประมาณ 50-60 GB แทนที่จะเป็น 160+ GB)
หลักการทำงานของการตัดแต่ง
blockchain ของ Monero แบ่งออกเป็น 8 ส่วน (pruning stripe) node ที่ตัดแต่งแล้วจะเก็บข้อมูล chain สมบูรณ์สำหรับส่วนที่ตัวเองรับผิดชอบ และเก็บเพียงส่วนหัว (header) สำหรับส่วนที่เหลือ เครือข่ายโดยรวมยังคงมีข้อมูลสมบูรณ์เพราะ node ต่างๆ รับผิดชอบส่วนต่างๆ กัน
สิ่งสำคัญที่ต้องเข้าใจคือ: node ที่ตัดแต่งยังคงตรวจสอบธุรกรรมทั้งหมดได้อย่างสมบูรณ์ ซึ่งแตกต่างจาก SPV node ที่เพียงแค่เชื่อถือ node อื่น node ที่ตัดแต่งของคุณตรวจสอบทุก block และทุกธุรกรรมด้วยตัวเอง เพียงแต่ไม่เก็บข้อมูลทั้งหมดไว้ในพื้นที่จัดเก็บ
ความแตกต่างระหว่าง Full Node, Pruned Node และ Light Node
เพื่อให้เข้าใจชัดขึ้น นี่คือความแตกต่างของ node แต่ละประเภท:
- Full Node — เก็บ blockchain ทั้งหมด (160+ GB) ตรวจสอบทุกธุรกรรม เป็น node ที่สมบูรณ์ที่สุด
- Pruned Node — เก็บ 1/8 ของ blockchain แบบเต็ม + header ของส่วนที่เหลือ (50-60 GB) ตรวจสอบทุกธุรกรรมได้เต็มรูปแบบ
- Remote Node (Light) — ไม่เก็บ blockchain เลย ใช้ node ของคนอื่น เสี่ยงด้านความเป็นส่วนตัว
ข้อกำหนดระบบสำหรับ Pruned Monero Node
ขั้นต่ำ (Minimum)
- CPU: Dual-core 2 GHz หรือดีกว่า
- RAM: 4 GB (8 GB แนะนำอย่างยิ่ง)
- พื้นที่จัดเก็บ: 80 GB SSD (HDD ช้ากว่ามากและอาจทำให้ sync ล้มเหลว)
- อินเทอร์เน็ต: 1 Mbps ขึ้นไป (ไม่จำกัดปริมาณ แนะนำ)
แนะนำ (Recommended)
- CPU: Quad-core 3 GHz
- RAM: 8 GB
- พื้นที่จัดเก็บ: 120 GB NVMe SSD
- อินเทอร์เน็ต: 10+ Mbps ไม่จำกัด
ในประเทศไทย ผู้ให้บริการอินเทอร์เน็ตส่วนใหญ่เสนอแพ็กเกจที่เพียงพอสำหรับการรัน node บนเครื่องที่บ้าน AIS, TRUE, NT Broadband และ 3BB ล้วนมีแพ็กเกจ fiber ที่เหมาะสมในราคาจับต้องได้ อินเทอร์เน็ตบ้านมักไม่จำกัด bandwidth ทำให้การรัน node ตลอด 24 ชั่วโมงทำได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม
การติดตั้ง Pruned Node บน Linux (Ubuntu/Debian)
ขั้นตอนที่ 1: ดาวน์โหลด monerod
ดาวน์โหลด Monero binary จากเว็บไซต์ทางการเสมอ ไม่ควรดาวน์โหลดจากแหล่งอื่นเด็ดขาด:
wget https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.x.x.tar.bz2
wget https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.x.x.tar.bz2.asc
ขั้นตอนที่ 2: ตรวจสอบ GPG signature
ตรวจสอบความถูกต้องก่อนติดตั้งเสมอ ขั้นตอนนี้สำคัญมากเพราะป้องกันการใช้ binary ที่ถูกแก้ไข:
gpg --keyserver hkps://keys.openpgp.org --recv-keys 81AC591FE9C4B65C5806AFC3F0AF4D462A0BDF92
gpg --verify monero-linux-x64-v0.18.x.x.tar.bz2.asc
ขั้นตอนที่ 3: แตกไฟล์และติดตั้ง
tar -xjf monero-linux-x64-v0.18.x.x.tar.bz2
sudo cp monero-v0.18.x.x/monerod /usr/local/bin/
sudo chmod +x /usr/local/bin/monerod
ขั้นตอนที่ 4: สร้าง user และ directory สำหรับ monero
sudo useradd -r -s /bin/false -d /var/lib/monero monero
sudo mkdir -p /var/lib/monero
sudo chown monero:monero /var/lib/monero
ขั้นตอนที่ 5: สร้าง systemd service พร้อมการตัดแต่ง
sudo nano /etc/systemd/system/monerod.service
ใส่เนื้อหาต่อไปนี้:
[Unit]
Description=Monero Full Node (Pruned)
After=network.target
[Service]
User=monero
ExecStart=/usr/local/bin/monerod
--data-dir=/var/lib/monero
--log-level=0
--prune-blockchain
--sync-pruned-blocks
--rpc-bind-ip=127.0.0.1
--rpc-bind-port=18081
--no-igd
--out-peers=32
--in-peers=64
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
ขั้นตอนที่ 6: เริ่มต้นและเปิดใช้งาน
sudo systemctl daemon-reload
sudo systemctl enable monerod
sudo systemctl start monerod
sudo systemctl status monerod
การติดตั้ง Pruned Node บน Windows
- ดาวน์โหลด Monero CLI จาก getmonero.org (เลือก Windows 64-bit)
- ตรวจสอบ hash ของไฟล์ที่ดาวน์โหลด
- แตกไฟล์ไปยังโฟลเดอร์ เช่น
C:monero - เปิด Command Prompt ในฐานะ Administrator และรัน:
cd C:monero
monerod.exe --prune-blockchain --sync-pruned-blocks --rpc-bind-ip 127.0.0.1 --log-level 0
สำหรับการรันอัตโนมัติ ใช้ NSSM (Non-Sucking Service Manager):
nssm install monerod "C:moneromonerod.exe"
nssm set monerod AppParameters "--prune-blockchain --sync-pruned-blocks"
nssm start monerod
การตั้งค่าบน Raspberry Pi 4
Raspberry Pi 4 (4GB RAM) เป็นตัวเลือกที่น่าสนใจสำหรับการรัน pruned Monero node แบบใช้พลังงานต่ำ ในไทยที่อากาศร้อน Pi 4 ต้องการระบบระบายความร้อนที่ดี:
- Raspberry Pi 4 (4GB หรือ 8GB RAM)
- SD card 32GB สำหรับ OS เท่านั้น
- External SSD 120GB+ ผ่าน USB 3.0 สำหรับ blockchain (ห้ามใช้ SD card)
- Heatsink + fan สำหรับระบายความร้อน
Pi ใช้พลังงานเพียง 5-10 วัตต์ ทำให้ค่าไฟแทบไม่เพิ่มเลยเมื่อรันตลอด 24 ชั่วโมง
การตั้งค่าบน VPS
VPS เป็นตัวเลือกที่ดีสำหรับผู้ที่ต้องการ uptime สูงสุด ผู้ให้บริการ VPS ที่ยอมรับ Monero:
- Njalla — รับ XMR โดยตรง ความเป็นส่วนตัวสูง
- 1984 Hosting — ตั้งอยู่ไอซ์แลนด์ กฎหมายคุ้มครองความเป็นส่วนตัวเข้มแข็ง
- Cockbox — เน้น privacy โดยเฉพาะ รับ XMR
ขนาด VPS ที่แนะนำ
- RAM: 4 GB ขึ้นไป
- Storage: 80 GB SSD ขึ้นไป (NVMe ดีที่สุด)
- Network: Unmetered หรือ 2 TB/เดือน
- OS: Ubuntu 22.04 LTS
การตรวจสอบและดูแล Node
คำสั่งที่มีประโยชน์
# ดูสถานะ sync ปัจจุบัน
monerod status
# ดูข้อมูลเครือข่าย
monerod print_net_stats
# ดู peers ที่เชื่อมต่ออยู่
monerod print_connections
# ดู log แบบ live
journalctl -u monerod -f
# ดูการใช้ disk
du -sh ~/.bitmonero/
ใช้เวลา Sync นานแค่ไหน
การ sync ครั้งแรกอาจใช้เวลา 1-3 วันขึ้นอยู่กับความเร็วอินเทอร์เน็ต ความเร็ว SSD และจำนวน CPU cores Node ที่ตัดแต่งจะ sync เร็วกว่า full node ประมาณ 30% เพราะดาวน์โหลดข้อมูลน้อยกว่าและใช้ disk write น้อยกว่า
การเชื่อมต่อ Wallet กับ Node ของตัวเอง
Feather Wallet (Desktop)
- ไปที่ File → Settings → Node
- เลือก "Custom"
- ใส่
127.0.0.1:18081 - คลิก Connect
Cake Wallet (มือถือ)
- ไปที่ Settings → Nodes
- แตะ "Add Node"
- ใส่ IP address ของ node และ port 18081
- บันทึกและเลือกใช้ node นั้น
Monero GUI Wallet
- ไปที่ Settings → Node
- เลือก "Remote node" → ใส่
localhost:18081 - หรือเลือก "Local node" ถ้ารัน monerod บนเครื่องเดียวกัน
ปัญหาที่พบบ่อยและวิธีแก้
Node ไม่ sync หรือ sync ช้ามาก
- ตรวจสอบว่า port 18080 (P2P) ไม่ถูก firewall บล็อก
- ลองเพิ่ม seed nodes ด้วย
--add-peer=IP:PORT - ตรวจสอบ disk space ว่าเพียงพอ
ใช้ RAM มากเกินไป
- เพิ่ม parameter
--max-txpool-weight=268435456 - ลด peers ด้วย
--out-peers=16 --in-peers=32
Disk เต็ม
- ตรวจสอบขนาด:
du -sh ~/.bitmonero/ - blockchain เติบโต 2-3 GB/เดือน วางแผนให้มีพื้นที่เพียงพอ
การอัปเดต Node
Monero อัปเดตซอฟต์แวร์เป็นประจำ โดยเฉพาะเมื่อมี hard fork ต้องอัปเดตก่อน deadline:
- ดาวน์โหลดเวอร์ชันใหม่จาก getmonero.org
- หยุด:
sudo systemctl stop monerod - แทนที่ binary:
sudo cp monerod-new /usr/local/bin/monerod - เริ่มต้นใหม่:
sudo systemctl start monerod
ประโยชน์ต่อชุมชน Monero
การรัน pruned node ไม่เพียงแต่เป็นประโยชน์ต่อตัวคุณเอง แต่ยังสนับสนุนเครือข่ายโดยรวม:
- เพิ่มความกระจายศูนย์ — node มากขึ้น = เครือข่ายแข็งแกร่งขึ้น
- เพิ่มความต้านทานการเซ็นเซอร์ — ยากขึ้นที่จะโจมตีหรือบล็อกเครือข่าย
- ช่วยผู้ใช้ใหม่ sync เร็วขึ้น — node ที่แชร์ข้อมูลช่วยให้คนอื่น sync ได้เร็วกว่า
- ตรวจสอบ consensus — node ของคุณเป็นผู้ตัดสินว่า block ไหนถูกต้อง
การรักษาความปลอดภัยของ Node
เมื่อรัน Monero node โดยเฉพาะบน VPS ที่เข้าถึงได้จากอินเทอร์เน็ต การรักษาความปลอดภัยเป็นสิ่งสำคัญ:
การตั้งค่า Firewall
สำหรับ Linux ใช้ ufw (Uncomplicated Firewall):
# อนุญาต SSH
ufw allow 22/tcp
# อนุญาต Monero P2P (ให้ node อื่นเชื่อมต่อได้)
ufw allow 18080/tcp
# ไม่เปิด RPC port สู่ภายนอกถ้าไม่จำเป็น
# ufw allow 18081/tcp (อย่าเปิดถ้าใช้แค่กับ wallet ท้องถิ่น)
ufw enable
การใช้ SSH Key Authentication
สำหรับ VPS ให้ปิด password login และใช้ SSH key แทน:
# สร้าง SSH key บนเครื่อง local
ssh-keygen -t ed25519 -C "monero-node"
# คัดลอก public key ไปยัง VPS
ssh-copy-id user@your-vps-ip
# ปิด password authentication ใน /etc/ssh/sshd_config
PasswordAuthentication no
การ Monitor Node
ตั้งค่า monitoring อัตโนมัติเพื่อตรวจสอบว่า node ทำงานปกติ:
# สร้าง script ตรวจสอบ
cat > /usr/local/bin/check-monerod.sh << EOF
#!/bin/bash
if ! systemctl is-active --quiet monerod; then
systemctl start monerod
echo "monerod restarted at $(date)" >> /var/log/monerod-restart.log
fi
EOF
chmod +x /usr/local/bin/check-monerod.sh
# เพิ่มใน crontab ให้ตรวจสอบทุก 5 นาที
echo "*/5 * * * * /usr/local/bin/check-monerod.sh" | crontab -
การเปิด RPC สำหรับการเข้าถึงจากระยะไกล (ขั้นสูง)
ถ้าต้องการเชื่อมต่อ mobile wallet จากสมาร์ทโฟนกับ node ที่บ้าน คุณสามารถเปิด RPC ด้วยการตั้งค่าดังนี้:
monerod --prune-blockchain
--rpc-bind-ip=0.0.0.0
--rpc-bind-port=18081
--rpc-login=username:password
--confirm-external-bind
คำเตือน: การเปิด RPC สู่อินเทอร์เน็ตต้องมีการยืนยันตัวตน (--rpc-login) และควรพิจารณาใช้ TLS certificate เพิ่มความปลอดภัย
การใช้ Tor กับ Monero Node
สำหรับความเป็นส่วนตัวสูงสุด คุณสามารถรัน Monero node ผ่าน Tor เพื่อซ่อน IP address ของ node:
# ติดตั้ง Tor
sudo apt install tor
# เพิ่มใน /etc/tor/torrc
HiddenServiceDir /var/lib/tor/monero/
HiddenServicePort 18080 127.0.0.1:18080
HiddenServicePort 18081 127.0.0.1:18081
# รีสตาร์ท Tor
sudo systemctl restart tor
# ดู .onion address
sudo cat /var/lib/tor/monero/hostname
จากนั้นเพิ่ม parameter ใน monerod:
monerod --prune-blockchain
--tx-proxy=tor,127.0.0.1:9050,16
--anonymous-inbound=YOUR_ONION:18080,127.0.0.1:18080,32
ด้วยการตั้งค่านี้ node ของคุณจะรับ connection ผ่าน Tor .onion address ซึ่งซ่อน IP จริงของคุณจากเครือข่าย Monero ทั้งหมด เป็นระดับความเป็นส่วนตัวที่สูงที่สุดที่ operator สามารถทำได้
ทรัพยากรและชุมชนสำหรับผู้รัน Node ในไทย
ถ้าคุณพบปัญหาหรือต้องการความช่วยเหลือในการรัน Monero node มีทรัพยากรต่างๆ ที่สามารถช่วยได้:
- r/Monero บน Reddit — ชุมชน Monero ที่ใหญ่ที่สุด มักตอบคำถามใน 24 ชั่วโมง
- Monero Stack Exchange — ถาม-ตอบเชิงเทคนิค
- IRC: #monero on Libera.Chat — นักพัฒนาและผู้ใช้ขั้นสูง
- Monero Space — ทรัพยากรจากชุมชนรวมถึงเอกสารเทคนิค
- getmonero.org/community — รายการชุมชนทั้งหมดอย่างเป็นทางการ
สำหรับผู้ใช้ชาวไทย ปัจจุบันยังไม่มีชุมชน Monero เฉพาะภาษาไทยขนาดใหญ่ แต่ชุมชนอังกฤษยินดีช่วยเหลือผู้ใช้จากทุกประเทศ การโพสต์คำถามเป็นภาษาอังกฤษในชุมชนเหล่านี้มักได้รับคำตอบที่ดี
บทสรุป
การรัน pruned Monero node เป็นวิธีที่ยอดเยี่ยมในการเข้าร่วมเครือข่าย Monero โดยไม่ต้องการพื้นที่จัดเก็บขนาดใหญ่ ด้วยการใช้พื้นที่เพียง 50-60 GB คุณสามารถรัน node ที่ตรวจสอบธุรกรรมได้อย่างสมบูรณ์และมีส่วนร่วมในเครือข่ายความเป็นส่วนตัวที่แข็งแกร่งที่สุดในโลกคริปโต
สำหรับผู้ใช้ชาวไทยที่ต้องการควบคุมความเป็นส่วนตัวทางการเงินอย่างสมบูรณ์ การรัน node ของตัวเองเป็นก้าวสำคัญ ไม่ว่าจะบนเครื่องที่บ้าน Raspberry Pi หรือ VPS ที่ชำระด้วย XMR node ของคุณมีส่วนร่วมในการรักษาความเป็นส่วนตัวทางการเงินให้กับทุกคนในเครือข่าย Monero ทั่วโลก รวมถึงผู้ใช้ในประเทศไทยที่ต้องการทางเลือกทางการเงินที่เป็นส่วนตัวจริงๆ และอยู่นอกเหนือการควบคุมของระบบธนาคารกลาง
🌍 อ่านในภาษา