Vaultwarden: ติดตั้งผู้จัดการรหัสผ่านของคุณเองบน VPS

2 อ่านขั้นต่ำแล้ว
Tropic
Vaultwarden: ติดตั้งผู้จัดการรหัสผ่านของคุณเองบน VPS

Language: th

Vaultwarden: ติดตั้งผู้จัดการรหัสผ่านของคุณเองบน VPS

Vaultwarden ช่วยให้คุณเก็บรหัสผ่านไว้บนเซิร์ฟเวอร์ของตัวเอง และซิงค์ระหว่างคอมพิวเตอร์ โทรศัพท์ และเบราว์เซอร์ได้ แอปพลิเคชันและส่วนขยาย Bitwarden อย่างเป็นทางการใช้งานร่วมกันได้ เพียงระบุที่อยู่ของเซิร์ฟเวอร์ของคุณเอง

บทความนี้จะอธิบายว่า Vaultwarden ต้องใช้ VPS แบบใด วิธีรันบน Ubuntu ด้วย Docker Compose ปิดการลงทะเบียนแบบเปิด เปิดใช้ HTTPS และตั้งค่าการสำรองข้อมูล

Vaultwarden ในห้าขั้นตอน

แผนการเริ่มต้นขั้นต่ำมีดังนี้:

  1. สร้าง VPS ที่ใช้ Ubuntu และชี้ซับโดเมนไปยังเซิร์ฟเวอร์ เช่น vault.example.com
  2. ติดตั้ง Docker และ Docker Compose
  3. รัน Vaultwarden พร้อม Caddy เพื่อให้ HTTPS ทำงานอัตโนมัติ
  4. สร้างบัญชีแรกและปิดการลงทะเบียนแบบเปิด
  5. เปิดใช้การยืนยันตัวตนแบบสองขั้นตอน การอัปเดต และการสำรองข้อมูล

สำหรับคลังรหัสผ่านส่วนตัวหรือครอบครัวขนาดเล็ก ฐานข้อมูล SQLite ในตัวก็เพียงพอ โดยทั่วไปไม่จำเป็นต้องมีเซิร์ฟเวอร์ PostgreSQL แยกต่างหาก

Vaultwarden คืออะไร

Vaultwarden คือการนำ API ของ Bitwarden มาใช้งานบนเซิร์ฟเวอร์แบบไม่เป็นทางการ เขียนด้วย Rust และออกแบบมาสำหรับการโฮสต์เอง ใช้งานร่วมกับไคลเอนต์ Bitwarden อย่างเป็นทางการได้ ทั้งเว็บอินเทอร์เฟซ แอปมือถือและเดสก์ท็อป ส่วนขยายเบราว์เซอร์ และ CLI

ข้อมูลในคลังจะถูกเข้ารหัสบนอุปกรณ์ของผู้ใช้ก่อนส่งไปยังเซิร์ฟเวอร์ VPS ซิงค์ฐานข้อมูลที่เข้ารหัส แต่ไม่รู้ master password และไม่สามารถกู้คืนให้ได้หากรหัสผ่านสูญหาย

Vaultwarden ไม่ใช่ผลิตภัณฑ์อย่างเป็นทางการของ Bitwarden เจ้าของต้องรับผิดชอบการอัปเดต ความพร้อมใช้งาน HTTPS การสำรองข้อมูล และความปลอดภัยของ VPS ด้วยตนเอง

Vaultwarden และ Bitwarden ต่างกันอย่างไร

พารามิเตอร์Bitwarden CloudVaultwarden
เซิร์ฟเวอร์โครงสร้างพื้นฐานของ BitwardenVPS หรือเซิร์ฟเวอร์ที่บ้านของคุณ
แอปพลิเคชันไคลเอนต์ Bitwardenไคลเอนต์เดิมในโหมด Self-hosted
การดูแลรักษาผู้ให้บริการดูแลเจ้าของดูแลเอง
การควบคุมแบ็กอัปจำกัดตามบริการควบคุมได้เต็มที่
การตั้งค่าสมัครบัญชีตั้งค่าโดเมน Docker และ VPS

Vaultwarden เหมาะกับผู้ที่ต้องการควบคุมฝั่งเซิร์ฟเวอร์และพร้อมอัปเดต Linux กับตรวจสอบแบ็กอัป หากไม่ต้องการดูแลระบบ บริการคลาวด์จะสะดวกกว่า การโฮสต์เองไม่ได้ทำให้ระบบปลอดภัยโดยอัตโนมัติ แต่เป็นการโอนความรับผิดชอบมาให้เจ้าของ

ความต้องการของเซิร์ฟเวอร์ Vaultwarden

สำหรับการใช้งานส่วนตัว การกำหนดค่าเริ่มต้นที่เหมาะสมคือ:

  • 1 vCPU
  • RAM 1–2 GB
  • SSD หรือ NVMe 10–20 GB
  • Ubuntu 24.04 LTS
  • ที่อยู่ IP สาธารณะและโดเมน
  • เปิดพอร์ต 80 และ 443

นี่คือการเผื่อทรัพยากรที่เหมาะกับ Ubuntu, Docker, Caddy และการอัปเดต ไม่ใช่ขั้นต่ำตายตัวของโครงการ สำหรับผู้ใช้หลายสิบคน ไฟล์แนบจำนวนมาก หรือคอนเทนเนอร์หลายตัว ควรเลือก RAM อย่างน้อย 2 GB

วิธีติดตั้ง Vaultwarden บน VPS

ตัวอย่างนี้ใช้ Ubuntu 24.04 และซับโดเมน vault.example.com ให้แทนที่ด้วยที่อยู่ของคุณเองในไฟล์ทั้งหมด

1. ตั้งค่า DNS และเตรียม Ubuntu

สร้างระเบียน DNS A ให้ชี้ไปยังที่อยู่ IPv4 ของ VPS จากนั้นเชื่อมต่อผ่าน SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

อย่าปิดเซสชัน SSH ปัจจุบันจนกว่าจะยืนยันได้ว่าการเชื่อมต่อใหม่ใช้งานได้

2. ติดตั้ง Docker และ Docker Compose

เพิ่มรีโพซิทอรี Docker อย่างเป็นทางการ:

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. สร้างการกำหนดค่า

mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

สร้าง compose.yaml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2-alpine
    container_name: vaultwarden-caddy
    restart: unless-stopped
    depends_on:
      - vaultwarden
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config

สร้าง Caddyfile:

vault.example.com {
    reverse_proxy vaultwarden:80
}

ภายนอกจะเปิดให้เข้าถึงเฉพาะ Caddy ส่วนคอนเทนเนอร์ Vaultwarden เข้าถึงได้ภายในเครือข่าย Docker และข้อมูลถูกเก็บไว้ที่ /opt/vaultwarden/vw-data การตั้งค่าปัจจุบันไม่จำเป็นต้องมีพอร์ต WebSocket แยกต่างหาก

4. เริ่ม Vaultwarden

docker compose up -d
docker compose ps
docker compose logs --tail=100 caddy

เปิด https://vault.example.com Caddy จะขอใบรับรอง TLS โดยอัตโนมัติ หาก DNS ชี้ไปยัง VPS แล้วและพอร์ต 80 กับ 443 เข้าถึงได้ หากเว็บไซต์เปิดไม่ได้ ให้ตรวจสอบ DNS ไฟร์วอลล์ และว่ามีเว็บเซิร์ฟเวอร์อื่นใช้งานพอร์ตเหล่านี้อยู่หรือไม่

5. สร้างบัญชีและปิดการลงทะเบียน

ลงทะเบียนบัญชีแรก ใช้ master password ที่ยาวและไม่ซ้ำกัน และเก็บสำเนาฉุกเฉินไว้นอก Vaultwarden: ผู้ดูแลเซิร์ฟเวอร์ไม่สามารถรีเซ็ตหรือกู้คืน master password ได้

หลังลงทะเบียน ให้เปลี่ยนค่าต่อไปนี้ใน compose.yaml:

SIGNUPS_ALLOWED: "false"

ใช้การตั้งค่า:

docker compose up -d

จากนี้คนอื่นจะสร้างบัญชีไม่ได้ หากต้องการเพิ่มผู้ใช้ใหม่ คุณอาจเปิดการลงทะเบียนชั่วคราวหรือกำหนดค่าการเชิญ

วิธีเชื่อมต่อแอปพลิเคชัน Bitwarden

ไม่จำเป็นต้องติดตั้งไคลเอนต์ Vaultwarden แยกต่างหาก ที่หน้าลงชื่อเข้าใช้ของแอปพลิเคชันหรือส่วนขยาย Bitwarden ให้เลือก Self-hosted แล้วกรอก:

https://vault.example.com

ใช้ที่อยู่นี้บนคอมพิวเตอร์ โทรศัพท์ และเบราว์เซอร์ หากต้องการย้ายข้อมูล ให้นำเข้าไฟล์ export จากผู้จัดการรหัสผ่านเดิม แล้วลบไฟล์ CSV หรือ JSON ที่ไม่ได้เข้ารหัสทันทีหลังโอนเสร็จ อย่าส่งไฟล์ดังกล่าวทางอีเมลหรือลิงก์สาธารณะ

การตั้งค่า Vaultwarden ให้ปลอดภัย

หลังเปิดใช้งาน ให้ทำตามขั้นตอนเหล่านี้:

  • เปิดใช้ TOTP หรือ WebAuthn และเก็บโค้ดกู้คืนไว้แยกต่างหาก
  • ปิด SIGNUPS_ALLOWED ไว้
  • ใช้คีย์ SSH และอัปเดต Ubuntu เป็นประจำ
  • อย่าเปิดพอร์ตภายในของคอนเทนเนอร์ Vaultwarden
  • อย่ารันคอนเทนเนอร์ที่ไม่น่าเชื่อถือบน VPS เดียวกัน
  • ตรวจสอบว่าสามารถกู้คืนแบ็กอัปได้

แผง /admin มักไม่จำเป็นสำหรับคลังส่วนตัว หากเปิดใช้ ให้ใช้โทเค็นยาวในรูปแบบแฮช Argon2 และหากเป็นไปได้ให้จำกัดการเข้าถึงด้วยที่อยู่ IP หรือ VPN ไม่ควรเก็บ ADMIN_TOKEN แบบข้อความธรรมดา

สร้างแบ็กอัปก่อนอัปเดต จากนั้นรัน:

cd /opt/vaultwarden
docker compose pull
docker compose up -d

ควรอัปเดตเซิร์ฟเวอร์เป็นประจำ: ไคลเอนต์ Bitwarden ออกเวอร์ชันแยกจากกัน ดังนั้น Vaultwarden ที่เก่ามากอาจไม่รองรับการทำงานร่วมกัน

การสำรองข้อมูล Vaultwarden

ฐานข้อมูล SQLite หลักอยู่ที่ vw-data/db.sqlite3 ส่วนไฟล์แนบถูกเก็บเป็นไฟล์แยก อย่าคัดลอกฐานข้อมูลที่กำลังทำงานด้วยคำสั่ง cp ทั่วไป เพราะการเขียนข้อมูลในจังหวะนั้นอาจทำให้สำเนาไม่สอดคล้องกัน

สร้าง snapshot ที่ปลอดภัยด้วยคำสั่งในตัว:

docker exec vaultwarden /vaultwarden backup

ไฟล์ db_.sqlite3 แยกจะปรากฏในไดเรกทอรีข้อมูล ให้เก็บ attachments, sends, config.json หากถูกสร้างขึ้น และไฟล์ rsa_key ไปพร้อมกัน

แบ็กอัปบน VPS เดียวกันไม่ช่วยป้องกันการลบเซิร์ฟเวอร์หรือดิสก์เสียหาย ให้ส่งสำเนาไปยังอุปกรณ์อื่นหรือ object storage แยกต่างหากโดยอัตโนมัติ และควรเข้ารหัสเพิ่มเติม ทดสอบการกู้คืนเป็นระยะ

ควรเลือก VPS แบบใดสำหรับ Vaultwarden

Linux VPS พื้นฐานที่มี RAM 2 GB เพียงพอสำหรับคลังส่วนตัวหรือครอบครัว ทำให้มีพื้นที่สำรองสำหรับ Ubuntu, Docker, Caddy การอัปเดต และแบ็กอัปอัตโนมัติ

คุณสามารถรัน Vaultwarden บน VPS ระดับเริ่มต้นจาก tropic.host แล้วเพิ่มทรัพยากรภายหลังเมื่อเพิ่มบริการโฮสต์เองอื่น ๆ บนเซิร์ฟเวอร์ สำหรับผู้จัดการรหัสผ่าน เครือข่ายที่เสถียร ที่อยู่สาธารณะถาวร และดิสก์ที่เชื่อถือได้สำคัญกว่าจำนวนคอร์ CPU ที่มากขึ้น

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

สรุป

Vaultwarden คือผู้จัดการรหัสผ่านแบบโฮสต์เองที่สะดวกสำหรับผู้ที่ต้องการใช้ไคลเอนต์ Bitwarden พร้อมเก็บฝั่งเซิร์ฟเวอร์ไว้บนโครงสร้างพื้นฐานของตนเอง VPS ขนาดเล็ก โดเมน Docker Compose และ Caddy ก็เพียงพอสำหรับการเริ่มต้น

ความรับผิดชอบหลักเริ่มหลังติดตั้ง: ปิดการลงทะเบียน เปิดใช้ 2FA อัปเดตคอนเทนเนอร์ และเก็บแบ็กอัปที่ผ่านการทดสอบไว้นอกเซิร์ฟเวอร์

FAQ

ติดตั้ง Vaultwarden โดยไม่มีโดเมนได้หรือไม่

ในทางเทคนิคใช้ที่อยู่ภายในเครื่องได้ แต่ web vault ต้องการบริบท HTTPS ที่ปลอดภัย สำหรับการเข้าถึงจากหลายอุปกรณ์ การใช้โดเมนพร้อมใบรับรอง TLS จะง่ายกว่า

Vaultwarden ต้องใช้ RAM เท่าไร

สำหรับผู้ใช้หนึ่งคนหรือไม่กี่คน RAM 1 GB มักเพียงพอ VPS ที่มี RAM 2 GB จะมีพื้นที่สำรองที่สบายกว่าสำหรับระบบ Docker, Caddy และการอัปเดต

Vaultwarden ใช้กับแอป Bitwarden บนมือถือได้หรือไม่

ได้ ที่หน้าลงชื่อเข้าใช้ ให้เลือกเซิร์ฟเวอร์แบบโฮสต์เองและกรอกที่อยู่ HTTPS แบบเต็มของอินสแตนซ์ Vaultwarden

หาก VPS ใช้งานไม่ได้ชั่วคราวจะเกิดอะไรขึ้น

ข้อมูลที่ซิงค์ไว้ก่อนหน้านี้มักยังอยู่ในแคชเข้ารหัสภายในไคลเอนต์ แต่จะซิงค์ ลงชื่อเข้าใช้บนอุปกรณ์ใหม่ หรือรับการเปลี่ยนแปลงไม่ได้จนกว่าเซิร์ฟเวอร์จะกลับมาใช้งาน

หากลืม master password จะกู้คืนผ่าน /admin ได้หรือไม่

ไม่ได้ ผู้ดูแลจัดการเซิร์ฟเวอร์และบัญชีได้ แต่ไม่มีคีย์ถอดรหัสคลังของผู้ใช้ ต้องเก็บ master password และโค้ดกู้คืนไว้แยกต่างหาก