Skip to content

Self-host AnythingLLM

updated Jul 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

All-in-one self-hosted chat application with retrieval-augmented generation (RAG) over your own documents, organized into workspaces, and support for any local or hosted LLM and vector database.

Key facts

LicenseMIT
StackJavaScript, Node.js, React
Min RAM2048 MB
Official imageyes
Measured idle RAM323 MB
Difficulty
Our recommendation

Pick AnythingLLM when the point is chatting with your own documents — it's an all-in-one app that bundles RAG, workspaces, and a vector database, and connects to any local or hosted LLM. It's the middle path: more batteries-included than Open WebUI for document Q&A, simpler than assembling LibreChat's stack. If you don't need retrieval over your files, a plain chat UI is less to run.

Follow the AnythingLLM deploy guide →

What you need

  • Any VPS with at least 2048 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# AnythingLLM — official Docker quick start
export STORAGE_LOCATION=$HOME/anythingllm
mkdir -p $STORAGE_LOCATION && touch "$STORAGE_LOCATION/.env"
sudo chown -R 1000:1000 $STORAGE_LOCATION   # the image runs as uid 1000; without this the SQLite file cannot be opened and the container exits
docker run -d --rm -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v ${STORAGE_LOCATION}:/app/server/storage \
  -v ${STORAGE_LOCATION}/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  mintplexlabs/anythingllm  #  →  http://SERVER_IP:3001

What you take on

AnythingLLM does document RAG out of the box, but retrieval quality and the model behind it are still yours to own:

non-negotiableRAG is only as good as its setup. Chunking, embeddings, and the vector store all shape answer quality — expect to tune them, and to see confidently-wrong answers when retrieval misses the relevant passage.
non-negotiableIt still needs a model. AnythingLLM is the app around an LLM, not the LLM — point it at a local runtime (Ollama, LocalAI) or a hosted API, and that choice sets both your privacy and your hardware bill.
non-negotiableThe container wants SYS_ADMIN. The official quick-start adds the SYS_ADMIN capability for its document processing — understand what that grants before running it on a shared host.

An alternative to

Head-to-head

More in AI Chat Interfaces

Common questions

AnythingLLM exits with "unable to open database file: ../storage/anythingllm.db". How do I fix it?

The image runs as uid 1000, and SQLite cannot create its database in a storage directory owned by any other user. Give the directory to uid 1000 before starting the container: sudo chown -R 1000:1000 $STORAGE_LOCATION. With --rm in the docker run command, the crashed container is deleted immediately, so docker ps shows nothing and there are no logs to read; drop --rm temporarily to see the error.

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.