[2026-05-13] kraken-portainer-access: add step to create external-access skill
This commit is contained in:
@@ -237,6 +237,91 @@ ssh ssh.kraken.qentra.top
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Шаг 6 — Создать скилл по внешнему доступу (выполняет Кракен)
|
||||||
|
|
||||||
|
После того как cloudflared запущен и SSH-поддомен работает — создать скилл чтобы знать как пользоваться внешним доступом в будущем.
|
||||||
|
|
||||||
|
Скиллы живут в `/opt/data/skills/` (HDD-volume, переживают rebuild образа). Создать через terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /opt/data/skills/devops/kraken-external-access
|
||||||
|
cat > /opt/data/skills/devops/kraken-external-access/SKILL.md << 'EOF'
|
||||||
|
---
|
||||||
|
name: kraken-external-access
|
||||||
|
category: devops
|
||||||
|
description: Внешний доступ к Kraken через Cloudflare Tunnel — SSH с Eagle, Portainer API, управление cloudflared контейнером.
|
||||||
|
triggers:
|
||||||
|
- "доступ к кракену снаружи"
|
||||||
|
- "ssh к кракену с орла"
|
||||||
|
- "управление docker на кракене удалённо"
|
||||||
|
- "cloudflared крякен"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Kraken — External Access via Cloudflare Tunnel
|
||||||
|
|
||||||
|
## SSH с Eagle
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ~/.ssh/config на Eagle (уже настроен):
|
||||||
|
# Host ssh.kraken.qentra.top
|
||||||
|
# ProxyCommand cloudflared access ssh --hostname %h
|
||||||
|
# User kraken
|
||||||
|
# IdentityFile ~/.ssh/id_rsa
|
||||||
|
|
||||||
|
ssh ssh.kraken.qentra.top
|
||||||
|
```
|
||||||
|
|
||||||
|
## Portainer API (локально на Кракене)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
BASE=http://localhost:9000
|
||||||
|
KEY="ptr_AJY+Ba9A7f6pcAHZfDD5koU4stkKgJCdbTEXLDLxn0g="
|
||||||
|
EP=1
|
||||||
|
|
||||||
|
# Список контейнеров
|
||||||
|
curl -s -H "X-API-Key: $KEY" "$BASE/api/endpoints/$EP/docker/containers/json?all=true" \
|
||||||
|
| jq '[.[] | {name: .Names[0], status: .Status}]'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Управление cloudflared
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Статус
|
||||||
|
curl -s -H "X-API-Key: $KEY" "$BASE/api/endpoints/$EP/docker/containers/json" \
|
||||||
|
| jq '.[] | select(.Names[] | contains("cloudflared")) | {status: .Status}'
|
||||||
|
|
||||||
|
# Логи (последние 30 строк)
|
||||||
|
CID=$(curl -s -H "X-API-Key: $KEY" "$BASE/api/endpoints/$EP/docker/containers/json" \
|
||||||
|
| jq -r '.[] | select(.Names[] | contains("cloudflared")) | .Id')
|
||||||
|
curl -s -H "X-API-Key: $KEY" \
|
||||||
|
"$BASE/api/endpoints/$EP/docker/containers/$CID/logs?stdout=1&stderr=1&tail=30"
|
||||||
|
|
||||||
|
# Рестарт
|
||||||
|
curl -s -X POST -H "X-API-Key: $KEY" \
|
||||||
|
"$BASE/api/endpoints/$EP/docker/containers/$CID/restart"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Питфолы
|
||||||
|
|
||||||
|
- cloudflared запускается с `network_mode: host` — видит все локальные порты Кракена
|
||||||
|
- Если туннель отвалился — проверить логи: ищи `ERR` и `failed to`
|
||||||
|
- `restart: unless-stopped` — при падении поднимается автоматически
|
||||||
|
- Токен туннеля хранится в env `TUNNEL_TOKEN` контейнера — не менять без пересоздания контейнера
|
||||||
|
- CF Zero Trust tunnel: проверить статус на https://one.dash.cloudflare.com/ → Networks → Tunnels → kraken
|
||||||
|
|
||||||
|
## Связанные заметки в vault
|
||||||
|
|
||||||
|
- `family/how-to/kraken-portainer-access.md` — полная инструкция по деплою
|
||||||
|
- `family/how-to/openmediavault-rpi5.md` — структура Docker на Кракене
|
||||||
|
EOF
|
||||||
|
echo "Скилл создан: /opt/data/skills/devops/kraken-external-access/SKILL.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ `/opt/data/` — это HDD-backed volume, скилл переживёт `docker stop/start` и даже rebuild образа
|
||||||
|
> ⚠️ Путь внутри контейнера — `/opt/data/skills/`, на хосте это `/srv/dev-disk-by-uuid-49e8f586.../docker/hermes/config/skills/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Связанные заметки
|
## Связанные заметки
|
||||||
|
|
||||||
- [[openmediavault-rpi5]] — настройка Kraken (Docker, Hermes, структура папок)
|
- [[openmediavault-rpi5]] — настройка Kraken (Docker, Hermes, структура папок)
|
||||||
|
|||||||
Reference in New Issue
Block a user