mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
- Replace nginx with Caddy as the web server for both Docker and native (RPi/Debian) deployments. Caddy handles HTTPS termination, reverse proxying to all services (API, React app, Controller, Kiwix, Help, Map), and serves the media/download file browsers. - Generate a Root CA and signed leaf certificates for HTTPS. The Root CA uses Name Constraints to restrict signing to local addresses only (.local, localhost, and RFC 1918 private IP ranges), mitigating MITM risk if the CA key is compromised. - Add an HTTP landing page that guides users through one-time CA certificate installation on iOS, Android, macOS, Windows, Linux, and Firefox, with auto-redirect when the cert is already trusted. - Add trailing-slash redirects for /controller, /docs, /media, and /download so bare paths don't fall through to the React catch-all. - Add a Root CA download link on the Settings page under Configs. - Update help.sh diagnostics for IPv6 listener detection and HTTP/2 status codes. - Remove all nginx config files and the https_proxy Docker container. - Bump wrolpi-help submodule with certificate documentation.
103 lines
3.7 KiB
HTML
103 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<body>
|
|
|
|
<h1>Error!</h1>
|
|
|
|
<p>The web proxy could not find WROLPi! Are your services running?</p>
|
|
|
|
<p>Start by viewing status of your services at the
|
|
<a id="controller_link" href="http://127.0.0.1:8087">Controller</a>
|
|
</p>
|
|
|
|
<pre><b>sudo systemctl status wrolpi-app</b></pre>
|
|
<pre><b>sudo systemctl status wrolpi-api</b></pre>
|
|
|
|
<br/>
|
|
<p>If either of those services are not running, start all WROLPi services:</p>
|
|
|
|
<p><b>sudo systemctl start wrolpi.target</b></p>
|
|
|
|
<br/>
|
|
<p>Or, start them individually:</p>
|
|
<pre><b>sudo systemctl start wrolpi-app</b></pre>
|
|
<pre><b>sudo systemctl start wrolpi-api</b></pre>
|
|
<pre><b>sudo systemctl start wrolpi-kiwix</b></pre>
|
|
|
|
<br/>
|
|
<p>View the logs:</p>
|
|
<pre><b>journalctl -u wrolpi-app</b></pre>
|
|
<pre><b>journalctl -u wrolpi-api</b></pre>
|
|
<pre><b>journalctl -u wrolpi-kiwix</b></pre>
|
|
<p>Watch the logs:</p>
|
|
<pre><b>journalctl -fu wrolpi-app</b></pre>
|
|
<pre><b>journalctl -fu wrolpi-api</b></pre>
|
|
<pre><b>journalctl -fu wrolpi-kiwix</b></pre>
|
|
|
|
<hr/>
|
|
|
|
<h2>Help script</h2>
|
|
<p>Run the provided help script which may narrow down the scope of the problem.</p>
|
|
<pre><b>bash /opt/wrolpi/help.sh</b></pre>
|
|
|
|
<h2>Repair script</h2>
|
|
<p>Run the provided repair script which will attempt to automatically repair the WROLPi systems.</p>
|
|
<pre><b>bash /opt/wrolpi/repair.sh</b></pre>
|
|
|
|
<hr/>
|
|
|
|
<h2>Still not working?</h2>
|
|
<p>You can view the media directory by <a id="media_link" href="/media">navigating to /media</a></p>
|
|
<p>The Help documentation may be available <a id="help_link" href="http://127.0.0.1:8086">by navigating to port 8086</a>
|
|
</p>
|
|
<p>The API may be available <a id="api_link" href="http://127.0.0.1:8081">by navigating to port 8081</a></p>
|
|
<p>The map may be available <a id="map_link" href="http://127.0.0.1:8084">by navigating to port 8084</a></p>
|
|
<p>Kiwix may be available <a id="kiwix_link" href="http://127.0.0.1:8085">by navigating to port 8085</a></p>
|
|
|
|
<hr/>
|
|
|
|
<h2>Third-Party Documentation</h2>
|
|
<p>WROLPi comes with official documentation from some third-party applications:</p>
|
|
<ul>
|
|
<li><a href="file:///usr/share/doc/python3-doc/html/index.html">Python 3</a></li>
|
|
<li><a href="file:///usr/share/doc/postgresql-doc-15/html/index.html">Postgresql</a></li>
|
|
<li><a href="file:///usr/share/doc/nodejs/api/index.html">NodeJS</a></li>
|
|
<li><a href="file:///usr/share/doc/apache2-doc/manual/en/index.html">Apache2</a></li>
|
|
<li><a href="file:///usr/share/doc/postgis-doc/postgis.html">Postgis</a></li>
|
|
<li><a href="file:///usr/share/doc/ffmpeg/manual/index.html">FFMPEG</a></li>
|
|
<li><a href="file:///usr/share/doc/gcc-10-doc/gcc.html">GCC</a></li>
|
|
<li><a href="file:///usr/share/doc/git-doc/git.html">Git</a></li>
|
|
</ul>
|
|
|
|
<script>
|
|
// Get the current hostname (probably an IP) link to the ports above.
|
|
const hostname = window.location.hostname;
|
|
let port = window.location.port;
|
|
port = port ? `:${port}` : '';
|
|
|
|
function replaceHref(elm_id, url) {
|
|
const elm = document.getElementById(elm_id);
|
|
if (elm) {
|
|
elm.setAttribute('href', url);
|
|
elm.textContent = `by navigating to ${url}`;
|
|
}
|
|
}
|
|
|
|
if (hostname) {
|
|
replaceHref('help_link', `http://${hostname}:8086`);
|
|
replaceHref('media_link', `http://${hostname}${port}/media`);
|
|
replaceHref('api_link', `http://${hostname}:8081`);
|
|
replaceHref('map_link', `http://${hostname}:8084`);
|
|
replaceHref('kiwix_link', `http://${hostname}:8085`);
|
|
replaceHref('controller_link', `http://${hostname}:8087`);
|
|
} else {
|
|
console.error('Refusing to replace services links because window.location.hostname is empty');
|
|
}
|
|
|
|
setInterval(function () {
|
|
location.reload();
|
|
}, 10000) // Refresh every 10 seconds in hopes that WROLPi will come back.
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|