ติดตั้ง Vaultwarden Password Manager บน VPS
Vaultwarden คือ Bitwarden-compatible server ที่เขียนด้วย Rust ใช้ทรัพยากรน้อยกว่า Bitwarden official ถึง 10 เท่า รันได้บน VPS RAM 512 MB ได้สบาย ข้อดีคือใช้ Bitwarden app ทุกตัวได้เลย ทั้ง iOS, Android, Chrome extension โดย password เก็บบน server ตัวเองทั้งหมด
ติดตั้ง Vaultwarden ด้วย Docker
mkdir -p ~/vaultwarden
cd ~/vaultwarden
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "8080:80"
environment:
DOMAIN: https://vault.yourdomain.com
SIGNUPS_ALLOWED: "false" # ปิด signup หลังสร้าง user แล้ว
ADMIN_TOKEN: "your-super-secret-admin-token-here"
SMTP_HOST: smtp.yourdomain.com
SMTP_PORT: 587
SMTP_SECURITY: starttls
SMTP_USERNAME: [email protected]
SMTP_PASSWORD: yoursmtppass
SMTP_FROM: [email protected]
volumes:
- ./data:/data
EOF
docker compose up -d
ตั้ง SSL ด้วย Nginx
sudo certbot --nginx -d vault.yourdomain.com
sudo nano /etc/nginx/sites-available/vaultwarden
server {
listen 443 ssl;
server_name vault.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/vault.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.yourdomain.com/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /notifications/hub {
proxy_pass http://localhost:3012;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
sudo nginx -t && sudo systemctl reload nginx
สร้าง User Account
# เปิด https://vault.yourdomain.com
# กด "Create Account" และสร้าง account ด้วย email + master password
# (ต้องจำ master password ให้ได้ ถ้าลืมหมดทาง)
# หลังสร้าง user แล้ว ปิด signup โดยตั้ง
# SIGNUPS_ALLOWED: "false"
# ใน docker-compose.yml แล้ว restart
# Admin panel
# https://vault.yourdomain.com/admin
# ใส่ ADMIN_TOKEN ที่ตั้งไว้
ใช้ Bitwarden App เชื่อมกับ Vaultwarden
# ใน Bitwarden app (iOS/Android/Chrome extension)
# กด Settings > Server URL
# ใส่: https://vault.yourdomain.com
# Login ด้วย email + master password ที่สร้างไว้
# Bitwarden Desktop/Browser extension:
# Click region icon > Self-hosted
# Server URL: https://vault.yourdomain.com
ตรวจสอบว่า Vaultwarden ทำงานถูกต้อง
# ตรวจ container
docker compose ps
# ดู logs
docker compose logs -f
# ตรวจ HTTPS
curl -I https://vault.yourdomain.com
# ตรวจ admin panel
curl -I https://vault.yourdomain.com/admin
~/vaultwarden/data/ ทุกวัน เพราะนี่คือ vault ทั้งหมด รวม database และ attachments ใช้ rsync หรือ rclone sync ไป cloud storage
แก้ปัญหาที่พบบ่อย
Bitwarden app ไม่ยอมเชื่อมต่อ (SSL error)
SSL certificate ต้องถูก trust โดย browser/OS ถ้าใช้ self-signed cert จะ error ต้องใช้ Let's Encrypt เท่านั้น:
# ตรวจ SSL cert
curl -v https://vault.yourdomain.com 2>&1 | grep -E "SSL|certificate|expire"
2FA Email ไม่ได้รับ
SMTP config ผิด ทดสอบด้วย admin panel:
# Admin panel > Diagnostics > SMTP test
# https://vault.yourdomain.com/admin/diagnostics
Vaultwarden ช้าหรือ timeout เมื่อ sync
WebSocket notification ไม่ทำงาน ทำให้ sync ช้า ตรวจ nginx config ว่ามี /notifications/hub route:
docker logs vaultwarden 2>&1 | grep -i "websocket\|notification"
ลืม Admin Token (ล็อค admin panel)
แก้ environment variable ใน docker-compose.yml แล้ว restart:
ADMIN_TOKEN: "new-token-here"
docker compose up -d
คำถามที่พบบ่อย
Vaultwarden ต่างจาก Bitwarden official อย่างไร?
Vaultwarden คือ third-party server implementation ที่ใช้ Bitwarden protocol เหมือนกัน แต่เขียนด้วย Rust ใช้ RAM ต่ำกว่ามาก Bitwarden official server ต้องการ .NET และ RAM หลาย GB Vaultwarden รันได้ใน RAM 100-200 MB
Password ถูก encrypt อยู่บน server ไหม?
ใช่ Vaultwarden เก็บแค่ encrypted data ที่ encrypt ด้วย master password บนเครื่อง client ก่อน upload server ไม่เคย "รู้" password จริง แม้แต่ admin ก็อ่าน password ไม่ได้ถ้าไม่มี master password
Import password จาก LastPass/1Password ได้ไหม?
ได้ ผ่าน Bitwarden Web Vault > Tools > Import Data รองรับ format จาก LastPass, 1Password, Dashlane, KeePass และ Chrome/Firefox exported CSV ทำบน client ฝั่งเดียว