tubearchivist
YouTube media organizer and archive platform via the bbilly1/tubearchivist OCI image.
The service runs as a Podman container alongside its two backends — Elasticsearch
(tubearchivist-es) and Redis
(tubearchivist-redis). The blueprint declares both as
dependsOn so the backends start before the main service. The image reference is digest-pinned
per ADR-0005.
| Attribute | Value |
|---|---|
| Runtime | OCI (Podman) |
| Port | 8000 |
| Idle timeout | 43200 s (12 h) |
| OCI image | bbilly1/tubearchivist |
| Depends on | tubearchivist-es, tubearchivist-redis |
Blueprint environment defaults:
| Variable | Default |
|---|---|
TZ | Europe/Berlin |
Consumer must provide:
- Environment variables:
ES_URL,REDIS_CON,TA_HOST,TA_USERNAME,TA_PASSWORD. - Volume mounts for
/youtube(downloaded media) and/cache(working state). - A co-located
tubearchivist-esservice and a co-locatedtubearchivist-redisservice in the same zone (thedependsOndeclaration assumes same-zone resolution).
Current Recommended Pin
The blueprint pins recommended.main to the following digest-pinned image reference (verified
against merlin production 2026-05-17):
v0.5.9@sha256:b827a713f55b2b1933f8b130f36dc8b38cec3dd56998c389b7c9694a7238f3df
The v0.5.9 pin is anchored to running production content. See the
Drift Diagnostics section for the rule set the versions
module enforces, and the upgrade-sandbox runbook
(docs/runbooks/upgrade-sandbox.md) for the per-blueprint upgrade procedure.
Usage
The canonical consumer pattern calls mk {} and merges host-specific identity and volumes via
lib.recursiveUpdate:
nixda.zones.private.services.tubearchivist = lib.recursiveUpdate
((blueprint "tubearchivist").mk {})
{
id = 10;
runtime.oci = {
environment = {
ES_URL = "http://localhost:9200";
REDIS_CON = "redis://localhost:6379";
TA_HOST = "tubearchivist.private.lan";
TA_USERNAME = "admin";
};
volumes = [
"/mnt/storage/youtube:/youtube"
"/var/lib/tubearchivist/cache:/cache"
];
};
};
TA_PASSWORD is a secret and should be supplied through environmentFiles rather than inline
in the configuration. See the consumer host documentation for the secret-wiring pattern.
To opt into the recommended pin explicitly (suppressing the inheritance warning):
nixda.zones.private.services.tubearchivist = lib.recursiveUpdate
((blueprint "tubearchivist").mk {
versions = (blueprint "tubearchivist").recommended;
})
{
id = 10;
# ... environment + volumes as above
};
Pinning to a Different Tag
A consumer who needs a different upstream tag must supply the full digest-pinned form per ADR-0005:
nixda.zones.private.services.tubearchivist = lib.recursiveUpdate
((blueprint "tubearchivist").mk {
versions = {
main = "v0.5.10@sha256:<64-lowercase-hex-chars>";
};
})
{
id = 10;
# ... environment + volumes as above
};
When bumping the TubeArchivist main image, also confirm the
tubearchivist-es tag remains compatible per the upstream
compatibility matrix at the TubeArchivist project.