{"record":{"id":"29df6e0f61ca1263","repo":"DIYgod/RSSHub","slug":"this-rss-feed-is-disabled-due-to-its-incorrect-con-29df6e","errorCode":null,"errorMessage":"This RSS feed is disabled due to its incorrect configuration: the token is missing.","messagePattern":"This RSS feed is disabled due to its incorrect configuration: the token is missing\\.","errorType":"exception","errorClass":"ConfigNotFoundError","httpStatus":null,"severity":"error","filePath":"lib/routes/miniflux/subscription.ts","lineNumber":45,"sourceCode":"            },\n        ],\n        requirePuppeteer: false,\n        antiCrawler: false,\n        supportBT: false,\n        supportPodcast: false,\n        supportScihub: false,\n    },\n    name: 'Subscriptions',\n    maintainers: ['emdoe', 'DIYgod'],\n    handler,\n};\n\nasync function handler(ctx) {\n    const instance = config.miniflux.instance;\n    const token = config.miniflux.token;\n\n    if (!token) {\n        throw new ConfigNotFoundError('This RSS feed is disabled due to its incorrect configuration: the token is missing.');\n    }\n\n    function set(item) {\n        if (item.search('=') === -1) {\n            return '';\n        }\n        const filter = item.slice(0, item.indexOf('='));\n        const option = item.slice(item.lastIndexOf('=') + 1);\n        if (filter.search('categor') !== -1) {\n            categories.push(...option.split(',').map((item) => item.toString().toLowerCase()));\n            return filter;\n        }\n        if (filter.search('feed') === -1) {\n            return '';\n        }\n        feeds.push(...option.split(',').map((item) => item.toString().toLowerCase()));\n        return filter;\n    }","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/miniflux/subscription.ts#L27-L63","documentation":"Same ConfigNotFoundError as the entries route, thrown by the Miniflux subscriptions route when config.miniflux.token is falsy. The subscriptions feed aggregates the user's subscription list from the self-hosted Miniflux instance and, like all Miniflux routes, is disabled unless the API token is configured.","triggerScenarios":"The handler reads config.miniflux.token and throws before any network call. Identical trigger to entry.ts: any request to /miniflux/subscription(...) while MINIFLUX_TOKEN is unset.","commonSituations":"Same as the entries route: MINIFLUX_TOKEN missing from env, wrong casing in compose, secret not mounted, or a fresh deploy that only set the instance URL.","solutions":["Set MINIFLUX_TOKEN (the Miniflux API key) in RSSHub's environment and restart.","Set MINIFLUX_INSTANCE alongside it and verify both are visible to the process.","Validate the token against the instance: `curl -H \"X-Auth-Token: <token>\" <instance>/api/v1/me`.","If running behind a reverse proxy, make sure the instance URL is reachable from the RSSHub container (not just from your browser)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const token = config.miniflux.token;\nif (!token) {\n    throw new ConfigNotFoundError('Set MINIFLUX_TOKEN (Miniflux API key) to enable subscriptions.');\n}","typeGuard":"function hasMinifluxToken(c: any): boolean {\n    return typeof c?.miniflux?.token === 'string' && c.miniflux.token.length > 0;\n}","tryCatchPattern":null,"preventionTips":["Centralise the miniflux token check in a shared helper used by all miniflux routes to avoid drift.","Surface a descriptive 'feed disabled, set MINIFLUX_TOKEN' message in your aggregator so users know it is a config gap, not a bug.","Validate the token/instance pair at deploy time with a curl against /api/v1/me."],"tags":["missing-config","authentication","api-token","miniflux","self-hosted"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}