Rejstřík deníkuDockup / terénní poznámka
Note / self-host-excalidraw

Jak provozovat Excalidraw ve vlastní infrastruktuře v roce 2026: spolupráce, TLS a hranice dat

Praktický návod k provozu Excalidraw ve vlastní infrastruktuře, který pokrývá Docker, porty, persistentní data, TLS, zabezpečení, zálohy a chyby bránící produkčnímu použití. V roce 2026.

Pokud jste se už pokoušeli provozovat Excalidraw ve vlastní infrastruktuře, tento frustrující stav vám nejspíš bude povědomý: UI se zobrazí, ale spolupráce selže, protože jeho WebSocket endpoint je nastavený nesprávně. Opětovné vytvoření containeru jen zřídka vyřeší nesoulad mezi URL, stavem a závislostmi.

Tento postup používá jedno konkrétní kritérium dokončení — nakreslit a exportovat diagram, sdílet collaboration link prostřednictvím nakonfigurované room služby a znovu se připojit z druhého prohlížeče. Každé konfigurační rozhodnutí posuzujeme podle tohoto kritéria, nikoli podle zeleného odznaku containeru.

Obnovení Excalidraw na prázdném hostiteli

V základním nasazení Excalidraw je vrstva containeru postradatelná a není potřeba žádný datový volume. Obnovovací manifest neobsahuje v základním image žádná serverová data; zálohujte všechny samostatné collaboration služby. Digest image, konfiguraci a všechny samostatně spravované assety mějte pod change control.

Službu smažte a znovu vytvořte v čistém prostředí. Poté ověřte, že se klient sestaví z image s připnutým digestem a že samostatná room služba obnoví veškerý stav spolupráce, který slibuje uchovávat. Relevantním vzorem je průvodce od Git repository po produkční nasazení: znovu sestavte artifact a zálohujte pouze externí stav, který skutečně existuje.

Adresář neoznačujte jako persistentní, pokud do něj Excalidraw nezapisuje smysluplná data. Prázdné nebo nepoužívané mounty vytvářejí falešný pocit jistoty a později vedou operátory k hledání stavu na nesprávném místě.

Zmapujte Excalidraw, než se pustíte do Dockeru

HTTP proces Excalidraw naslouchá na portu 80; tento port ponechte v aplikační síti a zveřejněte pouze route platformy. Lokální runtime vyžaduje samostatný room server a storage layer pro persistentní spolupráci. Jejich lifecycle mějte explicitně definovaný, aby přesun Excalidraw mezi hostiteli tiše nezměnil jeho chování.

Hranici popište v krátkém kontraktu: kdo požadavek vlastní, které credentials se používají, jaký timeout je přijatelný a jak se projeví selhání. Poté spusťte tuto transakci: nakreslete a exportujte diagram, sdílejte collaboration link prostřednictvím nakonfigurované room služby a znovu se připojte z druhého prohlížeče. Během běhu sledujte doručování statických assetů základního image, zatímco WebSocket connections a stav místností patří samostatné collaboration službě. Toto zatížení poskytne užitečnější výchozí velikost než nečinný container.

Produkční akceptační test Excalidraw

Release candidate Excalidraw získá provoz až po dokončení pevně definovaného scénáře: nakreslit a exportovat diagram, sdílet collaboration link prostřednictvím nakonfigurované room služby a znovu se připojit z druhého prohlížeče. Pro tento scénář zaznamenejte digest image, efektivní konfiguraci bez secrets, veřejný origin a časová razítka. Testovací data by měla být odstranitelná, ale dostatečně realistická, aby prověřila stejnou cestu jako uživatelé.

Spusťte test po nahrazení runtime a poté službu znovu sestavte bez serverových dat v základním image; zálohujte všechny samostatné collaboration služby. Obnovení je úspěšné, pokud se klient sestaví z image s připnutým digestem a samostatná room služba obnoví veškerý stav spolupráce, který slibuje uchovávat. Porovnejte měření prostředků pro doručování statických assetů základního image, WebSocket connections a stav místností samostatné collaboration služby s předchozím releasem a před nasazením prozkoumejte významné odchylky.

Nakonec proveďte toto řízené selhání: odešlete neškodný vstup blízko limitu prostředků nebo formátu spojeného s touto hranicí: UI se načte, ale spolupráce selže, protože WebSocket endpoint je nastavený nesprávně. Ověřte, že Excalidraw selhání vysvětlí, nepoškodí existující stav a po návratu platných podmínek bude pokračovat v provozu. Uložte redigovaný výňatek z logu a dobu obnovení. Tyto kontroly společně pokrývají chování, odolnost dat a provozuschopnost, nikoli jen dostupnost procesu.

Proměňte lokální příkaz v kontrolovatelnou službu

Launch připomínající produkci je záměrně nudný: pojmenovaný stav, explicitní port a žádný secret uvnitř image.

docker run -d \
  --name excalidraw \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  excalidraw/excalidraw:latest

Příklad je základ, nikoli kompletní supporting stack. Před zpřístupněním potvrďte lokální požadavek: samostatný room server a storage layer pro persistentní spolupráci. Zkontrolujte efektivní mounty a listener, poté zkuste nakreslit a exportovat diagram, sdílet collaboration link prostřednictvím nakonfigurované room služby a znovu se připojit z druhého prohlížeče. Před dalším restartem připněte funkční image.

Bezpečnostní rozhodnutí specifická pro Excalidraw

U Excalidraw není rotace účtů hardeningovou úlohou, protože standardní image nemá account store. Zaměřte se na předpoklad, že samotný statický image poskytuje trvalé úložiště sdílených místností, a chraňte všechny privátní collaboration rooms. Netvrďte, že spolupráce je durable, pokud je nasazen pouze webový image Excalidraw.

Používejte HTTPS, volitelnou autentizaci na platformě a prověřený digest image. Nemountujte nesouvisející data z hostitele a omezte zátěž představovanou doručováním statických assetů základního image, WebSocket connections a stavem místností samostatné collaboration služby. Čistý externí klient by měl obdržet zamýšlený build, zatímco neoprávněný klient by měl být při omezeném přístupu odmítnut ještě před dosažením containeru.

Směrujte Excalidraw, aniž byste předstírali HTTPS

Vydání TLS certifikátu je pouze polovina route Excalidraw. Klienta obsluhujte přes HTTPS a collaboration endpoints konfigurujte samostatně. Interně směrujte provoz na port 80 a předávejte externí scheme, aby generované URL a secure cookies zůstaly konzistentní.

Kompletní scénář Excalidraw spusťte z čisté sítě, nikoli pouze z kořenové stránky. Chybu 502 nebo problém s certifikátem lze izolovat pomocí automatického nastavení domény a TLS. Pokud provoz dosáhne procesu a UI se načte, ale spolupráce selže, protože WebSocket endpoint je nastavený nesprávně, diagnostikujte tento stav na místě jeho vzniku, místo abyste vrstvili další redirecty.

Aktualizujte Excalidraw bez hádání

Užitečným indikátorem služby Excalidraw je úspěšné dokončení scénáře „nakreslit a exportovat diagram, sdílet collaboration link prostřednictvím nakonfigurované room služby a znovu se připojit z druhého prohlížeče“. Tento výsledek kombinujte s doručováním statických assetů základního image, WebSocket connections a stavem místností samostatné collaboration služby; zelená kořenová stránka nic nevypovídá o kompatibilitě výstupu ani o vyčerpání prostředků.

Před nahrazením image zohledněte toto riziko: verze frontendu, room serveru a storage by měly být testovány společně, místo předpokladu, že statický klient vlastní sdílená data. Otestujte reprezentativní i hraniční vstupy proti oběma verzím a starý digest ponechte, dokud candidate testy neprojde. Pokud se UI načte, ale spolupráce selže, protože WebSocket endpoint je nastavený nesprávně, před změnou nastavení route nebo storage prozkoumejte formát požadavku, chování klienta a runtime logy.

Použijte Dockup pro platformní vrstvu

One-click template Excalidraw by měl obsahovat digest image, port 80, timing health checku, doménu a TLS. Protože je základní služba stateless, může ji Dockup přímo znovu vytvořit na Dockup compute nebo na připojeném stroji, aniž by předstíral, že prázdný volume je záloha.

Po spuštění obsluhujte klienta přes HTTPS a collaboration endpoints konfigurujte samostatně. Dockup by měl zachovat nastavení runtime Excalidraw, zatímco operátor potvrdí tento lokální požadavek: samostatný room server a storage layer pro persistentní spolupráci. Ověřte tento výsledek: nakreslete a exportujte diagram, sdílejte collaboration link prostřednictvím nakonfigurované room služby a znovu se připojte z druhého prohlížeče. Každé pozdější rozšíření se stavem musí deklarovat vlastní mount, secret a restore test, nikoli tiše měnit význam základního template.

Často kladené otázky

Co Excalidraw potřebuje pro produkční nasazení?

Směrujte container Excalidraw na portu 80 přes jeden HTTPS origin. Lokální runtime vyžaduje samostatný room server a storage layer pro persistentní spolupráci. Excalidraw neoznačujte za připravený, dokud nedokážete nakreslit a exportovat diagram, sdílet collaboration link prostřednictvím nakonfigurované room služby a znovu se připojit z druhého prohlížeče.

Která data Excalidraw patří do zálohy?

Standardní image Excalidraw nemá povinný mount s aplikačními daty. Uchovejte konfiguraci nasazení a veškerý připojený stav zálohujte samostatně; obnovení je úspěšné, pokud se klient sestaví z image s připnutým digestem a samostatná room služba obnoví veškerý stav spolupráce, který slibuje uchovávat.

Vyžaduje Excalidraw za reverse proxy HTTPS?

Veřejný origin Excalidraw obsluhujte přes HTTPS a port 80 ponechte na interní route. Nastavení Excalidraw aplikujte správně: klienta obsluhujte přes HTTPS a collaboration endpoints konfigurujte samostatně. U Excalidraw HTTPS chrání credentials nebo obsah uživatele při přenosu a udržuje konzistentní chování klienta závislé na originu.

Jak testovat aktualizaci Excalidraw?

Candidate image Excalidraw nasaďte vedle aktuální verze a zopakujte akceptační transakci se známými vstupy. Věnujte tomu zvláštní pozornost, protože verze frontendu, room serveru a storage by měly být testovány společně, místo předpokladu, že statický klient vlastní sdílená data. Standardní container neobsahuje migraci dat, proto předchozí digest ponechte, dokud neprojdou kontroly výstupu a kompatibility.