mirror of
https://github.com/Ar9av/obsidian-wiki.git
synced 2026-09-14 20:36:34 +08:00
52c9f2bae2
Everything else here is local: skills on your machine, a vault on your disk. This puts a vault behind a URL so an agent elsewhere can search and write it. One container, one vault, one API key. The vault stays plain markdown on a mounted volume, so Obsidian still opens it. The container does no LLM work -- search and packing delegate to the existing graphrag/context_pack modules, and the caller's agent does the thinking. - obsidian_wiki/server.py: four vault functions, five REST routes and four MCP tools as transport over them. Auth is one bearer key; the process refuses to start without WIKI_API_KEY unless WIKI_ALLOW_ANONYMOUS=1. Every path is resolved inside the vault or refused. - Dockerfile, docker-compose.yml, .dockerignore, and a ghcr push on v* tags. - New [server] extra; the core wheel stays dependency-free. - docs/deployment.md, plus the WIKI_* vars in configuration.md and .env.example. Requires mcp>=2.0: 2.0 renamed FastMCP to MCPServer, and session_manager only exists once streamable_http_app() has been called -- a mounted sub-app's own lifespan is ignored, so it is wired into the FastAPI lifespan by hand.
28 lines
1.1 KiB
Docker
28 lines
1.1 KiB
Docker
# Memory service: one container, one vault on a mounted volume.
|
|
# Build: docker build -t obsidian-wiki .
|
|
# Run: docker run -p 8080:8080 -e WIKI_API_KEY=... -v wiki-data:/vault obsidian-wiki
|
|
FROM python:3.12-slim
|
|
|
|
# git: obsidian_wiki/sync.py shells out to it for vault backup.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /src
|
|
COPY . .
|
|
# .git is excluded from the build context, so hatch-vcs cannot read the tag.
|
|
# CI passes the real one: docker build --build-arg VERSION=2026.8.1
|
|
ARG VERSION=0.0.0
|
|
ENV HATCH_VCS_PRETEND_VERSION=$VERSION SETUPTOOLS_SCM_PRETEND_VERSION=$VERSION
|
|
RUN pip install --no-cache-dir '.[server]'
|
|
|
|
RUN useradd --create-home wiki && mkdir -p /vault && chown wiki:wiki /vault
|
|
USER wiki
|
|
|
|
ENV OBSIDIAN_VAULT_PATH=/vault WIKI_PORT=8080
|
|
VOLUME /vault
|
|
EXPOSE 8080
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
|
CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8080/health').status==200 else 1)"
|
|
|
|
CMD ["python", "-m", "obsidian_wiki.server"]
|