<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>roji</title><link>https://roji-proxy.dev/</link><description>Recent content on roji</description><generator>Hugo</generator><language>en</language><copyright>Copyright (c) 2024-2026 kan</copyright><lastBuildDate>Wed, 04 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://roji-proxy.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>CLI Reference</title><link>https://roji-proxy.dev/docs/reference/cli/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/reference/cli/</guid><description>&lt;h2 id="roji"&gt;&lt;code&gt;roji&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Start the reverse proxy server.&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji &lt;span class="c1"&gt;# Run in foreground&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji --network web,api &lt;span class="c1"&gt;# Watch multiple networks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji --domain test.localhost &lt;span class="c1"&gt;# Custom domain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji --http-port &lt;span class="m"&gt;8080&lt;/span&gt; --https-port &lt;span class="m"&gt;8443&lt;/span&gt; &lt;span class="c1"&gt;# Custom ports&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji --log-level debug &lt;span class="c1"&gt;# Verbose logging&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Flags:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Common Issues</title><link>https://roji-proxy.dev/docs/troubleshooting/common-issues/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/troubleshooting/common-issues/</guid><description>&lt;h2 id="first-step-run-roji-doctor"&gt;First Step: Run &lt;code&gt;roji doctor&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Always start with diagnostics:&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji doctor &lt;span class="c1"&gt;# Check for issues&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji doctor --fix &lt;span class="c1"&gt;# Auto-fix where possible&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;This checks Docker, networking, certificates, ports, and DNS — and can fix most common problems automatically.&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://roji-proxy.dev/docs/guides/configuration/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/guides/configuration/</guid><description>&lt;p&gt;roji can be configured through a config file, environment variables, or CLI flags.&lt;/p&gt;
&lt;h2 id="config-file"&gt;Config File&lt;/h2&gt;
&lt;p&gt;Location: &lt;code&gt;~/.config/roji/config.yaml&lt;/code&gt;&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;roji &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Docker network(s) to watch (comma-separated)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dev.localhost &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Base domain&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;http_port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# HTTP port (redirect to HTTPS)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;https_port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# HTTPS port&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;certs_dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;~/.local/share/roji/certs &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Certificate directory&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;data_dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;~/.local/share/roji &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Data directory&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dashboard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;roji.dev.localhost &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Dashboard hostname&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;log_level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;info &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Log level (debug, info, warn, error)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;auto_cert&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Auto-generate certificates&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;static_sites&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Static file hosting (see Static Sites guide)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;docs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;~/projects/docs/build&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id="managing-the-config-file"&gt;Managing the Config File&lt;/h3&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji config show &lt;span class="c1"&gt;# Display current settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji config path &lt;span class="c1"&gt;# Show config file locations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji config init &lt;span class="c1"&gt;# Create default config file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji config edit &lt;span class="c1"&gt;# Open in $EDITOR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="environment-variables"&gt;Environment Variables&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_NETWORK&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Docker network(s) to watch (comma-separated)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;roji&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DOMAIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base domain&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;dev.localhost&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_HTTP_PORT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTP port&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_HTTPS_PORT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTPS port&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_CERTS_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Certificate directory&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.local/share/roji/certs&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DATA_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data directory (project history)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.local/share/roji&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DASHBOARD&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dashboard hostname&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;roji.{domain}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_LOG_LEVEL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Log level&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_AUTO_CERT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-generate certificates&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="settings-priority"&gt;Settings Priority&lt;/h2&gt;
&lt;p&gt;Settings are applied in this order (highest priority first):&lt;/p&gt;</description></item><item><title>Installation</title><link>https://roji-proxy.dev/docs/getting-started/installation/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/getting-started/installation/</guid><description>&lt;h2 id="homebrew-macos"&gt;Homebrew (macOS)&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install kan/roji/roji&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="one-liner-install-recommended"&gt;One-liner Install (Recommended)&lt;/h2&gt;
&lt;p&gt;Works on Linux and macOS:&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://raw.githubusercontent.com/kan/roji/v1.0.0/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;This will:&lt;/p&gt;</description></item><item><title>Docker Labels</title><link>https://roji-proxy.dev/docs/reference/labels/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/reference/labels/</guid><description>&lt;h2 id="label-reference"&gt;Label Reference&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Label&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Custom hostname&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{service}.dev.localhost&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.port&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Target port&lt;/td&gt;
 &lt;td&gt;First EXPOSE&amp;rsquo;d port&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.path&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path prefix&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.mock.{METHOD}.{PATH}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Mock response body&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.mock.status.{METHOD}.{PATH}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Mock response status code&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.auth.basic.user&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Basic auth username&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.auth.basic.pass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Basic auth password&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.auth.basic.realm&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Basic auth realm&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Restricted&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;roji.self&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Reserved: excludes container from routing (internal use)&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rojihost"&gt;&lt;code&gt;roji.host&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Override the default hostname (&lt;code&gt;{service}.dev.localhost&lt;/code&gt;):&lt;/p&gt;</description></item><item><title>Quick Start</title><link>https://roji-proxy.dev/docs/getting-started/quick-start/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/getting-started/quick-start/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; with Docker Compose v2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;roji&lt;/strong&gt; installed and running (see 

&lt;a class="link link--text" href="https://roji-proxy.dev/docs/getting-started/installation/"&gt;Installation&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="verify-setup"&gt;Verify Setup&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roji doctor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;All checks should pass. If not, run &lt;code&gt;sudo roji doctor --fix&lt;/code&gt; to auto-repair.&lt;/p&gt;</description></item><item><title>Static File Hosting</title><link>https://roji-proxy.dev/docs/guides/static-sites/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/guides/static-sites/</guid><description>&lt;p&gt;roji can serve static files directly without Docker containers, using the &lt;code&gt;static_sites&lt;/code&gt; section in the config file.&lt;/p&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Add entries to &lt;code&gt;~/.config/roji/config.yaml&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>WSL</title><link>https://roji-proxy.dev/docs/troubleshooting/wsl/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/troubleshooting/wsl/</guid><description>&lt;h2 id="certificates"&gt;Certificates&lt;/h2&gt;
&lt;p&gt;You need to install the CA certificate in &lt;strong&gt;both&lt;/strong&gt; Linux and Windows for browsers to trust HTTPS:&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji ca install &lt;span class="c1"&gt;# Linux trust store&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo roji ca install --windows &lt;span class="c1"&gt;# Windows trust store (for Chrome/Edge on Windows)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;--windows&lt;/code&gt; flag uses &lt;code&gt;certutil.exe&lt;/code&gt; to install the certificate in the Windows user certificate store (CurrentUser\ROOT).&lt;/p&gt;</description></item><item><title>Basic Authentication</title><link>https://roji-proxy.dev/docs/guides/basic-auth/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/guides/basic-auth/</guid><description>&lt;p&gt;roji supports HTTP Basic Authentication to protect routes in your local development environment.&lt;/p&gt;
&lt;h2 id="via-docker-labels"&gt;Via Docker Labels&lt;/h2&gt;
&lt;p&gt;Add authentication to any Docker-based route:&lt;/p&gt;</description></item><item><title>Environment Variables</title><link>https://roji-proxy.dev/docs/reference/environment-variables/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://roji-proxy.dev/docs/reference/environment-variables/</guid><description>&lt;h2 id="variable-reference"&gt;Variable Reference&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_NETWORK&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Docker network(s) to watch (comma-separated)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;roji&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DOMAIN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base domain for service hostnames&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;dev.localhost&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_HTTP_PORT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTP port (redirects to HTTPS)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_HTTPS_PORT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTPS port&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_CERTS_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Directory for TLS certificates&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.local/share/roji/certs&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DATA_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Directory for data (project history, logs)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.local/share/roji&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_DASHBOARD&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dashboard hostname&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;roji.{domain}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_LOG_LEVEL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Log level (&lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ROJI_AUTO_CERT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-generate TLS certificates&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run with custom settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ROJI_DOMAIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;test.localhost &lt;span class="nv"&gt;ROJI_LOG_LEVEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;debug sudo roji
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Watch multiple networks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ROJI_NETWORK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;web,api sudo roji
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Use alternative ports&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ROJI_HTTP_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8080&lt;/span&gt; &lt;span class="nv"&gt;ROJI_HTTPS_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8443&lt;/span&gt; sudo roji&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="priority"&gt;Priority&lt;/h2&gt;
&lt;p&gt;Environment variables override config file values but are overridden by CLI flags:&lt;/p&gt;</description></item></channel></rss>