Files
FreshRSS/docs/en/admins/Caddy.md
polybjorn b08c4ef243 docs: standardise English heading style and surface hidden pages (#8766)
Apply sentence case to all H1s in docs/en/ and remove redundant "FreshRSS"
from titles where the docs site context already implies it. Align the three
section index titles to "Administrator/Developer/User manual", matching
the existing root H1 "FreshRSS manual (English)".

Add missing H1s to two pages that were silently dropped from the sidebar:
the user FAQ and the Caddy reverse proxy page. The sidebar template uses
page.title (derived from H1 by jekyll-titles-from-headings), so pages
without an H1 had title=nil and were skipped.

Update sidebar parent labels in docs_nav.html and the chapter list in
en/index.md to use the new "* manual" naming. Update link text in section
indexes that referenced the old H1s. Bundle two grammar fixes encountered
along the way: "an User Interface" -> "a user interface", and drop the
awkward "the" in "Configuring the email address validation".

EN only. No filenames, URLs, or anchor targets changed (anchors come from
H2 and below, which are untouched). FR is generated from EN via po4a and
will be regenerated separately.

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-02 22:23:35 +02:00

3.3 KiB

Using Caddy as a reverse proxy

How to configure Caddy as a reverse proxy to serve FreshRSS through a subfolder or subdomain

Using Caddy as a Reverse Proxy with a Subfolder

To set up FreshRSS behind a reverse proxy with Caddy and using a subfolder, follow these steps:

  1. Configure Caddyfile:

    Update your Caddyfile with the following configuration:

    example.com {
    	redir /subfolder /subfolder/ # Just to redirect users that are missing the closing slash to the correct page
    	handle_path /subfolder/* { # Actually configures the used subfolder (also internally strips the path prefix)
    		reverse_proxy freshrss:80 { # Enables the reverse proxy for the configured program:port
    			header_up X-Forwarded-Prefix "/subfolder" # Sets the correct header for the login cookies
    		}
    	}
    }
    

    Replace example.com with your actual domain and the four instances of subfolder with the subfolder where you want FreshRSS to be hosted.

    NOTE: Ensure that the Docker container name for FreshRSS (freshrss in this example) matches the name used in the Caddyfile configuration.

  2. Update FreshRSS Configuration:

    Open the config.php file in your FreshRSS installation and update the base_url parameter to match the subfolder configuration:

    'base_url' => 'https://example.com/subfolder',
    

    Replace example.com with your actual domain and subfolder with the same subfolder name specified in the Caddyfile.

  3. Restart Caddy and FreshRSS:

    Restart Caddy to apply the configuration changes:

    docker compose restart caddy
    

    Restart FreshRSS to ensure that it recognizes the new base URL:

    docker compose restart freshrss
    
  4. Access FreshRSS:

    FreshRSS should now be accessible at https://example.com/subfolder.

Using Caddy as a Reverse Proxy with a Subdomain

To set up FreshRSS behind a reverse proxy with Caddy and using a subdomain, follow these steps:

  1. Configure Caddyfile:

    Update your Caddyfile with the following configuration:

    subdomain.example.com { # The url Caddy should serve the proxy on
    	reverse_proxy freshrss:80 # Enables the reverse proxy for the configured program:port
    }
    

    Replace example.com with your actual domain and subdomain with the subfolder where you want FreshRSS to be hosted.

    NOTE: Ensure that the Docker container name for FreshRSS (freshrss in this example) matches the name used in the Caddyfile configuration. NOTE: Make sure to set the DNS Records for your configured subdomain.

  2. Update FreshRSS Configuration:

    Open the config.php file in your FreshRSS installation and update the base_url parameter to match the subdomain configuration:

    'base_url' => 'https://subdomain.example.com/',
    

    Replace example.com with your actual domain and subdomain with the same subdomain specified in the Caddyfile.

  3. Restart Caddy and FreshRSS:

    Restart Caddy to apply the configuration changes:

    docker compose restart caddy
    

    Restart FreshRSS to ensure that it recognizes the new base URL:

    docker compose restart freshrss
    
  4. Access FreshRSS:

    FreshRSS should now be accessible at https://subdomain.example.com/.