Files
obsidian-vault/family/how-to/openmediavault-rpi5.md
T

261 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags:
- raspberry-pi
- nas
- openmediavault
- how-to
created: '2026-05-11'
updated: '2026-05-12'
status: containers-running
ip: 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 | 🔲 | |
| 10 — Перенос данных | 🔲 | |
| 11 — Hermes агент Кракен | 🔲 | |
---
## Железо
- 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/роутер):
```bash
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
```bash
# 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`):
```yaml
network:
ethernets:
eth0:
match:
macaddress: "2c:cf:67:64:03:f3"
dhcp4: yes
dhcp6: no
link-local: []
```
В роутере (ASUS): добавить static lease в `dhcp_staticlist` через nvram:
```bash
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):
```bash
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
1. Подключить HDD к синему (USB 3.0) порту Pi
2. Проверить скорость: `sudo apt install hdparm && sudo hdparm -t --direct /dev/sda` → должно быть ~200-250 MB/s
3. Разметить: `sudo parted -s /dev/sda mklabel gpt mkpart primary 0% 100%`
4. Форматировать (агент не может — только вручную или через скрипт):
```bash
sudo bash /tmp/fmt.sh # скрипт с mkfs.ext4 -L storage /dev/sda1
```
5. OMV Web UI → Storage → File Systems → выбрать `/dev/sda1` → Mount
6. OMV монтирует в: `/srv/dev-disk-by-uuid-<UUID>/`
> ⚠️ Не монтировать вручную через fstab — OMV должен управлять монтированием сам
---
## Шаг 7 — omv-extras + Docker
```bash
# 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 |
Управление:
```bash
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 (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`)
---
## Полезные ссылки
- Официальный вики 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/