From 07f7370b6042c9995d45095a6ebf14d7c1c9083d Mon Sep 17 00:00:00 2001 From: ARIA Date: Tue, 28 Jul 2026 12:57:32 +0200 Subject: [PATCH] Auto-append port to --base-url so user only specifies hostname --- docs/deployment.md | 4 ++-- src/cli.py | 2 +- src/server.py | 7 ++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index d946a73..561a538 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -223,7 +223,7 @@ After=network-online.target [Service] Type=simple -ExecStart=/home/youruser/.local/bin/ghrel serve --host 0.0.0.0 --port 8765 --base-url http://your-server-ip:8765 +ExecStart=/home/youruser/.local/bin/ghrel serve --host 0.0.0.0 --port 8765 --base-url http://your-server-ip Restart=on-failure RestartSec=10 User=youruser @@ -245,7 +245,7 @@ sudo systemctl status ghrel-serve.service - The server reads the database on every request — no restart needed after `ghrel check` or daemon updates - Use `--host 127.0.0.1` for local-only access, or `0.0.0.0` for network access -- When binding to `0.0.0.0`, use `--base-url` to set the correct URL in feed links (otherwise links will use `0.0.0.0` which is not accessible from clients) +- When binding to `0.0.0.0`, use `--base-url` to set the correct hostname in feed links. The port is auto-appended from `--port`, so only the scheme and host are needed (e.g., `http://192.168.1.100`) - Combine with a reverse proxy (nginx, caddy) for external access: ```nginx diff --git a/src/cli.py b/src/cli.py index 2a62f14..1c1a919 100644 --- a/src/cli.py +++ b/src/cli.py @@ -365,7 +365,7 @@ def build_parser() -> argparse.ArgumentParser: p_serve = subparsers.add_parser("serve", help="Start HTTP server") p_serve.add_argument("--port", type=int, default=DEFAULT_SERVER_PORT, help="Server port") p_serve.add_argument("--host", default=DEFAULT_SERVER_HOST, help="Server host") - p_serve.add_argument("--base-url", default=None, help="Base URL for feed links (e.g., http://192.168.1.100:8080)") + p_serve.add_argument("--base-url", default=None, help="Base URL for feed links. Port is auto-appended (e.g., http://192.168.1.100)") # daemon p_daemon = subparsers.add_parser("daemon", help="Run as background daemon") diff --git a/src/server.py b/src/server.py index fe247a0..6d3de74 100644 --- a/src/server.py +++ b/src/server.py @@ -65,7 +65,12 @@ def create_handler(db_path: str, base_url: str = None): def _base_url(self) -> str: if base_url: - return base_url + port = self.server.server_address[1] + url = base_url.rstrip("/") + netloc = url.split("://", 1)[-1].split("/", 1)[0] + if ":" not in netloc: + url = f"{url}:{port}" + return url host = self.server.server_address[0] port = self.server.server_address[1] return f"http://{host}:{port}"