Instalace Claude Code a ChatGPT Codex na linuxový server: krok za krokem
Od čerstvé instalace Debianu nebo Ubuntu k funkčnímu AI agentovi: uživatel a sudo whitelist, Node.js 22, instalace a přihlášení Claude Code, Codex CLI a Gemini CLI, soubory s pravidly, cron úlohy, první úkoly a typické chyby.
Tento návod vás provede od čerstvě nainstalovaného serveru s Debianem nebo Ubuntu k funkčnímu AI agentovi, který vyhodnocuje logy, kontroluje konfigurace a provádí údržbové úkoly. Nastavíme Claude Code (Anthropic) a Codex CLI (OpenAI, nástroj příkazové řádky od tvůrců ChatGPT), oba pod vlastním uživatelem s omezenými právy, a jako třetí možnost ukážeme Gemini CLI (Google). Všechny příkazy jsme vyzkoušeli na KVM root serveru KernelHost s Debianem 13 a Ubuntu 24.04. Co je AI managed server obecně a jaké architektury existují, popisuje článek AI managed server: bezpečné propojení AI agentů.
Stav k září 2026. Nástroje se rychle vyvíjejí; v případě pochybností ověřte přepínače pomocíclaude --help,codex --help, respektivegemini --help.
Předpoklady
- Root server s Debianem 12 nebo 13, respektive s Ubuntu 22.04 nebo 24.04, a root přístup přes SSH. Na AlmaLinuxu a Rocky Linuxu jsou kroky stejné, jen se správce balíčků jmenuje
dnfmístoapt. - Hotové základní zabezpečení: přihlašování přes SSH klíčem, firewall, automatické bezpečnostní aktualizace. To vše pokrývá checklist pro nové root servery.
- Účet u společnosti Anthropic (Claude Pro, Max nebo Team) nebo API klíč, účet ChatGPT (Plus, Pro nebo Team) nebo API klíč OpenAI. Pokud chcete nastavit jen jeden nástroj, stačí vám jedno z toho.
- Odchozí HTTPS na
api.anthropic.comaapi.openai.com. Na serverech KernelHost je to zajištěno už ve výchozím stavu, případný restriktivní vlastní firewall ho musí povolit.
Jaký server pro AI agenta stačí?
AI agent nepotřebuje na serveru žádný zvláštní hardware ani GPU, protože jazykový model běží u poskytovatele. Na serveru běží jen nástroj příkazové řádky a Node.js, které během relace obvykle zabírají dohromady několik set megabajtů operační paměti. Pro server, na kterém jinak běží jen málo, stačí 2 vCPU a 4 GB RAM. Pokud na serveru vedle toho běží weby, databáze nebo herní servery, počítejte pro agenta s rezervou zhruba 1 GB operační paměti. KVM root server od KernelHostu je zprovozněný přibližně za 30 sekund, účtuje se v režimu PrePaid bez minimální doby trvání a hodí se proto i jako testovací systém, na kterém si agenta nejprve vyzkoušíte.
Krok 1: vytvořit vlastního uživatele a omezit sudo
Agent nikdy neběží jako root. Dostane vlastní účet a přes sudo whitelist přesně ty příkazy, které potřebuje. Začněte několika příkazy pro čtení a seznam rozšiřujte teprve tehdy, když to nějaký úkol skutečně vyžaduje.
sudo adduser --disabled-password --gecos "KI-Agent" aiagent
sudo tee /etc/sudoers.d/aiagent >/dev/null <<'EOF'
aiagent ALL=(root) NOPASSWD: /usr/bin/journalctl *, /usr/bin/systemctl status *, /usr/bin/systemctl restart nginx, /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y, /usr/bin/tail *, /usr/bin/df *, /usr/bin/ss *
EOF
sudo chmod 440 /etc/sudoers.d/aiagent
sudo visudo -cf /etc/sudoers.d/aiagent
Poslední řádek kontroluje syntaxi. Chyba v souboru sudoers může zablokovat sudo pro všechny, proto k postupu kontrola vždy patří. --disabled-password zajistí, že se nikdo nemůže jako aiagent přihlásit heslem; do účtu se později přepnete pomocí sudo -iu aiagent. Jak sudo uživatelé obecně fungují, vysvětluje článek Vytvoření sudo uživatele v Linuxu.
Cílená práva zápisu místo editoru přes sudo
Pokud má agent měnit soubory v /etc, nepovolujte mu přes sudo nano (tím by šlo upravit jakýkoli soubor, i /etc/sudoers), ale pracujte se skupinou a cílenými právy zápisu, například setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. Na začátek úplně stačí, když agent změny navrhne a vy je provedete.
Totéž platí pro příkazy se zástupnými znaky ve whitelistu. /usr/bin/tail * dovoluje agentovi číst jakýkoli soubor, ke kterému má přístup root, včetně souborů s přístupovými údaji. Kdo to nechce, vypíše povolené cesty výslovně, například /usr/bin/tail -n 200 /var/log/nginx/error.log.
Krok 2: nainstalovat Node.js 22
Oba nástroje běží na Node.js. Claude Code vyžaduje nejméně verzi 18, Codex CLI nejméně 22, proto instalujeme 22 LTS. Zdroje balíčků Debianu 12 nabízejí příliš starou verzi; aktuální dodává NodeSource:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version
Alternativa bez práv roota: nvm
Kdo nechce spouštět skripty z internetu s právy roota, použije nvm v domovském adresáři uživatele agenta; to pak jde úplně bez práv roota. Instalační příkaz pro nvm převezměte ze souboru README projektu, potom stačí tři řádky:
nvm install 22
nvm alias default 22
node --version
Podrobnosti a další postupy najdete v návodu na Node.js na Debianu.
Krok 3: nainstalovat Claude Code a přihlásit se
Od této chvíle pracujeme v účtu agenta:
sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version
Nativní instalátor uloží Claude Code do ~/.local/bin a nástroj se pak sám udržuje aktuální. Alternativně to jde přes npm pomocí npm install -g @anthropic-ai/claude-code; pokud to selže s chybou EACCES, pomůže část o řešení potíží níže.
Přihlášení na serveru bez prohlížeče
Při prvním spuštění claude si nástroj vyžádá přihlášení. S účtem Claude normálně otevře prohlížeč; na serveru bez prohlížeče zobrazí adresu a kód, který potvrdíte na notebooku nebo chytrém telefonu. Přihlášení pak platí pro tohoto uživatele na tomto serveru, dokud se neodhlásíte.
API klíč pro skripty a cron úlohy
Pro skripty a cron úlohy je lepší volbou API klíč:
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Odpověz jen slovem OK"
Klíč tak leží jen v domovském adresáři uživatele agenta, který ostatní uživatelé nemohou číst. Vytvořte ho v konzoli Anthropic s měsíčním limitem výdajů, pak se relace, která se vymkne kontrole, nemůže prodražit. Samotný klíč nikdy nepište do úkolu pro agenta ani do souboru, který má agent vypsat.
Krok 4: nakonfigurovat Claude Code pro server
Soubor s pravidly CLAUDE.md
Claude Code při spuštění čte soubor CLAUDE.md v aktuálním adresáři. Jsou v něm pravidla, která platí pro každou relaci. V domovském adresáři agenta vytvořte pracovní adresář s tímto souborem:
mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Pravidla pro tento server
- Toto je produkční server (Debian 13, nginx, PHP-FPM, MariaDB).
- Příkazy pro čtení (journalctl, systemctl status, tail, df, ss) jsou povolené kdykoli.
- Před každým zapisujícím příkazem stručně vysvětli, co mění, a počkej na schválení.
- Nikdy neodstraňuj balíčky, nikdy nemaž soubory pod /var/lib, nikdy nevytvářej ani nemaž uživatele.
- Hesla, klíče a zákaznická data nikdy neopakuj ve výstupech.
- Na konci každého úkolu podej shrnutí ve třech větách.
EOF
Soubor postupně roste. Pokaždé, když agent udělá něco jinak, než chcete, zapište opravu jako nové pravidlo. Po několika týdnech bude docela přesně odrážet způsob práce na vašem serveru.
Whitelist v settings.json
K tomu přibude whitelist nástrojů, aby Claude Code spouštěl příkazy pro čtení bez dotazu a u všeho ostatního žádal o svolení. Soubor ~/.claude/settings.json platí pro daného uživatele:
mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
"permissions": {
"allow": [
"Bash(sudo journalctl:*)",
"Bash(sudo systemctl status:*)",
"Bash(sudo tail:*)",
"Bash(df:*)",
"Bash(free:*)",
"Bash(ss:*)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(sudo rm:*)",
"Bash(dd:*)",
"Bash(mkfs:*)"
]
}
}
EOF
Seznam zákazů v části deny je doplňková záchranná síť, ne zeď: tentýž příkaz lze zapsat mnoha způsoby. Skutečnou hranici tvoří sudo whitelist z kroku 1, protože co nesmí uživatel, nesmí ani agent.
První úkol interaktivně
Teď první úkol, interaktivně:
cd ~/server && claude
> Shrň chyby z journalctl za posledních 24 hodin a uveď tři nejčastější příčiny.
Bez dohledu přes cron úlohu
A tentýž úkol bez dohledu, například jako denní cron úloha v 7 hodin, jejíž výsledek přijde e-mailem:
0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Shrň chyby a varování z journalctl za posledních 24 hodin. Uveď službu, čas a pravděpodobnou příčinu." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Denní zpráva serveru" admin@example.com
Přepínač -p spustí Claude Code bez interaktivní relace, --allowedTools omezí nástroje přesně na to, co daný běh potřebuje. Zapisující akce do běhů bez dohledu nepatří. Jak se cron úlohy obecně nastavují, popisuje článek Nastavení cron úlohy v Linuxu.
Krok 5: nainstalovat Codex CLI (ChatGPT) a přihlásit se
Instalace a přihlášení
Codex CLI je nástroj od OpenAI, který přenáší do příkazové řádky modely, na nichž běží ChatGPT. Instalace probíhá ve stejném uživatelském účtu:
npm install -g @openai/codex
codex --version
Přihlášení probíhá přes účet ChatGPT (Plus, Pro nebo Team): spusťte codex, zvolte „Sign in with ChatGPT“ a zobrazenou adresu otevřete na zařízení s prohlížečem. Pro skripty místo toho nastavte API klíč z platformy OpenAI:
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc
Sandbox a režim schvalování v config.toml
Codex má vlastní sandbox a režim schvalování. Obojí se nastavuje v ~/.codex/config.toml; pro produkční server dává smysl tato kombinace:
mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF
workspace-write povoluje zápis jen v aktuálním pracovním adresáři, on-request nechá agenta žádat o svolení u všeho, co jde nad tento rámec. Úroveň danger-full-access obojí ruší a na produkční systém nepatří.
Pravidla v AGENTS.md
Pravidla jako v CLAUDE.md čte Codex ze souboru AGENTS.md v pracovním adresáři; můžete použít stejný obsah:
cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Zkontroluj, zda běží všechny povolené služby systemd, a vypiš ty, které selhaly, s poslední chybovou hláškou."
Pro běhy bez dohledu slouží codex exec "Aufgabe", protějšek k claude -p.
Krok 6: Gemini CLI jako třetí možnost
Gemini CLI je nástroj příkazové řádky od Googlu a funguje na stejném principu. Také běží na Node.js a instaluje se do stejného uživatelského účtu:
npm install -g @google/gemini-cli
gemini --version
Při prvním spuštění gemini se přihlásíte účtem Google, pro skripty nastavíte API klíč v proměnné prostředí GEMINI_API_KEY. Pravidla čte Gemini CLI ze souboru GEMINI.md v pracovním adresáři, i zde můžete převzít obsah souboru CLAUDE.md. Běhy bez dohledu spustíte pomocí gemini -p "Aufgabe". Který ze tří nástrojů použijete, je hlavně otázkou účtu, který už stejně máte: způsob práce na serveru je u všech tří stejný a několik z nich můžete provozovat vedle sebe.
Alternativa: agent běží na vašem počítači a pracuje přes SSH
Kdo nechce na server nic instalovat, spustí Claude Code nebo Codex na notebooku a nechá agenta posílat příkazy přes SSH. Server k tomu dostane vlastní SSH klíč uživatele agenta a v CLAUDE.md stojí pravidlo, že každý příkaz pro server musí začínat ssh aiagent@server. Pro občasnou údržbu to funguje dobře, delší úkoly a cron úlohy ale běží lépe přímo na serveru. Jak přesně vypadá připojení přes SSH s vlastním klíčem, aliasem hostitele a schvalováním a podle jakého postupu pak agent nasazuje na produkční systémy, ukazuje článek z praxe Jak propojit AI se serverem.
Krok 7: zabezpečit a nastavit limity
- Snapshot nebo záloha před každou relací, ve které se má něco měnit. Zálohovací strategie pro servery ukazuje, jak to zařídit automaticky.
- Režim schvalování nechte zapnutý.
--dangerously-skip-permissionsu Claude Code adanger-full-accessu Codexu jsou určené pro jednorázové VM. - Tajemství mimo dosah. Uživatel agenta nesmí mít možnost číst soubory
.env, hesla k databázím ani zákaznická data. Co přečte, putuje k poskytovateli. - Limit nákladů nastavte pro každý API klíč v konzoli poskytovatele.
- Dohledatelnost: nainstalujte
etckeeper, aby každá změna pod/etcskončila v Gitu, a shrnutí od agenta si uchovávejte. - Na příchozí straně se nic nemění. Oba nástroje potřebují jen odchozí HTTPS. Firewall, Fail2ban a ochrana proti DDoS od poskytovatele hostingu zůstávají beze změny.
První úkoly: pět užitečných zadání
Nejlepší první úkoly jsou ty, které obnášejí hodně čtení a žádné riziko. Rychle ukážou, jak důkladně agent pracuje, a hned přinesou užitek:
- Zpráva z logů: „Shrň chyby a varování za posledních 24 hodin, seskupené podle služby, s pravděpodobnou příčinou.“
- Kontrola služeb: „Vypiš všechny selhané služby systemd s poslední chybovou hláškou a vysvětli, co by bylo potřeba u každé z nich udělat. Nic neměň.“
- Místo na disku: „Ukaž, které adresáře zabírají nejvíc místa, a navrhni, co lze bezpečně uklidit.“ Souvislosti vysvětluje článek Plný disk v Linuxu.
- Aktualizace: „Pro které balíčky čekají bezpečnostní aktualizace a které služby bude potřeba potom restartovat?“
- Webový server: „Zkontroluj konfiguraci nginx, zda neobsahuje chyby a zastaralá nastavení, a vysvětli každý nález.“
Teprve když jsou tyto analýzy správné, vyplatí se dávat agentovi úkoly, které něco mění, a to nejprve na testovacím systému.
Typické chyby a řešení
| Hláška | Příčina a řešení |
EACCES: permission denied při npm install -g | npm chce zapisovat do systémového adresáře. Nastavte uživatelský prefix: npm config set prefix ~/.npm-global, poté přidejte export PATH=~/.npm-global/bin:$PATH do ~/.bashrc a instalaci zopakujte. |
Node.js version ... is not supported | Příliš stará verze ze zdrojů distribuce. Zopakujte krok 2 a pomocí node --version ověřte, že je aktivní 22.x. |
claude: command not found | Nativní instalátor uloží program do ~/.local/bin, který ještě není v PATH. Přidejte export PATH=$HOME/.local/bin:$PATH do ~/.bashrc a znovu načtěte shell. |
| Přihlášení neotevře prohlížeč | Na serveru je to očekávané chování. Otevřete zobrazenou adresu na jiném zařízení a zadejte kód, nebo přejděte na API klíč. |
ECONNREFUSED nebo vypršení časového limitu při spuštění | Odchozí HTTPS je blokované. Zkontrolujte pravidla firewallu pro odchozí port 443; na serverech KernelHost je odchozí provoz ve výchozím stavu volný. |
429 rate limit nebo overloaded | Kvóta předplatného nebo API je vyčerpaná, případně je poskytovatel přetížený. Chvíli počkejte a běhům bez dohledu nastavte opakování po několika minutách. |
| Agent se ptá u každého příkazu | Doplňte whitelist v ~/.claude/settings.json, respektive approval_policy v config.toml, ale jen o příkazy pro čtení. |
| Cron úloha posílá prázdné e-maily | V cronu chybí proměnné prostředí shellu. Nastavte API klíč v crontabu nebo v souboru s proměnnými prostředí, který úloha načítá, a používejte úplnou cestu k programu. |
Jak udržovat nástroje aktuální
Claude Code se po instalaci nativním instalátorem aktualizuje sám. Nástroje nainstalované přes npm aktualizujete na nejnovější verzi jediným příkazem:
npm update -g @openai/codex @google/gemini-cli
codex --version
gemini --version
Nové verze občas mění přepínače nebo výchozí nastavení. Po aktualizaci si krátce přečtěte poznámky ke změnám, než necháte běhy bez dohledu dál běžet, a další denní zprávu zkontrolujte, zda v ní není nic neobvyklého.
Závěr
AI agent na serveru je nastavený za hodinu: uživatel, sudo whitelist, Node.js, nástroj, pravidla. Skutečná práce spočívá ve stanovení hranic a ty jsou tu záměrně úzké. Rozšiřujte je krok za krokem, když to úkol vyžaduje, nikdy paušálně. Na root serveru KernelHost nebo dedikovaném serveru k tomu není potřeba nic aktivovat: root přístup, volný výběr distribuce a odchozí spojení jsou standardem.
Jak pak agent nasazuje na produkční systémy, se zálohou, cestou zpět a schvalováním, popisuje článek z praxe Jak propojit AI se serverem.
Stručné shrnutí
- Claude Code, Codex CLI a Gemini CLI běží na každém linuxovém serveru s Node.js 22, GPU není potřeba.
- Agent dostane vlastního uživatele se sudo whitelistem a nikdy neběží jako root.
- Pravidla jsou v
CLAUDE.md,AGENTS.mdneboGEMINI.md, příkazy pro čtení patří do whitelistu, vše ostatní vyžaduje schválení. - Pro cron úlohy a skripty je čistým řešením API klíč s limitem výdajů, běhy bez dohledu pouze čtou.
- Záloha před každou relací, tajemství mimo dosah, režim schvalování zapnutý.
- Servery KernelHost nabízejí root přístup, volný výběr distribuce a odchozí spojení už ve výchozím stavu.
Časté dotazy
Potřebuji pro Claude Code předplatné, nebo stačí API klíč?
Jak přihlásím Codex CLI na serveru bez prohlížeče?
Jakou verzi Node.js potřebuji?
Proč npm install -g selhává s chybou EACCES?
Mohu Claude Code spouštět v cron úloze?
Funguje to i na serverech s Windows od KernelHostu?
Mohu na jednom serveru používat Claude Code, Codex CLI a Gemini CLI souběžně?
Kolik operační paměti potřebuje AI agent na serveru?
Jak aktualizuji Claude Code, Codex CLI a Gemini CLI?
Jak nastavím Gemini CLI na serveru?
Proč AI agent nesmí běžet jako root?
2026 KernelHost GmbH. Všechna práva vyhrazena. Tento návod je chráněn autorským právem. Jeho zveřejnění na jiných webech, a to i po částech nebo v upravené podobě, není bez našeho písemného souhlasu dovoleno. Citace s uvedením zdroje a odkazem jsou výslovně vítány.

