Proměnné prostředí
Všechno se nastavuje v .env vedle docker-compose.yml. Zkopírujte šablonu a upravte:
cp .env.example .envPo každé změně přestavte — restart nestačí:
docker compose up -d --buildStaré názvy FLOWMAP_* fungují dál
Proměnné se dřív jmenovaly FLOWMAP_*. Oběma názvům rozumí jak Docker Compose, tak server, takže .env ze starší verze funguje dál. Nové instalace ať používají KB_*.
Základ
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_PORT | 8090 | Port, na kterém instance poslouchá: http://IP-SERVERU:PORT. |
KB_NAME | killbottleneck | Název kontejneru. Jiný název = druhá instance vedle první na témže stroji (dřív se dva stacky popraly o jméno). |
TZ | UTC | Časové pásmo instance. Určuje, v jakém pásmu se počítá „den“ a „hodina“ pro opakující se šablony, ranní souhrny, upozornění na termíny a připomínky s časem (události v kalendáři a připomínky k termínu chodí v HH:MM tohoto pásma — s výchozím UTC přijde připomínka „14:00“ v 16:00 letního času). Nastavte např. Europe/Prague. Platí pro celou instanci — tým rozprostřený přes pásma dostane pásmo serveru. |
KB_AUTO_HOUR | 5 | Hodina (0–23, v TZ), od které opakující se šablony zakládají ten den projekty. Když byl server v tu hodinu vypnutý, založí se v nejbližší pozdější hodinu téhož dne. |
KB_DEADLINE_HOUR | 7 | Hodina ranního souhrnu termínů (0–23, lokálně). Zároveň hodina, ve které přijde připomínka celodenní události v kalendáři. |
AI
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_AI_PROVIDER | none | none = žádná AI (všechno ostatní funguje). openai = jakékoli OpenAI-kompatibilní API (OpenAI, OpenRouter, Groq, vLLM, LM Studio…). ollama = váš vlastní lokální model. api = vzdálená AI služba kompatibilní s killBottleneck API (adresa + token). custom = váš endpoint se stejným kontraktem. |
KB_AI_URL | (prázdné) | Adresa endpointu. Pro ollama adresa Ollamy, např. http://192.168.1.10:11434. Pro openai základní adresa, obvykle končí /v1 — nalepené /chat/completions nebo chybějící /v1 se srovná samo. |
KB_AI_TOKEN | (prázdné) | Token pro api / custom; u openai váš API klíč (posílá se jako Authorization: Bearer). |
KB_AI_MODEL | (prázdné) | U ollama model, který se má použít (nejdřív ollama pull <model>); u openai přesný název modelu podle poskytovatele, např. gpt-4o-mini. |
KB_AI_OPENAI_EXTRA | (prázdné) | Jen openai — JSON s poli navíc do každého požadavku, např. {"reasoning_effort":"none"} pro vypnutí uvažování tam, kde to poskytovatel dovolí (totéž co KB_CHAT_OPENAI_EXTRA, ale pro obecné AI funkce). platí i pro asistenta (pokud není KB_CHAT_OPENAI_EXTRA) a pro sumáře. |
KB_AI_TRANSCRIBE_URL | (prázdné) | Endpoint pro přepis řeči. Když je prázdný, odvodí se z KB_AI_URL. U openai ho můžete nechat prázdný — diktování pak jde na tutéž službu; když ho vyplníte, platí tahle adresa. |
KB_AI_TRANSCRIBE_MODEL | whisper-1 | Jen pro openai — model přepisu (Groq: whisper-large-v3). Nastavit jde i v Administraci. |
KB_AI_MAX_PER_HOUR | 60 | Jen pro openai — kolik AI operací smí jeden člověk za hodinu. Každé volání utrácí váš kredit. AI asistent na boku má vlastní počítadlo se stejným stropem, které platí u každého poskytovatele. |
KB_AI_MAX_TRANSCRIBE_PER_HOUR | 20 | Totéž, jen pro diktování. |
Ranní souhrn
Jednořádkové povzbuzení v Mém dni může používat zvlášť menší model.
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_SUMMARY_HOUR | 6 | Hodina ranního generování (lokálně). |
KB_SUMMARY_ACTIVE_DAYS | 14 | Ráno generovat jen účtům přihlášeným v posledních N dnech. 0 = všem. Neaktivním se vygeneruje, až si aplikaci otevřou. |
KB_SUMMARY_PROVIDER | (prázdné) | Přebije KB_AI_PROVIDER jen pro souhrny. |
KB_SUMMARY_URL | (prázdné) | Přebije KB_AI_URL jen pro souhrny. |
KB_SUMMARY_MODEL | (prázdné) | Přebije KB_AI_MODEL jen pro souhrny. |
KB_SUMMARY_TOKEN | (prázdné) | Přebije KB_AI_TOKEN jen pro souhrny. |
Asistent na boku
AI asistent v panelu vpravo. Model hledá v pořadí KB_CHAT_* → KB_SUMMARY_* → obecné nastavení AI. Panel se ukáže jen s poskytovatelem ollama nebo openai a potřebuje model s voláním nástrojů (tool calling), např. gemma4, qwen3, gpt-oss nebo gpt-4o-mini.
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_CHAT_PROVIDER | (prázdné) | ollama nebo openai — vlastní model jen pro asistenta. Prázdné = použije se KB_SUMMARY_*, pak obecné nastavení AI. |
KB_CHAT_URL | (prázdné) | Adresa modelu asistenta (jako KB_AI_URL). |
KB_CHAT_MODEL | (prázdné) | Název modelu asistenta. |
KB_CHAT_TOKEN | (prázdné) | API klíč pro model asistenta. |
KB_CHAT_THINK | (prázdné) | Uvažování modelu: prázdné = vypnuto (nejrychlejší), jinak low, medium, high nebo true. |
KB_CHAT_NUM_CTX | (prázdné) | Jen ollama — velikost kontextu (num_ctx) posílaná v každém volání. Ollama má jinak výchozích 4096 tokenů a delší prompt asistenta by tiše ořízla. |
KB_CHAT_OPENAI_EXTRA | (prázdné) | Jen openai — JSON s poli navíc do požadavku, např. {"reasoning_effort":"none"}. Uvažující modely s nízkým limitem tokenů ho jinak můžou celý spotřebovat na přemýšlení a vrátit chybu, kterou poskytovatel stejně účtuje. |
KB_CHAT_TOOLS | (prázdné) | Která schémata nástrojů model asistenta dostane. Prázdné = jen skupiny, o které rozhovor stojí (šetří tokeny; nástroj, který si model stejně řekne, se přidá a volání zopakuje). all = všechny nástroje v každém volání — jen pro měření A/B. |
KB_AI_KVOTA_TYDEN | (prázdné) | Strop AI kreditů na týden pro organizaci (sekce AI kredity ve Správě organizace). Hodnota nastavená v aplikaci ho může jen snížit, ne zvednout. Prázdné = bez stropu provozovatele. |
Obrázky v asistentovi
Obrázek nejdřív přepíše model, který obrázky vidí; pak se pracuje jen s textem. Originál se neukládá. Bez KB_VISION_PROVIDER, KB_VISION_URL a KB_VISION_MODEL asistent obrázky odmítá.
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_VISION_PROVIDER | (prázdné) | ollama nebo openai — model pro čtení obrázků (např. gemma4 / gemma3 přes Ollamu, nebo OpenAI-kompatibilní API s obrazovým vstupem). |
KB_VISION_URL | (prázdné) | Adresa modelu pro obrázky. |
KB_VISION_MODEL | (prázdné) | Název modelu pro obrázky. |
KB_VISION_TOKEN | (prázdné) | API klíč pro model obrázků. |
KB_VISION_NUM_CTX | 8192 | Jen ollama — velikost kontextu pro přepis obrázku. |
KB_VISION_OPENAI_EXTRA | (prázdné) | Jen openai — JSON s poli navíc; u uvažujících modelů {"reasoning_effort":"none"}. |
KB_VISION_ZALOHA_PROVIDER / _URL / _MODEL / _TOKEN / _NUM_CTX / _OPENAI_EXTRA | (prázdné) | Volitelný záložní model, když první selže nebo nestihne odpovědět. |
KB_VISION_TIMEOUT | 45 | Sekund na jeden pokus o přepis. Celkový čas držte hluboko pod časovým limitem reverzní proxy (Cloudflare kolem 100 s). |
KB_VISION_POKUSY | 0 | Kolikrát navíc zkusit první model, než přijde na řadu záloha. |
KB_CHAT_MAX_IMG_MB | 1.2 | Největší přijatý obrázek v MB. Prohlížeč snímky obrazovky sám zmenšuje zhruba na 250 kB. |
KB_CHAT_NAHLEDU | 3 | Kolik malých náhledů obrázků drží jeden rozhovor; u starších zůstane jen přepis. |
KB_AI_IMG_VAHA | 3 | Kolik tahů z hodinového stropu (KB_AI_MAX_PER_HOUR) ubere jeden tah s obrázkem. |
KB_AI_PDF_VAHA | 2 | Kolik tahů z hodinového stropu ubere jeden tah s přiloženým PDF (asistent dostane jen text stran; sloučení a rozdělení PDF běží v prohlížeči a nestojí nic). |
Přístup a přihlašování
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_SETUP_CODE | (prázdné) | Registrační klíč instance. Když je nastavený, vyžaduje ho každá registrace. Prázdné = zaregistrovat se může kdokoli, kdo zná adresu. První zaregistrovaný účet je vždycky správce. |
KB_GOOGLE_CLIENT_ID | (prázdné) | Google OAuth client ID. Prázdné = tlačítko „Přihlásit přes Google“ se nezobrazuje. |
KB_GOOGLE_CLIENT_SECRET | (prázdné) | Google OAuth client secret. |
KB_GOOGLE_PICKER_API_KEY | (prázdné) | Zapne vybírání příloh přímo z Google Disku. Potřebuje OAuth klienta výš a zapnuté „Google Picker API“ v tomtéž projektu Google Cloud. Takto vybrané soubory se ukládají jako odkazy — z Disku nikam neodcházejí. |
Než instanci vystavíte ven, nastavte registrační klíč
Na stroji dostupném z internetu znamená prázdný KB_SETUP_CODE, že si účet založí kdokoli, kdo adresu najde.
E-mail (SMTP) se tady nenastavuje — žije v administraci PocketBase, viz Konfigurace → E-mail.
Automatizace
Potřeba jen tehdy, když automatizace na cílech opravdu používáte.
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_PUBLIC_URL | (prázdné) | Veřejná adresa téhle instance, kterou killBottleneck posílá agentovi jako callback_url, aby se měl kam ohlásit. Stačí jakákoli adresa, na kterou agent dosáhne — u self-hostu klidně adresa v LAN. Když je prázdná, použije se „Application URL“ z administrace PocketBase, což je po instalaci http://localhost:8090 — agent na jiném stroji by pak volal sám sebe. Evidence agentů v aplikaci ukazuje skutečně platnou adresu a před localhostem varuje. |
KB_AGENT_TIMEOUT_MIN | 90 | Kolik minut smí automatizace běžet, než ji hlídač označí za neúspěšnou. |
KB_ALLOW_PRIVATE_WEBHOOKS | (prázdné) | 1 povolí webhookům agentů mířit i do privátních sítí (10.x, 192.168.x, localhost). Ve výchozím stavu zakázáno. |
Proč jsou privátní webhooky vypnuté
Bez té pojistky jde server zamířit do vaší vnitřní sítě a použít ho k jejímu skenování. Zapněte to, jen když cíl automatizace (třeba n8n) opravdu běží ve stejné LAN.
Limity a režim instance
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_FILES_MB | (prázdné) | Strop v MB pro nahrané přílohy za celou instanci. Prázdné = bez limitu (výchozí pro self-hosting — je to váš disk). 0 = nahrávání vypnuté, přílohy jde přidávat jen jako odkazy. |
KB_HOSTED | (prázdné) | 1 označuje instanci běžící u poskytovatele vedle jiných zákazníků. Správce instance pak nesmí zamířit AI službu do privátní sítě. Na vlastním serveru nechte prázdné — lokální Ollama v LAN je tam normální stav. |
KB_SHARE_INVITE_DAILY_CAP | 20 | Kolik pozvánek ke sdílenému projektu (adresátům bez účtu) smí jeden uživatel rozeslat za den. Na tutéž adresu k jednomu projektu odejde vždy nejvýš jedna. |
KB_SHARE_INVITE_INSTANCE_CAP | 50 | Denní strop těchto pozvánek pro celou instanci — ochrana poštovní kvóty. |
KB_NOTIFY_EMAIL_DEFAULT | (prázdné) | Notifikační e-maily jsou ve výchozím stavu vypnuté a řídí se předvolbami uživatelů. 1 zachová po aktualizaci staré chování „e-mail zapnutý, dokud si ho uživatel nevypne“. |
KB_REPORT_TO | (prázdné) | Adresa, kam chodí hlášení chyb a nápadů z aplikace. Prázdné = funkce na téhle instanci neexistuje: položka se nezobrazí a odesílací cesta vrací 404, takže odsud nikdy nic neodejde. Nastavte vlastní adresu, chcete-li hlášení od svých uživatelů — do Reply-To se doplní adresa toho, kdo psal, takže jde odpovědět rovnou z pošty. Vyžaduje funkční SMTP. |
Notifikace
Výchozí hodnoty jsou rozumné. Měňte je, jen když jsou upozornění moc hlučná — nebo naopak když vaše automatizace oprávněně vyrobí víc než strop.
Žádné „bez omezení“ neexistuje
0 tady není kouzelná hodnota — znamená, že je strop vyčerpaný hned. Místo vynulování číslo zvyšte.
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_NOTIFY_DIGEST_HOUR | 8 | Hodina denního souhrnu e-mailem (0–23, místní TZ). |
KB_REMINDER_CATCHUP_H | 48 | Okno pro dohnání připomínek s časem (hodiny, 0–720). Po výpadku se připomínky, jejichž čas je starší než tohle okno, jen zalogují a nepošlou — obnova staré zálohy tak nezasype zvoneček schůzkami, které už proběhly. Mladší zmeškané připomínky přijdou hned po startu. |
KB_NOTIFY_DAILY_CAP | 50 | Nejvíc upozornění v aplikaci na příjemce a den. Nad strop se jednotlivé řádky nahradí jedním rostoucím souhrnem („+N dalších“) — nic se tiše neztratí. |
KB_NOTIFY_EMAIL_DAILY_CAP | 10 | Nejvíc notifikačních e-mailů na příjemce a den. Nad strop se e-maily zahazují (upozornění v aplikaci přijde dál). |
KB_NOTIFY_COALESCE_MIN | 10 | Upozornění pro téhož příjemce, která přijdou během tolika minut, se slijí do jedné zprávy. |
KB_UVODNI_MAPA | 1 | Zakládat každému novému uživateli dva úvodní projekty (prohlídka + zkušební projekt). 0 = nový účet začíná prázdný. |
KB_PURPOSE_ASK | 1 | Zeptat se prvního správce při prvním přihlášení, k čemu instance je (firma / rodina / sólo). 0 = neptat se (platí firma). Při KB_UVODNI_MAPA=0 se neptá automaticky. |
Aktualizace a verzování
| Proměnná | Výchozí | Co dělá |
|---|---|---|
KB_UPDATE_CHECK | 1 | Prohlížeč přihlášeného uživatele se ptá GitHub API, jestli existuje novější vydání; dialog „O aplikaci“ pak nabídne odkaz. Instance sama nikam nic neposílá. 0 kontrolu vypne. |
KB_UPDATE_REPO | (prázdné) | Odkud se čtou vydání. Prázdné = oficiální repozitář. Nastavte jen u vlastního forku. |
KB_VERSION | dev | Build argument, ne proměnná v .env — předává se na příkazové řádce: KB_VERSION=$(git describe --tags --dirty) docker compose up -d --build. Když zůstane dev, kontrola aktualizací se nenabízí. |
Žádná telemetrie
Kontrola aktualizací běží v prohlížeči uživatele proti GitHubu. Instance se nikam neozývá, takže se o vaší instalaci nedozvíme nic.

