Electrum server เป็นตัวช่วยชั้นดีในการเชื่อมต่อโหนดเข้ากับ Wallet ได้ไวกว่า RPC จากโหนดโดยตรง และ Wallet ที่ใช้ร่วมกับ Hardware Wallet ส่วนมากจะใช้ Electrum server ในการเชื่อมต่อโหนดของตัวเอง
หน้าที่หลักคือการนำ UTXO จากโหนดมาทำ index ใหม่เพื่อให้ Wallet ค้นหาเจอง่ายและไวกว่า RPC โดยตรง
ในคู่มือนี้จะติดตั้ง Electrum server ที่เขียนขึ้นด้วยภาษา Rust ที่ชื่อว่า Electrs
[!NOTE]
สามารถอ่านเอกสารการติดตั้งอย่างเป็นทางการได้ที่ Github ของผู้พัฒนาโดยตรง
ตรวจสอบการอัปเดตของระบบก่อน
sudo apt updatecurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shNote
เลือกข้อ 1 หรือกด Enter เลยก็ได้
ตั้งค่าให้ใช้งานได้
. "$HOME/.cargo/env" ตรวจสอบเวอร์ชั่น Cargo & Rust
rustc --versioncargo --versionNote
cargo & rustc v 1.90.0
เปิด Port สำหรับ Electrs :50001
sudo ufw allow 50001/tcp comment 'electrs tcp'sudo ufw allow 50002/tcp comment 'electrs ssl'sudo ufw reloadเพิ่ม ZMQ ในไฟล์ bitcoin.conf
nano ~/.bitcoin/bitcoin.confเพิ่ม ZMQ ตามนี้
zmqpubrawblock=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28333
zmqpubhashblock=tcp://0.0.0.0:28334
whitelist=127.0.0.1
Note
ZMQ เป็นฟังก์ชันที่ทำให้ Electrs สามารถดึงไฟล์ Raw block & tx จากโหนดได้
รีสตาร์ท bitcoind
sudo systemctl restart bitcoindตรวจสอบให้แน่ใจว่าทำงาน
sudo systemctl satatus bitcoindติดตั้งเครื่องมือที่ต้องใช้เพื่อ Build
sudo apt install -y build-essential libclang-dev gitดาวน์โหลดซอร์สโค้ดโดยตรงจาก GitHub แล้วเข้าไปที่โฟลเดอร์ electrs
git clone https://github.com/romanz/electrs && cd electrsBuild electrs ใช้เวลาประมาณ 20 นาที
cargo build --locked --releaseตรวจสอบเวอร์ชั่น electrs
./target/release/electrs --versionสร้างไฟล์ electrs.toml
nano ~/electrs/electrs.tomlconfiguration
# connect bitcoind
network = "bitcoin"
cookie_file = "/home/username/.bitcoin/.cookie"
daemon_rpc_addr = "127.0.0.1:8332"
daemon_p2p_addr = "127.0.0.1:8333"
# electrs setting
electrum_rpc_addr = "0.0.0.0:50001"
db_dir = "/home/username/electrs/db"
log_filters = "INFO"
Note
อย่าลืมเปลี่ยน USERNAME ให้ตรงกับ user ของคุณ
ทดสอบ electrs
./target/release/electrsNote
ถ้าไม่เจอ Error แสดงว่าใช้ได้ สามารถกด Ctrl+C เพื่อออกได้เลย
การสร้าง Systemd Service เพื่อให้ระบบสามารถเรียกใช้ Electrs โดยอัตโนมัติในพื้นหลังได้หลังปิด-เปิดเครื่อง
สร้างไฟล์ electrs.service
sudo nano /etc/systemd/system/electrs.serviceconfiguration
[Unit]
Description=Electrs
After=bitcoind.service
[Service]
WorkingDirectory=/home/username/electrs
ExecStart=/home/username/electrs/target/release/electrs
User=username
Group=username
Type=simple
KillMode=process
TimeoutSec=60
Restart=always
RestartSec=60
Environment="RUST_BACKTRACE=1"
# Hardening measures
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
MemoryDenyWriteExecute=true
[Install]
WantedBy=multi-user.target
Note
อย่าลืมเปลี่ยน USERNAME ให้ตรงกับ user ของคุณ
เปิดใช้งาน electrs.service
sudo systemctl daemon-reloadsudo systemctl enable electrs.servicesudo systemctl start electrs.serviceตรวจสอบว่า electrs ทำงานไหม
sudo systemctl status electrs.serviceตัวอย่าง:
$ sudo systemctl status electrs
● electrs.service - electrs
Loaded: loaded (/etc/systemd/system/electrs.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-10-15 07:26:12 +07; 11h ago
Main PID: 979 (electrs)
Tasks: 20 (limit: 9067)
Memory: 246.8M (peak: 632.1M)
CPU: 45.892s
CGroup: /system.slice/electrs.service
└─979 /home/satoshi/electrs/target/release/electrs
วิธีตรวจสอบ log
journalctl -fu electrsตั้งค่า Hiddenservice Tor
เพิ่ม Hiddenservice เพื่อให้เข้าถึง electrs ผ่าน Tor ได้
แก้ไข Tor configuration
sudo nano /etc/tor/torrcเพิ่ม configuration
# Electrs
HiddenServiceDir /var/lib/tor/electrs
HiddenServiceVersion 3
HiddenServicePort 50001 127.0.0.1:50001
HiddenServiceEnableIntroDoSDefense 1
สร้าง Directory สำหรับ Hidden Service
sudo mkdir -p /var/lib/tor/electrsเปลี่ยน Ownership และ Permissions ของ Directory
sudo chown -R debian-tor:debian-tor /var/lib/tor/electrssudo chmod 700 /var/lib/tor/electrsrestart tor
sudo systemctl restart torวิธีตรวจสอบ Tor address
sudo cat /var/lib/tor/electrs/hostname$ sudo cat /var/lib/tor/electrs/hostname
<tor-address>.onion