SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-10-30

Vaultwarden বনাম Bitwarden self-hosted: কোনটি নেবেন

Bitwarden-এর standard server চালাতে প্রায় এক ডজন container ও 2 GB RAM লাগে, কিন্তু Vaultwarden একই API একটিতে চালায়। আপনার VPS-এর জন্য কোনটি উপযুক্ত জানুন।

Vaultwarden এবং Bitwarden self-hosted আসলে কী

Vaultwarden বনাম Bitwarden self-hosted-এর মধ্যে নির্বাচন করা মানে দুটি ভিন্ন পাসওয়ার্ড ম্যানেজারের মধ্যে নির্বাচন করা নয়, বরং একই client API ব্যবহারকারী দুটি সার্ভারের মধ্যে একটিকে বেছে নেওয়া। Bitwarden-এর নিজস্ব স্ট্যাক nginx-এর পেছনে প্রায় এক ডজন কন্টেইনার চালায়, সবকিছু Microsoft SQL Server-এ জমা রাখে এবং এটি একটি installation ID-এর সাথে যুক্ত যা আপনাকে ইমেইল ঠিকানার মাধ্যমে রেজিস্টার করতে হয়। Vaultwarden হলো Bitwarden client API-এর একটি অনানুষ্ঠানিক পুনর্নির্মাণ, যা Rust-এ লেখা এবং একটি SQLite ফাইলের বিপরীতে একটি মাত্র কন্টেইনার হিসেবে চলে। আপনার ব্রাউজার এক্সটেনশন বা ফোন এদের মধ্যে পার্থক্য করতে পারে না, কারণ উভয়ই একই endpoint-এ সাড়া দেয়।

উভয় ক্ষেত্রেই এনক্রিপশন অভিন্ন। Bitwarden ক্লায়েন্টরা ডিভাইস থেকে কোনো তথ্য বের হওয়ার আগেই ভল্ট এনক্রিপ্ট করে ফেলে, তাই সার্ভার এমন সব ডেটা জমা রাখে যা সে পড়তে পারে না এবং উভয় ক্ষেত্রেই ভল্ট ফরম্যাটটি Bitwarden-এর মালিকানাধীন। পার্থক্য হলো আপনি কতটা শক্তিশালী মেশিন ভাড়া করছেন, কে কোড রক্ষণাবেক্ষণ করছে, কোন ফিচারের জন্য অর্থ প্রদান করতে হবে এবং আপনাকে কী ব্যাকআপ রাখতে হবে।

Vaultwarden-এর README ফাইলে এর অবস্থা সম্পর্কে সরাসরি বলা হয়েছে: "এই প্রজেক্টটি Bitwarden বা Bitwarden, Inc.-এর সাথে সম্পর্কিত নয়।" এটি একটি স্বেচ্ছাসেবক প্রজেক্ট যার কোনো সাপোর্ট ডেস্ক বা ওয়ারেন্টি নেই। একজন সক্রিয় মেইনটেইনার Bitwarden-এ কাজ করেন এবং ব্যক্তিগত সময়ে অবদান রাখেন, যা একটি সৌজন্যমূলক কাজ, কোনো আনুষ্ঠানিক অনুমোদন নয়।

আপনি যে তিনটি stack ইনস্টল করতে পারেন

বেশিরভাগ তুলনায় এই বিষয়টি বাদ পড়ে যে Bitwarden দুটি আলাদা self-hosted product প্রকাশ করে।

Bitwarden standard। Shell script দ্বারা পরিচালিত vendor deployment।

curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
  && chmod 700 bitwarden.sh
./bitwarden.sh install

Installer আপনার domain, Let's Encrypt certificate চাইবেন কি না, https://bitwarden.com/host-এ email address দিয়ে সংগ্রহ করা installation ID ও key, এবং আপনার region (US বা EU) জানতে চায়। এরপর ./bitwarden.sh start image pull করে এবং stack চালু করে। Bitwarden minimum হিসেবে 2 GB RAM ও 12 GB storage, recommended হিসেবে 4 GB RAM ও 25 GB storage, এবং Compose plugin-সহ Docker Engine 26 বা নতুন সংস্করণ উল্লেখ করেছে। Database হিসেবে MSSQL Express image ব্যবহার করা হয়। Bitwarden-এর documentation অনুযায়ী এর relational database-এর সর্বোচ্চ আকার 10 GB। এটি যথেষ্ট না হলে deployment-কে external database ব্যবহার করার জন্য নির্ধারণ করতে পারেন।

Bitwarden lite। এটি আগে Bitwarden Unified নামে পরিচিত deployment। এটি beta পর্যায় থেকে বের হয়ে December 2025-এ নাম পরিবর্তন করা হয়। একটি application container এবং আপনার পছন্দের একটি database:

services:
  bitwarden:
    depends_on:
      - db
    env_file:
      - settings.env
    image: ghcr.io/bitwarden/lite
    restart: always
    ports:
      - "80:8080"
    volumes:
      - bitwarden:/etc/bitwarden
  db:
    environment:
      MARIADB_USER: "bitwarden"
      MARIADB_PASSWORD: "super_strong_password"
      MARIADB_DATABASE: "bitwarden_vault"
      MARIADB_RANDOM_ROOT_PASSWORD: "true"
    image: mariadb:10
    restart: always
    volumes:
      - data:/var/lib/mysql
volumes:
  bitwarden:
  data:

এটি MariaDB বা MySQL, PostgreSQL, SQLite এবং MSSQL গ্রহণ করে। প্রয়োজন 200 MB RAM ও 1 GB storage। Bitwarden-এর documentation থেকে দুটি বিষয় মনে রাখতে হবে। এটি business use-এর পরিবর্তে personal use ও home lab-এর জন্য documented, এবং এটি স্বয়ংক্রিয় database backup নেয় না। তাই backup নেওয়ার সম্পূর্ণ দায়িত্ব আপনার।

Vaultwarden। Project README থেকে সরাসরি একটি container:

docker run --detach --name vaultwarden \
  --env DOMAIN="https://vw.domain.tld" \
  --volume /vw-data/:/data/ \
  --restart unless-stopped \
  --publish 127.0.0.1:8000:80 \
  vaultwarden/server:latest

Publish line-টি port 8000-কে শুধু loopback-এ bind করে। এটি ইচ্ছাকৃত। Vaultwarden plain HTTP পরিবেশন করে এবং সামনে TLS termination করার জন্য একটি reverse proxy প্রত্যাশা করে। এখানে TLS ঐচ্ছিক নয়। Web vault browser-এর WebCrypto API ব্যবহার করে encryption সম্পন্ন করে। Browser এই API শুধু secure context-এ প্রকাশ করে। তাই plain http-এর মাধ্যমে server-কে অনুরোধ পাঠানোর আগেই browser-এ login page ব্যর্থ হয়। সম্পূর্ণ Vaultwarden install নির্দেশিকা-তে proxy ও certificate সম্পর্কে বিস্তারিত আছে।

Bitwarden self-hosted-এর তুলনায় Vaultwarden কতটুকু RAM ব্যবহার করে?

ভেন্ডর কর্তৃক নির্ধারিত সর্বনিম্ন প্রয়োজনীয়তা কেবল নির্দেশ করে যে কোন কনফিগারেশনে ইনস্টলারটি চলবে না, কিন্তু এটি সফটওয়্যারটির প্রকৃত মেমোরি ব্যবহারের পরিমাপ নয়। নিচের সারিগুলো docker stats --no-stream থেকে নেওয়া হয়েছে, যেখানে প্রতিটি ইনস্টলেশনে একজন ব্যবহারকারী, একটি ছোট ভল্ট এবং কোনো অ্যাটাচমেন্ট নেই। পরীক্ষাটি 4 GB RAM বিশিষ্ট একটি Ubuntu 24.04 বক্সে চালানো হয়েছে। ডিস্ক ব্যবহারের পরিমাপটি ইমেজ এবং প্রথমবার সফলভাবে স্টার্ট হওয়ার পরবর্তী ডেটা ডিরেক্টরির ওপর ভিত্তি করে দেওয়া হয়েছে।

চার্টIdle memory, container count and disk, measured on one Ubuntu 24.04 box
এই চার্টের পেছনের ডেটা
[
  {
    "label": "Vaultwarden (SQLite)",
    "idle_ram_mb": 58,
    "containers": 1,
    "disk_gb": 0.4
  },
  {
    "label": "Bitwarden lite + MariaDB",
    "idle_ram_mb": 470,
    "containers": 2,
    "disk_gb": 1.6
  },
  {
    "label": "Bitwarden standard (MSSQL)",
    "idle_ram_mb": "2,400",
    "containers": 12,
    "disk_gb": 6.5
  }
]

Vaultwarden একটি সিঙ্গেল কন্টেইনারে 58 MB RAM ব্যবহার করে অলস অবস্থায় থাকে। স্ট্যান্ডার্ড Bitwarden স্ট্যাকটি 12 টি কন্টেইনার জুড়ে প্রায় 2,400 MB RAM ব্যবহার করে, যার সিংহভাগই MSSQL কন্টেইনারটি দখল করে রাখে। Bitwarden lite তার MariaDB কন্টেইনারসহ 470 MB RAM ব্যবহার করে। এই পরিসংখ্যানগুলোর ওপর আস্থা রাখার আগে আপনার নিজের বক্সে একই কমান্ড চালিয়ে দেখুন, কারণ ব্যবহারকারীর সংখ্যা, অ্যাটাচমেন্ট এবং সিঙ্ক ট্রাফিকের ওপর ভিত্তি করে এই মান পরিবর্তিত হয়। এছাড়া, MSSQL যত বেশি সময় ধরে চলে, তার ওয়ার্কিং সেট তত বাড়তে থাকে।

একটি ছোট VPS-এর জন্য বাস্তবসম্মত হিসাব হলো: SQLite-সহ Vaultwarden 1 GB RAM-এর প্ল্যানে অনায়াসেই চলে, যেখানে স্ট্যান্ডার্ড Bitwarden স্ট্যাকটি সেখানে স্টার্টই হবে না। 2 GB RAM-এর প্ল্যানে স্ট্যান্ডার্ড স্ট্যাকটি নথিবদ্ধ সর্বনিম্ন প্রয়োজনীয়তা পূরণ করলেও অপারেটিং সিস্টেমের জন্য খুব সামান্যই জায়গা অবশিষ্ট থাকে, ফলে কার্নেলের out of memory killer সক্রিয় হওয়ার সম্ভাবনা তৈরি হয়। এটি সক্রিয় হলে dmesg সেই প্রসেসটির নামসহ একটি লাইন প্রিন্ট করে যাকে এটি বন্ধ করেছে, এবং এই স্ট্যাকের ক্ষেত্রে সাধারণত সেটি হয় sqlservr। স্ট্যান্ডার্ড ডিপ্লয়মেন্টের জন্য 4 GB RAM বরাদ্দ করুন। যদি একই VPS-এ ভল্ট ছাড়াও অন্য সার্ভিস চালানোর পরিকল্পনা থাকে, তবে প্ল্যান নির্বাচনের আগে অন্য সার্ভিসগুলোর মেমোরি ব্যবহারের পরিমাণ হিসাব করে নিন। কারণ PhotoPrism বা Immich-এর মতো ফটো সার্ভার Vaultwarden-এর তুলনায় অনেক বেশি মেমোরি ব্যবহার করে। তবে সব সার্ভিসই যে এত বেশি মেমোরি খরচ করে তা নয়: যেমন Halcyon, যা Jellyfin লাইব্রেরিকে 90-এর দশকের রেন্টাল শপের মতো রূপ দেয়, এটি মূলত একটি ব্রাউজার ফ্রন্ট-এন্ড যা নিজস্ব ডেটাবেস ব্যবহারের পরিবর্তে মিডিয়া সার্ভারের ওপর নির্ভর করে। মেমোরিই একমাত্র বিবেচ্য বিষয় নয়, কারণ রিমোট ডেস্কটপ সেশনের জন্য RustDesk relay docker stats-এ খুব সামান্যই জায়গা নেয়, কিন্তু এটি আপনার প্ল্যানের ব্যান্ডউইথ ব্যবহারের সীমা দ্রুত শেষ করে ফেলতে পারে।

Vaultwarden-এ কোন paid feature বিনামূল্যে পাওয়া যায়?

Bitwarden-এর server চালাতে কোনো খরচ নেই। তবে licence file upload না করা পর্যন্ত paid feature-গুলো locked থাকে। Self-host করা যায় এমন Premium individual account এবং paid organisation plan—Families ও Enterprise—এর জন্য licence প্রয়োজন। Bitwarden Teams-এর জন্য self-host option দেয় না। Individual account-এর ক্ষেত্রে cloud web vault থেকে Settings এবং তারপর Subscription-এ গিয়ে licence download করুন। Organisation-এর ক্ষেত্রে Admin Console-এ Billing এবং তারপর Subscription-এ গিয়ে licence download করুন। এরপর এটি আপনার নিজের instance-এ upload করুন। Organisation licence ./bwdata/env/global.override.env-এ সংরক্ষিত installation ID-এর ভিত্তিতে জারি করা হয়। তাই self-hosted organisation-এর ক্ষেত্রে paid subscription বহাল থাকে এবং billing-এর জন্য Bitwarden-এর cloud-এর সঙ্গে যোগাযোগও করতে হয়।

Vaultwarden licence বা subscription ছাড়াই একই feature-গুলো সক্রিয় করে। Project wiki-তে এগুলো তালিকাভুক্ত আছে:

  • organisations, collections এবং groups
  • file attachments
  • email, Duo, YubiKey এবং FIDO2 ব্যবহার করে two-step login
  • Emergency Access
  • Bitwarden Send
  • personal API keys
  • OpenID Connect-এর মাধ্যমে SSO

এগুলোর মধ্যে SSO সবচেয়ে নতুন। এটি SSO_ENABLED, SSO_AUTHORITY, SSO_CLIENT_ID এবং SSO_CLIENT_SECRET দিয়ে configure করা হয়। এটি শুধু login authentication সম্পন্ন করে। Wiki-তে স্পষ্টভাবে বলা আছে যে master password এখনও প্রয়োজন এবং এটি আপনার identity provider নিয়ন্ত্রণ করে না, কারণ এই password থেকেই vault decrypt করার key তৈরি হয়। SSO_AUTHORITY-এ একটি self-hosted Authentik identity provider-এর discovery issuer নির্ধারণ করুন। ব্যবহারকারীরা সেখানে sign in করবেন, তারপর master password দিয়ে vault unlock করবেন। এই value-টি discovery endpoint থেকে ফেরত আসা issuer field-এর সঙ্গে মিলতে হবে। শেষের /.well-known/openid-configuration suffix বাদ দিতে হবে।

Vaultwarden-এ আপনি যা পাবেন না, তা হলো vendor support। Bitwarden SOC 2 Type 2 এবং ISO 27001 certification ধরে রাখে, third-party audit report প্রকাশ করে এবং private HackerOne bug bounty পরিচালনা করে। এগুলো Bitwarden-এর code ও service-এর জন্য প্রযোজ্য, আপনার install করা server-এর জন্য নয়। তবে কোনো auditor যদি আপনার password manager-এর পেছনে নির্দিষ্ট কোনো supplier-এর নাম চান, volunteer-নির্ভর reimplementation ব্যবহার করার বিষয়টি ব্যাখ্যা করা কঠিন হতে পারে।

অফিসিয়াল Bitwarden অ্যাপগুলো কি Vaultwarden-এর সাথে কাজ করে?

হ্যাঁ। Vaultwarden ক্লায়েন্ট API সমর্থন করে, তাই ব্রাউজার এক্সটেনশন, ডেস্কটপ অ্যাপ, মোবাইল অ্যাপ এবং এর সাথে থাকা web vault সবই এর সাথে কাজ করে। প্রতিটি ক্লায়েন্টে লগ ইন করার আগে, এনভায়রনমেন্ট স্ক্রিনে আপনাকে self-hosted সার্ভারের URL সেট করতে হবে, লগ ইন করার পরে নয়।

একটি ফিচারের জন্য অতিরিক্ত কনফিগারেশন প্রয়োজন: মোবাইল অ্যাপে পুশ নোটিফিকেশন। এটি ছাড়া অ্যাপটি খোলার সময় বা নির্দিষ্ট সময় অন্তর নিজে থেকে সিঙ্ক হয়। ফলে ল্যাপটপে পাসওয়ার্ড পরিবর্তন করলে তা ফোনে সাথে সাথে দেখা যাবে না, যতক্ষণ না আপনি অ্যাপটি খুলছেন। Vaultwarden, Bitwarden-এর পুশ রিলে ব্যবহার করতে পারে, তবে এর জন্য অফিসিয়াল ইনস্টলার যে https://bitwarden.com/host পেজ ব্যবহার করে, সেখান থেকে একটি installation ID এবং key প্রয়োজন।

PUSH_ENABLED=true
PUSH_INSTALLATION_ID=<your installation id>
PUSH_INSTALLATION_KEY=<your installation key>

EU অঞ্চলের সার্ভারগুলোর জন্য PUSH_RELAY_URI=https://api.bitwarden.eu এবং PUSH_IDENTITY_URI=https://identity.bitwarden.eu-ও প্রয়োজন। ডিবাগিং শুরু করার আগে উইকিতে উল্লেখিত দুটি সাধারণ সমস্যার কথা জেনে রাখা ভালো। F-Droid বা Neo Store থেকে ইনস্টল করা অ্যাপে Firebase সাপোর্ট থাকে না, তাই সার্ভার যাই করুক না কেন, এতে কোনো পুশ নোটিফিকেশন আসবে না। Vaultwarden 1.30.2 ভার্সনের আগে যে অ্যাপগুলো কানেক্ট করা ছিল, সেগুলোর ডেটা মুছে ফেলতে হবে যাতে নতুন করে পুশ টোকেন রেজিস্টার হতে পারে।

একটি reimplementation কতটা নিরাপদ?

Bitwarden-এর audit history দীর্ঘ এবং সর্বসাধারণের জন্য উন্মুক্ত। Cure53 2018, 2021, 2022, 2023, 2024 এবং 2025 সালে এটি পর্যালোচনা করেছে। 2025 সালের পর্যালোচনায় browser extension ও autofill overlay, core application, desktop application, web vault এবং RustCrypto crate ও library অন্তর্ভুক্ত ছিল। IOActive এবং Mandiant 2024 সালে client-গুলো পর্যালোচনা করেছে। Fracture Labs 2024 ও 2025 জুড়ে web এবং network assessment করেছে। Unit 42 2025 সালে mobile app-গুলো মূল্যায়ন করেছে। ETH Zurich Applied Cryptography Group-ও 2025 সালে cryptography পর্যালোচনা করেছে।

Vaultwarden-ও বাইরের বিশেষজ্ঞদের পর্যালোচনার আওতায় এসেছে। কেউ দেখে না—এমন ধারণা থাকা ব্যবহারকারীদের কাছে এটি আশ্চর্যের হতে পারে। Germany's Federal Office for Information Security (BSI) mgm security partners-কে দিয়ে February থেকে May 2024 পর্যন্ত Caos 3.0 code analysis project-এর অধীনে এটি পরীক্ষা করায়। সেই পর্যালোচনায় দুটি finding-কে high severity হিসেবে রেট করা হয়। আলাদাভাবে, ERNW 1.32.5-এর নিচের version-গুলোকে প্রভাবিত করা একটি authentication bypass-এর কথা জানায় (CVE-2024-55225)। এটি November 2024-এ ঠিক করা হয়। July 2026-এর Version 1.37.0-এ icon endpoint-এর মাধ্যমে SSRF (server side request forgery), cross organisation cipher access এবং directory import-এর সময় organisation policy bypass-এর fix প্রকাশ করা হয়। October 2026-এর Version 1.37.4-এ আরও কয়েকটি সমস্যা ঠিক করা হয়। এর মধ্যে organisation member revocation-এ high rated একটি flaw এবং two factor authentication, organisation invitation ও attachment-সংক্রান্ত সমস্যা ছিল।

এই ইতিহাস দেখায় যে প্রকল্পটির disclosure process কার্যকর। এটি সেই attack surface-টির দিকেও ইঙ্গিত করে, যা বারবার পর্যালোচনায় উঠে আসে: admin page। তাই এই page-কে সংবেদনশীল সম্পদ হিসেবে বিবেচনা করুন। ADMIN_TOKEN সেট না করা পর্যন্ত এটি বন্ধ থাকে। Plaintext token-এর বদলে hash সংরক্ষণ করা উচিত।

docker run --rm -it vaultwarden/server /vaultwarden hash

এটি একটি Argon2 PHC string (password hashing competition format) প্রিন্ট করে। এটি ADMIN_TOKEN-এ বসান। Admin page চালু করার আগে HTTPS চালু করুন। কারণ token-টি request-এর সঙ্গে পাঠানো হয়, আর plain HTTP connection-এ plaintext token path-এর যেকোনো ব্যক্তি পড়তে পারে। Cryptography নয়, বরং এই token এবং আপনার backup file-ই বাস্তব ব্যবহারে প্রধান ঝুঁকি। চালু থাকা instance শক্ত করার একটি ধাপ উভয় বিষয় নিয়েই কাজ করে। সম্ভব হলে /admin-কে public internet থেকে দূরে রাখুন এবং সাধারণ host hardening-এর সঙ্গে এটি ব্যবহার করুন, যেমন server-এ SSH access সীমাবদ্ধ করা।

Official API পরিবর্তিত হলে কী ভেঙে যায়

এটাই সেই ঝুঁকি যেটিকে অনেকে যথেষ্ট গুরুত্ব দেন না। Bitwarden client প্রকাশ করে, এবং সেই client-গুলো app store থেকে রাতারাতি নিজে নিজে update হয়। Vaultwarden-কে সেই পরিবর্তনের সঙ্গে তাল মিলিয়ে চলতে হয়। কোনো client release API contract পরিবর্তন করলে, update না-করা Vaultwarden এমন একটি client-এর মুখোমুখি হয় যেটি ইতিমধ্যে পরিবর্তিত API ব্যবহার করছে। তখন আপনি স্পর্শ না-করা device-গুলোতে login বা sync ব্যর্থ হতে শুরু করতে পারে।

Release notes-এ এর একটি নির্দিষ্ট উদাহরণ আছে। Vaultwarden 1.37.0-এ বলা হয়েছে: "এই update-এর জন্য 2026.7.0+ version-এর client support প্রয়োজন; কোনো সমস্যা report করার আগে update করুন।" এক মাস পরে 22 August 2026-এ প্রকাশিত 1.37.2-এ 2026.8.0 এবং নতুন version-এর client-এর জন্য একই সতর্কতা পুনরায় দেওয়া হয়। তাই 1.37.0 বা 1.37.1-এ থাকা server ইতিমধ্যে app-গুলোর তুলনায় পিছিয়ে আছে। 27 October 2026 অনুযায়ী current release হলো 1.37.4, যা 5 October 2026-এ প্রকাশিত হয়েছে; এর আগে 13 September 2026-এ 1.37.3 প্রকাশিত হয়েছিল।

দুটি অভ্যাস এই বিষয়টিকে সহজ রাখে। latest-এর পরিবর্তে নির্দিষ্ট image tag pin করুন, যাতে unattended pull রাত 3am-এ আপনার server-এর version পরিবর্তন করতে না পারে। এরপর release feed monitor করুন এবং আগে release notes পড়ে পরিকল্পনা অনুযায়ী upgrade করুন। Breaking change কোথায় ঘোষণা করা হয়, তা সাধারণত সেখানেই থাকে। 1.37.2-এর সতর্কতাটি project-এর GitHub Discussions-এও পোস্ট করা হয়েছিল। Server upgrade-এর পরও কোনো client সঠিকভাবে কাজ না করলে সেখানে recovery steps দেওয়া ছিল: log out করে আবার log in করুন, এরপর app বা extension cache clear করুন, এবং একেবারে শেষ উপায় হিসেবে mobile app বা extension reinstall করুন। উদাহরণস্বরূপ, Version 1.35.5 upgrade-এর সময় বিদ্যমান সব two-factor remember token invalid করে দিয়েছিল। ফলে ব্যবহারকারীরা এমন একটি ধাপ থেকেও log out হয়ে যান, যেটি তারা সংরক্ষিত মনে করেছিলেন।

Official Bitwarden deployment-এ এর বিপরীত ধরনের সমস্যা রয়েছে। Upgrade ./bitwarden.sh updateself এবং ./bitwarden.sh update-এর মাধ্যমে চলে, এবং update database migration প্রয়োগ করে। Migration-এর আগে নেওয়া backup পরবর্তী schema-তে rollback করার উপায় নয়। তাই backup নিন এবং কোন version-এ backup নেওয়া হয়েছিল তা লিখে রাখুন।

ব্যাকআপ, যেখানে মানুষ আসলে তাদের ভল্ট হারায়

Vaultwarden-এর ডেটা ডিরেক্টরিই হলো সার্ভার। নিচের ফাইল ও ডিরেক্টরিগুলো সংরক্ষণ করুন:

  • db.sqlite3
  • প্রতিটি rsa_key* ফাইল, যার মধ্যে rsa_key.pem এবং rsa_key.der অন্তর্ভুক্ত
  • attachments/
  • config.json
  • sends/

কন্টেইনার চলার সময় cp দিয়ে db.sqlite3 কপি করবেন না। SQLite এই সময়ে ডেটা লিখতে থাকতে পারে, ফলে কপি করা ফাইলটি ত্রুটিপূর্ণ হতে পারে যা রিস্টোর না করা পর্যন্ত ঠিকঠাক মনে হবে। এর পরিবর্তে অনলাইন ব্যাকআপ API ব্যবহার করুন:

sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"

1.32.1 ভার্সন থেকে ইমেজের ভেতরেই একটি বিল্ট-ইন /vaultwarden backup কমান্ড রয়েছে। যে পদ্ধতিই ব্যবহার করুন না কেন, স্ন্যাপশটটি মূল ডেটার মতোই একই ডিস্কে থাকে যতক্ষণ না আপনি সেটি সরিয়ে নিচ্ছেন। তাই restic snapshots to off-site storage ব্যবহার করে একটি নির্দিষ্ট সময়সূচী অনুযায়ী ডেটা অন্য কোথাও পাঠিয়ে দিন। একটি ব্যাকআপ জব যদি নীরবে কাজ করা বন্ধ করে দেয়, তবে তা এমন দেখাবে যেন সেটি কখনোই ছিল না। তাই টাইমার যেন ব্যর্থতার রিপোর্ট এমন কোথাও পাঠায় যা আপনার নজরে আসবে; এজন্যই a self-hosted ntfy server wired to a systemd OnFailure unit ব্যবহার করা হয়। rsa_key ফাইলগুলো ডেটাবেসের মতোই গুরুত্বপূর্ণ: সার্ভার এই কি (key) দিয়ে তার সেশন টোকেনগুলো সাইন করে। তাই নতুন তৈরি করা কি-এর পাশে পুরনো ডেটাবেস রিস্টোর করলে সবার সেশন লগ-আউট হয়ে যাবে এবং চলমান অর্গানাইজেশন ইনভাইটেশনগুলো অকার্যকর হয়ে পড়বে।

Bitwarden স্ট্যান্ডার্ড ভার্সন নিজের ব্যাকআপ নিজেই বেশি ভালোভাবে নিতে পারে। mssql কন্টেইনারটি প্রতি রাতে ./bwdata/mssql/backups ডিরেক্টরিতে ডেটাবেস ব্যাকআপ রাখে এবং কন্টেইনার চালু থাকলে 30 দিনের ব্যাকআপ সংরক্ষণ করে। আপনি চাইলে জোরপূর্বক ব্যাকআপ নিতে পারেন:

docker exec -i bitwarden-mssql /backup-db.sh

যে ডিরেক্টরিগুলো সংরক্ষণ করা জরুরি তা হলো ./bwdata/env (এনভায়রনমেন্ট ভেরিয়েবল, যার মধ্যে ডেটাবেস ও সার্টিফিকেটের পাসওয়ার্ড থাকে), ./bwdata/core/attachments, ./bwdata/mssql/data এবং ./bwdata/core/aspnet-dataprotection। শেষোক্ত ডিরেক্টরিটির কথা মানুষ প্রায়ই ভুলে যায়। এটি ফ্রেমওয়ার্ক লেভেলের ডেটা প্রোটেকশন ম্যাটেরিয়াল ধরে রাখে, যার মধ্যে অথেন্টিকেশন টোকেন এবং কিছু ডেটাবেস কলাম অন্তর্ভুক্ত। তাই এটি ছাড়া ডেটাবেস রিস্টোর করলে সংরক্ষিত কলামগুলো আর পড়া যায় না। Bitwarden লাইট ভার্সন নিজে থেকে কোনো ব্যাকআপ নেয় না, তাই লাইট ভার্সন বেছে নিলে Vaultwarden-এর মতোই আপনাকে নিজস্ব ব্যাকআপ শিডিউল তৈরি করতে হবে।

উভয় দিকে মাইগ্রেশন

মাইগ্রেশন সার্ভারের মাধ্যমে নয়, বরং ক্লায়েন্টের মাধ্যমে সম্পন্ন হয়, কারণ এক্সপোর্ট এবং ইমপোর্ট ক্লায়েন্টের ফিচার। এর ফলে উভয় দিকের প্রক্রিয়া একই।

প্রতিটি ব্যবহারকারী ওয়েব ভল্ট বা ডেস্কটপ অ্যাপ থেকে ডেটা এক্সপোর্ট করেন, নতুন সার্ভারে অ্যাকাউন্ট তৈরি করেন এবং ইমপোর্ট করেন। ফরম্যাটগুলো হলো প্লেইনটেক্সট .json, প্লেইনটেক্সট .csv, এনক্রিপ্টেড .json এবং একটি .zip, যা JSON এবং ব্যক্তিগত ভল্টের ফাইল অ্যাটাচমেন্ট ধারণ করে। কার্ড, আইডেন্টিটি, সংরক্ষিত পাসকি (passkeys) এবং SSH কি শুধুমাত্র JSON ফরম্যাটেই টিকে থাকে, তাই CSV মাইগ্রেশনে এগুলো নীরবে বাদ পড়ে যায়। কোনো এক্সপোর্ট ফরম্যাটেই ট্র্যাশ আইটেম বা Sends অন্তর্ভুক্ত থাকে না এবং অর্গানাইজেশনের মালিকানাধীন ডেটা ব্যক্তিগত এক্সপোর্টের অংশ নয়।

একটি প্লেইনটেক্সট এক্সপোর্টকে সরাসরি গোপন তথ্য হিসেবে গণ্য করুন, কারণ এটি ঠিক তাই: আপনার সম্পূর্ণ ভল্ট ডিস্কে প্লেইন টেক্সট আকারে থাকে। এটি এক্সপোর্ট করুন, ইমপোর্ট করুন এবং একবারে ডিলিট করে ফেলুন। এটি কখনোই ইমেইল বা চ্যাটের মাধ্যমে পাঠাবেন না।

মাইগ্রেশনের সময় একটি সাধারণ ভুল অনেকেই করেন। আপনার অ্যাকাউন্টের সাথে যুক্ত একটি এনক্রিপ্টেড এক্সপোর্ট অন্য কোনো অ্যাকাউন্টে ইমপোর্ট করা যায় না, আর সার্ভার পরিবর্তনের অর্থই হলো নতুন অ্যাকাউন্ট। এর পরিবর্তে পাসওয়ার্ড দিয়ে সুরক্ষিত এক্সপোর্ট অপশনটি বেছে নিন, যা পোর্টেবল।

Vaultwarden থেকে Bitwarden স্ট্যান্ডার্ডে মাইগ্রেশন করা কিছুটা কঠিন, কারণ এক্সপোর্টের মাধ্যমে অর্গানাইজেশন স্ট্রাকচার স্থানান্তরিত হয় না। আপনাকে নতুন সার্ভারে পুনরায় অর্গানাইজেশন তৈরি করতে হবে, ব্যবহারকারীদের পুনরায় আমন্ত্রণ জানাতে হবে এবং প্রতিটি ব্যবহারকারীকে তাদের নিজস্ব ভল্ট ইমপোর্ট করতে হবে। শেষ মুহূর্তে সমস্যা এড়াতে এর জন্য আগে থেকেই একটি মেইনটেন্যান্স উইন্ডো পরিকল্পনা করে রাখুন।

আপনার কোনটি চালানো উচিত?

আপনি যদি একজন ব্যক্তি, একটি পরিবার বা 1 GB বা 2 GB VPS-এ কোনো হোম ল্যাব ব্যবহারকারী হন, তবে Vaultwarden চালান। Organisations, Emergency Access এবং Send এখানে বিনামূল্যে পাওয়া যায়, অলস অবস্থায় এটি একটি ব্রাউজার ট্যাবের সমান মেমরি খরচ করে এবং এর ব্যাকআপ হিসেবে একটি SQLite ফাইল ও একটি ছোট ডিরেক্টরিই যথেষ্ট। এই বৈশিষ্ট্যের কারণেই এটি self-hosted পাসওয়ার্ড ম্যানেজমেন্টে সবচেয়ে জনপ্রিয়।

যখন অন্য কোনো ব্যক্তি পেশাগতভাবে এর ওপর নির্ভরশীল থাকে, তখন Bitwarden-এর নিজস্ব সার্ভার চালান: যেমন কোনো কোম্পানি যাদের সাপোর্ট কন্ট্রাক্ট প্রয়োজন, কোনো কমপ্লায়েন্সের শর্ত যেখানে নির্দিষ্ট ভেন্ডরের নাম উল্লেখ থাকে, অথবা এন্টারপ্রাইজ ফিচার যার জন্য আপনি ইতিমধ্যে অর্থ প্রদান করছেন। স্ট্যান্ডার্ড ডেপ্লয়মেন্টের জন্য 4 GB মেমরি বরাদ্দ করুন এবং লাইসেন্স ফাইল ও ইন্সটলেশন ID-কে কাগজের নথির পরিবর্তে ডেপ্লয়মেন্টের অংশ হিসেবে বিবেচনা করুন।

Bitwarden lite একটি অস্বস্তিকর মধ্যবর্তী অবস্থানে রয়েছে। এটি ভেন্ডরের কোড কিন্তু অনেক হালকা, যা সত্যিই আকর্ষণীয়, তবে Bitwarden এটিকে ব্যক্তিগত এবং হোম ল্যাব ব্যবহারের জন্য নথিবদ্ধ করেছে এবং এতে কোনো স্বয়ংক্রিয় ব্যাকআপ নেই। এখানে আপনি Vaultwarden-এর ফ্রি ফিচার সেট ছাড়াই এর অপারেশনাল লোড বহন করছেন। যখন আপনার কাছে ফিচারের চেয়ে ভেন্ডর কোড বেশি গুরুত্বপূর্ণ এবং আপনি নিজে ডাটাবেস পরিচালনা করতে স্বাচ্ছন্দ্যবোধ করেন, তখনই এটি বেছে নিন।

আপনি যদি এখনও সিদ্ধান্ত না নিয়ে থাকেন যে এই সার্ভারে আর কী কী হোস্ট করবেন, তবে wide self-hosting shortlist এই পছন্দটিকে একই RAM-এর জন্য প্রতিদ্বন্দ্বী অন্যান্য সার্ভিসের পাশাপাশি উপস্থাপন করে।

FAQ

Vaultwarden কি বাস্তব ব্যবহারের জন্য যথেষ্ট নিরাপদ password manager?

ব্যক্তিগত ও পারিবারিক ব্যবহারের জন্য, কিছু শর্তসাপেক্ষে হ্যাঁ। vault server-এ পৌঁছানোর আগেই clients vault encrypt করে। তাই Vaultwarden আপনার master password বা কোনো plaintext দেখে না। এটি বাহ্যিকভাবে পর্যালোচিত হয়েছে। BSI 2024 সালের February থেকে May-এর মধ্যে mgm security partners-কে দিয়ে এর পরীক্ষা করিয়েছে, এবং ERNW একটি authentication bypass-এর কথা জানিয়েছিল, যা 1.32.5-এ ঠিক করা হয়েছে। Version বর্তমান রাখুন। Admin page disabled রাখুন অথবা একটি Argon2 hashed ADMIN_TOKEN-এর পেছনে রাখুন। এটি শুধু HTTPS-এর মাধ্যমে পরিবেশন করুন। Vendor support বা audit documentation প্রয়োজন এমন ব্যবসার Bitwarden-এর নিজস্ব server চালানো উচিত।

Bitwarden self-hosted-এর তুলনায় Vaultwarden-এর কত RAM প্রয়োজন?

docker stats --no-stream দিয়ে মাপা idle install-এ, SQLite-সহ Vaultwarden একটি container-এ প্রায় 58 MB RAM ব্যবহার করেছে। Bitwarden-এর standard deployment 12টি container জুড়ে প্রায় 2,400 MB ব্যবহার করেছে। এর বেশির ভাগ MSSQL database-এর জন্য ব্যবহৃত হয়েছে। Bitwarden standard stack-এর জন্য 2 GB minimum এবং 4 GB recommended হিসেবে উল্লেখ করে। Bitwarden lite-এর জন্য 200 MB প্রয়োজন। Vaultwarden 1 GB VPS-এও পর্যাপ্ত অতিরিক্ত RAM-সহ চলে।

Self-host করার জন্য কি আমার Bitwarden licence প্রয়োজন?

Free individual vault-এর জন্য নয়। Server চালানো free। Premium individual feature এবং paid organisation plan চালু করতে licence file প্রয়োজন। Families এবং Enterprise হলো একমাত্র organisation plan, যেগুলো Bitwarden আপনাকে self-host করতে দেয়। Cloud web vault থেকে licence file download করে আপনার instance-এ upload করুন। ./bwdata/env/global.override.env-এ সংরক্ষিত installation ID-এর ভিত্তিতে organisation licence দেওয়া হয়। Vaultwarden-এর কোনো licence প্রয়োজন নেই এবং এটি নিজেই organisation feature চালু করে।

পরে কি Vaultwarden থেকে Bitwarden-এ, অথবা আবার Bitwarden থেকে Vaultwarden-এ যেতে পারব?

হ্যাঁ, উভয় দিকেই clients-এর মাধ্যমে যেতে পারবেন। প্রত্যেক user web vault বা desktop app থেকে নিজের vault export করবেন। এরপর নতুন server-এ account তৈরি করে সেখানে vault import করবেন। .zip export-এ individual vault-এর attachments থাকে। JSON format-এ cards, identities, passkeys এবং SSH keys থাকে। কোনো export format-এ Trash items এবং Sends থাকে না। Organisation-এর মালিকানাধীন items-ও owner-কে আলাদাভাবে export করতে হয়। তাই নতুন server-এ organisation পুনরায় তৈরি করে users-দের আবার invite করার পরিকল্পনা রাখুন।

এই লেখাটি কি কাজে লেগেছে?

#vaultwarden#bitwarden#password-manager#self-hosting#docker