100 lines
3.2 KiB
Markdown
100 lines
3.2 KiB
Markdown
# Kraken — Внешний доступ
|
||
|
||
> Обновлено: 2026-05-13
|
||
|
||
## SSH с любой машины
|
||
|
||
**Контейнер hermes-kraken:**
|
||
- Маппинг `/home/kraken/.ssh:/opt/data/.ssh:ro` в docker-compose.yml
|
||
- Кастомный `/etc/passwd` с пользователем `kraken:x:1000:1000` (файл `passwd-with-kraken` рядом с compose)
|
||
- `HERMES_UID=1000 HERMES_GID=1000` чтоб entrypoint ремапил пользователя
|
||
- SSH из контейнера: `ssh -i /opt/data/.ssh/id_ed25519 kraken@localhost`
|
||
- Ключ `kraken` добавлен в `authorized_keys` на хосте
|
||
|
||
`~/.ssh/config` на Eagle:
|
||
```
|
||
Host kraken
|
||
HostName kraken
|
||
User kraken
|
||
Port 22
|
||
IdentityFile ~/.ssh/id_rsa
|
||
StrictHostKeyChecking no
|
||
ProxyCommand bash -c 'if ifconfig | grep -q 10.99.0.2; then nc 10.99.1.2 22; else nc kraken 22; fi'
|
||
```
|
||
|
||
**SSH напрямую по LAN:**
|
||
```bash
|
||
ssh kraken@kraken
|
||
```
|
||
|
||
**SSH через VPS** (reverse tunnel, порт 2223):
|
||
```bash
|
||
ssh -J root@91.207.28.205 kraken@127.0.0.1 -p 2223
|
||
```
|
||
|
||
`kraken.qentra.top` — Cloudflare Tunnel, только HTTP (Hermes API), SSH не работает.
|
||
|
||
`kraken.qentra.top` — Cloudflare Tunnel, только HTTP (Hermes API), SSH не работает.
|
||
|
||
---
|
||
|
||
## Как устроен туннель
|
||
|
||
Кракен держит постоянный **reverse SSH tunnel** на VPS через autossh:
|
||
|
||
```
|
||
Кракен (RPi 5, 192.168.1.15)
|
||
└── autossh → ssh -R 2223:localhost:22 root@91.207.28.205
|
||
↓
|
||
VPS (91.207.28.205)
|
||
слушает :2223 → перенаправляет на Кракен:22
|
||
```
|
||
|
||
Аналогично Тайге (у неё порт 2222).
|
||
|
||
### Управление туннелем на Кракене
|
||
|
||
```bash
|
||
sudo systemctl status kraken-tunnel
|
||
sudo systemctl restart kraken-tunnel
|
||
sudo journalctl -u kraken-tunnel -n 20
|
||
```
|
||
|
||
Файл сервиса: `/etc/systemd/system/kraken-tunnel.service`
|
||
SSH-ключ Кракена: `/home/kraken/.ssh/id_ed25519`
|
||
Публичный ключ добавлен в `/root/.ssh/authorized_keys` на VPS.
|
||
|
||
### Проверить с VPS
|
||
|
||
```bash
|
||
ssh root@91.207.28.205 "ss -tlnp | grep 2223"
|
||
```
|
||
|
||
---
|
||
|
||
## Cloudflared (для будущих сервисов)
|
||
|
||
Контейнер `cloudflared` запущен на Кракене (`unless-stopped`), туннель `kraken` активен в CF Zero Trust.
|
||
Hostname: `kraken.qentra.top → HTTP → localhost:8642` (Hermes API).
|
||
|
||
---
|
||
|
||
## Portainer API (локально)
|
||
|
||
```bash
|
||
BASE=http://localhost:9000
|
||
KEY="ptr_AJY+Ba9A7f6pcAHZfDD5koU4stkKgJCdbTEXLDLxn0g="
|
||
EP=3 # endpoint ID на Кракене = 3, не 1!
|
||
|
||
curl -s -H "X-API-Key: $KEY" "$BASE/api/endpoints/$EP/docker/containers/json?all=true" \
|
||
| jq '[.[] | {name: .Names[0], status: .Status}]'
|
||
```
|
||
|
||
---
|
||
|
||
## Связанные заметки
|
||
|
||
- [[kraken-portainer-access]] — полная инструкция по деплою cloudflared через Portainer
|
||
- [[openmediavault-rpi5]] — настройка Кракена (Docker, Hermes, структура папок)
|
||
- [[truenas-remote-access-reverse-proxy]] — аналогичный туннель для Тайги
|