Setup Sshfs Mount Droplet
Setup Sshfs Mount Droplet
คือการ mount โฟลเดอร์ droplet เข้ามาเป็น local folder จะได้แก้ไฟล์ด้วย Neovim/editor บนเครื่อง Arch โดยตรง เหมือนไฟล์อยู่ในเครื่อง ไม่ต้องเปิด SFTP client โยนไฟล์ทีละไฟล์
หลักการทำงาน
เครื่อง Arch (~/knupan-blog/) ← โฟลเดอร์นี้ "คือ" ~/blog-content บน droplet จริงๆ
↓ sshfs เชื่อมผ่าน SSH
Droplet (~/blog-content/)แก้ไฟล์ที่ ~/knupan-blog/ บนเครื่องตัวเอง = แก้ไฟล์บน droplet ทันที ไม่ต้อง copy/upload เลย
ขั้นตอนที่ 1 — ติดตั้ง sshfs (ที่เครื่อง Arch)
sudo pacman -S sshfsขั้นตอนที่ 2 — สร้างโฟลเดอร์ mount point
mkdir -p ~/knupan-blogขั้นตอนที่ 3 — Mount
sshfs -o IdentityFile=~/.ssh/id_ed25519_knupan_green green@157.245.203.39:/home/green/blog-content ~/knupan-blogขั้นตอนที่ 4 — ทดสอบ
ls ~/knupan-blogควรเห็นไฟล์เดียวกับที่อยู่บน droplet (content/, hugo.toml, deploy.sh ฯลฯ)
ลองแก้ไฟล์ทดสอบดู:
nvim ~/knupan-blog/content/it/network/wireshark-basics.mdแก้อะไรสักนิด บันทึก แล้วเช็คบน droplet ว่าเปลี่ยนจริงไหม (ผ่าน SSH เข้าไปดู หรือรัน deploy.sh จากเครื่อง Arch นี้เลยก็ได้ผ่าน mount)
Unmount เมื่อเลิกใช้ (สำคัญ ควรทำก่อนปิดเครื่อง/network หลุด)
fusermount -u ~/knupan-blogแต่สิ่งที่ต้องจำ
ปกติครับ — deploy.sh รันไม่ได้ตรงๆ จากเครื่อง Arch เพราะ 2 เหตุผล
deploy.shเป็นแค่ text file ธรรมดา ต้องบอก shell ว่าจะรันมันด้วย./(บอกว่าไฟล์นี้อยู่ในโฟลเดอร์ปัจจุบัน ไม่ใช่ค้นหาใน PATH)- ต่อให้รันผ่าน
./deploy.shได้ ก็ไม่ควรรันจากเครื่อง Arch อยู่ดี เพราะข้างในสคริปต์มีคำสั่งrsync ... /var/www/blog/ซึ่ง/var/www/blog/เป็น path บน droplet ไม่มีอยู่บนเครื่อง Arch เลย — รันจากเครื่องนี้จะ error หา path ไม่เจอ
Sshfs mount ใช้แก้ไฟล์เท่านั้น ไม่ใช่รัน build
หลักการที่ถูกต้อง:
แก้ไฟล์ → ทำที่เครื่อง Arch (ผ่าน mount ~/knupan-blog)
build + deploy → ต้องรันบน droplet เท่านั้น (ผ่าน SSH)Workflow ที่ถูกต้อง
# 1. แก้ไฟล์ที่เครื่อง Arch (ผ่าน mount)
nvim ~/knupan-blog/content/it/network/wireshark-basics.md
# 2. SSH เข้า droplet เพื่อ deploy
ssh -i ~/.ssh/id_ed25519_knupan_green green@157.245.203.39
cd ~/blog-content
./deploy.shหรือย่อเป็นคำสั่งเดียวจากเครื่อง Arch (ไม่ต้อง SSH เข้าไปเอง)
ssh -i ~/.ssh/id_ed25519_knupan_green green@157.245.203.39 "cd ~/blog-content && ./deploy.sh"บรรทัดนี้สั่ง droplet รัน deploy.sh จากระยะไกลได้เลย ไม่ต้อง login เข้าไปเอง สะดวกกว่า