github kossakovsky/selfhost-ai v1.13.0

4 hours ago

Added

  • n8n-MCP - Optional N8N_MCP_ACCESS_TOKEN in .env, passed to n8n-MCP next to the existing N8N_API_KEY. It is the access token of n8n's own MCP server (Settings → Instance-level MCP → Enable MCP access → Connect → API key tab; n8n 2.34 or later, native workflow diff needs 2.36; shown once) and unlocks the tools that the Public API cannot serve: n8n Agents, dynamic node resources (loadOptions / listSearch), workflow version history, diff and rollback, datatable columns and, on instances without the Enterprise projects licence, team-project discovery. It is a separate secret from the Public API key, which the token's tools still need; the MCP endpoint is derived from N8N_API_URL and the stack's N8N_MCP_WEBHOOK_SECURITY_MODE=permissive already allows the private origin. Blank keeps the previous Public-API behaviour; set it and run make restart. The final report prints the hint while the token is empty (#120).
  • Ollama - Extra per-instance environment through optional env files. ollama.env next to .env applies to every instance, ollama<N>.env to one instance and overrides ollama.env; both are gitignored and applied on the next make restart with no regeneration. This is how to set llama.cpp variables such as LLAMA_ARG_FIT_TARGET (free-VRAM margin per device, lower it on a GPU dedicated to one instance) or LLAMA_ARG_CACHE_TYPE_K, and ROCm knobs like HSA_OVERRIDE_GFX_VERSION, per instance. They deliberately do not go through environment: with the ${OLLAMA<N>_X:-} pattern of the other knobs: that hands llama-server an empty value, and an empty LLAMA_ARG_FIT_TARGET makes it exit at startup, whereas a missing env file adds nothing. Only llama-server-backed models read LLAMA_ARG_*; models on Ollama's own engine ignore them. The OLLAMA_* knobs that compose already sets stay in .env, whose values win over the files; any other OLLAMA_* variable belongs in the files (#121).
  • ComfyUI - COMFYUI_GPU_COUNT and COMFYUI_GPU_DEVICES in .env, with the same semantics as the InvokeAI and Ollama variables: a GPU count for the NVIDIA variant, or an explicit list of GPU IDs applied through docker-compose.comfyui-gpu-devices.yml that the scripts include automatically while the variable is set (#122).

Changed

  • ComfyUI - Hardware is now selected in the wizard, like InvokeAI: the single comfyui profile is replaced by the mutually exclusive comfyui-nvidia (yanwk/comfyui-boot:cu126-slim, CUDA 12.6 - the previously used cu128-slim is archived upstream), comfyui-amd (yanwk/comfyui-boot:rocm, /dev/kfd + /dev/dri) and comfyui-cpu (yanwk/comfyui-boot:cpu) profiles; the container is still named comfyui, so the Caddy route is unchanged. Upgrading: make update runs the wizard, which pre-selects ComfyUI for the old comfyui profile and defaults the hardware prompt to CPU (the previous behaviour) - pick NVIDIA or AMD there - and removes the old comfyui container, which docker compose down would otherwise leave behind as an orphan that blocks the renamed service with container name "/comfyui" is already in use. Installations that pull without the wizard must set one of the comfyui-* profiles in COMPOSE_PROFILES by hand, otherwise no ComfyUI container starts (#122).

Fixed

  • Langfuse / RAGFlow - make update failed at the image pull with pull access denied for minio/minio, repository does not exist: MinIO removed its Docker Hub repositories in September 2026 (the community edition is now source-only). Both minio and ragflow-minio now pull quay.io/minio/minio:latest, which currently resolves to the last published community image, RELEASE.2025-09-07T16-13-09Z; the community edition is no longer published as an image, so MinIO will not receive further updates from upstream unless that tag moves. Existing data volumes are untouched (#119).
  • ComfyUI - Ran on the CPU and lost everything on recreate. The CUDA image was started with --cpu and without a GPU reservation, and the persistent volume was mounted on /home/runner, the non-root layout of the archived cu121 image that this stack never used; every tag shipped here (cu124-slim, cu128-slim) runs as root, copies the bundled ComfyUI to /root/ComfyUI on first start and keeps models, custom nodes and user data under /root, so every docker compose down / up started from a fresh bundle. The volume is now mounted on /root, the NVIDIA variant reserves a GPU, and CLI_ARGS is no longer set in compose: each image ships the right default (--cpu baked into the CPU image, empty on the GPU images) and the entrypoint already adds --listen. The old volume never received data, so nothing needs migrating. Because ComfyUI's own code now lives in the volume, it is updated through ComfyUI-Manager rather than by pulling the image; the final report says so (#122).

Upgrade

Upgrade with make update.

  • ComfyUI: the wizard pre-selects ComfyUI for the old comfyui profile and defaults the hardware prompt to CPU (the previous behaviour) - pick NVIDIA or AMD there. The old container is removed automatically; the comfyui_data volume is kept and now mounted on /root. If you pull without the wizard, set one of comfyui-nvidia / comfyui-amd / comfyui-cpu in COMPOSE_PROFILES by hand.
  • MinIO (Langfuse / RAGFlow): the images are re-pulled from quay.io; data volumes are untouched.
  • n8n-MCP: optional - set N8N_MCP_ACCESS_TOKEN in .env and run make restart.
  • Ollama: optional - create ollama.env / ollama<N>.env next to .env and run make restart.

Full Changelog: v1.12.0...v1.13.0

Don't miss a new selfhost-ai release

NewReleases is sending notifications on new releases.