bookshelf: its config dir is placed, its image is the one ace runs #163
Open
mesh-admin
wants to merge 2 commits from
feat/bookshelf-for-ace into main
pull from: feat/bookshelf-for-ace
merge into: :main
:main
:feat/a-definition-names-no-installation
:fix/resolver-passes-the-dnssec-bit
:fix/mailu-admin-asks-the-machines-resolver
:fix/postgres-is-not-named-after-the-seat
:fix/110-the-resolver-answers-a-container
:feat/qbittorrent-for-ace
:feat/servarr-api-provision
:feat/home-assistant-for-ace
:feat/tautulli-for-ace
:feat/bookshelf-for-ace
:feat/lidarr-for-ace
:feat/radarr-for-ace
:feat/sonarr-for-ace
:feat/kometa-for-ace
:feat/plex-for-ace
:fix/manifests-publish-software-ports
:feat/n8n-for-ace
:feat/nzbget-for-ace
:feat/bazarr-for-ace
:fix/sidecars-dial-the-port-they-were-given
:feat/ombi-for-ace
:chore/remove-the-network-checker-module
:feat/a-network-checker-module
:feat/modules-name-their-endpoints
:fix/a-routed-module-listens-from-the-mesh
:fix/the-resolver-declares-both-protocols
:fix/sshd-declares-the-daemon-it-owns
:fix/fail2ban-bans-through-what-every-machine-has
:fix/fail2ban-declares-the-log-its-own-jail-reads
:fix/fail2ban-restarts-on-its-log-target
:fix/fail2ban-declares-where-it-logs
:feat/the-catalogue-hears-what-it-missed
:feat/the-catalogue-prepares-its-own-schema
:fix/the-catalogue-declares-the-event-it-emits
:feat/a-merge-rebuilds-what-it-changed
:fix/a-merge-older-than-the-watching-is-history
:fix/a-merge-announced-is-said
:fix/the-forge-watches-every-repository
:feat/the-forge-announces-every-merge
:feat/nats-serves-the-meshs-certificate
:fix/nats-declares-its-base
:feat/amqp-leaves-the-catalogue
:restore/broker-claim
:revert/broker-seat-claim
:fix/broker-seat-must-stay-held
:fix/go-126-base
:feat/nats-genesis
:feat/ssh-client-module
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The config directory was the stated path /services/bookshelf/config; it
is now a pathless directory the mesh places (0700, 1000:1000), and the
route binding lives in a placed state dir, as in jackett and searxng.
/var/lib/mesh/bookshelf stays for the broker secret.
The image is pinned to the digest ace runs (hardcover, 0.4.21.182,
ls36). The old pin was a February build: older than the database it
would open, which Readarr-family apps migrate forward only.
The sidecar dials ${port:8787}, the port the mesh assigned, not the
software's own (the same one-line change as #154).
Not carried from HAL: its install hook seeded config.xml with an API key
(the image writes its own on first start, and the data keeps it) and
registered nzbget, qbittorrent and jackett through the API with wrong
hosts and ports, so ace's bookshelf has no download client and no
indexer today. Wiring them is provisioning work that depends on the
download-client and jackett providers, and on where ace's books and
downloads live (hq 153).
Verified: catalogue tests with MESH_CATALOGUE; a scratch resolution with
ace's assignment composes books.zurag.be and keeps the port to the
mesh; a throwaway container at the pinned digest on a fresh 0700
1000:1000 dir answered /ping and /api/v1/system/status (401 on a wrong
key); client.ts typechecks strict, found the key in config.xml and read
the queue.
The assignment draft is ace-assignments/bookshelf.json: web, label books, public. The download-client and indexer provisioning, and where ace's books and downloads live, are left open for the operator (hq 153).
The config directory was the stated path /services/bookshelf/config; it is now a pathless directory the mesh places (0700, 1000:1000), and the route binding lives in a placed state dir, as in jackett and searxng. /var/lib/mesh/bookshelf stays for the broker secret. The image is pinned to the digest ace runs (hardcover, 0.4.21.182, ls36). The old pin was a February build: older than the database it would open, which Readarr-family apps migrate forward only. The sidecar dials ${port:8787}, the port the mesh assigned, not the software's own (the same one-line change as #154). Not carried from HAL: its install hook seeded config.xml with an API key (the image writes its own on first start, and the data keeps it) and registered nzbget, qbittorrent and jackett through the API with wrong hosts and ports, so ace's bookshelf has no download client and no indexer today. Wiring them is provisioning work that depends on the download-client and jackett providers, and on where ace's books and downloads live (hq 153). Verified: catalogue tests with MESH_CATALOGUE; a scratch resolution with ace's assignment composes books.zurag.be and keeps the port to the mesh; a throwaway container at the pinned digest on a fresh 0700 1000:1000 dir answered /ping and /api/v1/system/status (401 on a wrong key); client.ts typechecks strict, found the key in config.xml and read the queue.New commit
bd0c6b3: bookshelf reaches nzbget, qbittorrent and jackett through the mesh.Manifest
nzbget-api(#167),qbittorrent-api(#168) andjackett-api(#150).${dir:state}.downloads-config:${dir:state}/downloads.json, merge json, carryingnode: ${machine:name}and thedownloads.*settings.downloads-memory: a directory.downloads: a run-once step on the host network, declared last. It restarts when the settings, any of the three bindings or any of the three secrets change.What the step does, through bookshelf's own API:
downloads.<provision>.nameand whose kind matches that provider. If there is none, the step registers one.at, a host the step pointed feeds at before (kept indownloads-memory), or a host listed indownloads.jackett-api.adopt-hosts. A jackett indexer listed indownloads.jackett-api.indexersthat the app lacks is registered.secret accept <node> bookshelf <provision> --provider <node> --from <file>.test/downloads.test.tsfails if a sibling's copy differs.On ace: bookshelf has no download clients or indexers today, so no adoption setting is needed. The step registers
nzbgetandqbittorrent. If ace's nzbget has noReadarrcategory, the nzbget entry is registered with its category left empty, and the step says so. No indexers are registered untildownloads.jackett-api.indexerslists some; which jackett indexers suit books is the operator's choice.Verified
MESH_CATALOGUEset to all seven downloads branches merged. A scratch resolve on a fake ace filled every${bound},${port},${machine},${dir}and each consumer's own sealed credential, and the step is the module's last container.NZBGetatnzbget:6789,qBitTorrentwith an old password, disabled feeds atjackett:9117including one dead one) was repointed.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.