261 lines
10 KiB
Markdown
261 lines
10 KiB
Markdown
---
|
||
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/
|