Jak v roce 2026 provozovat Memos ve vlastním hostingu: poznámky, přístup k API a zálohy
Praktický průvodce self-hostingem Memos, který pokrývá Docker, porty, persistentní data, TLS, zabezpečení, zálohy a selhání bránící produkčnímu nasazení. Krok za krokem.
Vnímejte Memos jako malý systém, ne jako Docker image. Uživatelský cíl Memos je jasný: rychlé Markdown poznámky s API; nasazení je přijatelné pouze tehdy, když dokážete vytvořit privátní poznámku a přílohu, načíst je přes API, upravit je a ověřit, že zůstanou zachované i po nahrazení kontejneru.
Toto rozlišení odhalí způsob selhání, se kterým se operátoři setkávají po lokálním testování: soubor databáze je uložen ve vrstvě kontejneru a po jeho nahrazení zmizí. Zároveň díky němu získáte dostatečně konkrétní plán zálohování a aktualizací, který lze otestovat.
Proměňte lokální příkaz ve službu, kterou lze kontrolovat
První kontejner by mělo být snadné smazat a znovu vytvořit. Uchovávejte data mimo zapisovatelnou vrstvu, port 5230 bindujte pouze tam, odkud se k němu dostane proxy, a konfiguraci předávejte při spuštění.
docker run -d \
--name memos \
--restart unless-stopped \
-p 127.0.0.1:5230:5230 \
-v memos-data:/var/opt/memos \
neosmemo/memos:stable --mode prod --port 5230
Po úvodním testu image připněte ke konkrétní verzi. Čtěte nejstarší chybu při spuštění, ne až poslední zprávu o restartu, každý mount ověřte pomocí docker inspect a sledujte logy během vytváření privátní poznámky a přílohy, jejich načítání přes API, úpravy a ověřování, že zůstanou zachované po nahrazení kontejneru. Tato posloupnost odliší chybný příkaz image od problému se závislostí nebo oprávněními.
Nejdříve definujte, co znamená úspěch u Memos
U Memos oddělte čtyři oblasti: ingress, listener na portu 5230, persistentní stav a podpůrné služby nebo lokální kapacitu. Požadavkem lokálního runtime je jeden persistentní svazek pro vestavěnou databázi a assety. Tuto hranici otestujte před zveřejněním služby a znovu po nahrazení kontejneru.
Než toto oddělení označíte za dokončené, spusťte ověřenou transakci — vytvořte privátní poznámku a přílohu, načtěte je přes API, upravte je a ověřte, že zůstanou zachované po nahrazení kontejneru. Měřte zápisy do SQLite, růst příloh, provoz API a vyhledávání v nahromaděných poznámkách a výsledek uchovejte spolu se záznamem o nasazení. Získáte tím akceptační kritérium i první kapacitní baseline.
Nedávejte Memos celý host
U Memos nemusí být nejcennější částí surface landing page. Nejčastější chybou je ponechat registraci otevřenou déle, než je zamýšleno. Postupujte záměrně: v případě potřeby registraci zavřete a privátní poznámky chraňte silným účtem a HTTPS.
Memos v tomto základním scénáři nemá povinný bootstrap secret; místo toho chraňte skutečný administrátorský účet nebo upstream authentication. Pokud to image podporuje, použijte neprivilegovaného uživatele kontejneru a nemountujte žádné nesouvisející přihlašovací údaje. Na ingressu nastavte limity rychlosti nebo velikosti v místech, kde může nedůvěryhodná práce spotřebovávat zápisy do SQLite, růst příloh, provoz API a vyhledávání v nahromaděných poznámkách.
TLS je snadné, generované URL nikoli
Vyhněte se dočasným i trvalým veřejným originům pro Memos. Místo toho použijte stabilní HTTPS origin pro browserové a API klienty, nasměrujte zvolený DNS název na route platformy a proxy směrujte pouze na port 5230.
Tuto akci proveďte zvenku hostitele: vytvořte privátní poznámku a přílohu, načtěte je přes API, upravte je a ověřte, že zůstanou zachované po nahrazení kontejneru. Pokud ingress selže, průvodce řešením problémů s chybou 502 pokrývá chyby portu a listeneru. Pokud Memos požadavek přijme, ale soubor databáze je uložen ve vrstvě kontejneru a po jeho nahrazení zmizí, důkazy nyní ukazují mimo proxy.
Ověřte, že Memos přežije nahrazení
Image kontejneru lze znovu stáhnout; databázi Memos a nahrané zdroje nikoli. Před bootstrapem přimountujte /var/opt/memos, zapište neškodná ukázková data a nahraďte kontejner, abyste prokázali, že je tato cesta skutečně persistentní. Zkontrolujte efektivní mount místo spoléhání na název Compose souboru a ověřte, že runtime user může zapisovat tam, kam Memos potřebuje.
Zvolte retenci a umístění mimo hostitele a poté si obnovu nacvičte bez zásahu do produkce. Test je úspěšný pouze tehdy, když se vrátí uživatelé, poznámky, tagy a zdroje a API načte známou privátní poznámku. U stavu uloženého v databázi kombinujte storage snapshots s exporty konzistentními z pohledu aplikace, jak je popsáno v článku point-in-time recovery versus snapshots.
Pět kontrol silnějších než health kontejneru
Nepoužívejte provoz prvního uživatele jako akceptační test Memos. Připravte neškodný ukázkový stav a spusťte kompletní akci „vytvořit privátní poznámku a přílohu, načíst je přes API, upravit je a ověřit, že zůstanou zachované po nahrazení kontejneru“. Poznamenejte si přesnou veřejnou URL, výsledek, referenci image a interval logů spojený s během testu.
Nahraďte kontejner a test zopakujte bez opětovného sestavení dat. Poté proveďte obnovu na prázdném hostiteli; podmínkou úspěchu obnovy je, že se vrátí uživatelé, poznámky, tagy a zdroje a API načte známou privátní poznámku. Při každém průchodu sledujte zápisy do SQLite, růst příloh, provoz API a vyhledávání v nahromaděných poznámkách a nastavte alert na zhoršení této transakce, nikoli na neaktivní metriky kontejneru.
Jedna závěrečná kontrola by měla záměrně selhat: odešlete neškodný vstup blízko limitu zdroje nebo formátu souvisejícího s touto hranicí: soubor databáze je uložen ve vrstvě kontejneru a po jeho nahrazení zmizí. Ověřte, že výsledná zpráva Memos identifikuje příslušnou hranici, místo aby vyvolala smazání dat nebo nekonečný restart. Obnovte platný stav a potvrďte, že stejná ukázková transakce proběhne úspěšně. Tuto krátkou zkoušku zařaďte do release checklistu.
Logy, které zodpoví další otázku
Po každém nasazení použijte jako smoke test Memos akci vytvoření privátní poznámky a přílohy, jejich načtení přes API, úpravy a ověření, že zůstanou zachované po nahrazení kontejneru. Její podpůrné metriky tvoří zápisy do SQLite, růst příloh, provoz API a vyhledávání v nahromaděných poznámkách; alert nastavte v okamžiku, kdy se tyto zdroje přiblíží bodu, za kterým dochází ke zhoršení uživatelské akce.
Hlavním rizikem změn je, že migrace databáze Memos je třeba nacvičit na kopii, protože celý stav služby žije v jedné kompaktní cestě. Bezpečný release začíná obnovitelným snapshotem a před přesunem provozu ověří každou jednosměrnou změnu stavu. Pokud je soubor databáze uložen ve vrstvě kontejneru a po jeho nahrazení zmizí, ponechte neúspěšný kontejner dostatečně dlouho na přečtení jeho konfigurace a první chyby.
Použijte Dockup pro platformní vrstvu
Dockup odstraňuje ruční práci s reverse proxy a lifecycle kolem Memos. Služba během nahrazování dostane stabilní HTTPS route na port 5230, injected configuration a persistentní storage. Připojený zákaznický server se řídí stejným modelem jako compute hostovaný v Dockup.
Po spuštění splňte aplikační kontrakt: použijte stabilní HTTPS origin pro browserové a API klienty, potvrďte lokální požadavek — jeden persistentní svazek pro vestavěnou databázi a assety — a proveďte tento důkaz: vytvořte privátní poznámku a přílohu, načtěte je přes API, upravte je a ověřte, že zůstanou zachované po nahrazení kontejneru. Díky tomu zůstane one-click experience užitečná, aniž by se ztratily detaily, které činí Memos obnovitelným a bezpečným.
Často kladené otázky
Co Memos potřebuje pro produkční nasazení?
Směrujte kontejner Memos na portu 5230 přes jeden HTTPS origin. Požadavkem lokálního runtime je jeden persistentní svazek pro vestavěnou databázi a assety. Memos neoznačujte za připravené, dokud nedokážete vytvořit privátní poznámku a přílohu, načíst je přes API, upravit je a ověřit, že zůstanou zachované po nahrazení kontejneru.
Která data Memos patří do zálohy?
Persistujte /var/opt/memos a databázi Memos i nahrané zdroje zahrňte do stejného recovery manifestu. Čistá obnova Memos je úspěšná pouze tehdy, když se vrátí uživatelé, poznámky, tagy a zdroje a API načte známou privátní poznámku.
Vyžaduje Memos za reverse proxy HTTPS?
Pro veřejný origin Memos použijte HTTPS a port 5230 ponechte na interní route. Nastavení Memos aplikujte správně: použijte stabilní HTTPS origin pro browserové a API klienty. U Memos HTTPS chrání přihlašovací údaje nebo uživatelský obsah při přenosu a udržuje konzistentní chování klienta závislé na originu.
Jak testovat aktualizaci Memos?
Obnovte aktuální stav Memos do izolovaného nasazení, aplikujte kandidátní verzi a zopakujte akceptační transakci. Věnujte tomu zvláštní pozornost, protože migrace databáze Memos je třeba nacvičit na kopii, jelikož celý stav služby žije v jedné kompaktní cestě. Předchozí image Memos ponechte, dokud nebudete rozumět hranici migrace dat a rollbacku.
