Günlük diziniDockup / saha notu
Note / self-host-etherpad

2026'da Etherpad Nasıl Self-Host Edilir: Pad'ler, Plugin'ler ve Veritabanı Yedekleri

Docker, portlar, kalıcı veriler, TLS, güvenlik, yedeklemeler ve production kullanımını engelleyen sorunları kapsayan pratik bir Etherpad self-hosting rehberi. Kontrol listeleriyle.

Daha önce Etherpad'i self-host etmeyi denediyseniz, can sıkıcı bu duruma muhtemelen aşinasınızdır: UI görünür, ancak proxy timeout değerleri çok kısa olduğu için session bağlantıları kopar. Container'ı yeniden oluşturmak, URL'ler, state ve dependency'ler arasındaki bir uyuşmazlığı nadiren çözer.

Bu walkthrough'ta tek bir somut tamamlanma kriteri kullanıyoruz: iki browser'da bir pad açmak, eş zamanlı düzenleme yapmak, revision'ları incelemek ve sonucu gerekli bir formatta export etmek. Her configuration seçimini, yeşil bir container badge'ine göre değil, bu kritere göre değerlendiriyoruz.

En küçük uygulanabilir Etherpad topology'sini seçin

Sorumlu bir Etherpad topology'sinin en küçük hâli, 9001 üzerinde bir private listener, bir ingress route ve belgelenmiş bir state boundary içerir. Etherpad'in network contract'ı, kalıcı çok kullanıcılı kullanım için Postgres veya desteklenen başka bir database'dir. Private endpoint'leri internal DNS üzerinde tutun, yalnızca gerekli outbound çağrılara izin verin ve Etherpad'e kapsamı sınırlandırılmış bir service credential verin.

Temiz bir client'tan iki browser'da bir pad açmasını, eş zamanlı düzenleme yapmasını, revision'ları incelemesini ve sonucu gerekli bir formatta export etmesini isteyerek topology'yi doğrulayın. Çalışma sırasında WebSocket session'larını, revision sayısını, database write işlemlerini ve plugin execution'ı izleyin. Sonuç, bir sonraki iyileştirmenin rastgele container boyutlandırmasını teşvik etmek yerine memory, storage, networking veya ayrı bir worker tarafında yapılıp yapılmayacağını gösterir.

Değiştirilebilir bir Etherpad container'ı oluşturun

Container'ı gerçeğin kaynağı olarak değil, değiştirilebilir bir runtime olarak kullanın.

docker run -d \
  --name etherpad \
  --restart unless-stopped \
  -p 127.0.0.1:9001:9001 \
  -v etherpad-data:/opt/etherpad-lite/var \
  -e ADMIN_PASSWORD=replace-with-a-long-random-value \
  etherpad/etherpad:latest

Postgres veya kalıcı çok kullanıcılı kullanım için desteklenen başka bir database'e ait gözden geçirilmiş connection ayarlarını ekleyin; private service'ler için private name'ler kullanın. Expose etmeden önce container user'ını, writable path'leri ve bound listener'ı inceleyin. Eksiksiz action'ı — iki browser'da bir pad açmak, eş zamanlı düzenleme yapmak, revision'ları incelemek ve sonucu gerekli bir formatta export etmek — çalıştırın ve sonucu üreten image reference'ını tam olarak kaydedin.

Proxy başarısının application failure'ı maskelemesini önleyin

Browser, API client ve Etherpad tek bir origin üzerinde anlaşmalıdır. Bunu sağlamak için public URL'yi ve proxy WebSocket desteğini ayarlayın. Port 9001'i rakip bir public address olarak erişilemez tutarken original host ve protocol bilgilerini koruyun.

Site erişilemiyor troubleshooting rehberi, ulaşılamayan bir route ile yanıt veren bir application arasındaki farkı ayırt etmenize yardımcı olur. Bu ayrım burada önemlidir: proxy timeout değerleri çok kısa olduğu için session bağlantıları kopar. Yalnızca ilk durum ingress değişiklikleriyle düzeltilir; ikinci durum için Etherpad log'larını, state'i veya workload'u incelemeniz gerekir.

Etherpad restore işlemini launch öncesinde tasarlayın

Container'ı optimize etmeden önce Etherpad state'ini koruyun. Gerekli set database, yüklenmiş plugin'ler ve settings'ten oluşur. Bootstrap işleminden önce /opt/etherpad-lite/var'ı mount edin, zararsız sample data yazın ve bu path'in gerçekten kalıcı olduğunu kanıtlamak için container'ı değiştirin. Birden fazla store'un uyumlu olması gerekiyorsa write işlemlerinin durdurulacağı ve backup'ların alınacağı sırayı belgeleyin.

Kopyaları deployment server'ın dışında tutun ve credential veya private content içeren materyalleri encrypt edin. Recovery, pad'ler, author'lar, revision'lar ve plugin'ler geri geldiğinde ve eş zamanlı düzenlemeler hâlâ convergence sağladığında başarılıdır. Kalıcı bir mount ile bağımsız bir kopya arasındaki fark persistent storage ve snapshot'lar bölümünde ele alınır.

Etherpad trust boundary'sini seçin

İlk trusted administrator oluşturulur oluşturulmaz bootstrap window'u kapatın. Etherpad'deki somut risk, bilinen bir admin password'ü göndermek veya pad'leri herkesin yazmasına açık bırakmaktır; daha güvenli boundary, gerçek bir admin password ayarlamak, kimlerin pad oluşturabileceğine karar vermek ve obscure bir pad URL'sinin private olduğunu varsaymamaktır.

Örnek ADMIN_PASSWORD değerini hemen değiştirin, image'ın dışında saklayın ve açığa çıkarsa bir administrator credential'ı gibi rotate edin. Private networking, dependency credential'larını taşımalıdır; Etherpad içindeki role'ler ise gerekli en küçük action'ı vermelidir. Hassas request body'lerini ve provider response'larını rutin log'ların dışında tutun.

Etherpad'i tahmin yürütmeden upgrade edin

Etherpad'in gerçekleştirdiği işleri gözlemleyin: WebSocket session'ları, revision sayısı, database write işlemleri ve plugin execution. Limitleri bu işlere headroom bırakacak şekilde ayarlayın ve bunlarla rekabet eden bir liveness probe kullanmaktan kaçının. Operator check'i, belirli bir schedule'a göre iki browser'da bir pad açmayı, eş zamanlı düzenleme yapmayı, revision'ları incelemeyi ve sonucu gerekli bir formatta export etmeyi yine denemelidir.

Update'ler için Etherpad plugin version'larının, settings syntax'inin ve database migration'larının birlikte test edilmesi gerektiğini unutmayın. Candidate'ı recovered copy üzerinde deploy edin ve bilinen testi tekrarlayın. Proxy timeout değerleri çok kısa olduğu için session bağlantıları koparsa hangi varsayımın değiştiğini bulmak için runtime log'larını ve gerçek network request'ini kullanın.

Gerçek Etherpad verileri gelmeden önce geçmesi gerekenler

Etherpad için launch öncesinde bilinen bir başarılı transaction tanımlayın: iki browser'da bir pad açın, eş zamanlı düzenleme yapın, revision'ları inceleyin ve sonucu gerekli bir formatta export edin. Ön koşullarını, beklenen response'u ve cleanup adımlarını secret value'lar olmadan version control'e koyun. Bu reference'ı oluşturmak için kullanılan image'ı pinleyin.

Bir replacement'ı ve bağımsız bir restore'u doğrulamak için bu transaction'ı kullanın. Restore edilen service, yalnızca pad'ler, author'lar, revision'lar ve plugin'ler geri geldiğinde ve eş zamanlı düzenlemeler hâlâ convergence sağladığında kabul edilebilir. Aynı zamanda WebSocket session'larını, revision sayısını, database write işlemlerini ve plugin execution'ı gözlemleyin ve en yavaş veya en kısıtlı bölümü service-level alert'e dönüştürün.

Gate ayrıca bir negative case'e ihtiyaç duyar: test identity'sinin Postgres'e veya kalıcı çok kullanıcılı kullanım için desteklenen başka bir database'e erişimini geçici olarak engelleyin. Etherpad'in data'yı korurken action alınabilir bir error ürettiğini doğrulayın, geçerli durumu geri yükleyin ve bilinen başarılı transaction'ı tekrarlayın. Her iki sonucu saklamak, yüzeysel bir health endpoint'inin production'daki tek kanıt hâline gelmesini önler.

Sınırları kaybetmeden Etherpad'i Dockup üzerinde deploy edin

Etherpad için Dockup, bir image ile durable service arasındaki boundary'de en faydalı hâle gelir. Compute Dockup'a veya bağlı server'ınıza ait olsa da route'u 9001'e, TLS'yi, secret value'ları ve storage'ı container replacement'ları boyunca bağlı tutar.

Application bilgisini tamamlayın: public URL'yi ve proxy WebSocket desteğini ayarlayın; kalıcı çok kullanıcılı kullanım için Postgres'e veya desteklenen başka bir database'e bağlanıp test edin; ardından şu verification'ı çalıştırın: iki browser'da bir pad açın, eş zamanlı düzenleme yapın, revision'ları inceleyin ve sonucu gerekli bir formatta export edin. Sonucu bir deployment check olarak saklayın; böylece bir sonraki image update'i container status'una göre değil, davranışa göre değerlendirilir.

Sık sorulan sorular

Production deployment için Etherpad'in neye ihtiyacı vardır?

Etherpad container'ını tek bir HTTPS origin üzerinden 9001 portuna route edin. Supporting network requirement, kalıcı çok kullanıcılı kullanım için Postgres veya desteklenen başka bir database'dir. İki browser'da bir pad açıp eş zamanlı düzenleme yapamıyor, revision'ları inceleyemiyor ve sonucu gerekli bir formatta export edemiyorsanız Etherpad'i hazır kabul etmeyin.

Hangi Etherpad verileri backup'a dâhil edilmelidir?

/opt/etherpad-lite/var'ı persist edin ve database, yüklenmiş plugin'ler ile settings'i aynı recovery manifest'ine dâhil edin. Temiz bir Etherpad restore'u yalnızca pad'ler, author'lar, revision'lar ve plugin'ler geri geldiğinde ve eş zamanlı düzenlemeler hâlâ convergence sağladığında başarılıdır.

Reverse proxy arkasında Etherpad için HTTPS gerekir mi?

Public Etherpad origin'i için HTTPS kullanın ve port 9001'i internal route üzerinde tutun. Etherpad setting'ini doğru şekilde uygulayın: public URL'yi ve proxy WebSocket desteğini ayarlayın. Etherpad için HTTPS, credential'ları veya user content'i transit sırasında korur ve origin'e duyarlı client davranışını tutarlı hâle getirir.

Bir Etherpad upgrade'i nasıl test edilmelidir?

Güncel Etherpad state'ini izole bir deployment'a restore edin, candidate version'ı uygulayın ve acceptance transaction'ını tekrarlayın. Özellikle dikkatli olun; Etherpad plugin version'ları, settings syntax'i ve database migration'ları birlikte test edilmelidir. Data migration ve rollback boundary'si anlaşılana kadar önceki Etherpad image'ını saklayın.