feat: allow the interface on which the server will listen to be configured (#2015)

# What does this PR do?

It may not always be desirable to listen on all interfaces, which is the
default. As an example, by listening instead only on a loopback
interface, the server cannot be reached except from within the host it
is run on. This PR makes this configurable, through a CLI option, an env
var or an entry on the config file.

## Test Plan

I ran a server with and without the added CLI argument to verify that
the argument is used if provided, but the default is as it was before if
not.

Signed-off-by: Gordon Sim <gsim@redhat.com>
This commit is contained in:
grs 2025-05-16 15:59:31 -04:00 committed by GitHub
parent 64f8d4c3ad
commit b8f7e1504d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 5 additions and 40 deletions

View file

@ -258,9 +258,9 @@ class ServerConfig(BaseModel):
default=None,
description="Authentication configuration for the server",
)
disable_ipv6: bool = Field(
default=False,
description="Disable IPv6 support",
host: str | None = Field(
default=None,
description="The host the server should listen on",
)

View file

@ -358,7 +358,6 @@ def main(args: argparse.Namespace | None = None):
default=int(os.getenv("LLAMA_STACK_PORT", 8321)),
help="Port to listen on",
)
parser.add_argument("--disable-ipv6", action="store_true", help="Whether to disable IPv6 support")
parser.add_argument(
"--env",
action="append",
@ -514,7 +513,7 @@ def main(args: argparse.Namespace | None = None):
else:
logger.info(f"HTTPS enabled with certificates:\n Key: {keyfile}\n Cert: {certfile}")
listen_host = ["::", "0.0.0.0"] if not config.server.disable_ipv6 else "0.0.0.0"
listen_host = config.server.host or ["::", "0.0.0.0"]
logger.info(f"Listening on {listen_host}:{port}")
uvicorn_config = {

View file

@ -139,4 +139,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -137,4 +137,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -235,4 +235,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -126,4 +126,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -117,4 +117,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -254,4 +254,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -244,4 +244,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -202,4 +202,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -134,4 +134,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -124,4 +124,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -134,4 +134,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -124,4 +124,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -160,4 +160,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -144,4 +144,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -129,4 +129,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -113,4 +113,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -219,4 +219,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -137,4 +137,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -127,4 +127,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -241,4 +241,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -147,4 +147,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -137,4 +137,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -144,4 +144,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -132,4 +132,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -202,4 +202,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -620,4 +620,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -124,4 +124,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -123,4 +123,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -271,4 +271,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -261,4 +261,3 @@ tool_groups:
provider_id: wolfram-alpha
server:
port: 8321
disable_ipv6: false

View file

@ -723,4 +723,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -128,4 +128,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false

View file

@ -211,4 +211,3 @@ tool_groups:
provider_id: rag-runtime
server:
port: 8321
disable_ipv6: false