Refactor README, architecture, and backup documentation to emphasize the use of Vaultwarden for credential management across various services. Update scripts for Nextcloud, Gitea, Paperless, and others to reference Vaultwarden for sensitive information. Remove outdated references to previous backup strategies and ensure clarity on credential retrieval processes. This improves security practices and streamlines backup operations.
13 KiB
Контейнер 107 (Invidious): Invidious, Companion, PostgreSQL
Подробное описание LXC-контейнера 107 на Proxmox (192.168.1.107): Invidious (альтернативный фронтенд YouTube), Invidious Companion и PostgreSQL 14. Домен: video.katykhin.ru.
Общие сведения
- Хостнейм: misc
- IP: 192.168.1.107/24
- ОС: Debian 12 (bookworm)
- Ресурсы: 1 core, 2 GB RAM (из архитектуры)
- Доступ: с Proxmox —
pct exec 107 -- bashили по SSH на 192.168.1.107, если настроен.
Диск контейнера: 15 GB, занято ~2.1 GB (16%). Основной объём: образы и тома Docker (~0.8 GB), код Invidious в /opt/invidious/ (~11 MB), данные PostgreSQL (~51 MB). Запас по месту большой, но при росте логов и БД всё равно стоит следить за заполнением (см. раздел «Логи и ротация» и TODO).
Доступ и логины
- Debian (CT 107): логин
root(пароль — в менеджере паролей или как настраивал при установке). - Invidious (веб): http://192.168.1.107:3000 (или через NPM: https://video.katykhin.ru). Пользовательские аккаунты и настройки создаются в самом Invidious.
Сервисы (Docker Compose)
Один проект: /opt/invidious/docker-compose.yml (внутри git‑репозитория Invidious: /opt/invidious/). Сеть: invidious_default (bridge).
| Контейнер | Образ | Порты (хост) | Назначение |
|---|---|---|---|
| invidious-invidious-1 | quay.io/invidious/invidious:latest | 3000 | Веб-интерфейс Invidious, API |
| invidious-companion-1 | quay.io/invidious/invidious-companion | — (8282 внутри) | Companion‑сервис для запросов к YouTube |
| invidious-invidious-db-1 | postgres:14 | — | БД Invidious |
1. Invidious (основной сервис)
Каталог: /opt/invidious/
Compose: docker-compose.yml (лежит в корне репозитория).
Порты: 3000 (хост) → 3000 (контейнер). NPM (контейнер 100) проксирует https://video.katykhin.ru → 192.168.1.107:3000.
Тома и конфиги:
- Invidious не использует отдельные bind‑тома для конфигов/данных — данные хранятся в PostgreSQL (
invidious_postgresdata), а конфиг задаётся через переменнуюINVIDIOUS_CONFIGв compose. - Отдельных каталогов с логами Invidious на хосте нет — логи идут в stdout контейнера (см. раздел «Логи и ротация»).
Секреты: POSTGRES_USER, POSTGRES_PASSWORD, INVIDIOUS_COMPANION_KEY, HMAC_KEY берутся из Vaultwarden (объект INVIDIOUS). Деплой с хоста Proxmox:
/root/scripts/deploy-invidious-credentials.sh
Скрипт генерирует .env из Vaultwarden, атомарно пушит в CT 107, запускает docker compose up -d --force-recreate. Ротация: сменил пароль/ключи в Vaultwarden → запустил скрипт.
Команды:
# Деплой (с хоста Proxmox)
/root/scripts/deploy-invidious-credentials.sh
# Логи
pct exec 107 -- docker logs invidious-invidious-1
curl -s http://127.0.0.1:3000/api/v1/stats
2. Invidious Companion
Образ: quay.io/invidious/invidious-companion:latest.
Порты: 8282 (внутри docker-сети). НСЛУШАЕТ напрямую на хосте; Invidious обращается к нему по имени companion в сети invidious_default.
Тома:
- volume
companioncache→/var/tmp/youtubei.js(кэш js‑ресурсов YouTube / youtubei).
Безопасность:
SERVER_SECRET_KEYсовпадает сinvidious_companion_key— оба берутся из.env(генерируется из Vaultwarden).- Контейнер запущен с
read_only: true,cap_drop: [ALL],no-new-privileges:true— хорошая практика sandboxing.
Команды:
docker logs invidious-companion-1
3. PostgreSQL (invidious-db)
Образ: postgres:14.
Том: volume postgresdata → /var/lib/postgresql/data. На хосте: /var/lib/docker/volumes/invidious_postgresdata/_data (~51 MB).
Дополнительные mounts:
/opt/invidious/config/sql→/config/sql— SQL‑скрипты инициализации/миграций из репозитория Invidious (~40 KB)./opt/invidious/docker/init-invidious-db.sh→/docker-entrypoint-initdb.d/init-invidious-db.sh— скрипт инициализации БД при первом запуске.
Переменные окружения: из .env (генерируется deploy-invidious-credentials.sh из Vaultwarden).
Команды:
docker exec invidious-invidious-db-1 pg_isready -U kemal
docker exec invidious-invidious-db-1 psql -U kemal -d invidious -c '\\dt'
Порты (сводка на хосте)
| Порт | Сервис / примечание |
|---|---|
| 3000 | Invidious (веб, API) |
Companion и PostgreSQL доступны только внутри docker-сети invidious_default.
Логи и ротация
- Базовая политика LXC: в контейнере настроен logrotate
/etc/logrotate.d/homelab-lxc.conf— 14 дней, 50 MB, 5 архивов (системные логи в/var/log). Подробнее: Logrotate — базовая политика homelab. - Invidious и Companion: логи идут в stdout контейнеров и сохраняются драйвером Docker json-file. В compose для
invidiousиcompanionзаданы опции:max-size: "1G",max-file: "4"— максимум ~4 GB логов на контейнер. На момент проверки общий размер/var/lib/docker~774 MB, запас по логам большой.
- PostgreSQL: контейнер
invidious-dbиспользует json-file без ограничений (Config:{}) — логи БД могут разрастаться (см. TODO).
Системный logrotate в CT — только стандартные правила (apt, dpkg, btmp, wtmp). Отдельных правил для Docker или PostgreSQL нет.
Вывод: для Invidious и Companion уже есть базовая защита от разрастания логов (1G×4), но для БД и общего Docker‑движка ротация не настроена централизованно.
Запуск и порядок поднятия
- С хоста Proxmox:
/root/scripts/deploy-invidious-credentials.sh(генерирует.envиз Vaultwarden, пушит в CT 107, запускает compose). - Порядок:
invidious-db→invidious(depends_on с healthcheck), параллельно Companion.
После изменения секретов в Vaultwarden: запустить deploy-invidious-credentials.sh снова.
Уязвимости и риски
- Секреты и пароли в docker-compose.yml:
ВINVIDIOUS_CONFIGзаданы:- пароли БД (user/password kemal),
invidious_companion_key,hmac_keyи др. чувствительные значения.
Файл лежит только на сервере; его нельзя публиковать. Рекомендуется:- ограничить права на
/opt/invidious/docker-compose.yml(например chmod 600, владелец root), - при переносе конфигурации использовать приватные репозитории или отдельные
.env/секреты.
- PostgreSQL логи без лимитов:
Контейнерinvidious-dbиспользует json-file без max-size/max-file — логи БД со временем могут занять существенный объём, особенно при ошибках или verbose‑режиме (см. TODO). - Доступ к Invidious:
- В LAN сервис доступен по http://192.168.1.107:3000.
- Наружу следует пускать только через NPM (https://video.katykhin.ru), без прямого проброса порта 3000 на интернет.
- Обновления Invidious:
В репозитории/opt/invidiousлежит копия официального кода. Образ используетсяlatest— при обновлении нужно внимательно следить за совместимостью БД и параметров, и перед апдейтом делать бэкап БД (см. TODO по бэкапам).
TODO по контейнеру 107
- Базовая политика logrotate: для системных логов настроена (homelab-lxc.conf — 14 дней, 50 MB, 5 архивов). См. Logrotate — базовая политика homelab.
- Логи PostgreSQL: Добавить ограничение логов для контейнера
invidious-invidious-db-1:
либо черезloggingвdocker-compose.yml(аналогичноinvidious/companion, но с меньшим лимитом, напримерmax-size: "200m",max-file: "5"), либо через глобальный/etc/docker/daemon.json. После изменения — перезапустить контейнер. - Права на конфиги: Ограничить доступ к
docker-compose.ymlи, при необходимости, к другим файлам с секретами (chmod 600, владелец root), убедиться, что эти файлы не попадают в публичные репозитории. - Мониторинг диска: Сейчас используется ~2.1 GB из 15 GB, но при росте логов/БД стоит настроить оповещение при заполнении >80% и периодически проверять
du -sh /var/lib/docker /var/lib/docker/volumes/invidious_postgresdata/_data. - Резервное копирование: Регулярный бэкап критичных данных (оценка размеров на момент документации):
-
/var/lib/docker/volumes/invidious_postgresdata/_data— БД Invidious (~51 MB).
Рекомендуемый способ — логический дамп:bash docker exec invidious-invidious-db-1 pg_dump -U kemal invidious > backup_invidious_$(date +%Y%m%d).sqlи хранить дампы вне контейнера (на Proxmox‑хосте/внешнем хранилище). -/opt/invidious— код Invidious,docker-compose.yml,config/sql,docker/init-invidious-db.sh(~11 MB).
Важно сохранить локальные правки (особенно секциюINVIDIOUS_CONFIGи домен/HTTPS‑настройки). -/var/lib/docker/volumes/invidious_companioncache/_data— кэш Companion (~4 KB). Бэкап не критичен; при потере восстановится автоматически. - Документация по обновлению: Зафиксировать отдельной заметкой процедуру апдейта Invidious (pull нового образа, миграции, проверка конфигов и обратимости через бэкап БД).
Связь с другими документами
- Архитектура и подключение — таблица контейнеров, домен video.katykhin.ru, схема сети.
- Контейнер 100 (nginx) — NPM, через который проксируется video.katykhin.ru.