# Bifrost — LLM-gateway (github.com/maximhq/bifrost). Единый OpenAI-совместимый # шлюз для AI-фич других приложений (сейчас — tududi). За ним провайдер DeepSeek. # Клиенты ходят в него по имени bifrost_app:8080 в общей web_proxy_network и про # провайдера/модель ничего не знают — роутинг решает config.json. # See versions: https://hub.docker.com/r/maximhq/bifrost/tags # Тег образа = GitHub-релиз transports/vX.Y.Z (там же changelog и миграции БД); # теги 2.1.x в том же списке — это helm-chart, не образ. Конфиг после апдейта # валидировать по transports/config.schema.json из нужного тега: Bifrost на Go # молча игнорирует ключ, положенный не в ту секцию, в логах этого не видно. # # В контейнере Bifrost слушает 8080 (дефолт). Наружу host-порт НЕ пробрасываем: # веб-UI (Dashboard + Logs) и API доступны только через Caddy # (bifrost.vakhrushev.me, за Authelia forward_auth) и внутри web_proxy_network. # # App-dir Bifrost по умолчанию — /app/data; туда монтируется config_dir с # config.json (источник правды, с секретами, 0600). SQLite-сторы config.db / # logs.db вынесены в data_dir -> /app/store (пути заданы явно в config.json). services: bifrost_app: image: maximhq/bifrost:v1.6.8 # проверь актуальный стабильный тег в releases container_name: bifrost_app restart: unless-stopped user: "{{ owner_create_result.uid }}:{{ owner_create_result.group }}" networks: - "web_proxy_network" volumes: # App-dir: config.json (рендерит плейбук). - "{{ config_dir }}:/app/data" # Сторы, создаёт и держит сам Bifrost — бекапить не нужно (config.db # восстанавливается из config.json, logs.db — просто логи запросов). - "{{ data_dir }}:/app/store" networks: web_proxy_network: external: true