برنامه نویسی

مدیریت رمز عبور خود میزبانی شده با Dokku

چرا؟

من در چند سال گذشته به 1Password اعتماد کردم، قوی است و بسیار کاربر پسند است. با این حال، این نوع از سرویس ها اهداف اصلی برای حملات هستند، یکی از نمونه های محبوب مورد Lastpass است. مطمئناً کار جالبی نیست که اطلاعات حساس شما در یک نقض داده دیگر منتشر شود. همچنین، امروزه حریم خصوصی بسیار ارزشمند است، هر کسی که داده ها را داشته باشد، قدرت دارد.

در حین بررسی گزینه های متن باز، vaultwarden را پیدا کردم، سرور غیر رسمی سازگار با Bitwarden که به زبان Rust نوشته شده است.

انتقال داده ها به صورت دستی یک فرآیند خسته کننده است، بنابراین من ابتدا بررسی کردم که چگونه با Bitwarden خواهد بود. سورپرایز، تعجب، آنها همه چیز را دارند! لازم نیست این کار را با دست انجام دهید، این برنامه از محبوب ترین مدیران رمز عبور پشتیبانی می کند.

وب – صفحه داده های وارداتی
صفحه داده های واردات Bitwarden

PS: کشف یک رابط کاربری به خوبی انجام شده باعث آرامش شد، در اینجا یک اسپویلر وجود دارد:

برنامه macOS
برنامه macos

برای اینکه آن را مقرون به صرفه کنم، تصمیم گرفتم از تنظیمات Dokku فعلی خود استفاده کنم که در Google Cloud میزبانی شده و توسط Ubuntu 20.04 پشتیبانی می شود. اگر نام Dokku را نشنیده اید، این فرصتی است که آن را امتحان کنید https://dokku.com/docs/getting-started/installation/.

بنابراین، با در نظر گرفتن مزایا و زیرساخت های مورد نیاز، در اینجا نحوه انجام این کار آمده است.

پیش نیازها

قبل از شروع، بررسی کنید که قبلاً موارد زیر را دارید:

  • یک سرور با Dokku نصب شده است
  • یک نام دامنه (letsencrypt آن را بررسی می کند)
  • ماشین محلی با Docker، Git و هر مشتری SSH

گام به گام

1. گواهینامه های TLS را تنظیم کنید

از طریق SSH وارد سرور خود شوید و دستور زیر را اجرا کنید:
(با تشکر از اکوسیستم پلاگین Dokku، فقط یک خط است)

# plugin installation requires root, hence the user change
sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. برنامه Dokku را ایجاد کنید

افزونه Dokku Proxy از نسخه 0.5.0 ساخته شده است

dokku apps:create bitwarden

# example: dokku domains:set bitwarden mypasswords.sjdonado.de
dokku domains:set bitwarden yourdomain.com

dokku letsencrypt:enable bitwarden
# enable the automatic renewal of certificates 
dokku letsencrypt:cron-job --add

# replace default proxy port
dokku config:set bitwarden DOKKU_PROXY_PORT_MAP="http:80:80 https:443:80"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. پایگاه داده را راه اندازی کنید

ما از افزونه PostgreSQL استفاده خواهیم کرد

# setup plugin
sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git

# create a new database for our app
dokku postgres:create bitwarden

# link the postgres service to the app, DATABASE_URL will be attached to the ENV variables automatically. 
dokku postgres:link bitwarden bitwarden
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. ذخیره سازی دائمی را تنظیم کنید

ما می توانیم از افزونه داخلی Dokku Storage استفاده کنیم

dokku storage:ensure-directory bitwarden

dokku storage:mount bitwarden /var/lib/dokku/data/storage/bitwarden:/data
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. متغیرهای ENV را تنظیم کنید

به‌طور پیش‌فرض، Bitwarden برای ثبت‌نام‌های عمومی باز است، اگرچه می‌توانیم با تنظیم آن را به فقط دعوت محدود کنیم. SIGNUPS_ALLOWED به نادرست و ارائه معتبر ADMIN_TOKEN.

ما استفاده می کنیم argon2 برای تولید یک رشته PHC برای ADMIN_TOKEN متغیر ENV

# skip this line if you are a linux user
docker run --rm -it ubuntu

$ apt update && apt install openssl argon2
$ echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای SMTP_ متغیرها، با خیال راحت از سرور SMTP خود یا راه حل های تجاری با لایه آزاد مانند sendgrid استفاده کنید.

dokku config:set bitwarden \
  DOMAIN=https://mypasswords.sjdonado.de \
  SIGNUPS_ALLOWED=false \
  ADMIN_TOKEN='$argon2id...' \
  SMTP_HOST=smtp.sjdonado.de \
  SMTP_FROM=vaultwarden@sjdonado.de \
  SMTP_PORT=587 \
  SMTP_SECURITY=starttls \
  SMTP_USERNAME= \
  SMTP_PASSWORD=
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. Dockerfile را ایجاد کنید

بیایید یک پوشه برای پروژه ایجاد کنیم، Dockerfile و git مقداردهی اولیه

mkdir yourfolder && cd yourfolder
git init
touch Dockerfile
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

yourfolder/Dockerfile

FROM vaultwarden/server:latest

EXPOSE 80

ENV DB=postgresql
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. مستقر کنید

ما تقریباً آنجا هستیم! قبل از اینکه تغییرات را اعمال کنیم، باید URL راه دور dokku را تنظیم کنیم

git remote add dokku-bitwarden dokku@yourdomain.com:bitwarden
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و در نهایت

git add -A && git commit -m "My bitwarden Dockerfile"
git push dokku master

# output:
git push using:  dokku master
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 551 bytes | 551.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
-----> Cleaning up...
-----> Building bitwarden from Dockerfile
remote: #1 [internal] load build definition from Dockerfile
remote: #1 transferring dockerfile: 65B done
remote: #1 DONE 0.0s
remote: 
remote: #2 [internal] load .dockerignore
remote: #2 transferring context: 2B done
remote: #2 DONE 0.1s
...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. همین

اکنون می توانید از طریق https://yourdomain.com/admin به پنل مدیریت دسترسی داشته باشید MySecretPassword (از مرحله 5) و دعوت نامه ها را از طریق ایمیل ارسال کنید.

پورتال مدیریت

توجه داشته باشید: هنگام نصب برنامه‌ها/افزونه‌های رسمی Bitwarden حتما دامنه خود را اضافه کنید.

برنامه افزودنی کروم
نمونه برنامه افزودنی کروم

بسته شدن

ما روند راه اندازی یک مدیر رمز عبور خود میزبان با استفاده از Dokku را بررسی کرده ایم. این را می توان به راحتی در هر ارائه دهنده IaaS تکرار کرد.

اکنون، با دانستن اینکه رمزهای عبور شما به طور ایمن ذخیره می شوند و در هر زمان و هر کجا که به آنها نیاز داشته باشید، به راحتی قابل دسترسی هستند، می توانید خیالتان راحت باشد.

gif

کد منبع موجود در Github.


برو وب سایت من https://sjdonado.de را بررسی کن، یک خط به من بزن. اگر نظر یا پیشنهادی دارید در نظرات با ما در میان بگذارید 🙂

هک مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا