انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

تثبيت Vaultwarden: مدير كلمات المرور المستضاف ذاتياً

تثبيت Vaultwarden (متوافق مع Bitwarden) عبر Docker، تكوين HTTPS، لوحة الإدارة، إدارة المنظمات والمجموعات، الاستخدام مع عملاء Bitwarden.

وقت القراءة: 13 دقيقة الاستضافة الذاتية
vaultwardenbitwardenمدير كلمات المرورself-hostingdockerأمان

جدول المحتويات

تثبيت Vaultwarden: مدير كلمات المرور المستضاف ذاتياً

Vaultwarden هو بديل خفيف الوزن ومدعوم من المجتمع للخادم الرسمي لـ Bitwarden، مكتوب بلغة Rust. مقارنةً بالخادم الرسمي لـ Bitwarden، يستهلك موارد أقل بكثير وهو متوافق تماماً مع جميع عملاء Bitwarden (الويب، سطح المكتب، الجوال، إضافة المتصفح). من خلال استضافته على خادمك الخاص، تحتفظ بالتحكم الكامل في كلمات مرورك.

ما هو Vaultwarden؟

Vaultwarden (المعروف سابقاً بـ bitwarden_rs) هو مشروع مفتوح المصدر يعيد تطبيق واجهة برمجة تطبيقات Bitwarden بلغة Rust. الميزات الرئيسية:

  • استهلاك منخفض للموارد: يعمل بسهولة بـ 512 ميغابايت من الذاكرة العشوائية
  • توافق مع Bitwarden: جميع عملاء Bitwarden الرسميين مدعومون
  • دعم المنظمات: إنشاء مجاني للمنظمات والمجموعات
  • دعم TOTP: المصادقة الثنائية
  • Web Vault: واجهة ويب يمكن الوصول إليها عبر المتصفح
  • ميزة Send: مشاركة آمنة للملفات والنصوص

متطلبات النظام

  • خادم مثبت عليه Docker وDocker Compose
  • 512 ميغابايت من الذاكرة العشوائية كحد أدنى
  • اسم نطاق صالح (مطلوب لـ HTTPS)
  • شهادة SSL (يُنصح بـ Let's Encrypt)

التثبيت باستخدام Docker

إنشاء docker-compose.yml

hljs yaml
version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
      ADMIN_TOKEN: "رمز-مشرف-قوي-هنا"
      WEBSOCKET_ENABLED: "true"
      LOG_LEVEL: "warn"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"
      - "127.0.0.1:3012:3012"
hljs bash
# تشغيل الحاوية
docker compose up -d

# فحص السجلات
docker logs vaultwarden -f

استخدم قيمة قوية وعشوائية لـ ADMIN_TOKEN. يمكنك إنشاء رمز آمن باستخدام openssl rand -base64 48.

إنشاء رمز المشرف

hljs bash
# إنشاء رمز مشرف آمن
openssl rand -base64 48

# رمز أكثر أماناً مع تجزئة Argon2 (موصى به)
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owasp

تكوين Nginx Reverse Proxy وSSL

نظراً لأن Vaultwarden يتطلب HTTPS، فإن إعداد وكيل عكسي Nginx إلزامي.

تكوين Nginx

hljs nginx
server {
    listen 80;
    server_name vault.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name vault.example.com;

    ssl_certificate /etc/letsencrypt/live/vault.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/vault.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    client_max_body_size 128M;

    location / {
        proxy_pass http://127.0.0.1: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://127.0.0.1:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8080;
    }
}

شهادة SSL من Let's Encrypt

hljs bash
# تثبيت Certbot
apt install certbot python3-certbot-nginx -y

# الحصول على شهادة SSL
certbot --nginx -d vault.example.com

# اختبار التجديد التلقائي
certbot renew --dry-run

تكوين لوحة الإدارة

الوصول إلى لوحة الإدارة على https://vault.example.com/admin.

إعدادات المشرف المهمة

hljs bash
# تعطيل التسجيل بعد الإعداد
SIGNUPS_ALLOWED=false

# السماح بالتسجيل فقط لنطاقات محددة
SIGNUPS_DOMAINS_WHITELIST=example.com,company.org

# نظام الدعوات
INVITATIONS_ALLOWED=true

# التحقق من البريد الإلكتروني
SIGNUPS_VERIFY=true

تكوين SMTP للبريد الإلكتروني

hljs yaml
environment:
  SMTP_HOST: "smtp.gmail.com"
  SMTP_FROM: "vault@example.com"
  SMTP_PORT: "587"
  SMTP_SECURITY: "starttls"
  SMTP_USERNAME: "vault@example.com"
  SMTP_PASSWORD: "كلمة-مرور-التطبيق"

إدارة المستخدمين

دعوة المستخدمين

من لوحة الإدارة، انتقل إلى UsersInvite User لإرسال دعوات بالبريد الإلكتروني.

hljs bash
# دعوة مستخدم عبر CLI
docker exec vaultwarden /vaultwarden invite --email user@example.com

إنشاء المنظمات والمجموعات

المنظمات مجانية في Vaultwarden (مدفوعة في Bitwarden الرسمي):

  1. سجّل الدخول إلى Web Vault
  2. المنظماتمنظمة جديدة
  3. أدخل اسم المنظمة وبريد الفوترة الإلكتروني
  4. استخدم المجموعات لتصنيف كلمات المرور
  5. ادعُ الأعضاء وعيّن الأدوار (Admin, Manager, User, Custom)

الاتصال بعملاء Bitwarden

إضافة المتصفح

  1. ثبّت إضافة Bitwarden (Chrome, Firefox, Edge)
  2. انقر على URL الخادم في شاشة تسجيل الدخول
  3. أدخل https://vault.example.com
  4. سجّل الدخول بحسابك

تطبيق الجوال

1. افتح تطبيق Bitwarden
2. انقر على محدد المنطقة في شاشة تسجيل الدخول
3. اختر "Self-hosted"
4. URL الخادم: https://vault.example.com
5. احفظ وسجّل الدخول

النسخ الاحتياطي

hljs bash
# نسخ احتياطي لبيانات Vaultwarden
tar -czf vaultwarden-backup-$(date +%Y%m%d).tar.gz ./vw-data/

# سكريبت النسخ الاحتياطي التلقائي
cat > /etc/cron.daily/vaultwarden-backup << 'EOF'
#!/bin/bash
BACKUP_DIR="/backups/vaultwarden"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/backup-$(date +%Y%m%d-%H%M%S).tar.gz /opt/vaultwarden/vw-data/
find $BACKUP_DIR -name "backup-*.tar.gz" -mtime +30 -delete
EOF
chmod +x /etc/cron.daily/vaultwarden-backup

يعمل Vaultwarden بشكل ممتاز على خوادم REXE VPS. 1 غيغابايت من الذاكرة العشوائية و1 vCPU كافيان للفرق الصغيرة.