Journal-indexDockup / praktijknotitie
Note / self-host-anythingllm

AnythingLLM zelf hosten in 2026: documenten, embeddings en persistentie

Host AnythingLLM zelf met de juiste poorten, persistente opslag, HTTPS, secrets, back-ups en upgradecontroles. Leer hoe je problemen oplost wanneer de storage-mount ontbreekt.

Een AnythingLLM-container kan groen zijn terwijl de taak die gebruikers belangrijk vinden niet werkt. Bij AnythingLLM is die verborgen fout meestal dat de storage-mount ontbreekt of dat het embeddingmodel na het indexeren is gewijzigd. Deze handleiding gebruikt “een document importeren, wachten op de embedding, een vraag stellen waarvan het antwoord van dat document afhangt en het geciteerde bronfragment controleren” als acceptatietest en bouwt de deployment vanuit dat resultaat terug op.

AnythingLLM heeft een specifieke rol in de stack: chatten met documenten en retrieval zonder een zelfgebouwde pipeline. De productievraag is daarom niet of poort 3001 één keer antwoord geeft, maar of state, dependencies en het publieke adres na een restart, update en restore met elkaar blijven overeenkomen.

Poorten, processen en private services

Een bruikbaar AnythingLLM-diagram toont de publieke route, private poort 3001, stategrens en alle vereiste ondersteunende onderdelen. Markeer welke pijlen credentials bevatten en welke gewone user traffic vervoeren. Het netwerkcontract voor AnythingLLM bestaat uit een embeddingprovider, LLM-provider en voldoende opslag voor documenten. Houd private endpoints op interne DNS, sta alleen vereiste uitgaande calls toe en geef AnythingLLM een beperkt servicecredential.

Bewijs het diagram met één echte actie: importeer een document, wacht op de embedding, stel een vraag waarvan het antwoord van dat document afhangt en controleer het geciteerde bronfragment. De meeste druk komt waarschijnlijk van document parsing, embedding throughput, de omvang van de vector store en de context die naar het geselecteerde model wordt gestuurd; monitor dat pad in plaats van alle HTTP-requests als gelijkwaardig te behandelen.

Maak herstel van AnythingLLM meetbaar

Breng elk duurzaam artefact in kaart: documenten, vector indexes, workspaces en applicatie-instellingen. Mount /app/server/storage vóór de bootstrap, schrijf ongevaarlijke voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Neem ook configuratie op die bepaalt hoe opgeslagen data wordt geïnterpreteerd, niet alleen de grootste directory.

Stel een bewaarbeleid in, kopieer back-ups naar een andere host en voer een clean-room restore uit. De AnythingLLM-oefening is voltooid wanneer documenten, embeddings, workspace-lidmaatschap en providerinstellingen samen worden hersteld en dezelfde evidence-based vraag beantwoorden. Als snapshots deel uitmaken van het plan, gebruik dan de richtlijnen voor PITR versus snapshots om vast te leggen wat elk mechanisme kan herstellen.

Kies de trust boundary van AnythingLLM

Controleer na de eerste login wat een anonieme bezoeker, gewone gebruiker en administrator elk kunnen doen. De AnythingLLM-fout die je moet vermijden, is de workspace-login behandelen als vervanging voor het isoleren van provider keys. Het beoogde beleid is om leden tot workspaces te beperken en LLM-, embedding- en vector-databasecredentials op de server te bewaren.

Genereer JWT_SECRET als een lange, willekeurige waarde; door deze te roteren worden sessies of tokens normaal gesproken ongeldig, dus plan de impact op gebruikers in en presenteer dit niet als een encryptiemigratie. Houd dependency-accounts gescheiden van menselijke accounts, blokkeer ongebruikte egress waar dat praktisch mogelijk is en beperk werkzaamheden die worden beïnvloed door document parsing, embedding throughput, de omvang van de vector store en de context die naar het geselecteerde model wordt gestuurd.

Wat moet slagen voordat echte AnythingLLM-data arriveert

Het releaseverslag voor AnythingLLM heeft feiten nodig, geen “ziet er goed uit”. Sla de geselecteerde image digest, configuratiechecksum, publieke hostname en een resultaat met timestamp op voor: een document importeren, wachten op de embedding, een vraag stellen waarvan het antwoord van dat document afhangt en het geciteerde bronfragment controleren. Gebruik niet-productiedata, zodat de controle na elke deployment kan worden uitgevoerd.

Bewijs twee lifecycle-events afzonderlijk. Een containervervanging moet de normale werking behouden; een clean recovery moet aantonen dat documenten, embeddings, workspace-lidmaatschap en providerinstellingen samen worden hersteld en dezelfde evidence-based vraag beantwoorden. Meet tijdens de controles document parsing, embedding throughput, de omvang van de vector store en de context die naar het geselecteerde model wordt gestuurd en bewaar het resultaat als de verwachte envelope voor deze versie.

Test ook een geweigerde of ongeldige situatie: blokkeer tijdelijk voor de testidentiteit de toegang tot een embeddingprovider, LLM-provider en voldoende opslag voor documenten. AnythingLLM moet op een diagnoseerbare manier falen en mag gezonde state niet overschrijven. Herstel de geldige situatie, voer het voorbeeld opnieuw uit en voeg de relevante geredigeerde logs toe. Deze artefacten leveren concreet bewijs voor een toekomstige rollbackbeslissing.

Bouw een vervangbare AnythingLLM-container

Een minimaal commando is nuttig wanneer het laat zien wat het platform later zal beheren.

docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  -p 127.0.0.1:3001:3001 \
  -v anythingllm-data:/app/server/storage \
  -e JWT_SECRET=replace-with-a-long-random-value \
  mintplexlabs/anythingllm:latest

Hier blijft poort 3001 private op de host en is elk vereist pad expliciet. Voeg de gecontroleerde verbindingsinstellingen toe voor een embeddingprovider, LLM-provider en voldoende opslag voor documenten; gebruik private namen voor private services. Controleer het opstarten met zowel logs als de applicatiespecifieke controle: importeer een document, wacht op de embedding, stel een vraag waarvan het antwoord van dat document afhangt en controleer het geciteerde bronfragment. Zodra dit is gecontroleerd, leg je de imageversie vast zodat een gewone vervanging het gedrag niet ongemerkt verandert.

Test AnythingLLM van buiten de server

Vermijd tijdelijke en permanente publieke origins voor AnythingLLM. Gebruik in plaats daarvan de externe HTTPS-origin voor browser- en API-toegang, laat de gekozen DNS-naam naar de platformroute wijzen en proxy alleen naar poort 3001.

Voer deze actie van buiten de host uit: importeer een document, wacht op de embedding, stel een vraag waarvan het antwoord van dat document afhangt en controleer het geciteerde bronfragment. Als ingress faalt, behandelt de handleiding voor het oplossen van een 502 Bad Gateway fouten met poorten en listeners. Als AnythingLLM het request ontvangt maar de storage-mount ontbreekt of het embeddingmodel na het indexeren is gewijzigd, wijst het bewijs nu naar een onderdeel achter de proxy.

Failure drills voor AnythingLLM

Bouw dashboards rond document parsing, embedding throughput, de omvang van de vector store en de context die naar het geselecteerde model wordt gestuurd. Een CPU-grafiek zonder context over deze workload kan niet verklaren waarom AnythingLLM traag is. Voeg een synthetische of geplande controle toe die met ongevaarlijke testdata een document probeert te importeren, op de embedding wacht, een vraag stelt waarvan het antwoord van dat document afhangt en het geciteerde bronfragment controleert.

Houd vóór een upgrade rekening met dit applicatiespecifieke risico: het wijzigen van een embeddingmodel kan re-indexering vereisen, terwijl applicatiereleases workspace- en vectormetadata kunnen migreren. Herstel een recente back-up naar een geïsoleerde deployment, voer daar de migraties uit en vergelijk het gedrag. Als de storage-mount ontbreekt of het embeddingmodel na het indexeren is gewijzigd, controleer dan eerst de betrokken grens — publieke origin, opslag of dependency — voordat je andere instellingen aanpast.

Wat Dockup voor AnythingLLM moet automatiseren

Voor AnythingLLM kan Dockup de route en het TLS-certificaat aanmaken, mounts behouden, secrets leveren en een embeddingprovider, LLM-provider en voldoende opslag voor documenten beschikbaar maken via private networking, terwijl het wordt gedeployed naar Dockup of gekoppelde servers.

De release gate blijft de concrete AnythingLLM-transactie: een document importeren, wachten op de embedding, een vraag stellen waarvan het antwoord van dat document afhangt en het geciteerde bronfragment controleren. Controleer ook de restorevoorwaarde — documenten, embeddings, workspace-lidmaatschap en providerinstellingen worden samen hersteld en beantwoorden dezelfde evidence-based vraag. Met deze twee controles zie je of de deployment werkt en of deze kan worden hersteld.

Veelgestelde vragen

Wat heeft AnythingLLM nodig voor een productiedeployment?

Routeer de AnythingLLM-container op poort 3001 via één HTTPS-origin. De vereiste ondersteunende networkcomponenten zijn een embeddingprovider, LLM-provider en voldoende opslag voor documenten. Beschouw AnythingLLM pas als gereed wanneer je een document kunt importeren, op de embedding kunt wachten, een vraag kunt stellen waarvan het antwoord van dat document afhangt en het geciteerde bronfragment kunt controleren.

Welke AnythingLLM-data hoort in een back-up?

Maak /app/server/storage persistent en neem documenten, vector indexes, workspaces en applicatie-instellingen op in hetzelfde recoverymanifest. Een clean AnythingLLM-restore is pas geslaagd wanneer documenten, embeddings, workspace-lidmaatschap en providerinstellingen samen worden hersteld en dezelfde evidence-based vraag beantwoorden.

Heeft AnythingLLM HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke AnythingLLM-origin en houd poort 3001 op de interne route. Pas de AnythingLLM-instelling correct toe: gebruik de externe HTTPS-origin voor browser- en API-toegang. Voor AnythingLLM beschermt HTTPS credentials en gebruikerscontent tijdens transport en zorgt het ervoor dat origin-gevoelig clientgedrag consistent blijft.

Hoe test je een AnythingLLM-upgrade?

Herstel de huidige AnythingLLM-state naar een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let extra goed op, omdat het wijzigen van een embeddingmodel re-indexering kan vereisen, terwijl applicatiereleases workspace- en vectormetadata kunnen migreren. Bewaar de vorige AnythingLLM-image totdat de grenzen voor datamigratie en rollback duidelijk zijn.