Merhaba, bu yazımda Google Cloud üzerinde Vaultwarden şifre yöneticisinin kurulumunu yapacağız. Bu kurulum sayesinde şifrelerinizi Cloud üzerinde, üstelik herhangi bir ücret ödemeden, saklayabilecek, yönetebilecek ve hatta paylaşabileceksiniz. Gelin kurulum öncesinde size kısaca sistemden bahsedeyim.
Kurgulayacağımız Sistem Hakkında
Vaultwarden
Öncelikle kullanacağımız Vault sisteminin adı Vaultwarden. Bu yazılım Bitwarden’ın Premium feature’larının sağlandığı, lightweight bir unofficial versiyonu. Ancak gözünüzü korkutmasın, Bitwarden ile aynı şekilde açık kaynak kodlu olan Vaultwarden’ın arkasında büyük bir Community ve Support bulunmakta. Vaultwarden hakkında daha fazla bilgi almak, sağladığı Premium Feature’ları görmek için Link’i ziyaret edebilirsiniz.
Google Cloud
Sanal makinemizi barındıracağımız ortam için Google Cloud’u tercih ediyorum. Sebebi ise ÜCRETSİZ olması. Bunu sağlamak için de Google’ın Free Tier kapsamındaki VM sınırlandırmasını incelemek gerekiyor:
- VM Instance’ı
e2-micro
kategorisinde oluşturulmalı. - Aşağıdaki zone’lardan birinde bulunmalı:
- Oregon:
us-west1
- Iowa:
us-central1
- South Carolina:
us-east1
- Oregon:
- 30 GB Standart diskin üzerine çıkılmamalı.
- Amerika dışından aylık en fazla 1 GB Network trafiğine sahip olmalı.
Burada saydığımız ilk 3 adımdaki limitasyonu VM kurulumu sırasında tek bir satır komut ile, 4. adımı ise CloudFlare üzerinde yapacağımız Proxy tanımlaması ile halledeceğiz.
CloudFlare
Kurulum sırasında kullanacağım melihcelik.org domain adresime ait kayıtların CloudFlare’de olması, kolay yönetilebilmesi ve Proxy hizmeti sağlaması sebebiyle DNS kayıtlarımı CloudFlare üzerinde tanımlıyor olacağım. Burada kullanacağımız Proxy özelliği sayesinde Network trafiğimizi Amerika’ya taşımış olacağız.
Kurulum
1 -) Google Cloud Tarafındaki Düzenlemeler
Projenin Oluşturulması
Öncelikle Google Cloud üzerinde yeni bir proje oluşturuyoruz. Ben projenin ismini vaultwarden-demo-project
olarak belirledim.
Proje İçin Compute Engine API Aktif Edilmesi
Şimdi projemizi seçelim.
Ardından arama kısmından “Compute Engine API” ‘ı bulalım.
Şimdi API’ı proje için aktif hale getirelim. Bu özellik sayesinde Cloud ortamında VM Instance’lar kurabiliyor olacağız.
GCloud CLI’ın Açılması
Buradan sonra VM kurma ve yönetme dahil Cloud tarafındaki tüm işlemlerimizi CLI üzerinden yapacağız. Bunun için sağ üstten CLI’ı açalım.
CLI’da Projenin Seçilmesi
CLI üzerinde işlem yapmadan önce hangi projede çalışacağımızı belirlememiz gerekmekte. Projelerinizi görmek için:
gcloud projects list
Buradaki PROJECT_ID değerini kullanarak işlem yapacağımız projeye geçelim:
gcloud config set project vaultwarden-demo-project
VM’in Kurulması
Aşağıdaki komutu kullanarak vaultwarden-demo
isminde, Free Tier kapsamına uygun yeni bir VM oluşturabiliriz:
gcloud compute instances create vaultwarden-demo \
--machine-type e2-micro \
--zone us-central1-a \
--image-project cos-cloud \
--image-family cos-stable \
--boot-disk-size=30GB \
--tags http-server,https-server \
--scopes compute-rw
Komut çalıştıktan sonra aşağıdakine benzer bir çıktı almış olacağız:
Ekran görüntüsünde kırmızı kutu içerisinde belirttiğim EXTERNAL_IP değerini kenara not edelim. Şimdi CloudFlare tarafındaki DNS Record işlemlerine devam edebiliriz.
2 -) CloudFlare Kayıt ve Proxy Düzenlemeleri
A Kaydının Oluşturulması
İşlem yapılacak Website’ın panelinden DNS -> Records a giriyoruz. Ardından A kaydımızı oluşturuyoruz. Ben erişeceğim sayfayı vaultwardendemo.melihcelik.org olacak şekilde ayarlayıp, bir önceki adımda not aldığım EXTERNAL_IP‘yi yazıyorum. Burada dikkat etmemiz gereken nokta Proxy status’ün aşağıdaki gibi açık olması.
TLS Modunun Değiştirilmesi
SSL/TLS -> Overview sekmesinden TLS modunu Full (strict) olacak şekilde ayarlıyorum. Bu sayede Proxy ayarında yaşayabileceğim Encrpytion hatalarının önüne geçmiş oluyorum.
CloudFlare Global API Token’ın Alınması
Kurulumu yapacağımız script’in Cloudflare üzerinden işlem yapabilmesi için API Token’ını sisteme tanımlamamız gerekmekte. Global Token değerini öğrenmek için de Profil ayarlarımızı açtıktan sonra API Tokens sekmesini açıyor ve fotoğraftaki “Global API Key” satırının sonundaki View’a tıklıyoruz. Açılan penceredeki Token’ı not edip diğer adımlarla kurulumumuza devam ediyoruz.
3 -) Vaultwarden Kurulumu
Port Tanımlamaları
VM’e 443 ve 80 portlarından erişimi aşağıdaki komutlar ile açıyoruz.
gcloud compute firewall-rules create vaultwarden-demo-http-ingress --action allow --target-tags http-server --rules tcp:80
gcloud compute firewall-rules create vaultwarden-demo-https-ingress --action allow --target-tags https-server --rules tcp:443
VM’e SSH İle Erişim Sağlanması
Console üzerinden VM’e SSH yapmak için aşağıdaki komutu kullanıyoruz. İlk satırda gelen zone tavsiyesine no cevabını verip, VM’e giriş yapıyoruz.
Reponun Çekilmesi Ve Container’ların Oluşturulması
Vaultwarden’ın düzgün ve stabil bir şekilde çalışması için “dadatuputi” GitHub kullanıcısının oluşturduğu bitwarden_gcloud reposundan gerekli dosyaları indiriyor ve Docker Container’larının oluşmasını aşağıdaki kodlar ile sağlıyoruz.
git clone https://github.com/dadatuputi/bitwarden_gcloud.git
cd bitwarden_gcloud
sh utilities/install-alias.sh
source ~/.bashrc
docker-compose version
.env Dosyasının Düzenlenmesi
Öncelikle .env.template
dosyasını .env
olarak kopyalıyoruz.
cp .env.template .env
Ardından dosyayı düzenliyoruz.
nano .env
Burada değiştirmemiz gereken en temel 3 değer bulunuyor:
- DOMAIN=vaultwardendemo.melihcelik.org
- TZ=Europe/Istanbul
- EMAIL=melihcelik@cloud4next.com
Bu değerleri değiştirdikten sonra CTRL+X ardından Y ve Enter basarak dosyamızı kaydedip kapatıyoruz.
Caddyfile Dosyasının Düzenlenmesi
Cloudflare tarafında Proxy seçeneğini aktifleştirdiğimiz için Caddyfile dosyasını düzenliyoruz.
nano caddy/Caddyfile
Ekran görüntüsünde kırmızı ile işaretlenen satırı:
header_up X-Real-IP {http.request.header.Cf-Connecting-Ip}
DDNS Dosyasının Düzenlenmesi
Gerekli dosyanın oluşması için Docker Container’larının geçici olarak ayağa kalkması gerekmekte. Bunu sağlamak için aşağıdaki komutu kullanıyoruz.
docker-compose up -d
Öncelikle root kullanıcısına geçiş yapalım.
sudo su
Ardından DDNS ayarlarını yapacağımız ddclient.conf dosyasını editliyoruz (Fotoğraftaki zone, login, passworde ve en alttaki url kısmını ihtiyaca uygun olacak şekilde değiştirelim).
nano ddns/ddclient.conf
use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address
protocol=cloudflare
zone=<your cloudflare site / base URL / e.g. example.com>
ttl=0
login=<your e-mail>
password=<GLOBAL API KEY FOUND UNDER [MY PROFILE]-> [API TOKENS] IN CLOUDFLARE>
<your bitwarden site subdomain / e.g. bw.example.com>
Kaydedip kapattıktan sonra exit
komutu ile root kullanıcısından çıkıyoruz.
Sistemin Ayağa Kaldırılması
Artık kurulum için bütün işlemleri tamamlamış bulunmaktayız. Container’leri down-up ederek sistemi aktif hale getiriyoruz.
docker-compose down && docker-compose up -d
Herhangi bir sorun olmaması durumunda komut çalıştıktan yaklaşık 1 dakika sonra container’ları aşağıdaki gibi healthy durumda görebiliriz.
Final
Artık her şeyimiz hazır durumda. Kendi sistemime erişmek için tarayıcım üzerinden vaultwardendemo.melihcelik.org ‘a erişiyorum ve…
Login ekranı bizi bekliyor. Burada “Create account” seçeneğine tıklayarak yeni bir hesap oluşturuyoruz ve ardından sisteme giriş sağlıyoruz. Daha sonrasında Register özelliğini disable ederek yeni kullanıcın sadece davet linki üzerinden kayıt olmasını sağlayabilir, sistemimizi güvenli ve sağlıklı bir şekilde kullanmaya başlayabiliriz.
Unutmamak adına Vaultwarden’ı kullanmak istediğimiz herhangi bir platform için (hemen hemen her platformda desteği bulunmakta) Bitwarden Official uygulamalarını kullanabiliriz. Desteklenen platform ve indirmeler Link’i ziyaret edebilirsiniz.
Yazımı okuduğunuz için teşekkür ederim.
Öneri ve sorularınızı yorum, mail veya linkedin üzerinden iletebilirsiniz.
Çok detaylı ve yalın bir dille anlatımı olmuş, emeğinize sağlık. Teşekkür ederim.
Güzel yorumunuz için teşekkür ederim. Umarım yararlı olmuştur.