[grade=B] DC-100: Service discovery — auto-detect running containers
CI / Test & Lint (push) Canceled after 0s
CI / Security audit (push) Canceled after 0s

GET /api/v1/discover scans running Docker containers, matches images
against 20 known patterns (Plex, Jellyfin, Sonarr, Radarr, qBittorrent,
Gitea, Nextcloud, Redis, Postgres, etc.), and returns suggested service
configs. Marks services already in the dashboard as 'existing'.

Returns: container ID, name, image, suggested type/name/port/protocol,
port mappings, labels, and existing flag. 5 tests, 1623 total pass.
This commit is contained in:
Hermes
2026-08-12 12:27:57 -07:00
parent a38d1350eb
commit d45dc8d3b7
3 changed files with 280 additions and 0 deletions
+8
View File
@@ -61,6 +61,7 @@ const updatesRoutes = require('../routes/updates');
const authRoutes = require('../routes/auth');
const shareRoutes = require('../routes/share');
const i18nRoutes = require('../routes/i18n');
const discoverRoutes = require('../routes/discover');
const configRoutes = require('../routes/config');
const dnsRoutes = require('../routes/dns');
const notificationRoutes = require('../routes/notifications');
@@ -599,6 +600,13 @@ async function createApp() {
// DC-077: i18n — language metadata and translations (public, no auth needed)
apiRouter.use(i18nRoutes());
// DC-100: Service discovery — auto-detect running containers
apiRouter.use(discoverRoutes({
docker: ctx.docker,
servicesStateManager: ctx.servicesStateManager,
asyncHandler: ctx.asyncHandler,
}));
apiRouter.use(updatesRoutes({
updateManager: ctx.updateManager,
selfUpdater: ctx.selfUpdater,