Auto-append port to --base-url so user only specifies hostname

This commit is contained in:
2026-07-28 12:57:32 +02:00
parent bddc6d2391
commit 07f7370b60
3 changed files with 9 additions and 4 deletions
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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")
+6 -1
View File
@@ -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}"