JournalindeksDockup / feltnote
Note / self-host-etherpad

Sådan selvhoster du Etherpad i 2026: Pads, plugins og databasebackups

En praktisk guide til selvhosting af Etherpad med fokus på Docker, porte, persistent data, TLS, sikkerhed, backups og fejl, der forhindrer produktionsbrug. Med kontroller.

Hvis du allerede har forsøgt at selvhoste Etherpad, kender du sandsynligvis den frustrerende situation: Brugerfladen vises, men sessioner bliver afbrudt, fordi proxyens timeouts er for korte. At oprette containeren igen løser sjældent en uoverensstemmelse mellem URL'er, state og dependencies.

Denne gennemgang bruger ét konkret færdiggørelseskriterium — åbn ét pad i to browsere, redigér samtidigt, inspicér revisioner, og eksportér resultatet i et påkrævet format. Alle konfigurationsvalg vurderes ud fra dette kriterium og ikke ud fra et grønt containerbadge.

Vælg den mindste brugbare Etherpad-topologi

Den mindste ansvarlige Etherpad-topologi består af én privat listener på 9001, en ingress-route og en dokumenteret state-grænse. Etherpads netværkskontrakt er Postgres eller en anden understøttet database til persistent brug med flere brugere. Hold private endpoints på intern DNS, tillad kun nødvendige udgående kald, og giv Etherpad en afgrænset service credential.

Validér topologien ved at få en ren klient til at åbne ét pad i to browsere, redigere samtidigt, inspicere revisioner og eksportere resultatet i et påkrævet format. Overvåg WebSocket-sessioner, antal revisioner, databasewrites og plugin-eksekvering, mens det kører. Resultatet fortæller dig, om den næste forbedring hører hjemme i memory, storage, networking eller en separat worker, i stedet for at tilskynde til vilkårlig dimensionering af containeren.

Byg en Etherpad-container, der kan udskiftes

Brug containeren som et udskifteligt runtime-miljø, ikke som stedet, hvor sandheden ligger.

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

Tilføj de gennemgåede forbindelsesindstillinger for Postgres eller en anden understøttet database til persistent brug med flere brugere; brug private navne til private services. Inspicér containerens bruger, skrivbare stier og bundne listener, før du eksponerer den. Kør den komplette handling — åbn ét pad i to browsere, redigér samtidigt, inspicér revisioner, og eksportér resultatet i et påkrævet format — og gem den præcise image-reference, der producerede resultatet.

Undgå, at proxyens succes skjuler fejl i applikationen

Browseren, API-klienten og Etherpad skal være enige om én origin. For at sikre det skal du angive den offentlige URL og aktivere proxy-understøttelse af WebSocket. Bevar den oprindelige host og protokol, og sørg samtidig for, at port 9001 ikke er tilgængelig som en konkurrerende offentlig adresse.

Fejlfindingsguiden til et site, der er nede hjælper med at skelne mellem en utilgængelig route og en applikation, der svarer. Denne forskel er vigtig her: Sessioner bliver afbrudt, fordi proxyens timeouts er for korte. Kun den første situation løses med ændringer i ingressen; den anden kræver inspektion af Etherpad-logs, state eller workload.

Design Etherpads restore før lancering

Beskyt Etherpads state, før du optimerer containeren. Det nødvendige sæt består af database, uploadede plugins og settings. Mount /opt/etherpad-lite/var før bootstrap, skriv harmløse eksempeldata, og udskift containeren for at bevise, at stien faktisk er persistent. Hvis flere stores skal stemme overens, skal du dokumentere rækkefølgen for, hvornår writes sættes på pause, og backups tages.

Opbevar kopier uden for deployment-serveren, og krypter materiale, der indeholder credentials eller privat indhold. Recovery lykkes, når pads, authors, revisioner og plugins kommer tilbage, og samtidige redigeringer stadig konvergerer. Forskellen mellem et persistent mount og en uafhængig kopi er beskrevet i persistent storage og snapshots.

Vælg Etherpads trust boundary

Luk bootstrap-vinduet, så snart den første betroede administrator findes. Etherpads konkrete faldgrube er at levere med en kendt admin-adgangskode eller lade alle skrive i pads; den sikrere grænse er at angive en rigtig admin-adgangskode, beslutte hvem der må oprette pads, og undgå at antage, at en uigennemskuelig pad-URL er privat.

Udskift eksempelværdien for ADMIN_PASSWORD med det samme, opbevar den uden for imaget, og roter den som en administrator-credential, hvis den bliver eksponeret. Privat networking bør transportere credentials til dependencies, og roller i Etherpad bør kun give den mindst mulige nyttige handling. Sørg for, at følsomme request bodies og provider-responses ikke havner i almindelige logs.

Opgradér Etherpad uden at gætte

Observer det arbejde, Etherpad udfører: WebSocket-sessioner, antal revisioner, databasewrites og plugin-eksekvering. Sæt limits med headroom til dette arbejde, og undgå en liveness probe, der konkurrerer med det. Operator-kontrollen skal stadig forsøge at åbne ét pad i to browsere, redigere samtidigt, inspicere revisioner og eksportere resultatet i et påkrævet format efter en fast plan.

Ved opdateringer skal du huske, at Etherpad-pluginversioner, settings-syntaks og databasemigrationer skal testes samlet. Deploy kandidaten mod en gendannet kopi, og gentag den kendte test. Hvis sessioner bliver afbrudt, fordi proxyens timeouts er for korte, skal du bruge runtime-logs og den faktiske netværksrequest til at finde den antagelse, der er ændret.

Det, der skal bestå, før rigtige Etherpad-data ankommer

For Etherpad skal du definere en kendt god transaktion før lancering: Åbn ét pad i to browsere, redigér samtidigt, inspicér revisioner, og eksportér resultatet i et påkrævet format. Læg dens forudsætninger, forventede response og cleanup-trin i versionsstyring uden secret-værdier. Pin det image, der blev brugt til at etablere denne reference.

Brug transaktionen til at validere en udskiftning og en uafhængig restore. Den gendannede service er kun acceptabel, når pads, authors, revisioner og plugins kommer tilbage, og samtidige redigeringer stadig konvergerer. Overvåg samtidig WebSocket-sessioner, antal revisioner, databasewrites og plugin-eksekvering, og gør den langsomste eller mest begrænsede del til en service-level alert.

Gate'en skal også have et negativt tilfælde: Afvis midlertidigt testidentitetens adgang til Postgres eller en anden understøttet database til persistent brug med flere brugere. Bekræft, at Etherpad genererer en brugbar fejl, samtidig med at data bevares, gendan den gyldige tilstand, og gentag den kendt gode transaktion. Når begge resultater gemmes, forhindrer det, at et overfladisk health-endpoint bliver det eneste produktionsbevis.

Deploy Etherpad på Dockup uden at miste grænserne

For Etherpad er Dockup mest nyttig ved grænsen mellem et image og en persistent service. Den holder routen til 9001, TLS, secret-værdier og storage tilknyttet på tværs af containerudskiftninger, uanset om compute tilhører Dockup eller din tilknyttede server.

Afslut med viden om applikationen: Angiv den offentlige URL, og aktivér proxy-understøttelse af WebSocket; forbind til og test Postgres eller en anden understøttet database til persistent brug med flere brugere; og kør denne verificering: Åbn ét pad i to browsere, redigér samtidigt, inspicér revisioner, og eksportér resultatet i et påkrævet format. Gem resultatet som en deployment-kontrol, så den næste image-opdatering vurderes ud fra adfærd frem for containerstatus.

Ofte stillede spørgsmål

Hvad skal Etherpad bruge til en produktionsdeployment?

Route Etherpad-containeren via port 9001 gennem én HTTPS-origin. Det understøttende netværkskrav er Postgres eller en anden understøttet database til persistent brug med flere brugere. Kald ikke Etherpad klar, før du kan åbne ét pad i to browsere, redigere samtidigt, inspicere revisioner og eksportere resultatet i et påkrævet format.

Hvilke Etherpad-data hører hjemme i en backup?

Gør /opt/etherpad-lite/var persistent, og medtag database, uploadede plugins og settings i det samme recovery-manifest. En ren Etherpad-restore består kun, når pads, authors, revisioner og plugins kommer tilbage, og samtidige redigeringer stadig konvergerer.

Kræver Etherpad HTTPS bag en reverse proxy?

Brug HTTPS til den offentlige Etherpad-origin, og behold port 9001 på den interne route. Anvend Etherpad-indstillingen korrekt: Angiv den offentlige URL, og aktivér proxy-understøttelse af WebSocket. For Etherpad beskytter HTTPS credentials eller brugerindhold under transport og sikrer ensartet origin-følsom klientadfærd.

Hvordan bør en Etherpad-opgradering testes?

Gendan den aktuelle Etherpad-state i en isoleret deployment, anvend kandidatversionen, og gentag dens acceptancetransaktion. Vær særligt opmærksom, fordi Etherpad-pluginversioner, settings-syntaks og databasemigrationer skal testes samlet. Behold det tidligere Etherpad-image, indtil grænsen for datamigration og rollback er forstået.