Add --base-url flag to serve command for correct feed links
This commit is contained in:
+2
-1
@@ -223,7 +223,7 @@ After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/home/youruser/.local/bin/ghrel serve --host 127.0.0.1 --port 8765
|
||||
ExecStart=/home/youruser/.local/bin/ghrel serve --host 0.0.0.0 --port 8765 --base-url http://your-server-ip:8765
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
User=youruser
|
||||
@@ -245,6 +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)
|
||||
- Combine with a reverse proxy (nginx, caddy) for external access:
|
||||
|
||||
```nginx
|
||||
|
||||
+3
-1
@@ -305,11 +305,12 @@ def cmd_serve(args: argparse.Namespace, db_path: str) -> None:
|
||||
"""Start the HTTP server."""
|
||||
host = args.host or DEFAULT_SERVER_HOST
|
||||
port = args.port or DEFAULT_SERVER_PORT
|
||||
base_url = getattr(args, 'base_url', None)
|
||||
|
||||
from src.server import create_handler
|
||||
from http.server import ThreadingHTTPServer
|
||||
|
||||
handler = create_handler(db_path)
|
||||
handler = create_handler(db_path, base_url)
|
||||
try:
|
||||
server = ThreadingHTTPServer((host, port), handler)
|
||||
except OSError as e:
|
||||
@@ -364,6 +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)")
|
||||
|
||||
# daemon
|
||||
p_daemon = subparsers.add_parser("daemon", help="Run as background daemon")
|
||||
|
||||
+3
-1
@@ -7,7 +7,7 @@ from src.db import get_connection
|
||||
from src.rss import generate_feed, generate_index_html
|
||||
|
||||
|
||||
def create_handler(db_path: str):
|
||||
def create_handler(db_path: str, base_url: str = None):
|
||||
"""Factory that returns an HTTP request handler class bound to a DB path."""
|
||||
|
||||
class FeedHandler(BaseHTTPRequestHandler):
|
||||
@@ -64,6 +64,8 @@ def create_handler(db_path: str):
|
||||
pass
|
||||
|
||||
def _base_url(self) -> str:
|
||||
if base_url:
|
||||
return base_url
|
||||
host = self.server.server_address[0]
|
||||
port = self.server.server_address[1]
|
||||
return f"http://{host}:{port}"
|
||||
|
||||
Reference in New Issue
Block a user