FROM ghcr.io/astral-sh/uv:python3.14-bookworm-slim ARG OBSIDIAN_VERSION=1.12.7 ARG TARGETARCH ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy \ PATH="/app/.venv/bin:/usr/local/bin:${PATH}" \ OBSIDIAN_CLI_BIN=obsidian \ OBSIDIAN_VAULT_PATH=/vault \ OBSIDIAN_API_HOST=0.0.0.0 \ OBSIDIAN_API_PORT=8080 \ DISPLAY=:99 \ XDG_RUNTIME_DIR=/tmp/runtime-obsidian \ ELECTRON_DISABLE_SECURITY_WARNINGS=true RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ dumb-init \ xvfb \ xauth \ dbus-x11 \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libatspi2.0-0 \ libcairo2 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libgtk-3-0 \ libnss3 \ libpango-1.0-0 \ libx11-xcb1 \ libxcb-dri3-0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ && case "${TARGETARCH:-amd64}" in \ amd64) OBSIDIAN_DEB_ARCH=amd64 ;; \ arm64) OBSIDIAN_DEB_ARCH=arm64 ;; \ *) echo "Unsupported architecture: ${TARGETARCH}" >&2; exit 1 ;; \ esac \ && curl -fsSL -o /tmp/obsidian.deb "https://github.com/obsidianmd/obsidian-releases/releases/download/v${OBSIDIAN_VERSION}/obsidian_${OBSIDIAN_VERSION}_${OBSIDIAN_DEB_ARCH}.deb" \ && apt-get install -y --no-install-recommends /tmp/obsidian.deb \ && ln -sf /opt/Obsidian/obsidian-cli /usr/local/bin/obsidian \ && rm -rf /tmp/obsidian.deb /var/lib/apt/lists/* WORKDIR /app COPY pyproject.toml ./ RUN uv sync --no-dev COPY app ./app COPY sdk ./sdk COPY scripts ./scripts RUN chmod +x /app/scripts/entrypoint.sh /app/scripts/create_jwt.py EXPOSE 8080 ENTRYPOINT ["dumb-init", "--"] CMD ["/app/scripts/entrypoint.sh"]