رمزهای عبور · بدون KYC
میزبانی Vaultwarden روی VPS آفشور
خزانه رمز عبور سازگار با Bitwarden خودتان را روی سختافزاری که کنترلش در دست شماست اجرا کنید، در حوزه قضایی حریمخصوصیمحور، با پرداخت ارز دیجیتال و بدون اتصال به هویت شما.
این چیست
Vaultwarden یک سرور سبک و غیررسمی برای Bitwarden است که به زبان Rust نوشته شده و از همان API سرور Bitwarden پشتیبانی میکند، بنابراین تمام کلاینتهای رسمی Bitwarden (افزونههای مرورگر، نسخه دسکتاپ، iOS/Android و CLI) میتوانند با آن همگامسازی شوند. این سرور خزانههای رمزگذاریشده رمزهای عبور، پسکیها (passkey)، سیدهای TOTP، کارتها و یادداشتهای امن را همراه با سازمانها، پیوستها و کنترلهای مدیریتی ذخیره میکند، آن هم با مصرف تنها بخش کوچکی از RAM نسخه رسمی.
چرا میزبانی آفشور
خزانه رمز عبور شما حساسترین داراییای است که در اختیار دارید، پس اینکه سرور در دست چه کسی و تحت چه قانونی است، بهاندازه خود رمزگذاری اهمیت دارد. یک VPS بدون KYC و قابل پرداخت با ارز دیجیتال در یک موقعیت حریمخصوصیمحور (NL/CH/RO/IS) به این معناست که دستگاهی که خزانههای رمزگذاریشده شما را نگه میدارد، به هویت قانونی شما گره نخورده، مشمول احضاریه قضایی آمریکا یا بریتانیا نمیشود و هیچ ارائهدهنده پرداختی نمیتواند با قطع دسترسی (deplatform) آن را قفل کند.
استقرار
یک پیکربندی مرجع کاربردی
این را روی یک instance تازه از ChainVPS کپی کنید. جایگزینها را با مقادیر واقعی جایگزین کنید، سپس آن را راهاندازی کنید.
# 1) DNS: point vault.example.com -> your ChainVPS IP (A/AAAA record)
# 2) Generate an Argon2 ADMIN_TOKEN (do NOT use a plain string):
# docker run --rm -it vaultwarden/server /vaultwarden hash
# paste the resulting '$argon2id$...' string as ADMIN_TOKEN below (single-quote it in .env)
# 3) Save as docker-compose.yml, create the Caddyfile shown, then: docker compose up -d
services:
vaultwarden:
image: vaultwarden/server:1.32.7
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com" # must match the public URL exactly
SIGNUPS_ALLOWED: "false" # create your account, then keep this false
INVITATIONS_ALLOWED: "true"
ADMIN_TOKEN: "${ADMIN_TOKEN}" # Argon2 hash from step 2, kept in .env
WEBSOCKET_ENABLED: "true" # live sync (served on the main port)
SENDS_ALLOWED: "true"
ROCKET_PORT: "80"
volumes:
- ./vw-data:/data # vaults, attachments, sqlite db, keys
networks: [vw]
# no host port published: only Caddy talks to it over the internal network
caddy:
image: caddy:2
container_name: vaultwarden-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp" # HTTP/3
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
networks: [vw]
depends_on: [vaultwarden]
networks:
vw:
# ---- Caddyfile (same directory) ----
# vault.example.com {
# encode gzip
# reverse_proxy vaultwarden:80
# }
# Caddy fetches and renews a Let's Encrypt cert automatically; HTTPS is mandatory
# because Bitwarden clients use WebCrypto, which only runs on a secure origin.
فایروال
پورتهایی که باید باز شوند
| پورت | پروتکل | هدف |
|---|---|---|
| 443 | TCP | خزانه HTTPS + همگامسازی کلاینت + WebSocket (از طریق Caddy)؛ تنها پورتی که باید عمومی باشد |
| 80 | TCP | ریدایرکت HTTP به HTTPS و صدور گواهی ACME/Let's Encrypt |
| 443 | UDP | HTTP/3 (QUIC) اختیاری برای همگامسازی سریعتر کلاینت |
تعیین اندازه مناسب
به کدام پلن نیاز دارید
VPS Nano/Small (1 vCPU, 1-2 GB RAM)
Vaultwarden در حالت بیکار حدود 15-30 مگابایت RAM روی SQLite مصرف میکند؛ پلن Nano برای این کار کاملاً کافی است. فضای ذخیرهسازی مورد نیاز ناچیز است مگر اینکه پیوستهای بزرگ ذخیره کنید.
VPS Pro (2 vCPU, 4 GB RAM)
فضای کافی برای همگامسازیهای همزمان، پیوستها و اجرای Caddy بههمراه fail2ban/پشتیبانگیری روی همان سرور.
VPS Pro (رده بالا) یا پلن ورودی Dedicated
از SQLite به Postgres/MySQL مهاجرت کنید و پیوستها را روی یک پلن Storage یا دیسک بزرگتر قرار دهید؛ CPU اختصاصی باعث میشود تأخیر همگامسازی حتی زیر بار سنگین ثابت بماند.
بهترین مکانها: برای خزانه خود یک موقعیت حریمخصوصیمحور از ChainVPS انتخاب کنید: سوئیس (CH) و ایسلند (IS) سنتی قوی در حفاظت از داده و حریم خصوصی دارند، هلند (NL) اتصال عالی همراه با قانون حریم خصوصی اتحادیه اروپا ارائه میدهد، و رومانی (RO) یا مولداوی (MD) خارج از سختگیرترین بلوکهای اشتراکگذاری نظارتی قرار دارند. نزدیکترین موقعیت جغرافیایی به جایی که شما و کاربرانتان از آن همگامسازی میکنید را انتخاب کنید تا تأخیر به حداقل برسد، چون در هر صورت خزانه در سمت کلاینت رمزگذاری میشود.
آن را قفل کنید
چکلیست سختسازی امنیتی
- پس از ساخت حساب خود، SIGNUPS_ALLOWED=false را حفظ کنید و برای افزودن کاربران از INVITATIONS استفاده کنید؛ یک نقطه ثبتنام باز روی خزانهای عمومی، مقصدی برای سوءاستفاده است.
- همیشه ADMIN_TOKEN را برابر یک هش Argon2 تولیدشده با 'vaultwarden hash' قرار دهید (هرگز یک رشته متنی ساده)، یا با خالی گذاشتن ADMIN_TOKEN پس از پیکربندی اولیه، پنل /admin را بهطور کامل غیرفعال کنید. همچنین محدود کردن دسترسی /admin تنها به IP خودتان از طریق فایروال را در نظر بگیرید.
- فقط HTTPS را اجباری کنید و مدیریت گواهیهای Let's Encrypt را به Caddy بسپارید؛ کلاینتهای Bitwarden از اجرای رمزنگاری روی HTTP ساده خودداری میکنند، و یک گواهی معتبر از حملات downgrade/MITM روی همگامسازی جلوگیری میکند.
- از دایرکتوری ./vw-data (بهویژه rsa_key.pem، config.json، db.sqlite3 و پیوستها) بهصورت زمانبندیشده در مکانی خارج از سرور مانند یک پلن Storage در ChainVPS پشتیبان بگیرید؛ از دست دادن rsa_key.pem تمام نشستها/توکنهای موجود را نامعتبر میکند.
- fail2ban را روی لاگ Vaultwarden (LOG_FILE + LOG_LEVEL) اجرا کنید تا تلاشهای ورود بروتفورس مسدود شوند، و از هر کاربر بخواهید 2FA را فعال کند؛ فقط پورتهای 80/443 را از طریق ufw/nftables باز بگذارید و بقیه را مسدود کنید.
پرسشها
هاستینگ Vaultwarden — سوالات متداول
آیا Vaultwarden همان Bitwarden است؟
خیر، این یک پیادهسازی جداگانه و سبک از API سرور Bitwarden است. این سرویس توسط شرکت Bitwarden Inc. ساخته نشده، اما اپلیکیشنها و افزونههای رسمی Bitwarden بهخوبی با آن کار میکنند و از خزانهها، سازمانها، پیوستها، Sends و پسکیها پشتیبانی میکند. این گزینه برای افراد و تیمهای کوچکی که میخواهند بدون مصرف منابع سنگین نسخه رسمی، میزبانی شخصی داشته باشند، ایدهآل است.
اگر سرور توقیف شود یا هاست هک شود، آیا دادههای من ایمن هستند؟
خزانهها با کلیدی که از رمز عبور اصلی شما مشتق میشود، در سمت کلاینت رمزگذاری و رمزگشایی میشوند، بنابراین سرور همیشه فقط متن رمزگذاریشده را ذخیره میکند. میزبانی روی سروری بدون KYC در یک حوزه قضایی حریمخصوصیمحور، تعداد نهادهایی که میتوانند دسترسی را اجباری کنند کاهش میدهد، اما همچنان باید از یک رمز عبور اصلی قوی استفاده کنید، 2FA را فعال کنید و DOMAIN را روی HTTPS نگه دارید تا خود فرایند ورود نیز محافظت شود.
آیا به HTTPS نیاز دارم یا میتوانم از یک IP ساده استفاده کنم؟
شما به HTTPS همراه با یک گواهی معتبر و یک نام دامنه نیاز دارید. کلاینتهای Bitwarden از API مرورگر WebCrypto استفاده میکنند که تنها روی origin امن کار میکند، بنابراین راهاندازی با http:// ساده یا IP خام در همگامسازی شکست میخورد. سرویس Caddy موجود در این پیکربندی بهطور خودکار یک گواهی رایگان Let's Encrypt صادر و تمدید میکند.
SQLite یا MySQL/Postgres؟
SQLite (پیشفرض) برای استفاده شخصی و تیمهای کوچک تا چند ده کاربر کاملاً مناسب و سریعترین گزینه است. تنها برای استقرارهای بزرگ و چندسازمانی یا زمانی که به پشتیبانگیری و تکرار متمرکز پایگاهداده نیاز دارید، به MySQL یا PostgreSQL مهاجرت کنید؛ DATABASE_URL را متناسب با آن تنظیم کنید.
چگونه بدون باز کردن ثبتنام عمومی کاربران را اضافه کنم؟
SIGNUPS_ALLOWED=false و INVITATIONS_ALLOWED=true را حفظ کنید، سپس کاربران را از یک Organization (یا از طریق پنل /admin) دعوت کنید. کاربران دعوتشده یک دعوتنامه دریافت میکنند و میتوانند حتی با وجود بسته بودن ثبتنام عمومی ثبتنام کنند، که این کار از سوءاستفاده از این نقطه پایانی جلوگیری میکند.
آیا میتوانم بدون ارائه مدرک شناسایی هزینه VPS را پرداخت کنم؟
بله. ChainVPS بدون KYC است و ارز دیجیتال میپذیرد، بنابراین سروری که خزانههای رمزگذاریشده شما را نگه میدارد، به هویت قانونی شما یا یک درگاه کارت بانکی که میتواند حساب را مسدود کند، وابسته نیست.
موارد بیشتر برای میزبانی شخصی
سایر استکهای تککلیکی
راهاندازی کنید Vaultwarden
در 60 ثانیه آینده.
پهنای باند نامحدود · محافظت DDoS شامل است · 21 ارز دیجیتال · بدون KYC.