Skip to content
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 เหตุผล

  1. deploy.sh เป็นแค่ text file ธรรมดา ต้องบอก shell ว่าจะรันมันด้วย ./ (บอกว่าไฟล์นี้อยู่ในโฟลเดอร์ปัจจุบัน ไม่ใช่ค้นหาใน PATH)
  2. ต่อให้รันผ่าน ./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 เข้าไปเอง สะดวกกว่า