mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
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>
100 lines
3.5 KiB
HTML
100 lines
3.5 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:80">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/nodejs/api/index.html">NodeJS</a></li>
|
|
<li><a href="file:///usr/share/doc/ffmpeg/manual/index.html">FFMPEG</a></li>
|
|
<li><a href="file:///usr/share/doc/gcc-14-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}:80`);
|
|
} 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>
|