Az Excalidraw saját üzemeltetése 2026-ban: együttműködés, TLS és adatkezelési határok
Gyakorlati útmutató az Excalidraw saját üzemeltetéséhez Dockerrel, portokkal, tartós adatokkal, TLS-sel, biztonsággal, biztonsági mentésekkel és a production használatot akadályozó hibákkal. 2026-ban.
Ha már próbáltad saját magad üzemeltetni az Excalidrawt, valószínűleg ismerős ez a frusztráló helyzet: a felület megjelenik, de az együttműködés nem működik, mert a WebSocket-végpont hibás. A konténer újralétrehozása ritkán oldja meg az URL-ek, az állapot és a függőségek közötti eltérést.
Ez az útmutató egy konkrét teljesülési feltételt használ — rajzolj és exportálj egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd csatlakozz újra egy második böngészővel. Minden konfigurációs döntést e feltétel alapján értékelünk, nem pedig egy zöld konténerjelzés alapján.
Az Excalidraw helyreállítása egy üres gépen
Az alap Excalidraw-deployment esetén a konténerréteg eldobható, és nincs szükség adatvolume-ra. A helyreállítási manifestben az alapképen nincs szerveroldali adat; minden különálló együttműködési szolgáltatásról készíts biztonsági mentést. Az image digestjét, a konfigurációt és a külön kezelt asseteket is vond változáskezelés alá.
Töröld, majd tiszta környezetben hozd létre újra a szolgáltatást, ezután igazold, hogy a kliens a rögzített image-ből újra felépül, a különálló szobaszolgáltatás pedig helyreállítja az általa megőrzendő együttműködési állapotot. Ehhez a Git repository production környezetbe juttatásáról szóló útmutató ad megfelelő mintát: az artifactot építsd újra, és csak a ténylegesen létező külső állapotról készíts biztonsági mentést.
Ne nevezz perzisztensnek egy könyvtárat, amíg az Excalidraw nem ír bele érdemi adatot. Az üres vagy nem használt mountok hamis biztonságérzetet keltenek, és később arra késztetik az üzemeltetőket, hogy rossz helyen keressék az állapotot.
Térképezd fel az Excalidrawt a Docker módosítása előtt
Az Excalidraw HTTP-folyamata a 80-as porton figyel; ezt a portot tartsd az alkalmazáshálózaton, és csak a platform útvonalát publikáld. A helyi futtatási követelmény egy különálló szobaszerver és egy tárolóréteg a tartós együttműködéshez. Életciklusukat kezeld explicit módon, hogy az Excalidraw gépek közötti áthelyezése ne változtassa meg észrevétlenül a működést.
Írd le a határt egy rövid szerződésben: ki felel a követelményért, melyik credentialt használod, milyen timeout elfogadható, és hogyan jelenik meg a hiba. Ezután hajtsd végre ezt a tranzakciót: rajzolj és exportálj egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd csatlakozz újra egy második böngészővel. A futtatás során figyeld az alapimage statikus assetkiszolgálását, miközben a WebSocket-kapcsolatok és a szobaállapot a különálló együttműködési szolgáltatáshoz tartoznak, mivel ez a terhelés hasznosabb kiindulási méretet ad, mint egy tétlen konténer.
Production átvételi teszt az Excalidrawhoz
Az Excalidraw release candidate-je akkor kaphat forgalmat, ha teljesít egy rögzített forgatókönyvet: rajzolj és exportálj egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd csatlakozz újra egy második böngészővel. Ehhez a forgatókönyvhöz rögzítsd az image digestjét, a tényleges nem titkos konfigurációt, a publikus origint és az időbélyegeket. A tesztadatok legyenek eldobhatók, de legyenek annyira életszerűek, hogy ugyanazt az útvonalat teszteljék, amelyet a felhasználók is használnak.
Futtasd le a tesztet a runtime cseréje után, majd építsd újra a szolgáltatást: az alapimage-ben nincs szerveroldali adat; minden különálló együttműködési szolgáltatásról készíts biztonsági mentést. A helyreállítás akkor sikeres, ha a kliens a rögzített image-ből újra felépül, a különálló szobaszolgáltatás pedig helyreállítja az általa megőrzendő együttműködési állapotot. Hasonlítsd össze az alapimage statikus assetkiszolgálásának, valamint a különálló együttműködési szolgáltatáshoz tartozó WebSocket-kapcsolatoknak és szobaállapotnak az erőforrás-méréseit az előző kiadással, és promotion előtt vizsgáld ki az érdemi eltéréseket.
Végül hajtsd végre ezt a kontrollált hibatesztet: küldj ártalmatlan bemenetet az ehhez a határhoz tartozó erőforrás- vagy formátumkorlát közelében: a felület betölt, de az együttműködés nem működik, mert a WebSocket-végpont hibás. Ellenőrizd, hogy az Excalidraw érthetően jelzi a hibát, nem károsítja a meglévő állapotot, és a helyes feltétel visszaállásakor folytatja a működést. Ments el egy kitakarás után használható naplórészletet és a helyreállítási időt. Ezek az ellenőrzések együtt a működést, a tartósságot és az üzemeltethetőséget fedik le, nem csupán a folyamat futását.
A helyi parancs inspectálható szolgáltatássá alakítása
A production jellegű indítás szándékosan egyszerű: névvel ellátott állapot, explicit port és titkok nélkül az image-ben.
docker run -d \
--name excalidraw \
--restart unless-stopped \
-p 127.0.0.1:80:80 \
excalidraw/excalidraw:latest
A példa kiindulási alap, nem teljes kiegészítő stack. A szolgáltatás publikálása előtt erősítsd meg a helyi követelményt: különálló szobaszerver és tárolóréteg szükséges a tartós együttműködéshez. Ellenőrizd a tényleges mountokat és a listenert, majd próbálj meg rajzolni és exportálni egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, és csatlakozz újra egy második böngészővel. A következő újraindítás előtt rögzítsd a működő image-et.
Az Excalidrawra jellemző biztonsági döntések
Az Excalidraw esetében a fiókok rotációja nem a hardening fő feladata, mivel a standard image nem tartalmaz fióktárolót. Arra összpontosíts, hogy ne feltételezd: önmagában a statikus image tartós megosztott szobatárolást biztosít. Védd a privát együttműködési szobákat, és ne állíts tartós együttműködést akkor, ha csak az Excalidraw webes image-e van telepítve.
Használj HTTPS-t, opcionális platformszintű hitelesítést és ellenőrzött image digestet. Ne mountolj nem kapcsolódó hostadatokat, és korlátozd az alapimage statikus assetkiszolgálása, valamint a különálló együttműködési szolgáltatáshoz tartozó WebSocket-kapcsolatok és szobaállapot által képviselt terhelést. Egy tiszta külső kliensnek a kívánt buildet kell látnia, hozzáféréskorlátozás esetén pedig egy jogosulatlan klienst még azelőtt el kell utasítani, hogy elérné a konténert.
Az Excalidraw útválasztása a HTTPS félreértelmezése nélkül
A TLS kiállítása csak az Excalidraw útvonalának egyik fele. A klienst HTTPS-en szolgáld ki, az együttműködési végpontokat pedig külön konfiguráld. Belsőleg a 80-as portra továbbítsd a forgalmat, és add tovább a külső sémát, hogy a generált URL-ek és a biztonságos cookie-k következetesek maradjanak.
Használd a teljes Excalidraw-forgatókönyvet tiszta hálózatról, ne csak a gyökéroldalt. Egy 502-es vagy tanúsítványhiba elkülönítéséhez hasznos lehet az automatikus domain- és TLS-beállítás. Ha a forgalom eléri a folyamatot, a felület betölt, de az együttműködés nem működik, mert a WebSocket-végpont hibás, akkor ott diagnosztizáld a problémát, ahol keletkezik, ahelyett hogy egymásra halmozod az átirányításokat.
Az Excalidraw frissítése találgatás nélkül
Az Excalidraw hasznos szolgáltatási indikátora a következő művelet sikeres végrehajtása: „rajzolj és exportálj egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd csatlakozz újra egy második böngészővel”. Ezt az eredményt vesd össze az alapimage statikus assetkiszolgálásával, valamint a különálló együttműködési szolgáltatáshoz tartozó WebSocket-kapcsolatokkal és szobaállapottal; egy zöld gyökéroldal semmit nem mond a kimeneti kompatibilitásról vagy az erőforrások kimerüléséről.
Az image cseréje előtt számolj ezzel a kockázattal: a frontend, a room server és a storage verzióit együtt kell tesztelni, nem szabad automatikusan feltételezni, hogy a statikus kliens birtokolja a megosztott adatokat. Tesztelj reprezentatív és határérték közeli bemeneteket mindkét verzióval, és tartsd meg a régi digestet, amíg a jelölt nem teljesíti a teszteket. Ha a felület betölt, de az együttműködés nem működik, mert a WebSocket-végpont hibás, vizsgáld meg a kérés formátumát, a kliens viselkedését és a runtime naplóit, mielőtt módosítanád az útválasztási vagy tárolási beállításokat.
A platformréteg használata a Dockuppal
Egy egykattintásos Excalidraw-sablonnak tartalmaznia kell az image digestjét, a 80-as portot, a health check időzítését, a domaint és a TLS-t. Mivel az alapszolgáltatás stateless, a Dockup közvetlenül újra létrehozhatja azt Dockup compute-on vagy egy csatolt gépen, anélkül hogy egy üres volumet biztonsági mentésnek állítana be.
Indítás után szolgáld ki a klienst HTTPS-en, az együttműködési végpontokat pedig külön konfiguráld. A Dockupnak meg kell őriznie az Excalidraw runtime-beállításait, miközben az üzemeltető megerősíti ezt a helyi követelményt: különálló szobaszerver és tárolóréteg szükséges a tartós együttműködéshez. Ellenőrizd ezt az eredményt: rajzolj és exportálj egy diagramot, ossz meg egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd csatlakozz újra egy második böngészővel. Minden későbbi állapottal rendelkező kiterjesztésnek deklarálnia kell a saját mountját, secretjét és helyreállítási tesztjét, és nem módosíthatja észrevétlenül az alapsablon jelentését.
Gyakran ismételt kérdések
Mire van szüksége az Excalidrawnak production deployment esetén?
Az Excalidraw konténerét a 80-as porton keresztül, egyetlen HTTPS-origin mögött route-old. A helyi futtatási követelmény egy különálló szobaszerver és egy tárolóréteg a tartós együttműködéshez. Ne tekintsd késznek az Excalidrawt, amíg nem tudsz rajzolni és exportálni egy diagramot, megosztani egy együttműködési hivatkozást a konfigurált szobaszolgáltatáson keresztül, majd újracsatlakozni egy második böngészővel.
Mely Excalidraw-adatok tartoznak a biztonsági mentésbe?
A standard Excalidraw image nem igényel alkalmazásadatokat tartalmazó mountot. Őrizd meg a deployment konfigurációját, és a csatlakoztatott állapotról külön készíts biztonsági mentést; a helyreállítás akkor sikeres, ha a kliens a rögzített image-ből újra felépül, a különálló szobaszolgáltatás pedig helyreállítja az általa megőrzendő együttműködési állapotot.
Szüksége van az Excalidrawnak HTTPS-re reverse proxy mögött?
A publikus Excalidraw-originhez használj HTTPS-t, és a 80-as portot tartsd a belső útvonalon. Az Excalidraw-beállítást megfelelően alkalmazd: a klienst HTTPS-en szolgáld ki, az együttműködési végpontokat pedig külön konfiguráld. Az Excalidraw esetében a HTTPS védi a credentialöket és a felhasználói tartalmakat az átvitel során, valamint következetessé teszi az originérzékeny kliensviselkedést.
Hogyan kell tesztelni egy Excalidraw-frissítést?
Telepítsd a jelölt Excalidraw-image-et a jelenlegi mellé, majd ismételd meg az átvételi tranzakciót ismert bemenettel. Fordíts különös figyelmet arra, hogy a frontend, a room server és a storage verzióit együtt kell tesztelni, nem szabad automatikusan feltételezni, hogy a statikus kliens birtokolja a megosztott adatokat. A standard konténer nem végez adatmigrációt, ezért tartsd meg az előző digestet, amíg a kimeneti és kompatibilitási ellenőrzések sikeresen le nem zárulnak.
