14 KiB
Executable File
tags, created, updated, status, ip
| tags | created | updated | status | ip | ||||
|---|---|---|---|---|---|---|---|---|
|
2026-05-11 | 2026-05-12 | hermes-pending | 192.168.1.14 |
OpenMediaVault на Raspberry Pi 5
Статус: Контейнеры запущены, Time Machine pending (май 2026) Цель: NAS на RPi 5 — OS на SD-карте, хранилище на USB 3.0 HDD
Прогресс
| Шаг | Статус | Заметки |
|---|---|---|
| 1 — Флашим SD | ✅ | Bookworm 2025-05-13, RPi Imager |
| 2 — Первый запуск + обновление | ✅ | apt upgrade выполнен |
| 3 — Установка OMV | ✅ | OMV 7 установлен |
| 4 — Первый вход в веб-интерфейс | ✅ | Пароль сменён |
| 5 — Сеть | ✅ | DHCP static lease 192.168.1.14 (eth0 MAC 2c:cf:67:64:03:f3); WiFi отключён (modprobe blacklist brcmfmac/brcmutil) |
| 6 — USB HDD | ✅ | 12TB Seagate ST12000NT001, EXT4, UUID 49e8f586-3839-4c5d-a1e1-58bfc3579ade, смонтирован через OMV в /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade |
| 7 — omv-extras + Docker | ✅ | omv-extras 7.0.6, Docker 29.4.3, kraken в группе docker |
| 8 — Контейнеры | ✅ | Все через отдельные docker compose, конфиги на HDD (см. ниже) |
| 9 — Time Machine share | ✅ | mbentley/timemachine:smb, расписание 10:00-22:00 GMT+6, HDD/timemachine |
| 10 — Перенос данных | 🔲 | |
| 11 — Hermes агент Кракен | 🚧 | Dockerfile + config готовы, нужно: заполнить .env, HA token, собрать образ |
| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | 🔲 | Настроить синхронизацию vault между всеми тремя агентами |
Железо
- Raspberry Pi 5 (4 или 8 GB RAM)
- SD-карта ≥16 GB (Samsung/SanDisk A1 Class 10+)
- USB 3.0 HDD для хранения данных
- Проводной Ethernet (обязателен)
Шаг 1 — Флашим SD-карту
Образ: Raspberry Pi OS Lite 64-bit (Bookworm / Debian 12)
⚠️ Брать именно Bookworm, не Trixie (Debian 13) — OMV не поддерживается на Trixie!
- Последний Bookworm: 2025-05-13
- Прямая ссылка: https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2025-05-13/2025-05-13-raspios-bookworm-arm64-lite.img.xz
Инструмент: Raspberry Pi Imager (https://www.raspberrypi.com/software/)
⚠️ Не Balena Etcher — только RPi Imager поддерживает OS Customisation! При выборе образа из каталога (не custom file) появляется кнопка "Edit Settings"
Настройки (Edit Settings → шестерёнка):
- Hostname:
kraken - Username:
kraken(неadmin— зарезервировано для OMV!) - Password: сохранён в 1Password (запись "Kraken RPi")
- SSH: Enable → Allow public-key authentication → вставить
~/.ssh/id_rsa.pub
После флаша вставить карту в Pi и включить.
Шаг 2 — Первый запуск, обновление и настройка сети
SSH подключение (пока через WiFi/роутер):
ssh -i ~/.ssh/id_rsa kraken@kraken.local
Обновление системы:
sudo apt-get update && sudo apt-get upgrade -y
Static IP на eth0 (прямой кабель Mac ↔ Pi для установки):
sudo nmcli con add type ethernet ifname eth0 con-name eth0-static \
ipv4.method manual \
ipv4.addresses 192.168.100.2/24 \
ipv4.gateway 192.168.100.1 \
ipv4.never-default yes \
connection.autoconnect yes
sudo nmcli con up eth0-static
⚠️
ipv4.never-default yes— обязательно! Иначе интернет пойдёт через Mac, а не WiFi, и установка зависнет.
Шаг 3 — Установка OMV
# Pre-install
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/preinstall | sudo bash
sudo reboot
# После перезагрузки — основная установка (~30 мин)
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
Pi перезагрузится автоматически по окончании.
Шаг 4 — Первый вход в веб-интерфейс
- URL:
http://192.168.100.2(илиhttp://kraken.local) - Логин:
admin - Пароль:
openmediavault - Сразу сменить пароль! (System → General Settings → Web Administrator Password)
Шаг 5 — Сеть: DHCP + static lease, отключить WiFi
Переключить кабель Pi → роутер. Настроить DHCP через netplan (OMV управляет /etc/netplan/20-openmediavault-eth0.yaml):
network:
ethernets:
eth0:
match:
macaddress: "2c:cf:67:64:03:f3"
dhcp4: yes
dhcp6: no
link-local: []
В роутере (ASUS): добавить static lease в dhcp_staticlist через nvram:
ssh -i ~/.ssh/id_rsa admin@192.168.1.1 \
"nvram set dhcp_staticlist='...<2C:CF:67:64:03:F3>192.168.1.14>kraken>' && nvram commit && service restart_dnsmasq"
Отключить WiFi навсегда (modprobe blacklist):
sudo sh -c 'echo blacklist brcmfmac > /etc/modprobe.d/disable-wifi.conf' < /dev/null
sudo sh -c 'echo blacklist brcmutil >> /etc/modprobe.d/disable-wifi.conf' < /dev/null
sudo update-initramfs -u -k all < /dev/null
⚠️ Все sudo команды через SSH требуют
< /dev/null— иначе sudo ждёт stdin и зависает
Шаг 6 — USB HDD
- Подключить HDD к синему (USB 3.0) порту Pi
- Проверить скорость:
sudo apt install hdparm && sudo hdparm -t --direct /dev/sda→ должно быть ~200-250 MB/s - Разметить:
sudo parted -s /dev/sda mklabel gpt mkpart primary 0% 100% - Форматировать (агент не может — только вручную или через скрипт):
sudo bash /tmp/fmt.sh # скрипт с mkfs.ext4 -L storage /dev/sda1 - OMV Web UI → Storage → File Systems → выбрать
/dev/sda1→ Mount - OMV монтирует в:
/srv/dev-disk-by-uuid-<UUID>/
⚠️ Не монтировать вручную через fstab — OMV должен управлять монтированием сам
Шаг 7 — omv-extras + Docker
# omv-extras
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | sudo bash < /dev/null
# Docker
curl -fsSL https://get.docker.com -o /tmp/get-docker.sh && sudo sh /tmp/get-docker.sh < /dev/null
sudo usermod -aG docker kraken < /dev/null
Шаг 8 — Docker контейнеры
Каждый сервис — отдельный docker-compose.yml в /home/kraken/<name>/.
Все конфиги на HDD: /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/docker/<name>/
| Сервис | Compose | URL | Данные |
|---|---|---|---|
| Portainer | /home/kraken/portainer/ |
:9000 | HDD/docker/portainer |
| Watchtower | /home/kraken/watchtower/ |
— | stateless |
| Home Assistant | /home/kraken/homeassistant/ |
:8123 | HDD/docker/homeassistant |
| Jellyfin | /home/kraken/media/ |
:8096 | HDD/docker/jellyfin, media:ro |
| Transmission | /home/kraken/media/ |
:9091 | HDD/docker/transmission, HDD/media/downloads |
| Rclone | /home/kraken/rclone/ |
— | cron воскр. 03:00 → mailru-crypt:kraken/docker |
Управление:
cd /home/kraken/<name> && sudo docker compose up -d # запустить
cd /home/kraken/<name> && sudo docker compose restart # рестарт
cd /home/kraken/<name> && sudo docker compose pull && sudo docker compose up -d # обновить
⚠️ Watchtower: нужна переменная
DOCKER_API_VERSION=1.54— иначе крашится (API mismatch) ⚠️ sudo через SSH требует< /dev/nullдля каждой команды с tee/pipe
Шаг 9 — Time Machine share
Контейнер: mbentley/timemachine:smb
Compose: /home/kraken/timemachine/docker-compose.yml
Данные: /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/timemachine/
Расписание (crontab kraken-пользователя):
0 4 * * *UTC (10:00 GMT+6) →/usr/local/bin/tm-start.sh— поднять контейнер0 16 * * *UTC (22:00 GMT+6) →/usr/local/bin/tm-stop.sh— остановить контейнерrestart: no— при загрузке Pi не стартует автоматически
Credentials:
- Пользователь:
timemachine - Пароль:
timemachine⚠️ сменить позже
Подключение с Mac:
- Finder →
⌘K→smb://192.168.1.14 - Логин:
timemachine/timemachine - System Preferences → Time Machine → Add Disk → выбрать
kraken
Лог cron: /var/log/timemachine-cron.log
Шаг 10 — Перенос данных
Фильмы с Mac на NAS
rsync -avh --progress /path/to/movies/ kraken@kraken.local:/srv/.../media/movies/
Time Machine
⚠️ Старый TM-бэкап перенести нельзя напрямую — TM привязывает бэкап к конкретному диску/хосту. Начать новый бэкап на NAS, старый HDD хранить как архив или отформатировать после нескольких успешных новых бэкапов.
Шаг 11 — Hermes агент Кракен
Файлы
/home/kraken/hermes/
Dockerfile — образ на базе node:20-slim + hermes-agent + obsidian-mcp
docker-compose.yml — restart: unless-stopped, network_mode: host
.env — API ключи (заполнить вручную)
config.yaml → копируется в /srv/.../docker/hermes/config/config.yaml
Модели (проверено 2026-05-12)
Бесплатные модели с tool calling на OpenRouter:
| Модель | Статус |
|---|---|
nvidia/nemotron-3-super-120b-a12b:free |
✅ работает |
openrouter/free |
✅ fallback (авто-роутинг) |
deepseek/deepseek-chat-v3-0324:free |
❌ 404 |
qwen/qwen3-235b-a22b:free |
❌ 404 |
google/gemma-4-31b-it:free |
❌ 429 rate limit |
Primary: nvidia/nemotron-3-super-120b-a12b:free (262K ctx, tools ✅)
Auxiliary/Fallback: openrouter/free
Рекомендуется: добавить GOOGLE_API_KEY → Gemini Flash как auxiliary
Telegram бот
- Имя: Кракен
- Bot: @kraken_htpc_bot
- Token:
8750114596:AAH625OBSdb_Bn7ZSwshjDD3mbENnkSRYag
Toolsets
hermes-cli, terminal, file, web, web_crawler, memory, spotify, homeassistant
Деплой (после заполнения .env)
# Заполнить ключи:
nano /home/kraken/hermes/.env
# OPENROUTER_API_KEY=sk-or-...
# GOOGLE_API_KEY=...
# HASS_TOKEN=... (создать в HA UI → Profile → Long-Lived Access Tokens)
# Собрать и запустить:
cd /home/kraken/hermes
sudo docker compose build
sudo docker compose up -d
# Проверить:
sudo docker logs hermes-kraken --tail 20
TODO
- Заполнить .env (OPENROUTER_API_KEY, GOOGLE_API_KEY)
- Настроить HA → создать Long-Lived token → вписать в HASS_TOKEN
- Собрать и запустить контейнер
- Настроить obsidian-mcp (vault path = /vault)
- Перенести Spotify auth с Eagle (или запарить заново)
Шаг 12 — Obsidian sync (Taiga ↔ Kraken ↔ Eagle)
Все три агента должны работать с одним vault. Варианты:
- Git sync — vault в git repo, каждый агент делает pull/push
- rsync — периодическая синхронизация через SSH
- Syncthing — p2p sync без облака
Текущее состояние vault:
- Eagle (Mac):
~/obsidian/— git repo, auto-commit 23:00 - Taiga (TrueNAS):
/mnt/RED_2TB/storage/obsidian/— read-only mount - Kraken (RPi):
/vault— пока не подключён
Следующие шаги:
- Определить схему sync (git vs syncthing vs rsync)
- Настроить write-доступ на Тайге и Кракене
- Автоматический pull на всех агентах при изменениях
Уроки (что пошло не так при установке)
- Balena Etcher не поддерживает OS Customisation — использовать только RPi Imager
userconf.txtdeprecated на Bookworm — правильный способ через RPi Imager (он пишетcustom.toml)systemd.run=в cmdline.txt нужно указывать/usr/lib/raspberrypi-sys-mods/firstboot, а не свой скриптipv4.never-default yesпри настройке static IP на eth0 — обязательно, иначе интернет идёт через Mac и установка зависает- OMV install script при зависании — скорее всего нет интернета, проверить маршруты (
ip route)
Полезные ссылки
- Официальный вики OMV: https://wiki.omv-extras.org/
- Install script: https://github.com/OpenMediaVault-Plugin-Developers/installScript
- RPi Imager: https://www.raspberrypi.com/software/
- RPi Downloads: https://www.raspberrypi.com/software/operating-systems/