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:

  1. VM Instance’ı e2-micro kategorisinde oluşturulmalı.
  2. Aşağıdaki zone’lardan birinde bulunmalı:
    1. Oregon: us-west1
    2. Iowa: us-central1
    3. South Carolina: us-east1
  3. 30 GB Standart diskin üzerine çıkılmamalı.
  4. 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:

  1. DOMAIN=vaultwardendemo.melihcelik.org
  2. TZ=Europe/Istanbul
  3. 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}
olacak şekilde düzenleyip, kaydedip kapatıyoruz.

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.