[2026-05-12] kraken NAS: обновлён план настройки OMV, шаги 5-11

This commit is contained in:
Alexey Martemyanov
2026-05-12 18:46:45 +06:00
parent 1691e4e809
commit 2e96c1b271
3 changed files with 227 additions and 41 deletions
+221 -35
View File
@@ -5,11 +5,12 @@ tags:
- openmediavault
- how-to
created: '2026-05-11'
status: in-progress
updated: '2026-05-12'
status: omv-installed
---
# OpenMediaVault на Raspberry Pi 5
**Статус:** В процессе настройки (май 2026)
**Статус:** OMV установлен (май 2026)
**Цель:** NAS на RPi 5 — OS на SD-карте, хранилище на USB 3.0 HDD
---
@@ -19,58 +20,69 @@ status: in-progress
- Raspberry Pi 5 (4 или 8 GB RAM)
- SD-карта ≥16 GB (Samsung/SanDisk A1 Class 10+)
- USB 3.0 HDD для хранения данных
- Проводной Ethernet (обязателен при установке)
- Проводной Ethernet (обязателен)
---
## Шаг 1 — Флашим SD-карту
**Образ:** Raspberry Pi OS Lite **64-bit (Bookworm / Debian 12)**
> ⚠️ Брать именно Bookworm, не новый Trixie (Debian 13) — OMV 7 на Trixie не поддерживается!
> ⚠️ Брать именно 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
- SHA256: `2025-05-13-raspios-bookworm-arm64-lite.img.xz.sha256` (в той же папке)
- Размер: ~423 MB
**Инструмент:** Balena Etcher (https://etcher.balena.io/)
**Инструмент:** Raspberry Pi Imager (https://www.raspberrypi.com/software/)
**Флашим через Balena Etcher** (не RPi Imager — настройка делается скриптом после флаша):
> ⚠️ Не Balena Etcher — только RPi Imager поддерживает OS Customisation!
> При выборе образа из каталога (не custom file) появляется кнопка "Edit Settings"
После флаша вставить SD-карту в мак и запустить:
```bash
bash ~/Downloads/setup-kraken-sdcard.sh
```
**Настройки (Edit Settings → шестерёнка):**
- Hostname: `kraken`
- Username: `kraken` (не `admin` — зарезервировано для OMV!)
- Password: сохранён в 1Password (запись "Kraken RPi")
- SSH: Enable → Allow public-key authentication → вставить `~/.ssh/id_rsa.pub`
Что скрипт настраивает:
- **Hostname:** `kraken`
- **Username:** `kraken` (не `admin` — зарезервировано для OMV!)
- **SSH:** включён, ключ `id_rsa` добавлен автоматически
- **Подключение:** `ssh kraken@kraken.local`
- Пароль сохранён в 1Password (запись: "Kraken RPi")
После флаша вставить карту в Pi и включить.
---
## Шаг 2 — Первый запуск и обновление
## Шаг 2 — Первый запуск, обновление и настройка сети
SSH подключение (пока через WiFi/роутер):
```bash
ssh <username>@<Pi-IP>
sudo apt-get update
sudo apt-get upgrade -y
ssh -i ~/.ssh/id_rsa kraken@kraken.local
```
Обновление системы:
```bash
sudo apt-get update && sudo apt-get upgrade -y
```
Static IP на eth0 (прямой кабель Mac ↔ Pi для установки):
```bash
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 7
## Шаг 3 — Установка OMV
```bash
# Pre-install (настраивает сеть, grub и т.д.)
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/preinstall | sudo bash
# Pre-install
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/preinstall | sudo bash
sudo reboot
# После перезагрузки — основная установка (~30 мин)
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
```
Pi перезагрузится автоматически по окончании.
@@ -79,24 +91,198 @@ Pi перезагрузится автоматически по окончани
## Шаг 4 — Первый вход в веб-интерфейс
- URL: `http://<Pi-IP>`
- URL: `http://192.168.100.2` (или `http://kraken.local`)
- Логин: `admin`
- Пароль: `openmediavault`
- **Сразу сменить пароль!**
- **Сразу сменить пароль!** (System → General Settings → Web Administrator Password)
---
## Шаг 5 — Подключение USB HDD
## Шаг 5 — Подключить Pi к роутеру, настроить static IP, отключить WiFi
1. Подключить HDD после установки OMV
2. Storage → Disks → инициализировать диск
3. Storage → File Systems → создать EXT4, смонтировать
4. Storage → Shared Folders → создать шары
1. Переключить ethernet-кабель: Pi → роутер (не Mac)
2. В роутере: DHCP reservation для MAC `2c:cf:67:64:03:f3` → выбрать постоянный IP (например `192.168.1.X`)
3. Отключить WiFi на Pi:
```bash
sudo nmcli radio wifi off
```
4. Убедиться что Pi доступен по новому IP, проверить OMV web UI
---
## Шаг 6 — Подключить USB HDD, форматировать, смонтировать
1. Подключить HDD к USB 3.0 порту Pi (синий разъём)
2. OMV Web UI → Storage → Disks → убедиться что диск виден
3. Storage → File Systems → Create → выбрать диск → EXT4 → Save → Mount
4. Storage → Shared Folders → Add:
- `media` — для фильмов/музыки
- `timemachine` — для Time Machine бэкапов
- `docker` — для данных контейнеров
---
## Шаг 7 — omv-extras + Docker + Portainer
Установить omv-extras (даёт доступ к Docker плагину):
```bash
wget -qO- https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | sudo bash
```
В OMV Web UI:
- System → Plugins → найти `openmediavault-compose` → установить
- Или через SSH: установить Docker + Portainer вручную:
```bash
curl -fsSL https://get.docker.com | sudo bash
sudo usermod -aG docker kraken
# Portainer
sudo docker volume create portainer_data
sudo docker run -d \
--name portainer \
--restart always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
```
Portainer UI: `http://kraken.local:9000`
---
## Шаг 8 — Docker контейнеры
Все контейнеры управляются через Portainer или `docker compose`.
Данные хранить на HDD в `/srv/<filesystem>/docker/`.
### Watchtower (авто-обновление контейнеров)
```yaml
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 4 * * * # каждую ночь в 4:00
```
### Home Assistant
```yaml
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
restart: always
network_mode: host
volumes:
- /srv/.../docker/homeassistant:/config
privileged: true
```
### Zigbee2MQTT
```yaml
zigbee2mqtt:
image: koenkk/zigbee2mqtt
restart: always
volumes:
- /srv/.../docker/zigbee2mqtt:/app/data
- /run/udev:/run/udev:ro
devices:
- /dev/ttyUSB0:/dev/ttyUSB0 # Zigbee адаптер
```
### Jellyfin
```yaml
jellyfin:
image: jellyfin/jellyfin
restart: always
ports:
- 8096:8096
volumes:
- /srv/.../docker/jellyfin:/config
- /srv/.../media:/media:ro
```
### Transmission
```yaml
transmission:
image: lscr.io/linuxserver/transmission
restart: always
ports:
- 9091:9091
- 51413:51413
volumes:
- /srv/.../docker/transmission:/config
- /srv/.../media/downloads:/downloads
```
### Rclone (бэкап на облако)
```yaml
rclone:
image: rclone/rclone
restart: unless-stopped
volumes:
- /srv/.../:/data:ro
- /home/kraken/.config/rclone:/config/rclone
command: sync /data remote:backup --progress
```
---
## Шаг 9 — Time Machine share (macOS бэкапы на NAS)
В OMV Web UI:
1. Services → SMB/CIFS → Enable
2. Services → SMB/CIFS → Shares → Add:
- Shared folder: `timemachine`
- Enable Time Machine support: ✅
3. На Mac: Finder → Go → Connect to Server → `smb://kraken.local/timemachine`
4. System Preferences → Time Machine → Add Disk → выбрать kraken
---
## Шаг 10 — Перенос данных
### Фильмы с Mac на NAS
```bash
rsync -avh --progress /path/to/movies/ kraken@kraken.local:/srv/.../media/movies/
```
### Time Machine
> ⚠️ Старый TM-бэкап перенести нельзя напрямую — TM привязывает бэкап к конкретному диску/хосту.
> Начать новый бэкап на NAS, старый HDD хранить как архив или отформатировать после нескольких успешных новых бэкапов.
---
## Шаг 11 — Hermes агент Кракен
По образу агента Тайга (TrueNAS). Установить Hermes на Pi:
```bash
# TODO: уточнить команду установки по образу Тайги
```
- Конфиг: `~/.hermes/config.yaml`
- Namespace: `family`
- Подключить к Discord/Zulip
- Настроить доступ к vault через obsidian-mcp
---
## Уроки (что пошло не так при установке)
- **Balena Etcher** не поддерживает OS Customisation — использовать только **RPi Imager**
- **`userconf.txt`** deprecated на 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`)
---
## Полезные ссылки
- Официальный вики: https://wiki.omv-extras.org/
- Официальный вики 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/
+2 -2
View File
@@ -7,7 +7,7 @@ confidence: 1.0
# Personal OS — Agent Rules & Architecture
Eagle (Орёл) is the Discord-facing Hermes agent. This page documents what Eagle knows about its own environment and how to reason about it.
Eagle (Орёл) is the Zulip-facing Hermes agent. This page documents what Eagle knows about its own environment and how to reason about it.
## Data Flow
@@ -44,7 +44,7 @@ VALUES (current_date, EXTRACT(WEEK FROM current_date)::int,
ARRAY[<gids>]::text[], '<reason_tag>');
```
`source` values: `discord_pushback` | `morning_brief_correction` | `manual`
`source` values: `zulip_pushback` | `morning_brief_correction` | `manual`
`reason_tag` examples: `ship-review-crunch` | `urgent-bug` | `meeting-day` | `over-estimated` | `scope-change`
Never announce the log insertion. It is silent instrumentation.
+4 -4
View File
@@ -17,11 +17,11 @@ See: `personal-os-purpose.md`
- `~/scripts/run-pipeline.sh` → sync.js + generate-status.js every 30 min (workdays via Hermes cron)
- Writes `~/context/status.md` and `~/Developer/personal-os/asana_context.md`
- Writes daily AW activity summaries to `activity_daily` table with quadrant classification
- No Discord output — pure data layer
- No Zulip output — pure data layer
### Орёл / Eagle (Tactician + reactive layer) — Hermes v0.11.x Discord bot
### Орёл / Eagle (Tactician + reactive layer) — Hermes Zulip agent
- Reads `~/context/status.md`, daily/weekly briefs, vault via obsidian MCP
- Discord channels: `#daily-brief` `#inbox` `#focus` `#executor` `#projects` `#journal` `#retrospector`
- Zulip streams: `daily-brief` `inbox` `focus` `executor` `projects` `journal` `retrospector`
- Cron jobs: generate-daily-brief (07:00 MTWRF), morning-brief (08:30 MTWRF), eod-summary (18:00 MTWRF), inbox-check (30 min 0919 MTWRF), weekly-plan (Mon 08:00), weekly-review (Fri 17:00), retrospector (Fri 17:30), executor-autonomous (every 30 min 0918 MTWRF), commit-vault (23:00 daily)
- Logs corrections to `corrections_log` table (SQL INSERT, silently on pushback)
- **Never accesses Asana API directly** — only reads pre-rendered markdown and DB
@@ -79,7 +79,7 @@ generate-status.js
→ ~/context/status.md ← Eagle reads this
→ ~/Developer/personal-os/asana_context.md ← inbox-check reads this
Eagle corrections in Discord
Eagle corrections in Zulip
→ corrections_log table (INSERT on pushback, no announcement)
→ Retrospector reads weekly