Konfigurace
Konfigurace leží v .env vedle docker-compose.yml, s jednou výjimkou: SMTP se nastavuje v administraci PocketBase, ne v souboru. Úplný seznam proměnných i s výchozími hodnotami je v Proměnných prostředí; tahle stránka řeší rozhodnutí, ne tabulku.
Po každé změně:
docker compose up -d --buildAI
AI je ve výchozím stavu vypnutá a aplikace je tak plně použitelná. Zapíná se přes KB_AI_PROVIDER:
| Poskytovatel | Co to znamená |
|---|---|
none | Žádná AI. Ze serveru nic neodejde. Tohle je výchozí stav. |
ollama | Váš vlastní lokální model. Nainstalujte Ollamu, ollama pull gpt-oss:20b, pak nastavte KB_AI_URL=http://IP:11434 a KB_AI_MODEL=gpt-oss:20b. Všechno zůstane ve vaší síti. Základní prompty; přepis hlasu není součástí. |
api | Vzdálená AI služba kompatibilní s killBottleneck API — adresa a token od vašeho poskytovatele. Bez vlastního GPU a údržby. |
custom | Váš vlastní endpoint dodržující stejný API kontrakt. |
KB_AI_PROVIDER=ollama
KB_AI_URL=http://192.168.1.10:11434
KB_AI_MODEL=gpt-oss:20bJaký model zvolit
gpt-oss:20b je ověřený — na něm se killBottleneck testuje a odpovědi z něj dávají smysl i česky. Počítejte s tím, co potřebuje:
| Velikost modelu | ~14 GB |
| Rozumný běh | grafická karta s 16 GB paměti a víc |
| Doba odpovědi | jednotky až desítky sekund (naměřeno ~23 s pro návrh otázek) |
Doporučujeme jen tenhle jeden, protože jen na něm to máme odzkoušené. Jiný model si zkusit můžete a Ollama jich nabízí spoustu — počítejte ale s tím, že to je na vaše riziko. Nejde o „chytrost" modelu: killBottleneck po AI chce strojově čitelnou odpověď (JSON) a menší nebo takzvaně uvažující modely ji občas vrátí useknutou — pak funkce tiše nic neudělá.
Ze změřených: gemma3:12b (~8 GB) obstála a je použitelná na kartě s 12 GB, jen je pomalejší. Jiný model téže velikosti u složitějšího zadání vrátil rozbitou odpověď — proto to „na vlastní riziko" myslíme vážně. Nový model si nejlépe ověříte tak, že zkusíte Navrhnout plán z cíle: buď se objeví strom, nebo se nestane nic.
Bez grafické karty model poběží z procesoru a odpovědi budou trvat minuty; k práci to nestačí.
killBottleneck mluví s Ollamou přímo (/api/chat) — nic mezi tím není a ze sítě nic neodchází.
Kam data odcházejí
S jiným poskytovatelem než none se data mapy posílají na endpoint, který jste nastavili. U ollama mířící na váš stroj je to pořád vaše síť. U api nebo custom je to to, kam jste zamířili. Žádná třetí skrytá varianta neexistuje.
Zvláštní model jen na ranní souhrny
Jednořádkové povzbuzení v Mém dni je krátký formátovaný text — bohatě stačí menší a rychlejší model. KB_SUMMARY_PROVIDER / _URL / _MODEL / _TOKEN přebijí obecné nastavení AI jen pro tuhle jednu úlohu. Když je necháte prázdné, použije se obecná konfigurace.
Souhrn se generuje ráno v KB_SUMMARY_HOUR (výchozí 6) jen účtům, které se přihlásily v posledních KB_SUMMARY_ACTIVE_DAYS dnech (výchozí 14, 0 = všem); ostatním se vygeneruje ve chvíli, kdy si aplikaci otevřou.
Co AI dělat nesmí
AI nikdy nevypisuje seznamy vašich úkolů — ty se počítají z dat a jsou proklikávací. Názvy úkolů se před vstupem do promptu čistí. Vypnutí AI vás stojí přesně jednu větu v Mém dni; samotný panel funguje dál.
Registrace a registrační klíč
První zaregistrovaný účet se stane správcem. Dál se lidé buď registrují sami, nebo je správce pozve ze Správy.
Když nastavíte KB_SETUP_CODE, vyžaduje ho každá registrace. Klíč rozdáte lidem, které chcete pustit dovnitř. Pozvánka od správce klíč nepotřebuje.
Dostupné z internetu?
KB_SETUP_CODE nastavte dřív, než instanci vystavíte ven. Prázdná hodnota znamená otevřenou registraci.
Přihlášení přes Google
Volitelné — uživatelé se pak přihlašují Googlem místo e-mailem a heslem.
- V Google Cloud Console: APIs & Services → Credentials → Create credentials → OAuth client ID → Web application.
- Do Authorized redirect URIs přidejte:
https://VASE-DOMENA/api/oauth2-redirect - Hodnoty vložte do
.env:bashKB_GOOGLE_CLIENT_ID=…apps.googleusercontent.com KB_GOOGLE_CLIENT_SECRET=… docker compose up -d --build— tlačítko se objeví samo.
Prázdné proměnné = přihlášení přes Google je vypnuté a tlačítko se nezobrazuje.
E-mail (SMTP)
SMTP se nastavuje v administraci PocketBase, ne v .env:
http://IP-SERVERU:8090/_/ → Settings → Mail settings
Účet superuživatele vznikne při prvním startu; odkaz je v docker compose logs.
Co se změní, když SMTP nenastavíte
E-maily jsou ve výchozím stavu vypnuté a instance je tak plně použitelná. Rozdíl je jen tady:
| Se SMTP | Bez SMTP | |
|---|---|---|
| Pozvánka nového člena | odejde e-mailem s odkazem | správci se ukáže dočasné heslo k předání |
| „Zapomněli jste heslo?" | samoobslužné, odkaz přijde e-mailem | nenabízí se — heslo obnoví správce (viz níž) |
| Upozornění a denní souhrn | chodí podle předvoleb každého člověka | jen zvoneček v aplikaci |
Odkaz na obnovu hesla se bez SMTP schválně neukazuje: server by potvrdil odeslání, ale žádná zpráva by nedorazila a člověk by čekal na mail, který neexistuje.
Zapomenuté heslo bez SMTP
Členovi týmu heslo obnoví správce: Správa organizace → u člověka ikona klíče → potvrdit. Objeví se nové dočasné heslo k předání; dosavadní heslo hned přestane platit a dotyčný se odhlásí ze všech zařízení. Že mu heslo někdo změnil, se dozví ve zvonečku.
Správci samotnému takhle heslo nikdo neobnoví — nad ním nikdo není (a aplikace mu proto ani nenabízí obnovu vlastního hesla). Tady se cesty rozcházejí:
- Hostovaná verze (killbottleneck.com): pošta funguje vždy, takže si správce vyžádá odkaz běžným „Zapomněli jste heslo?“ na přihlašovací stránce. Nic dalšího řešit netřeba.
- Vlastní server bez SMTP: cesta vede přes administraci PocketBase, ke které máte jako provozovatel přístup:
http://IP-SERVERU:8090/_/→ přihlásit se superuživatelem- kolekce users → najít svůj účet → Change password
Nemáte superuživatele? Vytvořte ho na serveru (jméno služby je z docker-compose.yml):
docker compose exec killbottleneck /app/pocketbase superuser upsert vas@email.cz 'VaseSilneHeslo'Na co si dát pozor
Konzole na :8090/_/ jede po nešifrovaném HTTP — otevírejte ji jen z místní sítě nebo přes SSH tunel, ne přes internet. Heslo zadané na příkazové řádce navíc zůstane v historii shellu a je chvíli vidět ostatním uživatelům serveru; po použití ho změňte v konzoli a řádek z historie smažte.
Doporučení
Založte si druhý účet s rolí správce a heslo k němu uložte do správce hesel. Obnova přes PocketBase funguje, ale je to práce navíc uprostřed dne, kdy se nikdo nemůže přihlásit.
Notifikační e-maily jsou ve výchozím stavu vypnuté a řídí se předvolbami každého uživatele. Pokud vašim lidem e-maily chodily už před aktualizací a chcete to zachovat, nastavte KB_NOTIFY_EMAIL_DEFAULT=1.
Časové pásmo a opakující se šablony
TZ platí pro celou instanci, ne pro jednotlivé uživatele. Určuje, v jakém pásmu se počítá „každé pondělí“ a „v pět ráno“. Tým rozprostřený přes pásma dostane pásmo serveru.
Pokud byl server v hodinu KB_AUTO_HOUR vypnutý, vytvoří se opakující se projekty v nejbližší pozdější hodinu téhož dne — nepřeskočí se potichu.
Limity příloh
KB_FILES_MB omezuje nahrané soubory za celou instanci:
- prázdné — bez limitu; výchozí stav pro self-hosting, je to váš disk
- číslo — strop v MB (
5000= 5 GB) 0— nahrávání vypnuté; přílohy jde pořád přidávat jako odkazy, které nezabírají místo a vždycky míří na aktuální verzi souboru
Proč je 0 výchozí u naší hostované verze
Není to úspora místa, ale záměr: cizí soubory u sebe neukládáme. Nedostanou se do našich záloh, nevzniká kolem nich „zpracováváme dokumenty zákazníka" ve smlouvě a zůstávají tam, kde už jsou. U sebe na serveru je to samozřejmě váš disk a vaše rozhodnutí.
Automatizace
Týká se vás, jen když cíle poháníte automatizací. KB_PUBLIC_URL je adresa, na kterou se má agent ohlásit zpět — proč prázdná hodnota může vést k tomu, že vzdálený agent volá sám sebe, a proč je KB_ALLOW_PRIVATE_WEBHOOKS vypnuté, je v Proměnných prostředí → Automatizace.
Režim instance
KB_HOSTED nechte na vlastním serveru prázdné. Existuje pro instance běžící u poskytovatele vedle jiných zákazníků, kde správce instance nesmí zamířit AI službu do privátní sítě a oťukávat sousedy.

