2023-10-20 18:53:26 -06:00
|
|
|
<!DOCTYPE html>
|
2022-01-17 09:35:17 -07:00
|
|
|
<html lang="en">
|
2022-01-15 19:34:12 -07:00
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>Error!</h1>
|
|
|
|
|
|
Replace nginx with Caddy for TLS termination and reverse proxying.
- 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.
2026-03-07 12:08:27 -07:00
|
|
|
<p>The web proxy could not find WROLPi! Are your services running?</p>
|
2022-01-15 19:34:12 -07:00
|
|
|
|
2026-02-03 16:37:16 -07:00
|
|
|
<p>Start by viewing status of your services at the
|
2026-04-07 20:01:49 -06:00
|
|
|
<a id="controller_link" href="http://127.0.0.1:80">Controller</a>
|
2026-02-03 16:37:16 -07:00
|
|
|
</p>
|
|
|
|
|
|
2023-10-20 18:53:26 -06:00
|
|
|
<pre><b>sudo systemctl status wrolpi-app</b></pre>
|
|
|
|
|
<pre><b>sudo systemctl status wrolpi-api</b></pre>
|
2022-01-15 19:34:12 -07:00
|
|
|
|
2022-01-17 09:35:17 -07:00
|
|
|
<br/>
|
|
|
|
|
<p>If either of those services are not running, start all WROLPi services:</p>
|
2022-01-15 19:34:12 -07:00
|
|
|
|
2022-01-17 09:35:17 -07:00
|
|
|
<p><b>sudo systemctl start wrolpi.target</b></p>
|
|
|
|
|
|
|
|
|
|
<br/>
|
|
|
|
|
<p>Or, start them individually:</p>
|
2023-10-20 18:53:26 -06:00
|
|
|
<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>
|
2022-01-17 09:35:17 -07:00
|
|
|
|
2022-05-19 21:33:42 -06:00
|
|
|
<br/>
|
2023-10-20 18:53:26 -06:00
|
|
|
<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>
|
2022-05-19 21:33:42 -06:00
|
|
|
|
2022-01-17 09:35:17 -07:00
|
|
|
<hr/>
|
|
|
|
|
|
2023-04-30 17:59:58 -06:00
|
|
|
<h2>Help script</h2>
|
|
|
|
|
<p>Run the provided help script which may narrow down the scope of the problem.</p>
|
2023-10-20 18:53:26 -06:00
|
|
|
<pre><b>bash /opt/wrolpi/help.sh</b></pre>
|
2023-04-30 17:59:58 -06:00
|
|
|
|
2023-10-12 18:33:51 -06:00
|
|
|
<h2>Repair script</h2>
|
|
|
|
|
<p>Run the provided repair script which will attempt to automatically repair the WROLPi systems.</p>
|
2023-10-20 18:53:26 -06:00
|
|
|
<pre><b>bash /opt/wrolpi/repair.sh</b></pre>
|
2023-10-12 18:33:51 -06:00
|
|
|
|
2023-04-30 17:59:58 -06:00
|
|
|
<hr/>
|
|
|
|
|
|
2023-10-12 18:33:51 -06:00
|
|
|
<h2>Still not working?</h2>
|
2022-03-08 13:26:03 -07:00
|
|
|
<p>You can view the media directory by <a id="media_link" href="/media">navigating to /media</a></p>
|
2023-11-22 12:34:09 -07:00
|
|
|
<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>
|
2023-10-20 18:53:26 -06:00
|
|
|
<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>
|
2022-03-08 13:26:03 -07:00
|
|
|
|
2023-10-20 18:53:26 -06:00
|
|
|
<hr/>
|
2022-03-08 13:26:03 -07:00
|
|
|
|
2023-10-20 18:53:26 -06:00
|
|
|
<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/nodejs/api/index.html">NodeJS</a></li>
|
|
|
|
|
<li><a href="file:///usr/share/doc/ffmpeg/manual/index.html">FFMPEG</a></li>
|
Debian 13 (trixie) rebase: docker, debian-live-config, and pi-gen builds.
All three build targets move from Debian 12/bookworm to Debian 13/trixie
for fresh installs; existing Debian 12 systems remain supported in place.
Docker: api/help on python:3.13-trixie, controller on 3.13-slim-trixie,
app on node:20-trixie (matches trixie's nodejs 20), samba/zim on
debian:13. Full backend suite passes on Python 3.13 in the api container.
debian-live-config: --distribution trixie; postgres teardown for the
SQLite cutover (pg_dropcluster hook block removed, wrolpi-bootstrap.sh no
longer creates a cluster or calls the deleted initialize_api_db.sh — the
API creates wrolpi.db itself on first start). README documents the
SQLite layout and drops Etcher recommendations.
pi-gen: upstream has no trixie branch — the arm64 branch now defaults to
RELEASE=trixie; KEYBOARD_KEYMAP=en_US is rejected by trixie's
console-setup (ckbcomp validates), use 'us'; stop stamping a Postgres
.pgpass into /etc/skel.
Package lists (both targets): postgresql-15/postgresql-doc/libpq-dev
deleted; libtiff5-dev renamed to libtiff-dev; software-properties-common
and cpufrequtils removed from trixie (Controller CPU throttle falls back
to sysfs, dead cpufreq-set sudoers rule removed); locales and gnupg added
(no longer arrive transitively under --apt-recommends false); sqlite3 CLI
added for reset_tags.sh.
help.sh: replace the Postgres service/port/socket/cluster/psql checks
(all false FAILEDs after the SQLite cutover) with SQLite checks:
wrolpi.db exists, PRAGMA quick_check, file_group table + row count, run
as the wrolpi user so root never creates the -shm sidecar.
Both build scripts take a WROLPI_BUILD_DIR override so development builds
can run beside the release pipeline's build trees; the sudo re-exec
passes it through explicitly (a plain sudo would drop it).
test_common.py: the truncate tests hard-coded sys.getsizeof results from
the 3.11 object layout (str/list shrank in 3.12); assert the contract
(fits budget, prefix, monotonic in budget) so they pass on 3.11 and 3.13.
Verified: trixie ISO (3.7G) and pi-gen desktop image (4.3G) both built
from scratch and passed their sanity checks.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 15:16:00 -06:00
|
|
|
<li><a href="file:///usr/share/doc/gcc-14-doc/gcc.html">GCC</a></li>
|
2023-10-20 18:53:26 -06:00
|
|
|
<li><a href="file:///usr/share/doc/git-doc/git.html">Git</a></li>
|
|
|
|
|
</ul>
|
2023-05-29 18:04:03 -06:00
|
|
|
|
2022-03-08 13:26:03 -07:00
|
|
|
<script>
|
2023-10-20 18:53:26 -06:00
|
|
|
// Get the current hostname (probably an IP) link to the ports above.
|
|
|
|
|
const hostname = window.location.hostname;
|
2024-03-10 14:56:57 -06:00
|
|
|
let port = window.location.port;
|
|
|
|
|
port = port ? `:${port}` : '';
|
2023-10-20 18:53:26 -06:00
|
|
|
|
|
|
|
|
function replaceHref(elm_id, url) {
|
|
|
|
|
const elm = document.getElementById(elm_id);
|
|
|
|
|
if (elm) {
|
|
|
|
|
elm.setAttribute('href', url);
|
|
|
|
|
elm.textContent = `by navigating to ${url}`;
|
|
|
|
|
}
|
2022-03-08 13:26:03 -07:00
|
|
|
}
|
2023-05-29 18:04:03 -06:00
|
|
|
|
2023-10-20 18:53:26 -06:00
|
|
|
if (hostname) {
|
2023-11-22 12:34:09 -07:00
|
|
|
replaceHref('help_link', `http://${hostname}:8086`);
|
2024-03-10 14:56:57 -06:00
|
|
|
replaceHref('media_link', `http://${hostname}${port}/media`);
|
2023-10-20 18:53:26 -06:00
|
|
|
replaceHref('api_link', `http://${hostname}:8081`);
|
|
|
|
|
replaceHref('map_link', `http://${hostname}:8084`);
|
|
|
|
|
replaceHref('kiwix_link', `http://${hostname}:8085`);
|
2026-04-07 20:01:49 -06:00
|
|
|
replaceHref('controller_link', `http://${hostname}:80`);
|
2023-10-20 18:53:26 -06:00
|
|
|
} else {
|
|
|
|
|
console.error('Refusing to replace services links because window.location.hostname is empty');
|
2023-05-29 18:04:03 -06:00
|
|
|
}
|
2023-11-22 12:22:29 -07:00
|
|
|
|
|
|
|
|
setInterval(function () {
|
|
|
|
|
location.reload();
|
|
|
|
|
}, 10000) // Refresh every 10 seconds in hopes that WROLPi will come back.
|
2022-03-08 13:26:03 -07:00
|
|
|
</script>
|
2022-01-17 09:35:17 -07:00
|
|
|
|
2022-01-15 19:34:12 -07:00
|
|
|
</body>
|
|
|
|
|
</html>
|