บอกลาตัวจัดการรหัสผ่านบนคลาวด์: คู่มือติดตั้ง Vaultwarden บน Home Server ด้วย Docker

เปลี่ยนมาเป็นผู้ดูแลรหัสผ่านและข้อมูลสำคัญของคุณเองแบบ 100% เรียนรู้วิธีติดตั้ง Vaultwarden (Bitwarden) บน Home Server ด้วย Docker พร้อมวิธีปิดลงทะเบียนเพื่อความปลอดภัยสูงสุด

Share
บอกลาตัวจัดการรหัสผ่านบนคลาวด์: คู่มือติดตั้ง Vaultwarden บน Home Server ด้วย Docker

ในยุคดิจิทัลที่ชีวิตประจำวันของเราผูกติดอยู่กับบัญชีออนไลน์นับร้อย บัญชีอีเมล การเงิน โซเชียลมีเดีย ไปจนถึงระบบหลังบ้านของ Smart Home เครื่องมือที่ทุกคนขาดไม่ได้เลยคือ Password Manager (ตัวจัดการรหัสผ่าน) เพื่อช่วยจำและสุ่มรหัสผ่านที่ปลอดภัยให้กับเรา

แต่คำถามสำคัญคือ: เราควรฝากกุญแจทุกดอกในชีวิตไว้กับผู้ให้บริการคลาวด์สาธารณะ (SaaS) จริงหรือ?

ข่าวการรั่วไหลของข้อมูลจากผู้ให้บริการตัวจัดการรหัสผ่านเจ้าใหญ่หลายครั้งในช่วงไม่กี่ปีที่ผ่านมา ประกอบกับนโยบายการปรับราคาค่าบริการรายเดือนที่สูงขึ้นเรื่อยๆ ทำให้หลายคนเริ่มหันมาหาแนวคิด Self-hosting เพื่อสร้างระบบจัดเก็บรหัสผ่านส่วนตัวในบ้าน และคำตอบที่ยอดเยี่ยมที่สุดสำหรับเรื่องนี้คือ Vaultwarden ครับ


Vaultwarden คืออะไร?

Vaultwarden คือโปรเจกต์โอเพนซอร์ส (Open-source) ที่เขียนขึ้นด้วยภาษา Rust โดยจำลองการทำงานของ API ของระบบ Bitwarden (หนึ่งใน Password Manager ที่ดีที่สุดในโลก)

จุดเด่นที่ทำให้ Vaultwarden ได้รับความนิยมอย่างล้นหลามในหมวด Self-Hosting คือ: * น้ำหนักเบามาก (Lightweight): ในขณะที่เซิร์ฟเวอร์ทางการของ Bitwarden ต้องใช้แรมอย่างน้อย 2-4 GB และฐานข้อมูล MSSQL ขนาดใหญ่ แต่ Vaultwarden ที่เขียนด้วย Rust สามารถรันได้อย่างลื่นไหลโดยใช้แรมเพียง 50-100 MB เท่านั้น ทำให้มันสามารถรันบนคอมพิวเตอร์เก่าๆ หรือแม้กระทั่ง Raspberry Pi ได้สบาย * รองรับแอปพลิเคชันอย่างเป็นทางการ: คุณสามารถใช้หน้าเว็บ ส่วนขยายบนเบราว์เซอร์ (Browser Extension), แอปพลิการใช้งานบนสมาร์ทโฟน (iOS/Android) และแอปพลิเคชันบนคอมพิวเตอร์ของ Bitwarden ตัวจริงในการเชื่อมต่อเข้ากับเซิร์ฟเวอร์ Vaultwarden ของคุณได้ทันที * ฟีเจอร์พรีเมียมฟรี: คุณจะได้ใช้งานฟีเจอร์ต่างๆ เช่น การเก็บคีย์ 2FA (TOTP), การส่งไฟล์อย่างปลอดภัย (Bitwarden Send) และการสร้างองค์กร (Organization) เพื่อแบ่งปันรหัสผ่านในครอบครัวได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม


สิ่งที่ต้องเตรียมก่อนเริ่มติดตั้ง

การรัน Vaultwarden เพื่อความปลอดภัยสูงสุด มีเงื่อนไขสำคัญที่ต้องเตรียมดังนี้: 1. Home Server ที่ติดตั้ง Docker และ Docker Compose เรียบร้อยแล้ว (อ่านวิธีเซ็ตอัปได้จากคู่มือเตรียมคอมเก่าเป็น Home Server) 2. การเข้าถึงแบบ HTTPS (SSL): ระบบการเข้ารหัสของ Bitwarden (Web Cryptography API) บังคับ ให้การสื่อสารทั้งหมดต้องผ่านโปรโตคอล HTTPS เท่านั้น หากเข้าผ่าน HTTP ธรรมดา คุณจะไม่สามารถสมัครสมาชิก ล็อกอิน หรือปลดล็อกห้องเก็บรหัสผ่านบนเบราว์เซอร์และแอปมือถือได้เลย (สามารถใช้ร่วมกับ Tailscale เพื่อทำ HTTPS ในวงส่วนตัวได้อย่างง่ายดาย)


ขั้นตอนที่ 1: เตรียมโครงสร้างโฟลเดอร์และไฟล์ Docker Compose

เริ่มต้นด้วยการเชื่อมต่อ SSH หรือเปิด Terminal บน Home Server ของคุณ จากนั้นสร้างโฟลเดอร์สำหรับเก็บข้อมูลของ Vaultwarden:

# สร้างโฟลเดอร์สำหรับเก็บข้อมูล
mkdir -p ~/vaultwarden

# เข้าไปยังโฟลเดอร์ที่สร้าง
cd ~/vaultwarden

จากนั้นสร้างไฟล์ตั้งค่าคอนเทนเนอร์ด้วยการเขียนไฟล์ docker-compose.yml:

version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - WEBSOCKET_ENABLED=true  # เปิดใช้งาน WebSocket สำหรับการซิงก์ข้อมูลแบบ Real-time
    volumes:
      - ./vw-data:/data
    ports:
      - "8080:80"

อธิบายเพิ่มเติม: เราสั่งให้รีสตาร์ตคอนเทนเนอร์อัตโนมัติหากมีปัญหาหรือไฟดับ (restart: always), เก็บข้อมูลรหัสผ่านที่เข้ารหัสไว้ในโฟลเดอร์ ./vw-data บนเครื่องเซิร์ฟเวอร์จริงเพื่อความปลอดภัย และแมปพอร์ตบริการของ Vaultwarden ออกมาที่พอร์ต 8080 ของเครื่อง Home Server


ขั้นตอนที่ 2: ตั้งค่า HTTPS และเริ่มรันระบบ

เนื่องจาก Vaultwarden จำเป็นต้องใช้งานผ่าน HTTPS วิธีที่ปลอดภัยและง่ายที่สุดสำหรับสาย Local-first คือการใช้ร่วมกับ Tailscale ที่คุณได้ติดตั้งไว้แล้ว (ตามคู่มือเข้าถึง Home Server อย่างปลอดภัย)

เมื่ออุปกรณ์มือถือและ Home Server ของคุณเชื่อมต่อผ่าน Tailscale เรียบร้อยแล้ว คุณสามารถขอใบรับรอง SSL (Let's Encrypt) ของ Tailscale มาครอบให้พอร์ต 8080 ผ่านตัวจัดการ Reverse Proxy อย่าง Caddy ได้ง่ายๆ

สร้างไฟล์ตั้งค่าของ Caddy ในโฟลเดอร์เดียวกัน (Caddyfile):

your-server-tailscale-name.tailnet-name.ts.net {
    reverse_proxy localhost:8080
}

และเพิ่มบริการ Caddy ลงไปใน docker-compose.yml เพื่อให้ดึงใบรับรอง SSL อัตโนมัติ:

  caddy:
    image: caddy:latest
    container_name: caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data
      - ./caddy_config:/config
    network_mode: "host"  # ใช้ Host network เพื่อให้คุยกับ Tailscale และ Vaultwarden ได้สะดวก

เมื่อเขียนไฟล์คอนฟิกเรียบร้อยแล้ว ให้สั่งรันคอนเทนเนอร์ทั้งหมดผ่านคำสั่ง:

docker compose up -d

รอระบบดึงข้อมูลและรันขึ้นมาสักครู่ จากนั้นทดลองเข้าหน้าเว็บผ่าน URL ของ Tailscale คุณจะพบกับหน้าลงทะเบียนและล็อกอินของ Bitwarden พร้อมสัญลักษณ์แม่กุญแจสีเขียวที่แสดงว่าการเชื่อมต่อปลอดภัยแล้ว!


ขั้นตอนที่ 3: ปิดสิทธิ์การลงทะเบียนคนนอก (สิ่งสำคัญห้ามพลาด!)

หลังจากที่คุณเข้าหน้าเว็บและสมัครบัญชีหลัก (Master Account) พร้อมตั้งรหัสผ่านหลักที่ยากต่อการคาดเดาและบันทึกคีย์กู้คืนเรียบร้อยแล้ว สิ่งที่คุณต้องทำทันที คือการปิดการลงทะเบียนบัญชีใหม่ เพื่อป้องกันไม่ให้คนแปลกหน้าหรือบุคคลอื่นที่อาจเข้าถึงหน้าเว็บเซิร์ฟเวอร์ของคุณแอบสมัครใช้งานระบบของคุณได้

ให้ปิดบริการชั่วคราว:

docker compose down

จากนั้นแก้ไขไฟล์ docker-compose.yml โดยเพิ่มตัวแปรสภาพแวดล้อม SIGNUPS_ALLOWED=false ลงในส่วน environment ของ Vaultwarden:

    environment:
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=false   # ปิดการลงทะเบียนบัญชีใหม่

หลังจากนั้นสั่งรันระบบขึ้นมาใหม่อีกครั้ง:

docker compose up -d

ตอนนี้หากมีใครพยายามเข้าหน้าเว็บของคุณแล้วกดปุ่มสมัครสมาชิก (Create Account) ระบบจะแจ้งเตือนว่าไม่สามารถลงทะเบียนได้อีกต่อไป ทำให้เซิร์ฟเวอร์รหัสผ่านของคุณมีความปลอดภัยสูงสุดและใช้งานได้เฉพาะผู้ใช้ที่คุณสร้างไว้แล้วเท่านั้น


บทสรุป

การย้ายจากผู้รับบริการรหัสผ่านมาเป็น ผู้ดูแลรักษาคลังข้อมูลลับของตัวเอง ด้วย Vaultwarden เป็นอีกหนึ่งก้าวที่สำคัญในการสร้าง Private Brain OS ข้อมูลรหัสผ่านของบัญชีธนาคาร โซเชียลมีเดีย และงานส่วนตัวจะถูกเข้ารหัสแบบ End-to-End ตั้งแต่บนโทรศัพท์หรือเครื่องคอมพิวเตอร์ของคุณ ก่อนส่งไปเก็บไว้บน Home Server ภายในบ้าน โดยไม่มีส่วนใดที่หลุดลอยอยู่บนคลาวด์ภายนอกที่คุณควบคุมไม่ได้อีกต่อไปครับ

Read more

สร้าง AI Agent สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python

สร้าง AI Agent สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python + Ollama

เปลี่ยนเอกสารและโน้ตข้อความร้อยแก้วให้เป็น Knowledge Graph แบบโครงสร้าง (Subject-Predicate-Object) โดยอัตโนมัติ ด้วยสคริปต์ Python ร่วมกับ Local LLM ในเครื่อง ช่วยสกัดความสัมพันธ์ระหว่างความคิด เทคโนโลยี และบุคคลอย่างเป็นระบบออฟไลน์ 100%

By Linn
บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

เปลี่ยนคลังหนังสือเสียงและดิจิทัลไฟล์ของคุณให้กลายเป็นเซิร์ฟเวอร์สตรีมมิ่งส่วนตัว ด้วย Audiobookshelf บน Home Server ผ่าน Docker พร้อมวิธีซิงค์ความคืบหน้าการฟังข้ามอุปกรณ์แบบเรียลไทม์

By Linn
สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + O

สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + Ollama

เปลี่ยนไฮไลต์และโน้ตย่อยจากการอ่านหนังสือให้กลายเป็น Book Summary ที่ทรงคุณค่าด้วย AI Agent ออฟไลน์ส่วนตัวที่จะสกัด Core Key Takeaways, Actionable Insights และเชื่อมโยงเข้ากับระบบ Second Brain แบบ Local 100%

By Linn
สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

เรียนรู้วิธีตั้งค่า LiteLLM เป็น AI Gateway และ Router ในเครื่องตัวเอง เพื่อสลับรันโมเดล Ollama อัตโนมัติ ทั้งโมเดลเน้นความเร็ว โมเดลคิดวิเคราะห์เชิงลึก และโมเดลวิเคราะห์ภาพ ปลอดภัย 100% ไม่ต้องพึ่งคลาวด์

By Linn