Memos zelf hosten in 2026: notities, API-toegang en back-ups
Een praktische handleiding voor het zelf hosten van Memos, met aandacht voor Docker, poorten, persistente data, TLS, beveiliging, back-ups en problemen die gebruik in productie verhinderen. Stap voor stap.
Behandel Memos als een klein systeem, niet als een Docker-image. Het gebruikersdoel van Memos is duidelijk: snel Markdown-notities maken met een API. De deployment is pas acceptabel wanneer je een private memo en bijlage kunt maken, die via de API kunt ophalen, kunt bewerken en kunt bevestigen dat ze behouden blijven nadat de container is vervangen.
Dat onderscheid brengt de fout aan het licht waar operators na lokale tests tegenaan lopen: het databasebestand staat op de containerlaag en verdwijnt nadat de container is vervangen. Het maakt het back-up- en upgradeplan bovendien specifiek genoeg om te testen.
Maak van de lokale opdracht een controleerbare service
De eerste container moet je eenvoudig kunnen verwijderen en opnieuw aanmaken. Houd data buiten de writable layer, bind poort 5230 alleen waar de proxy erbij kan en geef configuratie tijdens runtime door.
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
Pin de image na de eerste test. Lees de eerste startup-fout in plaats van het laatste restartbericht, controleer elke mount met docker inspect en volg de logs terwijl je een private memo en bijlage maakt, die via de API ophaalt, bewerkt en bevestigt dat ze behouden blijven nadat de container is vervangen. Met die volgorde maak je onderscheid tussen een onjuiste image-opdracht en een probleem met dependencies of rechten.
Bepaal eerst wanneer Memos geslaagd is
Scheid voor Memos vier zaken: ingress, de listener op 5230, duurzame state en ondersteunende services of lokale capaciteit. De vereiste voor de lokale runtime is één durable volume voor de ingebouwde database en assets. Test die grens voordat je de service publiceert en opnieuw nadat je een container hebt vervangen.
Voer de bekende goede transactie uit — maak een private memo en bijlage, haal die via de API op, bewerk die en bevestig dat die behouden blijft nadat de container is vervangen — voordat je die scheiding als voltooid beschouwt. Meet SQLite-writes, groei van bijlagen, API-verkeer en zoekopdrachten over verzamelde notities en bewaar het resultaat bij het deploymentrecord. Dit levert zowel een acceptatiecriterium als de eerste capaciteitsbaseline op.
Geef Memos niet de volledige host
Voor Memos is het waardevolle oppervlak niet per se de landingspagina. De grootste fout is registratie langer openlaten dan de bedoeling is. Pak dat bewust aan: sluit registratie wanneer dat passend is en houd private memo's achter een sterk account en HTTPS.
Memos heeft in deze baseline geen verplicht bootstrap-secret; bescherm in plaats daarvan het daadwerkelijke administratoraccount of de upstream-authenticatie. Gebruik een unprivileged container user wanneer de image dit ondersteunt en mount geen niet-gerelateerde credentials. Pas rate- of sizelimits toe bij ingress wanneer niet-vertrouwde workloads SQLite-writes, groei van bijlagen, API-verkeer en zoekopdrachten over verzamelde notities kunnen verbruiken.
TLS is eenvoudig; gegenereerde URL's niet
Vermijd tijdelijke en permanente publieke origins voor Memos. Gebruik in plaats daarvan een stabiele HTTPS-origin voor browser- en API-clients, laat de gekozen DNS-naam naar de platformroute wijzen en proxy alleen naar poort 5230.
Voer deze actie buiten de host uit: maak een private memo en bijlage, haal die via de API op, bewerk die en bevestig dat die behouden blijft nadat de container is vervangen. Als ingress mislukt, behandelt de handleiding voor het oplossen van een 502 Bad Gateway fouten met poorten en listeners. Als Memos het verzoek ontvangt maar het databasebestand op de containerlaag staat en na vervanging verdwijnt, wijst het bewijs nu verder dan de proxy.
Bewijs dat Memos vervanging overleeft
Een containerimage kan opnieuw worden gedownload; de Memos-database en geüploade resources niet. Mount /var/opt/memos vóór de bootstrap, schrijf onschadelijke voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Controleer de effectieve mount in plaats van blind te vertrouwen op een Compose-bestandsnaam en controleer of de runtime user kan schrijven naar de locatie die Memos verwacht.
Kies een retentieperiode en een off-host bestemming en oefen het herstel uit zonder productie aan te raken. De oefening is pas geslaagd wanneer users, memo's, tags en resources terug zijn en de API de bekende private memo kan ophalen. Combineer voor database-backed state storage snapshots met application-consistente exports, zoals beschreven in point-in-time recovery versus snapshots.
Vijf controles die sterker zijn dan container health
Gebruik first-user traffic niet als acceptatietest voor Memos. Bereid onschadelijke voorbeeldstate voor en voer de volledige actie uit: “maak een private memo en bijlage, haal die via de API op, bewerk die en bevestig dat die behouden blijft nadat de container is vervangen”. Noteer de exacte publieke URL, het resultaat, de image-referentie en het loginterval dat bij de run hoort.
Vervang de container en herhaal dit zonder de data opnieuw op te bouwen. Herstel vervolgens naar een lege host; de herstelvoorwaarde is dat users, memo's, tags en resources terugkomen en dat de API de bekende private memo kan ophalen. Observeer bij elke run SQLite-writes, groei van bijlagen, API-verkeer en zoekopdrachten over verzamelde notities en definieer een alert rond verslechtering van de transactie, niet rond idle container metrics.
Eén laatste controle moet expres mislukken: dien onschadelijke input in die dicht bij de resource- of formatlimiet voor deze grens ligt: het databasebestand staat op de containerlaag en verdwijnt na vervanging. Controleer of het resulterende Memos-bericht de relevante grens identificeert in plaats van dat het dataverwijdering of een eindeloze restart veroorzaakt. Herstel de geldige toestand en bevestig dat dezelfde voorbeeldtransactie slaagt. Houd deze korte oefening in de releasechecklist.
Logs die de volgende vraag beantwoorden
Gebruik “maak een private memo en bijlage, haal die via de API op, bewerk die en bevestig dat die behouden blijft nadat de container is vervangen” als Memos-smoketest na elke deployment. De bijbehorende metrics zijn SQLite-writes, groei van bijlagen, API-verkeer en zoekopdrachten over verzamelde notities; stuur een alert wanneer deze resources een punt naderen waarop de gebruikersactie verslechtert.
Het belangrijkste wijzigingsrisico is dat Memos-databasemigraties tegen een kopie moeten worden geoefend, omdat de volledige servicestate in één compact pad staat. Een veilige release begint met een herstelbare snapshot en valideert elke eenrichtingswijziging in de state voordat het verkeer wordt omgeschakeld. Wanneer het databasebestand op de containerlaag staat en na vervanging verdwijnt, houd je de mislukte container lang genoeg actief om de configuratie en eerste fout te lezen.
Gebruik Dockup voor de platformlaag
Dockup neemt het handmatige werk rond reverse proxy en lifecycle voor Memos weg. De service krijgt tijdens vervangingen een stabiele HTTPS-route naar 5230, geïnjecteerde configuratie en persistente storage. Een gekoppelde klantserver volgt hetzelfde model als door Dockup gehoste compute.
Voldoe na de launch aan het applicatiecontract: gebruik een stabiele HTTPS-origin voor browser- en API-clients, bevestig de lokale vereiste — één durable volume voor de ingebouwde database en assets — en voer dit bewijs uit: maak een private memo en bijlage, haal die via de API op, bewerk die en bevestig dat die behouden blijft nadat de container is vervangen. Zo blijft de one-clickervaring bruikbaar zonder de details af te vlakken die Memos herstelbaar en veilig maken.
Veelgestelde vragen
Wat heeft Memos nodig voor een deployment in productie?
Routeer de Memos-container op poort 5230 via één HTTPS-origin. De vereiste voor de lokale runtime is één durable volume voor de ingebouwde database en assets. Noem Memos pas klaar wanneer je een private memo en bijlage kunt maken, die via de API kunt ophalen, kunt bewerken en kunt bevestigen dat ze behouden blijven nadat de container is vervangen.
Welke Memos-data hoort in een back-up?
Maak /var/opt/memos persistent en neem de Memos-database en geüploade resources op in hetzelfde recovery manifest. Een schone Memos-restore is pas geslaagd wanneer users, memo's, tags en resources terug zijn en de API de bekende private memo kan ophalen.
Heeft Memos HTTPS nodig achter een reverse proxy?
Gebruik HTTPS voor de publieke Memos-origin en houd poort 5230 op de interne route. Pas de Memos-instelling correct toe: gebruik een stabiele HTTPS-origin voor browser- en API-clients. Voor Memos beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het voor consistent gedrag van clients waarvoor de origin van belang is.
Hoe moet een Memos-upgrade worden getest?
Herstel de huidige Memos-state naar een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let extra goed op, omdat Memos-databasemigraties tegen een kopie moeten worden geoefend en de volledige servicestate in één compact pad staat. Bewaar de vorige Memos-image totdat de grenzen voor datamigratie en rollback duidelijk zijn.
