ÖğRETICILER
BTCPay Server ile Bitcoin ödemelerini kendiniz nasıl kabul edersiniz
Barındırılan her ödeme işlemcisi, sizi dondurabilecek bir şirkettir. Bu, Bitcoin kabul eden hiç kimse için varsayımsal bir durum değildir: büyük işlemciler yıllar önce kimlik doğrulama, ödeme eşikleri ve hesaba aktarım kuralları ekledi ve bu kontrollerden birine takılan bir satıcı, bunu genellikle para çoktan yoldayken öğrenir. BTCPay Server tam olarak bunun için var. Kontrolünüzdeki bir sunucuyu kendi ödeme sisteminize dönüştüren ücretsiz, açık kaynaklı bir yazılımdır — faturalar, bir satış noktası (point-of-sale) ekranı, mağaza eklentileri, Lightning — arada hiçbir şirket, kesilen hiçbir yüzde ve kaybedilecek hiçbir hesap olmadan. Kurulumu gerçekten tek bir öğleden sonra sürer. Sonucun iyi olup olmadığını asıl belirleyen şey altındaki makine, bir de varsayılan bir kurulumun sessizce size doğru işaret eden bir avuç ayrıntısıdır.
BTCPay Server gerçekte neyin yerini alır
Barındırılan bir işlemci, müşterinizle cüzdanınız arasına girer. Adresi o üretir, zinciri o izler, tutarı o çevirir, fonları bir süre o tutar ve sonunda ödemeyi size o yapar. Bu adımların her biri, işlemcinin sizin hakkınızda bir şey öğrendiği ve isterse reddedebileceği bir noktadır. BTCPay aynı işi kiraladığınız donanım üzerinde yapar; farkı yaratan, sizin hakkınızda bildiği şeyin artık bambaşka olmasıdır.
- Ödemeler doğrudan kendi cüzdanınıza düşer. BTCPay'e genişletilmiş bir genel anahtar (xpub) verirsiniz; o da her fatura için yeni bir adres türetir ve onu izler — zincir üstü ödemeler için hiçbir zaman özel anahtar tutmaz ve tek bir satoshi bile hareket ettiremez.
- Ücret yoktur, hesap da yoktur. Yazılım açık kaynaklıdır, onu siz kendiniz çalıştırırsınız; başvurulacak hiçbir şey, askıya alınabileceğiniz hiçbir şey yoktur.
- İnşa etmesi sıkıcı olan kısımları o halleder: fatura süresinin dolması, canlı kur dönüşümü, eksik ve fazla ödemeler, kısmi ödemeler, iadeler ve müşterinin bağımsız olarak doğrulayabileceği bir makbuz.
- Çoğu kişinin ihtiyaç duyduğu ön yüzlerle birlikte gelir — bir satış noktası ekranı, ödeme butonları, bir kitle fonlama sayfası, alışılagelmiş e-ticaret platformları için eklentiler — ve kendi yazılımınıza bağlamak isterseniz eksiksiz bir API.
- İsterseniz Lightning da aynı dağıtımın içinde gelir; birkaç doların altındaki ödemeleri baştan anlamlı kılan da zaten budur.
Sınırı açıkça ortaya koymakta fayda var. BTCPay, Bitcoin'i yerel paranıza çevirmez ve paranın sonunda gitmesi gereken yer bir borsa veya bankaysa bunları ortadan kaldırmaz. Kaldırdığı şey işlemcidir — payını alan, fonlarınızı arada tutan ve bunu yapmak için kimliğinizi isteyen aracı. Elinize geçen şey, kendi barındırdığınız bir web sitesiyle aynı biçimdedir: daha fazla kontrol, ve beraberinde gelen iş.
Artık ödeme işlemcisi sizsiniz
Bu iş, kendi kendine barındırmanın dürüst bedelidir ve kurulumdan sonra değil önce anlaşılması çok daha iyidir. Çalışma sürenizi izleyen kimse yoktur, yedeğinizi geri yükleyen kimse yoktur ve bir müşteri ödediğinde ısrar edip siz bunu göremediğinizde destek hattının diğer ucunda kimse yoktur.
- Çalışma süresi size aittir. Sunucu çalışmadığı sürece fatura oluşturulamaz; bu yüzden her zaman çalışması gereken bir ödeme sistemi, birinin gerçekten izlediği bir makineye ihtiyaç duyar.
- Yedekler size aittir. Sunucuyu kaybetmek atlatılabilir; cüzdan descriptor'ını ya da Lightning kanal durumunu kaybetmek atlatılamaz.
- Anahtar saklama ikiye ayrılır. Zincir üstü fonlar, BTCPay'in yalnızca izlediği bir cüzdanda durur; bu güvenli bir düzenlemedir. Lightning fonları ise sunucunun kendisindeki bir sıcak cüzdanda durur ki bu güvenli değildir — o bakiyeyi tasarruf değil, günlük kullanım bakiyesi (float) olarak görün.
- Anlaşmazlıkların hakemi yoktur. Ters ibraz (chargeback) yoktur; zaten meselenin büyük kısmı da budur, ama bu aynı zamanda her iadenin sizin verdiğiniz bir karar ve sizin gönderdiğiniz bir işlem olduğu anlamına gelir.
- Güncellemeler size aittir. Kullanıcı dostu arayüzün altında, içinde bir Bitcoin düğümü barındıran bir konteyner yığını vardır ve bu, genel bir IP'de çalışır bırakılan her şeyle aynı bakım disiplinini gerektirir.
Bunların hiçbiri ağır değildir. Bir kez çalışır hale geldikten sonra ayda birkaç dakika, artı başlangıçta özenle geçirilmiş bir öğleden sonra. Sadece sıfır değildir — ve bir işlemci ücreti, kısmen tam olarak bunu satın alıyordu.
Makineyi boyutlandırmak: altındaki düğüm her şeyi belirler
BTCPay'in kendisi hafif bir uygulamadır. Karşısında çalıştığı Bitcoin düğümü ise değildir ve buradaki boyutlandırma hatalarının neredeyse tamamı, altındaki zincir yerine web uygulaması için bütçe ayırmaktan kaynaklanır. Standart bir dağıtım; Bitcoin Core'u, cüzdanlarınızı takip eden bir indeksleyiciyi, bir veritabanını, bir ters proxy'yi ve uygulamanın kendisini ayağa kaldırır — diski, belleği ve sabrı isteyen ise Core'dur.
- Planınızı belirleyen karar depolamadır. Budanmamış bir zincir bugün 750 GB'ı geçmiş durumda ve ayda kabaca 7 GB büyüyor. Dağıtım, blok verisini bunun yerine yaklaşık 100, 50 veya 25 GB'ta sınırlayan depolama tasarrufu ön ayarlarıyla gelir ve bunların her biri yine de her kuralı kendi başına doğrulayan gerçek bir tam düğümdür.
- Budama, ilk senkronizasyonu kısaltmaz. Core, ne olursa olsun Genesis'ten beri her bloğu indirir ve denetler; budama yalnızca bundan sonra neyi tuttuğuna karar verir.
- Senkronizasyon hızı bellekten gelir. 4 GB onu çalıştırır; 8 GB ise fark edilir derecede daha hızlı senkronize olur ve önbellek için düğümle yarışmayan bir Lightning ile veritabanına yer bırakır.
- NVMe isteğe bağlı değildir. İlk senkronizasyona UTXO veritabanına karşı yapılan rastgele okuma ve yazmalar hakimdir; bu yüzden aynı iş yavaş bir diskte saatler değil günler sürer.
- Senkronize olduktan sonra bant genişliği sıradan bir konudur, ama ilk senkronizasyon zincirin tamamını çeker. Ölçümlü bir plan buna uygun bir biçim değildir.
Pratikte bu, Lightning'li budanmış bir düğüm için mantıklı varsayılan olarak $13.99/ay'lık VPS-8'e — 4 vCPU EPYC, 8 GB DDR5 ECC ve 120 GB Gen4 NVMe — çıkar; diski bir daha hiç düşünmek istemiyorsanız $26.99/ay'lık VPS-16 devreye girer. Her VPS katmanı RAID-10'da Gen4 NVMe ve ölçümsüz trafikle gelir; dolayısıyla gerçek değişken yalnızca kapasitedir. Zinciri budanmamış istiyorsanız — eski bir cüzdanı yeniden taramak ya da mağazanın yanında bir Electrum sunucusu çalıştırmak için — VPS serisini tamamen atlayın: $64/ay'dan başlayan ve 2 × 1 TB NVMe ile gelen bir dedicated sunucu, en büyük VPS katmanından hem daha ucuz hem de çok daha ferahtır ve bu hesap zamanla yalnızca kötüleşir. Ödünleşimler, bir Bitcoin tam düğümü çalıştırmakta ele alınanlarla tamamen aynıdır, çünkü burada üzerine bir ödeme sistemi eklenmiş haliyle tam olarak yaptığınız şey de budur.
Adım adım: yeni bir VPS'ten çalışan bir ödeme sistemine
- 01Önce VPS'i devreye alın ve sıkılaştırınBir Debian veya Ubuntu kutusu, yalnızca anahtarla SSH, varsayılan olarak reddeden bir güvenlik duvarı — üzerinde değerli hiçbir şey yokken. Bu kontrol listesinin sıralı hâli kendi başına ayrı bir rehberdir.
- 02Bir alan adını sunucuya yönlendirin ve 80 ile 443'ü açınBTCPay ilk başlatmada kendi sertifikasını verir; bu da yalnızca ana bilgisayar adı zaten makineye çözümleniyorsa ve her iki port da erişilebilirse çalışır. Bunu ters sırayla yapmak, açık ara en sık görülen başarısız kurulum nedenidir.
- 03Resmi Docker dağıtımını klonlayınProje, net tercihlerle şekillenmiş bir konteyner kurulumuyla gelir. Parçaları elle bir araya getirmek yerine bunu kullanın — yükseltme yolu tam olarak buna karşı test edilir.
- 04İlk çalıştırmadan önce seçeneklerinize karar verinAğ, ana bilgisayar adı, Lightning uygulaması ve depolama ön ayarı, kurulum sırasında yalnızca bir kez okunan ortam değişkenleridir. Budama seviyesini sonradan değiştirmek bedelsiz değildir, o yüzden şimdi seçin.
- 05Kurulum betiğini çalıştırın ve senkronize olmasına izin verinHer şey konteynerler içinde ayağa kalkar ve Bitcoin Core ilk blok indirmesine başlar. Bu, uzun kısımdır — NVMe üzerinde birkaç saat — ve aceleye getiremeyeceğiniz tek adımdır.
- 06Yönetici hesabını hemen kaydedinKaydolan ilk hesap yönetici olur. Bunu arayüz yanıt verdiği anda yapın, ertesi sabah değil.
- 07Mağazanıza bir cüzdan bağlayınBir mağaza oluşturun, ardından bir donanım cüzdanından ya da kendi yazılımınızdaki özel bir hesaptan genişletilmiş bir genel anahtar içe aktararak bir cüzdan bağlayın. BTCPay adresleri izler; hiçbir şeyi asla imzalamaz.
- 08Gerçek bir ödemeyle test edin, sonra ön yüzü bağlayınKendinize küçük bir miktar gönderin ve faturanın tamamlandığını doğrulayın. Ancak bundan sonra satış noktası ekranını, mağaza eklentisini ya da sitenizin gerçekten çağıracağı API'yi bağlayın.
Lightning: buna değer mi ve gerçekte neye mal olur
Zincir üstü ödemeler her yerde çalışır ve o gün mempool ne kadar tutuyorsa o kadara mal olur; bu da birkaç doların altındaki her şeyi külfetli, bazen de saçma hale getirir. Lightning bunu çözer ve BTCPay aynı dağıtım içinde sizin için bir düğüm ayağa kaldırır. Küçük veya sık ödemeler için doğru cevap budur. Aynı zamanda bir Bitcoin düğümünden farklı türde bir operasyonel taahhüttür ve bu farkları açmadan önce bilmekte fayda var.
- Ödeme alabilmeden önce gelen likiditeye (inbound liquidity) ihtiyacınız vardır. Kendi kanalınızı açmak size harcama kapasitesi verir, alma kapasitesi değil. Biri size doğru bir kanal açana ya da siz gelen kapasite edinene kadar düğümünüz hiçbir şey kabul edemez.
- Bakiye tasarım gereği sıcaktır. Kanal fonları sunucudaki bir cüzdanda yaşar; çevrimiçi olmak zorunda oldukları için çevrimiçidirler. Orada yalnızca günlük kullanım bakiyesini tutun, gerisini zincir üstüne süpürün.
- Kanal durumu, dosyaları kopyalayarak yedeklenmez. Bir Lightning düğümünün eski bir anlık görüntüsünü geri yüklemek, o görüntünün anlattığı kanallara mal olabilir. Uygulamanın kendi yedekleme mekanizmasını kullanın ve bunun gerçekte neyi geri yüklediğini anlayın.
- Kesinti burada zincir üstünden daha pahalıya mal olur. Çevrimdışı bir düğüm yönlendirme ya da alma yapamaz ve çevrimiçine geri dönen bayat bir durum cezalandırılabilir.
- Kanalların her iki ucunda da zincir üstü maliyetler vardır. Açmak da kapatmak da birer işlemdir; bu yüzden çok sayıda küçük kanal açma alışkanlığı sessizce pahalıya mal olur.
- İzin verirseniz düğümünüz görünür olur. Herkese açık şekilde duyurulan bir düğüm, takma adını (alias) ve ağ adresini herkese yayınlar; bu da sunucunuzu herkesin okuyabileceği bir haritaya yerleştirir.
Mantıklı bir orta yol; duyurulmamış kanallarla Lightning kullanmak — altyapınızı yayımlamadan ödeme alabilirsiniz — ve büyük olan her şey için zincir üstünü varsayılan yapmaktır. Düğümün, size atfedilemeden erişilebilir olmasını istiyorsanız onu Tor üzerinden çalıştırın; bu, bir Bitcoin düğümünü genel bir IP yerine bir onion servisinin arkasına koymayla aynı mantıktır.
Varsayılan bir kurulumun yerinde bıraktığı kimlik sızıntıları
BTCPay'i özellikle kim olduğunuzu bilen bir işlemciden kaçmak için seçtiyseniz önemli olan bölüm burasıdır. Yazılım o işlemciyi kusursuzca ortadan kaldırır. Ama tek başına, ödeme sistemini bir kişiye bağlayan geri kalan her şeyi ortadan kaldırmaz — ve bunların çoğu, ödemelerle ilgisiz hissettiren adımlardan gelir.
- Alan adı. Herkese açık WHOIS gizlense bile bir kayıt kuruluşu kimliğinizi elinde tutar ve adı canlı tutmak için çalışan bir adrese ihtiyaç duyar. Ana bilgisayar adı, kendi kendine barındırılan bir ödeme sisteminin sahibine kadar izlenmesinin en yaygın tek yoludur.
- Sertifika şeffaflığı. Bir sertifika verildiği anda, tam olarak o ana bilgisayar adı herkesin arayabileceği herkese açık günlüklerde yayımlanır. Özel sandığınız bir alt alan adı — pay.birsey, btcpay.birsey — üzerinde bir zaman damgasıyla dünyaya duyurulur.
- Barındırıcı. Sunucu yasal isminizle bir kartla satın alındıysa, üzerinde ne çalıştığından bağımsız olarak makine yasal isminize kayıtlıdır. Bu, ilk faturadan çok önce, kayıt sırasında karara bağlanır.
- Genişletilmiş genel anahtar. BTCPay'e bir xpub vermek, o anahtarın türettiği her adresi izlemesine olanak tanır — bir web uygulamasına asla ifşa etmeyi düşünmediğiniz bakiyeler ve geçmiş dahil. Mağaza için özel bir hesap kullanın, asla ana cüzdanınızın xpub'ını değil.
- Lightning düğümü. Duyurulan bir düğüm bir takma ad ve bir adres yayımlar. Markanızı taşıyan bir takma ad, aynı zamanda ödeme sisteminize de hizmet veren bir IP üzerindeyse, ikisini herkese açık bir grafikte kalıcı olarak birbirine bağlar.
- Giden bağlantılar. Kur sağlayıcıları, eklentiler ve bildirim entegrasyonlarının hepsi makineden dışarıya bağlanır ve e-posta bildirimleri yapılandırdığınız SMTP hesabı her ne ise onun üzerinden gider. Bunların her biri sunucunuzu gören bir üçüncü taraftır.
- Ödemenin çıkış yolu. Mağazadan çıkıp doğrulanmış bir borsa hesabına giden coinler, geçmişleri üzerlerine yapışık şekilde varır. Bu sızıntı BTCPay'in aşağı akışındadır ve yukarı akışta gösterilen tüm özeni en sık boşa çıkaran da odur.
Bunları kapatmak egzotik bir şey değil, sıradan bir iştir. Kriptoyu kabul eden ve asgari düzeyde bilgi toplayan bir kayıt kuruluşu seçin ve ona kimliğinize bağlı olmayan bir adres verin. Makineyi kim olduğunuzu hiç sormamış bir barındırıcıya koyun ve bunun için bir kripto bakiyesinden ödeme yapın — Bitcoin takma adlıdır (pseudonymous), anonim değildir, bu yüzden önemsiyorsanız zincir üstü izi kapatan şey Monero ile bakiye yüklemektir. Ve para tutan bir şey için bir giriş sayfasını dışarıya açmak yerine, yönetici arayüzüne bir WireGuard tüneli üzerinden ulaşın. Her biri bir kez alınan küçük bir karardır; birlikte ele alındıklarında "işlemci yok" ile gerçek anlamda gizli olmak arasındaki farkı oluştururlar.
Yayına aldıktan sonra çalışır durumda tutmak
Bir yıldır çalışan bir ödeme sistemi, bir yıldır kimsenin bakmadığı bir ödeme sistemidir. Kısa bir bakım rutini, bunun en yoğun gününüzde bir kesintiye dönüşmesini engeller.
- Kendi temponuzda değil, projenin temposunda güncelleyin. Dağıtımın, eşleşen konteyner sürümlerini birlikte ilerleten bir yükseltme yolu vardır; parçaları elle tek tek atlatmak, çalışan bir yığının bozulmuş bir yığına dönüşme şeklidir.
- Yeniden oluşturulamayacak olanı yedekleyin: mağaza veritabanı ve yapılandırması, cüzdan descriptor'ı ve varsa Lightning yedeğiniz. Blok zinciri bir yedek değildir — o yalnızca yeniden indirilir.
- Hiçbir şey yanlış gitmemişken, bilerek bir kez geri yükleme yapın. Bir ödeme sisteminin test edilmemiş bir yedeği, gelirinizle ilgili bir varsayımdan ibarettir.
- Diski izleyin. Budanmış bir düğümün ayak izi sabittir, ama günlükler ve veritabanları öyle değildir; dolu bir disk düğümü durdurur, o da faturaları durdurur.
- Makineyi yamalı ve portları kapalı tutun. İlk on dakika sıkılaştırma kontrol listesindeki her şey burada da geçerlidir, üstelik bu kez ortaya konan çok daha fazladır.
Bu arada mağaza için harici bir kontrol de ekleyin. Fatura uç noktasına dışarıdan vuran bir izleyici kadar basit bir şey bile, ödeme sisteminin çöktüğünü bir müşteriden önce size söyler; kendi kendine barındırma ile erişilemez olmak arasındaki pratik farkın büyük kısmı da tam olarak budur. Ve kutunun kendisine, yeni bir VPS'teki ilk on dakikanın anlattığı şekilde davranın, çünkü para tutan bir makinede riske girenler çok daha fazladır.
Gerçek paraya mal olan hatalar
- Genişletilmiş bir genel anahtar yerine bir tohum ifadesi içe aktarmak; bu da herkese açık bir web uygulamasını, bugüne kadar alınan her ödemeyi tutan bir sıcak cüzdana dönüştürür.
- DNS'i kurulum programını çalıştırdıktan sonra yapılandırmak, ardından sertifikanın neden hiç verilmediğini ve sitenin neden açılmadığını merak etmek.
- En agresif budama ön ayarını seçmek, ardından düğümün artık yeniden tarayamayacağı yıllar süren bir geçmişe sahip bir cüzdanı bağlamaya çalışmak.
- Lightning bakiyesini, çevrimiçi yaşayan bir günlük kullanım bakiyesi yerine tasarruf gibi görmek.
- Bir Lightning düğümünü veri dizinini kopyalayarak yedeklemek ve bunun bir geri yükleme yolu olduğunu varsaymak.
- Web uygulaması için boyutlandırılmış bir plan satın almak ve ilk senkronizasyonun yarısında diskin bitmesi.
- Yönetici arayüzünü, başka bir yerden tekrar kullanılan bir parolanın arkasında tüm internete açık bırakmak.
- Geri kalan her şeyi doğru yaptıktan sonra alan adını ve sunucuyu kendi isminize kaydettirmek.
BTCPay, bir aracıyı daha nazik bir tanesiyle değiştirmek yerine doğrudan ortadan kaldıran nadir yazılımlardan biridir. Kurulum bir öğleden sonra, senkronizasyon ise bir gece sürer. Elinizde kalan şey; Bitcoin ve Lightning kabul eden, hiçbir ücret almayan, hiçbir şeyin saklayıcılığını yapmayan ve kimseye hesap vermeyen bir ödeme sistemidir — üstelik topladığı bakiyenin aynısından ödeyebileceğiniz bir makine üzerinde çalışır. Diski düğüm için boyutlandırın, tohum ifadesini sunucudan uzak tutun ve kutuyu isminizi hiç sormamış bir yere koyun.