פורסם

Vaultwarden

שרת מנהל סיסמאות באירוח עצמי, כתוב ב-Rust ותואם לאפליקציות ולתוספי הדפדפן של Bitwarden. פרויקט לא רשמי, ללא קשר ל-Bitwarden, Inc. מתאים למשק בית או לצוות קטן שרוצים את הסיסמאות על שרת משלהם.

משאבים לפי רמת עומס

מה האפליקציה עצמה צריכה בכל רמה, לצד מה שאנחנו ממליצים לשרת שמריץ רק אותה.

רמהמה זה אומרדרישות האפליקציהמומלץ
קלהערכהעד 10 אנשים (משק בית), כ-2,000 פריטים בכספת, כמה מכשירים לכל אחד, פחות מ-1 GiB של קבצים מצורפים, ‏SQLite, בלי עמוד admin.0.25 vCPU · 0.25 GiB RAM · 1.5 GiB דיסק0.42 vCPU · 1.8 GiB RAM · 11.04 GiB דיסק
בינוניהערכהעד 50 משתמשים בעסק קטן, ארגונים ו-collections, כ-25,000 פריטים, תוספי דפדפן מחוברים כל היום, עד 5 GiB של קבצים מצורפים, ‏SQLite.0.5 vCPU · 0.5 GiB RAM · 5.5 GiB דיסק0.72 vCPU · 2.1 GiB RAM · 15.64 GiB דיסק
כבדהערכהעד 250 משתמשים בכמה ארגונים, כ-100,000 פריטים, מאות לקוחות מחוברים בו-זמנית, עד 20 GiB של קבצים מצורפים, עדיין על SQLite.1 vCPU · 1 GiB RAM · 20.5 GiB דיסק1.32 vCPU · 2.7 GiB RAM · 32.89 GiB דיסק

מומלץ = דרישות האפליקציה + baseline של המערכת + מרווח ביטחון (headroom), לפי מדיניות ה-sizing ‏2026.10.0. האפשרויות נשארות בברירת המחדל. ״הערכה״ פירושה שהמקורות לא נותנים מספר למקרה הזה, ולכן הוא מחושב מהם בשיטה שמפורטת תחת רכיבים. איך המספרים נבנים

לחישוב ב-Stack Sizer

קבצים מוכנים להפעלה

רמת תמיכה נתמך

תבנית Compose מהמקורות הרשמיים; עוד לא נבדקה בהרצה.

צור docker-compose

רכיבים

מה כל רכיב צריך בכל רמת עומס, לפני baseline ו-headroom.

vCPU / GiB RAM / GiB דיסק
רכיבקלבינוניכבדמקורות
Vaultwarden (app)0.25 / 0.25 / 1.50.5 / 0.5 / 5.51 / 1 / 20.5[5][10][11][12][22][29][31]
איך ההערכות מחושבות
  • Vaultwarden · קל: אין מספר רשמי. ‏Vaultwarden הוא binary יחיד של Rust עם קובץ SQLite מובנה, שנבנה למקרים שבהם השרת הרשמי כבד מדי; טבלת ה-images הרשמית מציינת שהוא רץ על Raspberry Pi Zero W ועל Pi 1. ‏0.25 GiB RAM ורבע ליבה מכסים sync ואת ה-PBKDF2 בצד השרת (600,000 איטרציות) לכמה התחברויות בו-זמנית. Disk: ‏image דחוס 90,367,076 B ‏(0.084 GiB) ועוד 303,042,560 B פרוס (0.282 GiB), ה-containerd store שומר את שניהם = ‏0.366 GiB. ‏0.366 ועוד 1 GiB לנתונים ולקבצים מצורפים ← 1.5.
  • Vaultwarden · בינוני: RAM: ‏0.25 GiB של light ×2 ל-WebSocket פתוח לכל לקוח מחובר, ל-page cache של SQLite בכספת גדולה יותר ולעד 10 חיבורי DB ב-pool ‏(DATABASE_MAX_CONNS) ← 0.5 GiB. ‏vCPU: התחברויות בתחילת יום העבודה מריצות כל אחת PBKDF2 עם 600,000 איטרציות, ו-sync מלא מסדר כספות ארגון שלמות ← חצי ליבה. Disk: ‏image דחוס 90,367,076 B ‏(0.084 GiB) ועוד 303,042,560 B פרוס (0.282 GiB), ה-containerd store שומר את שניהם = ‏0.366 GiB. ‏0.366 ועוד 5 GiB ← 5.5.
  • Vaultwarden · כבד: RAM: פי 2 מ-medium למאות WebSockets פתוחים ולמסד SQLite של כ-100,000 פריטים שנשמר חם ב-cache ← 1 GiB. ‏vCPU: ליבה מלאה לגלי התחברויות (כל אחת PBKDF2 עם 600,000 איטרציות) ול-sync גדולים; ‏SQLite כותב בטור, ולכן ליבות נוספות מוסיפות מעט. Disk: ‏image דחוס 90,367,076 B ‏(0.084 GiB) ועוד 303,042,560 B פרוס (0.282 GiB), ה-containerd store שומר את שניהם = ‏0.366 GiB. ‏0.366 ועוד 20 GiB ← 20.5.

פורטים

פורטים ציבוריים נועדו לגישה מחוץ ל-stack, בדרך כלל דרך reverse proxy; פורטים פנימיים נשארים ברשת של ה-stack עצמו.

רכיבפורטחשיפהשימושמקורות
Vaultwarden80/tcpציבורי, דרך proxyWeb vault, client API and WebSocket notifications (Rocket HTTP); serve only through an HTTPS reverse proxy[1][3][22]

כל הפורטים בקטלוג, עם התנגשויות בין אפליקציות

משתמש והרשאות (UID/GID)

המשתמש שהתהליך של כל קונטיינר רץ תחתיו, והנתיבים שהוא כותב אליהם. ‏bind mount לאחד הנתיבים האלה חייב להיות ניתן לכתיבה על ידי ה-UID:GID הזה.

רכיבUID:GIDמשתמשמתחיל כ-rootכותב אלמקורות
Vaultwarden0:0rootלא/data[3][6][14]

צמיחת אחסון

בכמה הנתונים של כל רכיב גדלים בחודש בכל רמת עומס, מעבר לדיסק שבפרופיל. ערך שמסומן ״הנחה״ הוא הנחה מוצהרת של ANAROQ ולא מספר מהמקורות; ההערות מפרטות על מה היא נשענת.

GiB לחודש
רכיבקלבינוניכבדמקורות
Vaultwardenהנחה0.050.251[5][12]
על מה מספרי הצמיחה נשענים
  • Vaultwarden: פריטי הכספת הם רשומות מוצפנות קטנות; הגידול מגיע מקבצים מצורפים ומקבצי Send, שאין להם מגבלת גודל כברירת מחדל (USER_ATTACHMENT_LIMIT לא מוגדר). קצבי העלאה משוערים: ‏50 MB, ‏250 MB ו-1 GiB בחודש. יומני אירועים של ארגונים כבויים כברירת מחדל, האשפה לא נמחקת אוטומטית, וה-cache של האייקונים פג אחרי 30 יום.

שדרוג וחזרה לאחור

איך עוברים לגרסה חדשה בבטחה, ואיך חוזרים אחורה אם משהו נכשל.

קודם גיבוי

להריץ docker compose exec vaultwarden /vaultwarden backup (עותק SQLite לתוך ‎/data), ואז להעתיק את כל ה-volume של ‎/data: ‏db.sqlite3, ‏attachments, ‏sends, ‏config.json ו-rsa_key*. [12][24][25]

שלבי השדרוג

  1. קודם מגבים את ‎/data (ראו גיבוי). אחר כך מגדירים בקובץ ה-Compose את ה-tag המוצמד החדש ומריצים docker compose pull ו-docker compose up -d. [12][19]
  2. ‏Vaultwarden מריץ את ה-migrations של מסד הנתונים בהפעלה, ולכן כדאי לבדוק את הלוגים (docker compose logs vaultwarden) ואת בדיקת ‎/alive לפני שסומכים על הגרסה החדשה. [4][16][24]

חזרה לאחור

לעצור את ה-stack, לשחזר את גיבוי ‎/data שנלקח לפני השדרוג (למחוק db.sqlite3-wal קיים כשמשחזרים עותק של ‎.backup או VACUUM INTO), להצמיד את ה-tag הקודם ולהריץ docker compose up -d. [12][24]נגזר‏upstream לא מתעדים downgrade. ה-migrations רצים קדימה בהפעלה, ולכן binary ישן על מסד שעבר migration אינו בטוח; שחזור הגיבוי מלפני השדרוג כן.

שינויים שוברים ידועים

  • בגרסה 1.37.4: הוסרו endpoints ישנים של ה-API ש-Bitwarden הסירו אצלם, יחד עם DUO_USE_IFRAME ‏(Duo Traditional Prompt) וקוד ה-2FA האוטומטי במייל ללקוחות ישנים מ-2025.5.0. כדאי לעדכן לקוחות ישנים לפני השדרוג. [5][27]נגזרדף ה-release לא היה נגיש מסביבת המחקר; נלקח מה-diff של ‎.env.template בין 1.37.3 ל-1.37.4 ומה-commit המתויג 'Remove legacy API endpoints and compatibility code dropped upstream' ‏(#7809).
  • בגרסה 1.37.0: כותרת ה-IP של הלקוח נחשבת רק מכתובות פרטיות (IP_HEADER_TRUSTED_PROXIES=local); ‏proxy בכתובת ציבורית חייב להופיע ברשימה, אחרת מגבלות הקצב ו-fail2ban רואים את כתובת ה-proxy. ‏DATABASE_URL בלי scheme עובד עכשיו רק אם הקובץ קיים; יש להשתמש ב-sqlite://. [5][28]נגזרנלקח מהשינויים ב-‎.env.template בין 1.36.0 ל-1.37.0 ‏(commits ‏#7472 ו-#7061); דף ה-release לא היה נגיש מסביבת המחקר.

מגבלות

  • ה-web vault דורש HTTPS: ה-Web Crypto API של הדפדפן רץ רק ב-secure context, ולכן פותחים אותו דרך ה-proxy עם HTTPS (או ב-http://localhost במצב המקומי). ‏DOMAIN חייב להיות כתובת ה-https:// המדויקת שהמשתמשים פותחים. [1][5][13]
  • אין SMTP בתבנית: מיילים של אימות, הזמנות ו-2FA לא נשלחים. בלי פרטי push מ-bitwarden.com/host, האפליקציות לנייד לא מסתנכרנות בזמן אמת; דפדפנים ואפליקציות desktop מקבלים עדכונים ב-WebSocket על אותו פורט. [5][22][23]
  • התבנית משתמשת ב-SQLite ב-‎/data. ‏PostgreSQL ו-MySQL נתמכים ב-upstream דרך DATABASE_URL, אבל אין להם תבנית כאן, ומעבר מ-SQLite בהמשך מסומן בויקי כלא נתמך. [5][21]
  • הגדרות שנשמרות בעמוד ‎/admin נכתבות ל-‎/data/config.json וגוברות על משתני הסביבה, כך ששינוי מאוחר יותר בקובץ ה-Compose עלול להיות מוזנח בלי התראה. [18]

אבטחה

  • ‏Vaultwarden אינו קשור ל-Bitwarden, Inc.; תקלות מדווחים לפרויקט Vaultwarden, לא לתמיכה של Bitwarden. השרת מחזיק את הכספת המוצפנת של כל המשתמשים, ולכן הוא והגיבויים שלו קריטיים. [1][12]
  • כל מי שמגיע לכתובת יכול להירשם כל עוד SIGNUPS_ALLOWED הוא true. יוצרים את החשבונות ואז מפעילים close-signups; אם בעלי ארגון לא אמורים להזמין, מגדירים גם INVITATIONS_ALLOWED=false. [8][14][17]
  • עמוד ‎/admin כבוי. אם מפעילים אותו, ‏ADMIN_TOKEN חייב להיות מחרוזת PHC של Argon2id מ-‎/vaultwarden hash ‏(בגרשיים בודדים ב-‎.env), לעולם לא token גלוי, ו-HTTPS צריך להיות פעיל קודם. [5][9][25]
  • נגד brute force, ‏Vaultwarden מגביל קצב התחברויות לפי IP של הלקוח ורושם כל התחברות כושלת עם ה-IP, ש-fail2ban במארח יכול לחסום. זה דורש את ה-IP האמיתי של הלקוח מה-proxy ‏(IP_HEADER) ולוגים לקובץ (LOG_FILE). [5][15][16]
  • ה-container רץ כ-root (אין USER ב-image). הרצה כ-1000:1000 מתועדת, אבל אז Rocket צריך להאזין על פורט מעל 1024 או לקבל CAP_NET_BIND_SERVICE. [6][14][20]

גיבוי

  • לגבות כל יום: ‏db.sqlite3 עם sqlite3 .backup במארח או ‎/vaultwarden backup בתוך ה-container ‏(אין sqlite3 ב-image), ועוד attachments ‏(חובה), ‏sends, ‏config.json ו-rsa_key* מ-‎/data. להצפין את העותקים: ‏config.json ו-rsa_key.pem רגישים. [12][25]
  • משחזרים כש-Vaultwarden עצור; כשמשחזרים עותק של ‎.backup או VACUUM INTO, מוחקים קודם db.sqlite3-wal קיים, אחרת SQLite עלול להשחית את המסד. אין צורך לגבות את icon_cache. [12]

גרסה אחרונה

הגרסה האחרונה של הפרויקט
Vaultwarden 1.37.4 [30]
הפרופיל נבדק מול

Vaultwarden 1.37.4

הפרופיל נבדק מול הגרסה האחרונה.

נבדק ב-
14 באוק׳ 2026
מצב
נבדק ב-90 הימים האחרונים
איפה הגרסאות מתפרסמות
תגיות ב-Docker Hub

הגרסאות האחרונות של כל האפליקציות

גרסה

סטטוס הפרופיל
פורסם
נבדק מול גרסה
Vaultwarden 1.37.4
גרסת הפרופיל
1.0.0
המספרים אומתו
14 באוק׳ 2026
גרסת הקטלוג
2026.10.10
מדיניות sizing
2026.10.0
קובץ Compose
לא אומת

מקורות

  1. Vaultwarden README at 1.37.4: web vault needs HTTPS (secure context), docker run and compose examples (DOMAIN, /data, 127.0.0.1:8000:80), disclaimer (מאגר רשמי · נקרא 14 באוק׳ 2026)
  2. Vaultwarden wiki: Using Docker Compose (minimal template: DOMAIN, SIGNUPS_ALLOWED true until your account exists, ./vw-data:/data, Caddy example) (Compose רשמי · נקרא 14 באוק׳ 2026)
  3. docker/Dockerfile.debian at 1.37.4: ROCKET_ADDRESS 0.0.0.0, ROCKET_PORT 80, VOLUME /data, EXPOSE 80, no USER, HEALTHCHECK --interval=60s --timeout=10s CMD /healthcheck.sh (מאגר רשמי · נקרא 14 באוק׳ 2026)
  4. docker/healthcheck.sh at 1.37.4: curl --fail http://localhost:$ROCKET_PORT<base path of DOMAIN>/alive (מאגר רשמי · נקרא 14 באוק׳ 2026)
  5. .env.template at 1.37.4: DOMAIN, SIGNUPS_ALLOWED (true), ADMIN_TOKEN (Argon2 PHC), IP_HEADER (X-Real-IP), IP_HEADER_TRUSTED_PROXIES (local), PASSWORD_ITERATIONS 600000, DATABASE_MAX_CONNS 10 (מאגר רשמי · נקרא 14 באוק׳ 2026)
  6. Registry config of vaultwarden/server:1.37.4 (linux/amd64): no User, ExposedPorts 80/tcp, Volumes /data, Healthcheck CMD /healthcheck.sh every 60 s, timeout 10 s (מדידה · נקרא 14 באוק׳ 2026)
  7. Vaultwarden wiki: Proxy examples (terminate TLS in a reverse proxy, upstream vaultwarden:80, forward the client IP; IP_HEADER X-Forwarded-For for proxies that send it) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  8. Vaultwarden wiki: Disable registration of new users (SIGNUPS_ALLOWED=false; org admins can still invite; admin page invites) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  9. Vaultwarden wiki: Enabling admin page (ADMIN_TOKEN as Argon2id PHC string from vaultwarden hash; disabled when no token is set; $ escaping in Compose) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  10. Vaultwarden wiki: Home (unofficial Bitwarden server in Rust, for deployments where the official resource-heavy service is undesirable) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  11. Vaultwarden wiki: Which container image to use (multi-arch image, tested on Raspberry Pi Zero W, Pi 1, Pi 3, Pi 4 and Pi 5) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  12. Vaultwarden wiki: Backing up your vault (db.sqlite3 via sqlite3 .backup or /vaultwarden backup, attachments, sends, config.json, rsa_key*, icon_cache; restore with the -wal file removed) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  13. Vaultwarden wiki: Enabling HTTPS (needed for the web vault; reverse proxy recommended over Rocket TLS) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  14. Vaultwarden wiki: Hardening Guide (disable registration and invitations, password hints, avoid Rocket TLS, redact access_token in proxy logs, runs as root by default) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  15. Vaultwarden wiki: Fail2Ban Setup (brute-force protection from the 'Username or password is incorrect' log line; needs the real client IP) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  16. Vaultwarden wiki: Logging (stdout by default, LOG_FILE for a file) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  17. Vaultwarden wiki: Disable invitations (INVITATIONS_ALLOWED=false) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  18. Vaultwarden wiki: Configuration overview (environment variables; config.json written by /admin overrides every other method) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  19. Vaultwarden wiki: Updating the vaultwarden image (docker compose pull, docker compose up -d; keep the /data volume) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  20. Vaultwarden wiki: Running docker container with non-root user (writable /data, ROCKET_PORT ≥ 1024 or CAP_NET_BIND_SERVICE) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  21. Vaultwarden wiki: Using the PostgreSQL backend (DATABASE_URL postgresql://…, percent-encoded password; SQLite migration unsupported) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  22. Vaultwarden wiki: Enabling WebSocket notifications (on the main HTTP port since 1.29/1.31; mobile apps use push instead) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  23. Vaultwarden wiki: Enabling mobile client push notification (PUSH_ENABLED with an installation id and key from bitwarden.com/host) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  24. src/db/mod.rs at 1.37.4: embedded Diesel migrations run at start; backup_sqlite writes db_<UTC time>.sqlite3 next to the database with VACUUM INTO (מאגר רשמי · נקרא 14 באוק׳ 2026)
  25. src/main.rs at 1.37.4: CLI commands hash (Argon2 PHC for ADMIN_TOKEN) and backup (SQLite only; also on SIGUSR1) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  26. Vaultwarden LICENSE.txt at 1.37.4: GNU AGPL v3 (image label AGPL-3.0-only) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  27. .env.template at 1.37.3 (still documents DUO_USE_IFRAME and older client feature flags, removed in 1.37.4) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  28. .env.template at 1.36.0 (DATABASE_URL as a bare path, no IP_HEADER_TRUSTED_PROXIES; both changed in 1.37.0) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  29. Docker Hub tag vaultwarden/server:1.37.4 (linux/amd64): 90,367,076 B compressed; 5 layers decompressed and counted: 303,042,560 B (מדידה · נקרא 14 באוק׳ 2026)
  30. Docker Hub tags of vaultwarden/server (1.37.4 newest stable on 2026-10-14, pushed 2026-10-05; testing tags are unreleased builds) (מאגר רשמי · נקרא 14 באוק׳ 2026)
  31. Docker: containerd image store is the default on fresh Engine 29+ installs and keeps images compressed and uncompressed (תיעוד רשמי · נקרא 14 באוק׳ 2026)
  32. Bitwarden: plans and pricing of the hosted Bitwarden Password Manager (תיעוד רשמי · נקרא 14 באוק׳ 2026)

כל אפליקציות ה-self-hosted