Vestyn, HTTPS ters vekil sunucunuzun arkasında Postgres kullanan bir Docker sistemi olarak çalışır. Kasa verilerinizin bulunmasını istediğiniz bir VPS'e, ev sunucusuna veya NAS'a kurun.
Docker Compose v2 çalıştıran, yaklaşık 1 GB RAM'e sahip ve alan adınızı yönlendirebileceğiniz bir sunucu. amd64 ve arm64 mimarileri desteklenir.
Yeni bir örnekte kaydedilen ilk hesap yönetici olur; sonraki tüm hesaplar davet gerektirir.
VESTYN_IMAGE_TAG değerini bir sürüme sabitleyin, güncellemeleri bilinçli uygulayın ve Postgres ile imzalama anahtarını yedekleyin.
Vestyn, yayımlanmış iki konteyner imajı ve Postgres ile sunulur. Aşağıdaki iki dosyayı sunucunuza kopyalayıp sistemi başlatın. Kaynak kod erişimi hakkında: Vestyn AGPL-3.0 ile lisanslanmıştır; ancak proje kapalı alfa aşamasındayken kaynak kod deposu henüz herkese açık değildir. Depoyu açmadan önce güvenlik ve geçmiş incelemesi yapıyoruz. Bu sırada kendi sunucunuzda çalıştırabilmeniz için derleme kaynağı ve SBOM doğrulamaları bulunan hazır imajlar yayımlanır. Güncel sürümü oluşturan kaynak kodu şuradan indirebilirsiniz: Karşılık Gelen Kaynak Kodu arşivi.
Sistem için bir dizin oluşturun ve aşağıdaki Compose dosyasını buraya kaydedin. İki dosya da aynı dizinde bulunmalıdır; Compose .env dosyasını kabuğun geçerli dizininden değil, Compose dosyasının bulunduğu dizinden okur.
Şu adla kaydedin: docker-compose.yml:
Sabitlenmiş server/web imajlarının Karşılık Gelen Kaynak Kodu: eşleşen kaynak arşivini indirin.
Bunu Compose dosyasının yanına .env adıyla kaydedin. POSTGRES_PASSWORD tek zorunlu değerdir; sistem bu değer olmadan başlamaz.
En son yayımlanan sürüm için değişiklik günlüğüne bakın ve server ile web imajlarını aynı etikette tutun.
Compose imajları çeker, Postgres'i başlatıp hazır olmasını bekler, ardından API'yi ve web arayüzünü çalıştırır. API veritabanı geçişlerini açılışta otomatik uygular; ilk kurulumda veya güncellemede ayrı bir geçiş adımı yoktur.
api ile web sağlıklı olarak bildirildiğinde kasa şu adreste çalışır: http://localhost:8080. Hesap oluşturmadan önce TLS'i etkinleştirin; ana parolanızı bu sayfaya gireceksiniz.
Web konteyneri yayımlanan portta düz HTTP kullanır. TLS, ters vekil sunucunuzun görevidir. Caddy ile iki satırda otomatik sertifika alabilirsiniz:
Traefik ve nginx Proxy Manager da aynı şekilde çalışır; onları aynı porta yönlendirin. Ardından APP_URL in .env değerini gerçek adresiniz olarak ayarlayın; böylece davet bağlantıları doğru sunucu adını kullanır. Ayarı yüklemek için API'yi yeniden başlatın:
Ters vekil ile Vestyn konteyneri arasındaki trafik Docker ağı içinde düz HTTP kullanır. Bu, ikisi aynı sunucuda veya güvenilir bir özel ağda çalışırken güvenli olan standart kendi sunucunda barındırma modelidir. Sunucu her durumda yalnızca şifreli veri tutar. Şifrelemenin işleyişi →
Alan adınızı tarayıcıda açıp kaydolun. Yeni bir örnekte oluşturulan ilk hesap yönetici olur — ve davetsiz oluşturulabilecek tek hesaptır. Bir deneme hesabı değil, kendi hesabınızı oluşturun.
Başka kişiler eklemek için yönetici olarak giriş yapın, Ayarlar → Üyeler ve Davetler bölümüne gidin ve bir davet bağlantısı oluşturun. Bağlantılar tek kullanımlık bir belirteç taşır, 7 gün sonra sona erer ve yalnızca bir kez çalışır. Geçerli davet olmadan kayıt sunucu tarafından reddedilir.
Ardından Mac uygulamasını açın ve ilk çalıştırmada sunucunuzun adresini girin. Uygulamaları indirin →
.env dosyasındaki VESTYN_IMAGE_TAG değerini istediğiniz sürüme ayarlayın; ardından imajları çekip konteynerleri yeniden oluşturun. İki imajı da aynı etikette tutun.
Yeni API konteyneri başladığında geçişler otomatik çalışır. Üretim örneğini güncellemeden önce aşağıdaki şekilde veritabanı dökümü alın.
İki adlandırılmış disk bölümü önemli olan her şeyi saklar. Kasa içeriği cihazlarınızda şifrelenir; ancak kaybolan bir veritabanı yine de kaybolan bir kasa demektir. Sunucu onu yeniden oluşturamaz.
| Disk bölümü | İçerik |
|---|---|
| vestyn_db-data PostgreSQL | Hesaplar, kasa üyelikleri ve tüm şifreli öğeler. Bunu kaybetmek kasayı kaybetmektir. |
| vestyn_api-data signing.key | Erişim belirteçlerini imzalar. Kaybolursa herkesin oturumu kapanır, ancak veri kaybı olmaz. |
Veritabanı dökümlerini düzenli alın ve bu sunucudan farklı bir yerde saklayın. --clean --if-exists seçenekleri, dökümün mevcut nesneleri yeniden oluşturmadan önce kaldırmasını sağlar; böylece geri yükleme mevcut şema geçişleriyle çakışmaz:
İmzalama anahtarını bir kez yedekleyin; bu anahtar değişmez:
Dosyanın disk bölümüne sunucunun root olmayan kullanıcısının beklediği sahiplikle yazılması gerektiğinden, geri yükleme için docker compose cp yerine yardımcı bir konteyner kullanın:
Veritabanını geri yüklediğinizde tüm hesaplar ve kasalar geri gelir. İmzalama anahtarını da yüklerseniz etkin oturumlar korunur; yüklemezseniz herkes yeniden giriş yapar. Her iki durumda da veri kaybı olmaz. Geri yüklemeyi ihtiyaç duymadan önce prova edin.
docker compose down sistemi durdurur ve verilerinizi korur. docker compose down -v disk bölümlerini ve içlerindeki her şeyi siler; bu işlem geri alınamaz.