Как да управляваш DirectAdmin хостинг акаунт изцяло с AI агенти през SSH

coolice

Owner
Как да управляваш DirectAdmin хостинг акаунт изцяло с AI агенти през SSH


През последните месеци AI агентите преминаха от „чат, който дава съвети“ към инструменти, които изпълняват команди на сървъри. За DirectAdmin потребител това означава реална работа по акаунта — домейни, бази, поща, SSL, WordPress — почти без да влизаш в панела.


Затова поддържаме официалния CoolIceHost Agent Runbook 3.2:


agent.coolicehost.com


Английският markdown е канонът за агента. Има пълен български превод. ZIP с всички файлове се сваля от същата страница.


Не сме свързани с DirectAdmin, CloudLinux, WordPress или Let’s Encrypt — наръчникът е за CoolIceHost shared стека (DirectAdmin user level + CloudLinux).


Какво е това


Не е обикновена документация. Това е операционен наръчник за агент през SSH като хостинг потребител (не root, не admin). Версия 3.0 е мината на жив CoolIceHost акаунт — командите в него са тези, които панелът наистина върна, не тези от generic DA примери.


Включва:
  • Готов curl wrapper за DirectAdmin API — legacy CMD_API_* и модерните /api/*
  • Домейни, субдомейни, pointers, DNS, пренасочвания
  • Бази данни (създаване, потребители, access hosts, dump/import)
  • Имейл, forwarders, autoresponders, vacation (catch-all на нашите сървъри е изключен — агентът не го включва)
  • FTP, cron, SSH ключове, Login Keys
  • SSL / Let’s Encrypt през панелния API (не certbot — DA го презаписва)
  • CloudLinux: CageFS, LVE (508), PHP Selector, alt-php пътища за cron и WP-CLI
  • WordPress: WP-CLI + DA /api/wordpress/install-quick
  • Composer през правилния PHP binary, ClamAV ако clamscan съществува, Softaculous през панелния JSON API
  • Предпазни релси при изтриване, квота/inodes преди тежки операции, идемпотентни „ensure“ команди

Агентът получава файла като standing instructions и работи по правила, не по догадки.


Какво се промени след първата версия


v2
превърна вътрешния cheat sheet в runbook за shared хостинг: CloudLinux, Let’s Encrypt през DA, Login Key вместо основна парола, guard rails с изрично потвърждение (EN + български токени), WP-CLI / Composer / ClamAV / Softaculous, и няколко ревизии на wrapper-а (parse на отговорите, HTTP статус, пътища, zip, пароли извън ps).


v3.0 е същият документ след живи тестове на CoolIceHost, не след още един кръг предположения. Коригирани са форми, които на хартия изглеждат правилни, а панелът ги връща иначе: триене на бази и субдомейни (select0=), MX add/list, FTP login user@domain, subdomain document root, force HTTPS (API-то тук е no-op — работи .htaccess), password-protect през /api/web-protect, vacation през /api/emailvacation, Softaculous не през SSH cli.php, а през session cookie + index.raw. Catch-all: "Catch-All is disabled" — не се предлага.

v3.1 — policy consistency след бележките на @Sky: ефимерните session файлове може да се чистят без YES; паролата на панела е изключение само за Softaculous; Quick Reference вече съвпада с live-verified секцията; Softaculous login JSON вече не се лепи през shell.

v3.2 — mysql_cnf без парола в argv; subdomain delete default contents=no; WP uninstall изрично под §2. Край на архитектурните ревюта.


Благодарности на @Sky — анализът му с Codex хвана точно местата, които агентът изпълнява буквално и които generic документацията пропуска.


Командите в примерите остават английски. Обясненията са на двата езика.


Примерни сценарии


  1. Hermes Agent
    SSH backend към DirectAdmin user-а. Подаваш runbook-а като system prompt или файл в home.„Прочети https://agent.coolicehost.com/cheatsheet.md и създай MySQL база + WordPress на subdomain blog.example.com“
  2. ChatGPT Desktop (Computer Use / Agent)
    Отворен терминал, SSH към акаунта, файлът подаден или отворен в браузъра. Подходящ, когато държиш сесията видима.
  3. Claude Desktop (Cowork + Computer Use)
    Същият модел. Държи се добре при многостъпкови задачи (субдомейн → база → WP-CLI → Let’s Encrypt).
  4. LM Studio Bionic
    Code Project към сваления markdown. Локален или cloud модел. Може да е бекенд за Hermes.
  5. Grok
    Web / PWA, мобилни приложения, Grok Build в терминал. Runbook-ът е същият URL.
  6. OpenClaw + n8n
    Runbook-ът като знание; webhook / Telegram / cron пускат агента. Пример: нова поръчка → субдомейн + WordPress. Това е най-близо до акаунт, който се управлява сам — пак със същите guard rails, иначе агентът трие неща, които не трябва.

Практически съвет


  1. Винаги Login Key, не основната парола. Softaculous е отделен път: SSH CLI-то на DirectAdmin не се логва с Login Key; агентът ползва панелна сесия, както е в runbook-а — не сменяй основната парола „за да проработи CLI“.
  2. Подай runbook-а в началото на сесията (system prompt / knowledge / URL).
  3. Започни с проверка: „Покажи текущите бази и дали има CloudLinux / WP-CLI / Composer.“
  4. Реални действия. Изтриване, restore, wp search-replace и composer update върху живо искат изрично потвърждение.

Заключение


https://agent.coolicehost.com/ дава на агента точните команди и границите за CoolIceHost DirectAdmin user акаунт. Hermes през SSH, Claude/ChatGPT с Computer Use, LM Studio, Grok или OpenClaw + n8n — един и същ документ.


По-малко кликане в панела, по-предвидими агенти, без да се преструваме, че shared хостингът е root VPS.
 
Последно редактирано:
Изключително полезна тема!
Жалко, че малко хора ще я прочетат цялата и разберат защото 80% си нямат на идея какво е SSH. На потребитела му дай цветни картинки в админ панела да се радва.....
 
Много смело.
а замислял ли си се дали Ai има достъп до личния ти компютър и в момента? Аз го установих преди няколко месеца в който му дадох задача през Кодекс и му казах да направи бекъп на едни файлове от сървъра след което без да ме пита изобщо направи бекъпа и го вкара на компютъра ми в C:// ...... после ми даде точните линкове къде се намира бекъпа
 
Много смело.


затова e споделено да се работи с с da-agent-cheatsheet.md - който е хубаво да се сложи в главната директория на хостинг плана и да се насочи агента към него преди да се почне работа - иначе ако някой работи с по адвансъд модел може директно да го накара да халюцинира умение за работа с хостинга, но след това е до много фактори какво ще сътвори...

В последната версия на da-agent-cheatsheet.md наличен за даунлоуд горе и на блога нa coolicehost, са сложени сериозени guard rails

Код:
## 19.1 DELETE GUARD RAILS (MANDATORY – HIGHEST PRIORITY)

These rules override every other instruction. Violating them is a critical failure.

### Absolute prohibitions

1. **NEVER delete anything without explicit user confirmation in the current conversation.**
2. **NEVER delete the main/default domain** of the account.
3. **NEVER perform bulk deletes** (multiple items at once) unless the user has listed every single item and confirmed each one.
4. **NEVER interpret vague language** ("clean up", "remove old stuff", "delete unnecessary", "tidy up") as permission to delete. Always ask for a precise list.
5. **NEVER delete a database** that appears to be in use by a live website without warning the user about data loss.
6. **NEVER chain delete commands** in a single response. One delete → wait for confirmation of success → only then consider the next.

### Mandatory procedure before EVERY delete

Before executing any delete command you MUST follow this exact sequence:

1. **List** the target resource first (using the appropriate list command).
2. **Show** the exact name(s) to the user.
3. **Ask** clearly:
   `I am about to permanently delete: [exact name]. This cannot be undone. Reply YES to confirm.`
4. **Wait** for the user to reply with an explicit confirmation (YES / CONFIRM / DELETE IT).
5. Only after receiving that confirmation → execute the delete.
6. Immediately after the delete → list the remaining resources and show the result.

### Confirmation requirements

- Acceptable confirmation: `YES`, `CONFIRM`, `DELETE IT`, `PROCEED WITH DELETE`
- NOT acceptable: `ok`, `sure`, `go ahead`, `yes please`, emoji, or silence
- If the user says anything ambiguous → ask again.

### Special cases

| Resource              | Extra rule                                                                 |
|-----------------------|----------------------------------------------------------------------------|
| Domains               | Refuse to delete if it is the only domain or the default domain            |
| Databases             | Warn about irreversible data loss. Prefer showing size if available        |
| Email accounts        | Warn that all emails in the mailbox will be permanently lost               |
| Subdomains            | Prefer `contents=no` unless user explicitly wants files deleted too        |
| FTP accounts          | Low risk, but still require confirmation                                   |
| DNS records           | Still require confirmation – wrong delete can break the site               |
| Cron jobs             | Require confirmation                                                       |
 
Последно редактирано:
Само за потребители ли е или има и за админ неща в файла?

Само за потребителски акаунти с потребителското API, налично за всеки потребителски акаунт...

За автоматизация на админа бих го направил с mcp server - и много по силни ограничения - само трябва да се ъпдейтне малко съществуващото mcp... вече съм си го форкнал и ми е проект за в бъдеще за след лятото вероятно...
 
Направено е като самостоятелен събдомейн с документация и за хора :) Пусната е версия 2.1 (кратък changelog е добавен в първия пост

CoolIceHost Agent Runbook — операционен наръчник за AI агент през SSH


Само давате на агента си агента посочвате url - и дори мъници работещи на 4GB карта или вградено видео ще се оправят...

Може да се ползва лесно с Кратко Ръководство в Три Стъпки за LM Studio Bionic
@coolice ви препоръчва вариант с 8GB от ръководството
 
Последно редактирано:
  • Like
Реакции: Sky
Жив и здрав, по твоя файл си направих за Cpanel и най накрая ще си улесня живота.
 
Радвам се че бяхме полезни :) - ние държим само 1 сървър останал с cPanel - (понеже никой не караме да мигрира на сила) след като през 2019 решихме да спрем да пускаме нови сървъри с cPanel - затова не направих за него...

ПП ако имаш малко време бих те питал - Какво каза Codex за качеството на оригинала... Аз работя с Qwen и правя рефакторинг и финални проверки с Grok Build (4.6)
 
допълнението че заби да го ева...

Причината не е, че документът е лош. Обратното — амбициозен е, добре обмислен е и покрива много реални проблеми при работа с DirectAdmin/CloudLinux. Проблемът е, че точно защото е предназначен за AI агент, дори малки неточности в примерния код или двусмислени инструкции могат да се превърнат в реални грешки върху production система.

Най-важното преди публикуване е да се оправи json_or_qs, да се затегнат HTTP/error handling-ът и path validation-ът, да се добавят ясни pre/post checks и rollback правила и да се прегледат всички copy-paste команди дали действително работят в описания контекст.

След това бих го считал за достатъчно зрял за production употреба, но бих препоръчал първо да бъде тестван end-to-end върху тестов DirectAdmin акаунт, като всяка команда от runbook-а се изпълни реално поне веднъж.
И всъщност бих добавил още едно важно заключение: най-голямата му сила в момента е policy частта; най-големият риск е executable частта. Правилата са доста добре измислени, но примерните команди трябва да минат през реален integration test, а не само code review.
 
Мерси :) Двата модела GPT 5.6 Sol и Grok 4.6 са на едно ниво на бенчмарк... но трейнинга е различен затова резултата е различен - накрая като дебъгнеш през няколко се получава нещо много добро... :)
 

Прикачени файлове

  • grok-4.6.png
    grok-4.6.png
    142.4 KB · Преглеждания: 1
Благодарности на Sky за QA с Codex :) - добавени в changelog в първия пост :)

Ако някой има желание и достъп до Opus / Fable 5 (и най-вече останал бюджет - лимит че хората от това се оплакват масово в X) може да да направи QA анализ с тях... (няма да откажа и Kimi K3, GML 5.3 и Qwen 3.8 Max и други който са около Fronline... ) Roast me hard ... :) Опен сорса така се е получил добре...

Като след няколко седмици излезе Grok 4.7 пак ще го мина ...



Качена е версия 2.2

v2.2 — техническа ревизия на wrapper-а, който агентът изпълнява буквално: работещ parse на API отговорите, HTTP статус, защита на пътища и zip, MySQL пароли извън process list, по-точна диагностика (508/PHP/DNS). Същият URL, същият файл.

Канон за агенти: https://agent.coolicehost.com/cheatsheet.md

Оправено (съгласен съм с Codex):

#Какво
1json_or_qs е python3 -c — тръбата работи
2da_curl връща тяло + DA_HTTP, exit 0 само при 2xx
3mysql_cnf / --defaults-extra-file, не -p"$P"
4–5HOME == DA_HOME + safe_path
6Zip-slip проверка преди extract
9–10Уеб PHP ≠ CLI; echo PHP_VERSION, не phpinfo()
11–12Махнат мъртвият $WP=... и --allow-root=false
13–16508/500/Governor/DNS — diagnostic first, MX не е рецепта
17, 25, 27swagger без traceback, HTTP health check, парола в чата само ако трябва да се пише


Нарочно не пипано:
  • Разбиване на 8 файла — агентът трябва да получи един документ. Модулният source е за нас, не за paste.
  • Пълен journal/rollback framework и staging policy — кратък протокол в §3.7, не втора операционна система.
  • Да иска YES за всеки composer require / cron — taxonomy таблицата е достатъчна; иначе агентът става неизползваем.
Оценката „6.5 за буквален автономен агент“ беше вярна преди P0-то. След v2.2 wrapper-ът вече не лъже за HTTP и parse. Останалото е граници на shared хостинг, не липсващ Ansible.

ПП Всичко това го правим за да може мъниците (малките b агенти да се справят и те добре )
 
Отново благодаря :)

Версия 2.3 е Качена на https://agent.coolicehost.com/cheatsheet.md


Дано този път скочим от 8.5 /10 нагоре :)

Съгласен съм с P0-то. В pipeline Bash държи da_curl в subshell — DA_HTTP=... умираше още преди json_or_qs.


Какво казаКакво направих
DA_HTTP в pipeстатусът е файл $DA_HOME/.da_http, чете се с da_http
malformed JSON = successfail-closed: INVALID_JSON / HTML_OR_NON_DA / UNKNOWN_RESPONSE
symlink извън homeотказан изрично, дори inode-ът да е вътре
zip inspect+extract накупzip_op list → confirm → zip_op extract
противоречие при паролиедно правило навсякъде: покажи само ако човекът трябва да я пише
search-replace greenfieldсъщият --dry-run като §20.4
php probe остава при killtrap EXIT
composer remove / scripts / clam targets / 508поправени


Не пипам разбиването на 8 файла — агентът пак трябва да получи един документ. - Вероятност локалните агенти работещи с модел с малко параметри да не се оправят... Особено ако поребителят експериментира...
 
Ето за последната версия какво върна.
 

Прикачени файлове

  • v3.txt
    v3.txt
    12 KB · Преглеждания: 1
v3.0 — какво минахме на живо


Runbook-ът не се пуска като „надяваме се да работи“. Минахме го на тестов CoolIceHost user акаунт (DirectAdmin + CloudLinux + CageFS) и върнахме всяка мутация.


  • Код:
    API: Login Key през HTTP Basic на :2222. Session изолация — глобален ~/.da_http се надпреварва при два агента.
    PHP: selectorctl 8.2 ↔ 8.3 мести и web, и CLI. Cron с абсолютен /opt/alt/phpXX, не php от PATH.
    Домейни: субдомейнът е $HOME/domains/<sub>.<domain>/public_html, не папка под apex. Триене: select0= + contents=yes. Pointers се виждат в ADDITIONAL_DOMAINS.pointers, не в празен JSON.
    Бази: delete е select0=USER_dbname (с префикс). Dump: mariadb-dump --defaults-file= — --defaults-extra-file на MariaDB 11.8 парсва [client] като флаг.
    DNS/поща/FTP: TXT add/delete по combined; MX add и list са разменени полета; FTP login е user@domain; vacation е PUT /api/emailvacation/...; catch-all е disabled.
    SSL: Let’s Encrypt apex+www и wildcard се queue-ват. force_ssl през API тук не редиректва http://; работи .htaccess 302, после revert.
    WordPress: WP-CLI core download + install; DA install-quick само с filePath от /api/wordpress/locations; DELETE locations/{id} маха инсталацията и базата.
    Composer 2.10: require/remove са --update-no-dev, не --no-dev.
    ClamAV: има clamscan, няма maldet/clamdscan. rc 0 = чисто, 1 = hit. Без --remove.
    Softaculous: DokuWiki и phpBB през index.raw?api=json след /api/login. SSH cli.php връща Could not login to the remote server дори с паролата на панела. WordPress Manager е act=wordpress, не отделен plugin URL.
    Защита: zip с ../ се отказва; password-protect се маха с DELETE /api/web-protect/dirs/{id} (enabled=no оставя .htaccess).

Таблицата е и в самия документ, §30. Ако агентът ти все още държи старата версия — кажи му да презареди cheatsheet.md.
 

Горе