diff --git a/personal/plans/tagwriter-container.md b/personal/plans/tagwriter-container.md index 0a56634d..bbcf70ad 100755 --- a/personal/plans/tagwriter-container.md +++ b/personal/plans/tagwriter-container.md @@ -139,7 +139,7 @@ docker compose --profile tools run --rm tagwriter --readback # проверк ## Питфоллы -- 🔴 `/mnt/RED_2TB/docker/` — **root-owned**, uid 950 не пишет (это и есть блокер). +- 🔴 `/mnt/RED_2TB/docker/` — **root-owned**, uid 950 не пишет. Создавать каталоги **из контейнера** (`docker run -u 0 -v /mnt/RED_2TB/docker:/docker alpine mkdir` + `chown 950:950`). - 🔴 `sudo` без пароля **недоступен**. - 🔴 Имена файлов на диске **не в UTF-8** (mojibake в `ls`) → только python-скрипт, NFC. - 🔴 Пути в CSV контейнерные (`/storage/Music/…`) → мапить в `/music/…`. diff --git a/personal/tech/music-tags-repair-truenas.md b/personal/tech/music-tags-repair-truenas.md index 3f5fadf7..be5ce88c 100755 --- a/personal/tech/music-tags-repair-truenas.md +++ b/personal/tech/music-tags-repair-truenas.md @@ -76,7 +76,8 @@ related: > Бэкапы: `bak-wave38-p2p3`, `-p4`, `-nashestvie`, `-chast`, `-chast2`, `-gorigori`. > > ⏭ **Дальше:** применение тегов через контейнер `tagwriter` — [[personal/plans/tagwriter-container]]. -> Блокер: `/mnt/RED_2TB/docker/` root-owned, uid 950 не пишет, sudo требует пароль. +> ✅ Контейнер собран, **dry-run прошёл (MISSING 0, к обработке 7041)**. Осталось: `--backup` → `--apply`. +> Блокер прав на `/mnt/RED_2TB/docker/` решён: каталог создан **из контейнера** (`docker run -u 0 -v /mnt/RED_2TB/docker:/docker alpine mkdir` + `chown 950:950`). > > ### 🔴 ПИТФОЛЛ: sentinel-группа собирается по КОРНЮ сборника, НЕ по ближайшей папке > diff --git a/personal/tech/skill-truenas-administration.md b/personal/tech/skill-truenas-administration.md new file mode 100644 index 00000000..05bf7582 --- /dev/null +++ b/personal/tech/skill-truenas-administration.md @@ -0,0 +1,74 @@ +--- +title: skill — truenas-administration +namespace: personal +type: tech +created: '2026-09-26' +updated: '2026-09-26' +tags: + - truenas + - skill + - docker + - acl + - nfc +related: + - '[[personal/plans/tagwriter-container]]' + - '[[personal/tech/music-tags-repair-truenas]]' +--- + +# Зеркало навыка `truenas-administration` + +Навык: `~/.hermes/hermes-whale/skills/devops/truenas-administration/SKILL.md` +(umbrella: ACL/PUID, ZFS panic recovery, tree comparison, named-volumes→bind-mount). + +Ниже — дельта, добавленная **2026-09-26** (сессия music-tags волна 38 + сборка `tagwriter`). + +## 1. Создание НОВОГО каталога под `/mnt//docker/` — из контейнера + +`/mnt/RED_2TB/docker/` = `root:root`. `truenas_admin` (uid 950) **не пишет** туда; +`sudo` требует пароль (`sudo -n` → password required). Но `docker` доступен (юзер в группе `docker`). + +```bash +docker run --rm -u 0 -v /mnt/RED_2TB/docker:/docker alpine:latest sh -c \ + 'mkdir -p /docker/tagwriter/data && chown -R 950:950 /docker/tagwriter && chmod 755 /docker/tagwriter' +``` + +Затем `scp` проекта обычным путём (владелец 950). +**Правило: любой новый каталог под `docker/` создавать ИЗ КОНТЕЙНЕРА (`-u 0`), не через ssh под 950.** + +## 2. 🔴 Права файлов при `scp` → `COPY` в Dockerfile + +`scp` кладёт файлы как `-rw-------` (600). `COPY` **сохраняет режим** → внутри образа +`/app/