Self-host AnythingLLM
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
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
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:3001What you take on
AnythingLLM does document RAG out of the box, but retrieval quality and the model behind it are still yours to own:
An alternative to
Head-to-head
More in AI Chat Interfaces
Jan
LibreChat
LobeHub
LocalAI
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.