SurfSense/plugins/registry/Dockerfile
Anish Sarkar a0c715633b feat(plugins): the third-party plugin registry, its check, signing and container
plugins/registry/ holds the list publishers add to by pull request, starting
with DeepWiki, and its icons. registry_check checks every entry and icon rule;
on dev, CI signs the list with Ed25519 into published/, which the release pull
request carries to main, so nothing pushes to main and the source list is
never rewritten. A small Caddy container serves the signed list, its icons and
SurfSense's OAuth client document and callback page on plugins.surfsense.com,
apart from the plugin host so a listing never restarts the scrapers. CI does
not contact listed servers: most need a sign-in, so a maintainer connects each
listing on dev. plugins/README.md is the guide for publishers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:59:55 +05:30

23 lines
828 B
Docker

# syntax=docker.io/docker/dockerfile:1
# The registry container, beside the plugin host at plugins.surfsense.com.
# docker build -t surfsense-registry plugins/registry
# docker run -p 8080:8080 surfsense-registry
# published/ holds what CI signed on main; until then the image serves no list.
# 2.11.4, released 3 Jun 2026.
FROM caddy:2.11.4-alpine@sha256:6aeddd44c3078b0f9a35206472a11420648a79c184603ef95957d0a20044cb2b
ENV PORT=8080
COPY Caddyfile /etc/caddy/Caddyfile
WORKDIR /srv/registry
COPY published/ published/
COPY icons/ icons/
COPY oauth/client.json oauth/callback.html oauth/
RUN adduser -D -H -u 10001 registry && chown -R registry /config /data
USER registry
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s \
CMD wget -q -O /dev/null "http://127.0.0.1:${PORT}/health" || exit 1