diff --git a/docs/widgets/services/gluetun.md b/docs/widgets/services/gluetun.md index 432526d2f..0c3ab7ed9 100644 --- a/docs/widgets/services/gluetun.md +++ b/docs/widgets/services/gluetun.md @@ -12,11 +12,17 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun). Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`. Default fields: `["public_ip", "region", "country"]`. -To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml. +To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` (or `/v1/portforward`) to your Gluetun config.toml. + +| Gluetun Version | Homepage Widget Version | +| --------------- | ----------------------- | +| < 3.40.1 | 1 (default) | +| >= 3.40.1 | 2 | ```yaml widget: type: gluetun url: http://gluetun.host.or.ip:port key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none` + version: 2 # optional, default is 1 ``` diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index ffe5f5803..ff8f1be18 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -563,6 +563,7 @@ export function cleanServiceGroups(groups) { "speedtest", "wgeasy", "grafana", + "gluetun", ].includes(type) ) { if (version) widget.version = parseInt(version, 10); diff --git a/src/widgets/gluetun/component.jsx b/src/widgets/gluetun/component.jsx index ac0b7e144..2a8401c68 100644 --- a/src/widgets/gluetun/component.jsx +++ b/src/widgets/gluetun/component.jsx @@ -12,10 +12,8 @@ export default function Component({ service }) { const { data: gluetunData, error: gluetunError } = useWidgetAPI(widget, "ip"); const includePF = widget.fields.includes("port_forwarded"); - const { data: portForwardedData, error: portForwardedError } = useWidgetAPI( - widget, - includePF ? "port_forwarded" : "", - ); + const pfEndpoint = widget.version > 1 ? "port_forwarded_v2" : "port_forwarded"; + const { data: portForwardedData, error: portForwardedError } = useWidgetAPI(widget, includePF ? pfEndpoint : ""); if (gluetunError || (includePF && portForwardedError)) { return ; diff --git a/src/widgets/gluetun/widget.js b/src/widgets/gluetun/widget.js index 465307306..6d555d66e 100644 --- a/src/widgets/gluetun/widget.js +++ b/src/widgets/gluetun/widget.js @@ -13,6 +13,10 @@ const widget = { endpoint: "openvpn/portforwarded", validate: ["port"], }, + port_forwarded_v2: { + endpoint: "portforward", + validate: ["port"], + }, }, };