Journal-indexDockup / praktijknotitie
Note / self-host-etherpad

Etherpad zelf hosten in 2026: pads, plugins en databaseback-ups

Een praktische handleiding voor het zelf hosten van Etherpad, met aandacht voor Docker, poorten, persistente data, TLS, beveiliging, back-ups en fouten die productiegebruik in de weg staan. Inclusief controles.

Als je Etherpad al eens zelf hebt gehost, herken je deze frustrerende situatie waarschijnlijk: de UI verschijnt, maar sessies worden verbroken omdat de proxy-time-outs te kort zijn. De container opnieuw aanmaken lost een verschil van inzicht tussen URL's, state en dependencies zelden op.

Deze walkthrough gebruikt één concreet criterium voor voltooiing: open één pad in twee browsers, bewerk het gelijktijdig, inspecteer revisies en exporteer het resultaat in het vereiste formaat. Elke configuratiekeuze wordt aan dat criterium getoetst, niet aan een groen container-badge.

Kies de kleinst bruikbare Etherpad-topologie

De kleinste verantwoorde Etherpad-topologie bestaat uit één private listener op 9001, een ingress-route en een gedocumenteerde state-grens. Het netwerkcontract voor Etherpad is Postgres of een andere ondersteunde database voor duurzaam gebruik met meerdere gebruikers. Houd private endpoints op interne DNS, sta alleen vereiste uitgaande verbindingen toe en geef Etherpad een servicecredential met beperkte scope.

Valideer de topologie door een schone client te vragen één pad in twee browsers te openen, het gelijktijdig te bewerken, revisies te inspecteren en het resultaat in het vereiste formaat te exporteren. Bekijk tijdens het uitvoeren de WebSocket-sessies, het aantal revisies, databasewrites en pluginuitvoering. Het resultaat laat zien of de volgende verbetering in geheugen, storage, networking of een aparte worker thuishoort, in plaats van je aan te moedigen de container willekeurig groter te maken.

Bouw een vervangbare Etherpad-container

Gebruik de container als een vervangbare runtime, niet als de locatie waar de waarheid staat.

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

Voeg de gecontroleerde verbindingsinstellingen voor Postgres of een andere ondersteunde database voor duurzaam gebruik met meerdere gebruikers toe; gebruik private namen voor private services. Controleer de containergebruiker, schrijfbare paden en gebonden listener voordat je de container beschikbaar maakt. Voer de volledige actie uit — open één pad in twee browsers, bewerk het gelijktijdig, inspecteer revisies en exporteer het resultaat in het vereiste formaat — en sla de exacte image-referentie op die het resultaat heeft opgeleverd.

Voorkom dat proxy-succes applicatiefouten verbergt

De browser, API-client en Etherpad moeten het eens zijn over één origin. Stel daarom de publieke URL en proxy-ondersteuning voor WebSockets in. Behoud de oorspronkelijke host en het oorspronkelijke protocol en zorg er tegelijk voor dat poort 9001 niet beschikbaar is als concurrerend publiek adres.

De handleiding voor het oplossen van een niet-bereikbare site helpt onderscheid te maken tussen een onbereikbare route en een applicatie die wel antwoord geeft. Dat onderscheid is hier belangrijk: sessies worden verbroken omdat proxy-time-outs te kort zijn. Alleen het eerste probleem los je op met wijzigingen aan de ingress; voor het tweede zijn inspecties van Etherpad-logs, state of workload nodig.

Ontwerp het Etherpad-herstel vóór de lancering

Bescherm de state van Etherpad voordat je de container optimaliseert. De vereiste set bestaat uit de database, geüploade plugins en instellingen. Mount /opt/etherpad-lite/var voordat de bootstrap plaatsvindt, schrijf onschadelijke voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Als meerdere stores consistent moeten blijven, documenteer dan de volgorde waarin writes worden gepauzeerd en back-ups worden gemaakt.

Bewaar kopieën buiten de deploymentserver en versleutel materiaal dat credentials of private content bevat. Herstel is geslaagd wanneer pads, auteurs, revisies en plugins terugkeren en gelijktijdige bewerkingen nog steeds convergeren. Het verschil tussen een persistente mount en een onafhankelijke kopie wordt behandeld in persistent storage en snapshots.

Bepaal de trust boundary van Etherpad

Sluit het bootstrapvenster zodra de eerste vertrouwde administrator bestaat. De concrete valkuil bij Etherpad is het meeleveren van een bekend admin-wachtwoord of pads voor iedereen schrijfbaar laten; de veiligere grens is een echt admin-wachtwoord instellen, bepalen wie pads mag aanmaken en er niet van uitgaan dat een onopvallende pad-URL privé is.

Vervang de voorbeeldwaarde voor ADMIN_PASSWORD onmiddellijk, bewaar deze buiten de image en roteer het wachtwoord zoals je dat met een administratorcredential zou doen als het uitlekt. Gebruik private networking voor dependency-credentials en laat rollen binnen Etherpad alleen de kleinst bruikbare actie toestaan. Houd gevoelige request bodies en provider-responses uit reguliere logs.

Upgrade Etherpad zonder te gokken

Observeer het werk dat Etherpad uitvoert: WebSocket-sessies, het aantal revisies, databasewrites en pluginuitvoering. Stel limieten in met voldoende headroom voor dat werk en vermijd een liveness probe die ermee concurreert. De operatorcheck moet nog steeds volgens een vast schema proberen één pad in twee browsers te openen, het gelijktijdig te bewerken, revisies te inspecteren en het resultaat in het vereiste formaat te exporteren.

Houd bij updates rekening met het feit dat Etherpad-pluginversies, syntax van instellingen en databasemigraties samen moeten worden getest. Deploy de kandidaatversie tegen een herstelde kopie en herhaal de bekende test. Als sessies worden verbroken omdat proxy-time-outs te kort zijn, gebruik dan runtime-logs en het daadwerkelijke netwerkrequest om vast te stellen welke aanname is veranderd.

Wat moet slagen voordat er echte Etherpad-data binnenkomt

Definieer voor Etherpad vóór de lancering een bekende succesvolle transactie: open één pad in twee browsers, bewerk het gelijktijdig, inspecteer revisies en exporteer het resultaat in het vereiste formaat. Zet de vereisten, verwachte response en opruimstappen zonder secretwaarden in version control. Pin de image die is gebruikt om deze referentie vast te leggen.

Gebruik de transactie om een vervanging en een onafhankelijke restore te valideren. De herstelde service is alleen acceptabel wanneer pads, auteurs, revisies en plugins terugkeren en gelijktijdige bewerkingen nog steeds convergeren. Observeer tegelijk de WebSocket-sessies, het aantal revisies, databasewrites en pluginuitvoering en maak van het traagste of meest beperkte onderdeel een service-level alert.

De gate heeft ook een negatief geval nodig: ontzeg de testidentiteit tijdelijk de toegang tot Postgres of een andere ondersteunde database voor duurzaam gebruik met meerdere gebruikers. Controleer of Etherpad een bruikbare foutmelding geeft terwijl de data behouden blijft, herstel de geldige situatie en herhaal de bekende succesvolle transactie. Door beide resultaten te bewaren voorkom je dat een oppervlakkig health-endpoint het enige bewijs voor productie wordt.

Deploy Etherpad op Dockup zonder de grenzen te verliezen

Voor Etherpad is Dockup het nuttigst op de grens tussen een image en een duurzame service. Het houdt de route naar 9001, TLS, secretwaarden en storage gekoppeld tijdens containervervangingen, ongeacht of de compute bij Dockup hoort of op je gekoppelde server draait.

Rond af met applicatiekennis: stel de publieke URL en proxy-ondersteuning voor WebSockets in; verbind met en test Postgres of een andere ondersteunde database voor duurzaam gebruik met meerdere gebruikers; en voer deze verificatie uit: open één pad in twee browsers, bewerk het gelijktijdig, inspecteer revisies en exporteer het resultaat in het vereiste formaat. Bewaar het resultaat als deploymentcheck, zodat de volgende image-update op gedrag wordt beoordeeld en niet op containerstatus.

Veelgestelde vragen

Wat heeft Etherpad nodig voor een deployment in productie?

Routeer de Etherpad-container op poort 9001 via één HTTPS-origin. De ondersteunende netwerkvereiste is Postgres of een andere ondersteunde database voor duurzaam gebruik met meerdere gebruikers. Verklaar Etherpad pas gereed als je één pad in twee browsers kunt openen, het gelijktijdig kunt bewerken, revisies kunt inspecteren en het resultaat in het vereiste formaat kunt exporteren.

Welke Etherpad-data hoort in een back-up?

Maak een persistente mount van /opt/etherpad-lite/var en neem de database, geüploade plugins en instellingen op in hetzelfde recovery-manifest. Een schone Etherpad-restore is alleen geslaagd wanneer pads, auteurs, revisies en plugins terugkeren en gelijktijdige bewerkingen nog steeds convergeren.

Heeft Etherpad HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke Etherpad-origin en houd poort 9001 op de interne route. Pas de Etherpad-instelling correct toe: stel de publieke URL en proxy-ondersteuning voor WebSockets in. Voor Etherpad beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het ervoor dat origin-gevoelig clientgedrag consistent blijft.

Hoe moet een Etherpad-upgrade worden getest?

Herstel de huidige Etherpad-state in een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let extra goed op, omdat Etherpad-pluginversies, syntax van instellingen en databasemigraties samen moeten worden getest. Bewaar de vorige Etherpad-image totdat de grenzen voor datamigratie en rollback duidelijk zijn.