مدیریت رمز عبور خود میزبانی شده با Dokku
چرا؟
من در چند سال گذشته به 1Password اعتماد کردم، قوی است و بسیار کاربر پسند است. با این حال، این نوع از سرویس ها اهداف اصلی برای حملات هستند، یکی از نمونه های محبوب مورد Lastpass است. مطمئناً کار جالبی نیست که اطلاعات حساس شما در یک نقض داده دیگر منتشر شود. همچنین، امروزه حریم خصوصی بسیار ارزشمند است، هر کسی که داده ها را داشته باشد، قدرت دارد.
در حین بررسی گزینه های متن باز، vaultwarden را پیدا کردم، سرور غیر رسمی سازگار با Bitwarden که به زبان Rust نوشته شده است.
انتقال داده ها به صورت دستی یک فرآیند خسته کننده است، بنابراین من ابتدا بررسی کردم که چگونه با Bitwarden خواهد بود. سورپرایز، تعجب، آنها همه چیز را دارند! لازم نیست این کار را با دست انجام دهید، این برنامه از محبوب ترین مدیران رمز عبور پشتیبانی می کند.
وب – صفحه داده های وارداتی
PS: کشف یک رابط کاربری به خوبی انجام شده باعث آرامش شد، در اینجا یک اسپویلر وجود دارد:
برنامه 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 تکرار کرد.
اکنون، با دانستن اینکه رمزهای عبور شما به طور ایمن ذخیره می شوند و در هر زمان و هر کجا که به آنها نیاز داشته باشید، به راحتی قابل دسترسی هستند، می توانید خیالتان راحت باشد.
کد منبع موجود در Github.
برو وب سایت من https://sjdonado.de را بررسی کن، یک خط به من بزن. اگر نظر یا پیشنهادی دارید در نظرات با ما در میان بگذارید 🙂
هک مبارک!