Follow-up to the review of #4057.
- Rename apps/logos_delivery_node/compose -> apps/logos_delivery_node/docker
(review request); the only path reference was in the folder's own README.
- run_certbot.sh: pass the configured EMAIL to certbot instead of the
hardcoded admin@$DOMAIN, and forward EMAIL to the certbot container so
setting it in .env takes effect. Empty still falls back to admin@$DOMAIN.
- set_storage_retention.sh: `grep -c` always prints a count, so the old
sudo test was always true and sudo was used whenever ./postgresql existed.
Test readability of the data directory directly instead.
- chkhealth.sh: drop the stray `GET` argument, which curl treated as an
extra (failing) URL.
- docker-compose.yml: put certbot behind the `wss` profile so it no longer
publishes host port 80 on deployments that do not use WebSocket-Secure,
and drop the node's meaningless `depends_on: certbot` (run_node.sh polls
for the certificate on disk anyway).
* feat(compose): add logosdeliverynode docker-compose stack
Add apps/logos_delivery_node/compose/, a docker-compose project that runs the
logosdeliverynode image (built from the repo Dockerfile) as a service node with
a Postgres store and a Prometheus + Grafana monitoring stack. Ported from
logos-messaging/logos-delivery-compose and adapted for logosdeliverynode:
- Network selection via --preset (default logos.dev) and --entry-layer (default
kernel), both configurable through PRESET / ENTRY_LAYER env vars.
- Postgres-backed store; node startup gated on the postgres healthcheck to avoid
a crash-loop on connection-refused.
- WebSocket-Secure via certbot, enabled only when DOMAIN is explicitly set (no
reverse-DNS auto-guess, which could deadlock the node waiting for a cert).
- --mix=true passed explicitly (the preset alone sets the flag but does not mount
the mix protocol).
- Grafana branded with the Logos mark; dashboard file named
logos-delivery-monitoring.json.
- RLN, setup_wizard and RLN keystore tooling intentionally omitted for now.
Also exclude /nimbledeps and /build from the Docker build context: a populated
host nimbledeps/ leaks into the context and has its package submodules stripped
by the **/vendor/* rule, breaking the in-container `make build-deps`.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(ci): keep build/ in docker context; serialize container-image builds
Two fixes for the docker-build-ubuntu-22.04 job:
- .dockerignore: drop /build. docker/binaries/Dockerfile.bn.amd64 ADDs the
freshly compiled binaries from ./build/, so ignoring it makes the docker
build fail deterministically with '"/build/wakunode2": not found'.
/nimbledeps stays ignored (that was the actual context-bloat culprit).
- container-image.yml: build wakunode2 and logosdeliverynode in sequential
make invocations. Under a single `make -j` the two `nimble <task>`
invocations re-resolve git deps concurrently and clobber each other in
the shared ~/.nimble/pkgcache. Same fix as ci.yml's -j1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Review fixes: dashboard typo, missing target for docker build, env.example adjustment
* WIP logosdeliverynode app initial commit
* WIP - extra cli option
* WIP: messaging client REST endpoints
* Add event poll for messaging rest with cache mechanism
* Messaging rest tests
* test: assert 404 via raw string client in messaging REST test
presto's typed REST client raises RestDecodingError when it cannot decode
a non-2xx text error body into the response type. Add a RestResponse[string]
stub (messagingGetSendEventsByIdRawV1) and point the "already-polled id ->
404" assertion at it, matching the relay REST test pattern.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* remove customized cli args as confutils has no support for it
* Introduce --entry-layer and re-introduce --mode flags into cli args, applied new driver into LogosDelivery + tests
* Add messaging REST client test
* Add docker image build of logosdeliverynode for CI builds
* Fix tests
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Refactor Messaging REST API to better match Messaging Send and Receive APIs
* chore: migrate messaging REST API to Opt[T]
Follow-up to the rebase onto master's repo-wide Option[T] -> Opt[T] change
(#4035). Converts the code this branch adds to the new convention:
- messaging/rest_api/types.nim: MessagingJsonEnvelope fields to Opt[T],
Opt.some/Opt.none, and json_serialization/pkg/results instead of
json_serialization/std/options.
- tests: WakuNodeConf.clusterId is now Opt[uint16]; DTO fields are Opt.
`Option[ContentBody]` in the handlers is presto's own API and stays as-is.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>