Skip to content

Cannot set HOST env var to "::" to enable IPv6 binding #2612

@kouellette

Description

@kouellette

Description

When setting the HOST environment variable to :: (IPv6 equivalent of IPv4's 0.0.0.0), the server listens on the socket, but requests result in 500 errors because there are no checks if host is an IPv6 address, and directly drops the HOST value into request URLs, which for IPv6, is invalid.

E.g.,

HOST=0.0.0.0 -> http://0.0.0.0:5055/api/v1/settings/public # Valid URL
HOST=:: -> http://:::5055/api/v1/settings/public # Invalid URL

Expected would be http://[::]:5055/api/v1/settings/public

My workaround was to add an entry in /etc/hosts for the :: address and configured the HOST env var for the given name.

Version

3.1.0

Steps to Reproduce

  1. Set HOST env var to ::. (Looking at the code, I believe this can be reproduced with any IPv6 literal)
  2. Restart seerr and observe that the socket is listening on IPv6
root@seerr:~# ss -tlnp | grep 5055
LISTEN 0      511                *:5055            *:*    users:(("node",pid=859,fd=27))
  1. Make a request to seerr an observer 500 status

Screenshots

No response

Logs

Mar 01 11:57:07 seerr node[597]:  ⨯ TypeError: Invalid URL
Mar 01 11:57:07 seerr node[597]:     at new URL (node:internal/url:827:25)
Mar 01 11:57:07 seerr node[597]:     at dispatchHttpRequest (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/adapters/http.js:413:20)
Mar 01 11:57:07 seerr node[597]:     at file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/adapters/http.js:253:5
Mar 01 11:57:07 seerr node[597]:     at new Promise (<anonymous>)
Mar 01 11:57:07 seerr node[597]:     at wrapAsync (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/adapters/http.js:233:10)
Mar 01 11:57:07 seerr node[597]:     at http (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/adapters/http.js:319:10)
Mar 01 11:57:07 seerr node[597]:     at Axios.dispatchRequest (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/core/dispatchRequest.js:51:10)
Mar 01 11:57:07 seerr node[597]:     at Axios._request (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/core/Axios.js:190:33)
Mar 01 11:57:07 seerr node[597]:     at Axios.request (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/core/Axios.js:40:25)
Mar 01 11:57:07 seerr node[597]:     at Axios.<computed> [as get] (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/core/Axios.js:216:17)
Mar 01 11:57:07 seerr node[597]:     at Axios.request (file:///opt/seerr/node_modules/.pnpm/axios@1.13.3/node_modules/axios/lib/core/Axios.js:45:41)
Mar 01 11:57:07 seerr node[597]:     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
Mar 01 11:57:07 seerr node[597]:     at async T.getInitialProps (/opt/seerr/.next/server/chunks/8452.js:1:64168)
Mar 01 11:57:07 seerr node[597]:     at async X (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js:16:5045)
Mar 01 11:57:07 seerr node[597]:     at async e3 (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js:25:3796)
Mar 01 11:57:07 seerr node[597]:     at async doRender (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:1414:30)
Mar 01 11:57:07 seerr node[597]:     at async cacheEntry.responseCache.get.routeKind (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:1588:28)
Mar 01 11:57:07 seerr node[597]:     at async NextNodeServer.renderToResponseWithComponentsImpl (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:1496:28)
Mar 01 11:57:07 seerr node[597]:     at async NextNodeServer.renderErrorToResponseImpl (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:2182:24)
Mar 01 11:57:07 seerr node[597]:     at async NextNodeServer.renderToResponseImpl (/opt/seerr/node_modules/.pnpm/next@14.2.35_@babel+core@7.28.6_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:2019:30) {
Mar 01 11:57:07 seerr node[597]:   code: 'ERR_INVALID_URL',
Mar 01 11:57:07 seerr node[597]:   input: 'http://:::5055/api/v1/settings/public'
Mar 01 11:57:07 seerr node[597]: }

Platform

desktop

Database

SQLite (default)

Device

MacBook Pro 13-inch M2 2022

Operating System

Client: MacOS 26.3 | Server: Debian 13 LXC on pve-manager/9.1.5/80cf92a64bef6889 (running kernel: 6.17.9-1-pve)

Browser

Arc: Version 1.135.0 (75383) | Chromium Engine Version 145.0.7632.110

Additional Context

No response

Search Existing Issues

  • Yes, I have searched existing issues.

Code of Conduct

  • I agree to follow Seerr's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting triageThis issue needs to be reviewed

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions