Slik selvhoster du AnythingLLM i 2026: Dokumenter, embeddings og persistens
Selvhost AnythingLLM med riktige porter, persistent lagring, HTTPS, secrets, sikkerhetskopier og oppgraderingskontroller. Lær hvordan du løser problemet når storage-mounten mangler.
En AnythingLLM-container kan være grønn selv om funksjonen brukerne er avhengige av, er ødelagt. For AnythingLLM er denne skjulte feilen vanligvis at storage-mounten mangler, eller at embedding-modellen ble endret etter indeksering. Denne veiledningen bruker «ta inn et dokument, vente på embedding, stille et spørsmål hvis svar avhenger av dokumentet og kontrollere den siterte kildeblokken» som akseptansetest, og bygger utrullingen baklengs fra dette resultatet.
AnythingLLM har en spesifikk rolle i stacken: dokumentchat og retrieval uten en egenbygd pipeline. Produksjonsspørsmålet er derfor ikke om port 3001 svarer én gang, men om state, avhengigheter og den offentlige adressen fortsatt stemmer overens etter en restart, oppdatering og gjenoppretting.
Porter, prosesser og private tjenester
Et nyttig AnythingLLM-diagram viser den offentlige ruten, den private porten 3001, state-grensen og alle støttende krav. Marker hvilke piler som overfører credentials, og hvilke som er vanlig brukertrafikk. Nettverkskontrakten for AnythingLLM består av en embedding-provider, en LLM-provider og nok lagring for dokumenter. Hold private endepunkter på intern DNS, tillat bare nødvendige utgående kall og gi AnythingLLM en avgrenset service credential.
Bevis diagrammet med én reell handling: ta inn et dokument, vent på embedding, still et spørsmål hvis svar avhenger av dokumentet og kontroller den siterte kildeblokken. Den største belastningen kommer sannsynligvis fra dokumenttolking, embedding-gjennomstrømning, størrelsen på vector store og konteksten som sendes til den valgte modellen. Overvåk denne banen i stedet for å behandle alle HTTP-forespørsler likt.
Gjør gjenoppretting av AnythingLLM målbar
Kartlegg alle persistente artefakter: dokumenter, vektorindekser, workspaces og applikasjonsinnstillinger. Mount /app/server/storage før bootstrap, skriv ufarlige eksempeldata og erstatt containeren for å bevise at denne banen faktisk er persistent. Ta med konfigurasjon som endrer hvordan lagrede data tolkes, ikke bare den største katalogen.
Definer retention, kopier sikkerhetskopier utenfor hosten og gjennomfør en clean-room restore. AnythingLLM-øvelsen er fullført når dokumenter, embeddings, workspace-medlemskap og provider-innstillinger gjenopprettes samlet og besvarer det samme evidensbaserte spørsmålet. Hvis snapshots inngår i planen, kan du bruke veiledningen om PITR versus snapshots til å dokumentere hva hver mekanisme kan gjenopprette.
Velg tillitsgrensen for AnythingLLM
Etter første innlogging bør du gå gjennom hva en anonym besøkende, en vanlig bruker og en administrator kan gjøre. Feilen du må unngå i AnythingLLM, er å behandle workspace-innloggingen som en erstatning for å isolere provider-nøkler. Den tiltenkte policyen er å begrense medlemmer til workspaces og beholde credentials for LLM, embedding og vector database på serveren.
Generer JWT_SECRET som en lang, tilfeldig verdi. En rotering vil normalt ugyldiggjøre sessions eller tokens, så planlegg brukerpåvirkningen i stedet for å kalle det en krypteringsmigrering. Hold kontoer for avhengigheter atskilt fra menneskelige brukerkontoer, nekt ubenyttet egress der det er praktisk mulig, og sett grenser for arbeid som påvirkes av dokumenttolking, embedding-gjennomstrømning, størrelsen på vector store og konteksten som sendes til den valgte modellen.
Dette må bestå før reelle AnythingLLM-data tas i bruk
Release-oppføringen for AnythingLLM trenger fakta, ikke «ser bra ut». Lagre valgt image digest, konfigurasjonssjekksum, offentlig hostname og et tidsstemplet resultat for: ta inn et dokument, vent på embedding, still et spørsmål hvis svar avhenger av dokumentet og kontroller den siterte kildeblokken. Bruk eksempeldata som ikke er fra produksjon, slik at kontrollen kan kjøres etter hver deployment.
Bevis to lifecycle-hendelser separat. En container-erstatning må bevare normal drift. En ren gjenoppretting må vise at dokumenter, embeddings, workspace-medlemskap og provider-innstillinger gjenopprettes samlet og besvarer det samme evidensbaserte spørsmålet. Mens kontrollene kjører, måler du dokumenttolking, embedding-gjennomstrømning, størrelsen på vector store og konteksten som sendes til den valgte modellen, og beholder resultatet som forventet rammeverk for denne versjonen.
Test også en avvist eller ugyldig tilstand: nekt testidentiteten midlertidig tilgang til en embedding-provider, en LLM-provider og nok lagring for dokumenter. AnythingLLM skal feile på en måte som gjør feilen mulig å diagnostisere, og skal ikke overskrive frisk state. Gjenopprett den gyldige tilstanden, kjør eksempelet på nytt og legg ved relevante, redigerte logger. Disse artefaktene gir en fremtidig rollback-beslutning konkret dokumentasjon.
Bygg en AnythingLLM-container som kan erstattes
En minimal kommando er nyttig når den synliggjør hva plattformen senere skal administrere.
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
Her forblir port 3001 privat på hosten, og alle nødvendige paths er eksplisitte. Legg til de gjennomgåtte connection settings for en embedding-provider, en LLM-provider og nok lagring for dokumenter. Bruk private navn for private tjenester. Kontroller oppstarten med både logger og det applikasjonsspesifikke beviset: ta inn et dokument, vent på embedding, still et spørsmål hvis svar avhenger av dokumentet og kontroller den siterte kildeblokken. Når dette er verifisert, låser du image-versjonen slik at en rutinemessig utskifting ikke endrer oppførselen i stillhet.
Test AnythingLLM utenfra serveren
Unngå midlertidige og permanente offentlige origins for AnythingLLM. Bruk i stedet den eksterne HTTPS-originen for browser- og API-tilgang, pek det valgte DNS-navnet til plattformruten og proxier bare til port 3001.
Utfør denne handlingen utenfra hosten: ta inn et dokument, vent på embedding, still et spørsmål hvis svar avhenger av dokumentet og kontroller den siterte kildeblokken. Hvis ingress feiler, beskriver veiledningen for feilsøking av 502 feil med port og listener. Hvis AnythingLLM mottar forespørselen, men storage-mounten mangler eller embedding-modellen ble endret etter indeksering, peker bevisene nå forbi proxyen.
Feiløvelser for AnythingLLM
Bygg dashboards rundt dokumenttolking, embedding-gjennomstrømning, størrelsen på vector store og konteksten som sendes til den valgte modellen. En CPU-graf uten kontekst fra denne arbeidsbelastningen kan ikke forklare hvorfor AnythingLLM er treg. Legg til en syntetisk eller planlagt kontroll som prøver å ta inn et dokument, vente på embedding, stille et spørsmål hvis svar avhenger av dokumentet og kontrollere den siterte kildeblokken ved hjelp av ufarlige testdata.
Før en oppgradering må du ta høyde for denne applikasjonsspesifikke risikoen: Hvis embedding-modellen endres, kan det være nødvendig å indeksere på nytt, mens applikasjonsreleaser kan migrere workspace- og vektormetadata. Gjenopprett en nylig sikkerhetskopi i en isolert deployment, kjør migreringene der og sammenlign oppførselen. Hvis storage-mounten mangler eller embedding-modellen ble endret etter indeksering, undersøker du den aktuelle grensen — offentlig origin, storage eller avhengighet — før du endrer uvedkommende innstillinger.
Dette bør Dockup automatisere for AnythingLLM
For AnythingLLM kan Dockup opprette ruten og TLS-sertifikatet, bevare mounts, levere secrets og plassere en embedding-provider, en LLM-provider og nok lagring for dokumenter på et privat nettverk, samtidig som utrullingen skjer enten til Dockup eller til tilkoblede servere.
Release-gaten er fortsatt den konkrete AnythingLLM-transaksjonen: ta inn et dokument, vent på embedding, still et spørsmål hvis svar avhenger av dokumentet og kontroller den siterte kildeblokken. Kontroller også gjenopprettingstilstanden — dokumenter, embeddings, workspace-medlemskap og provider-innstillinger skal gjenopprettes samlet og besvare det samme evidensbaserte spørsmålet. Disse to kontrollene viser om utrullingen fungerer, og om den kan gjenopprettes.
Vanlige spørsmål
Hva trenger AnythingLLM for en produksjonsdeployment?
Rout AnythingLLM-containeren på port 3001 gjennom én HTTPS-origin. Det støttende nettverkskravet er en embedding-provider, en LLM-provider og nok lagring for dokumenter. Ikke erklær AnythingLLM klar før du kan ta inn et dokument, vente på embedding, stille et spørsmål hvis svar avhenger av dokumentet og kontrollere den siterte kildeblokken.
Hvilke AnythingLLM-data bør inngå i en sikkerhetskopi?
Gjør /app/server/storage persistent, og inkluder dokumenter, vektorindekser, workspaces og applikasjonsinnstillinger i det samme gjenopprettingsmanifestet. En ren AnythingLLM-gjenoppretting er bare vellykket når dokumenter, embeddings, workspace-medlemskap og provider-innstillinger gjenopprettes samlet og besvarer det samme evidensbaserte spørsmålet.
Krever AnythingLLM HTTPS bak en reverse proxy?
Bruk HTTPS for den offentlige AnythingLLM-originen, og behold port 3001 på den interne ruten. Bruk AnythingLLM-innstillingen riktig: den eksterne HTTPS-originen skal brukes for browser- og API-tilgang. For AnythingLLM beskytter HTTPS credentials eller brukerinnhold under transport og sørger for konsistent klientoppførsel som er avhengig av origin.
Hvordan bør en AnythingLLM-oppgradering testes?
Gjenopprett gjeldende AnythingLLM-state i en isolert deployment, bruk kandidatversjonen og gjenta akseptansetransaksjonen. Vær spesielt oppmerksom på at endring av embedding-modell kan kreve ny indeksering, mens applikasjonsreleaser kan migrere workspace- og vektormetadata. Behold det forrige AnythingLLM-imaget til datamigrerings- og rollback-grensen er forstått.
