Add Snacks app: automated video library encoder with hardware acceleration (#6)
Co-authored-by: Joachim Friberg <joachim.friberg@ip-solutions.se> Reviewed-on: phirna/zima-apps#6
This commit is contained in:
@@ -13,12 +13,16 @@ Exempel: istället för att köra `ip addr add 10.0.4.2/16 dev eth0` via SSH, ka
|
||||
- Sorterbar tabell: namn, IP-adress, used/unused, containernamn, device, enable/disable.
|
||||
- Used/unused-kontroll via Docker API (`NetworkSettings.Ports`) med exakt `HostIp`-match.
|
||||
- Include stopped containers i used-kontroll.
|
||||
- DNS-livscykel (opt-in): skapar A-record när `enabled=true` och `used=true`, tar bort record när villkoret inte längre gäller.
|
||||
- DNS-namn byggs från `name` + `DNS_BASE_DOMAIN` => `<name>.<base-domain>` (DNS-säkrad label).
|
||||
- Fail-closed:
|
||||
- disable blockeras om IP används av minst en container,
|
||||
- delete blockeras om posten är enabled eller used,
|
||||
- disable/delete blockeras om Docker-usage inte kan verifieras.
|
||||
- disable/delete blockeras om Docker-usage inte kan verifieras,
|
||||
- state-ändringar blockeras om nödvändig DNS-synk misslyckas.
|
||||
- Startup reconcile: enabled-poster återappliceras vid appstart.
|
||||
- Manuell refresh-knapp (ingen websocket i v1).
|
||||
- DNS reconcile körs i bakgrunden med poll-interval.
|
||||
- Manuell refresh-knapp för UI-status (ingen websocket i v1).
|
||||
|
||||
## Portar
|
||||
|
||||
@@ -77,6 +81,33 @@ Viktiga environment-variabler:
|
||||
- alternativt `http://127.0.0.1:2375` för socket-proxy.
|
||||
- `DOCKER_TIMEOUT_SECONDS` (default `3`)
|
||||
- `STATE_FILE` (default `/data/entries.json`)
|
||||
- `DNS_PROVIDER` (`none`, `adguard`, `rfc2136`; default `none`)
|
||||
- `DNS_BASE_DOMAIN` (exempel: `home.arpa`)
|
||||
- `DNS_TTL_SECONDS` (default `120`)
|
||||
- `DNS_SYNC_INTERVAL_SECONDS` (default `15`)
|
||||
|
||||
AdGuard (`DNS_PROVIDER=adguard`):
|
||||
|
||||
- `ADGUARD_URL` (exempel: `http://127.0.0.1:3000`)
|
||||
- `ADGUARD_USERNAME`
|
||||
- `ADGUARD_PASSWORD`
|
||||
- `ADGUARD_API_TOKEN` (framtida alternativ, inte aktiv auth-väg i v1)
|
||||
|
||||
RFC2136 (`DNS_PROVIDER=rfc2136`):
|
||||
|
||||
- `RFC2136_SERVER`
|
||||
- `RFC2136_ZONE`
|
||||
- `RFC2136_PORT` (default `53`)
|
||||
- `RFC2136_TSIG_KEY_NAME` (valfri om osignerade updates tillåts)
|
||||
- `RFC2136_TSIG_SECRET` (base64, valfri utan TSIG)
|
||||
- `RFC2136_TSIG_ALGORITHM` (default `hmac-sha256`)
|
||||
|
||||
## DNS-beteende
|
||||
|
||||
- Villkor för record: endast när posten är `enabled` och `used`.
|
||||
- När posten inte längre är `used` tas DNS-record bort i bakgrundsreconcile.
|
||||
- Vid enable/disable/delete görs direkt DNS-synk och operationen failar vid synkfel (fail-closed).
|
||||
- Om Docker usage-kontroll är okänd i bakgrundsloop görs inga DNS-mutationer i den cykeln.
|
||||
|
||||
## Integrationstester
|
||||
|
||||
@@ -91,7 +122,9 @@ Testerna mockar Docker API och `ip`-kommandoflöde och verifierar:
|
||||
- exakt `HostIp`-matchning,
|
||||
- fail-closed disable/delete,
|
||||
- blockering vid enabled/used,
|
||||
- startup reconcile av enabled-poster.
|
||||
- startup reconcile av enabled-poster,
|
||||
- DNS create/delete på `enabled && used`,
|
||||
- fail-closed rollback vid DNS-synkfel.
|
||||
|
||||
## Auth-notis
|
||||
|
||||
@@ -102,4 +135,4 @@ Auth/autorisering ska implementeras i en senare version och är en uttalad roadm
|
||||
## Roadmap (ej v1)
|
||||
|
||||
- WebSocket-baserad live-uppdatering av used-status.
|
||||
- DNS-integration (Cloudflare/lokal DNS) kopplat till IP-poster och hostnamn.
|
||||
- Alternativ auth för AdGuard via API-token.
|
||||
|
||||
Reference in New Issue
Block a user