**LayerNX ©** # LayerNX Search – search.layernx.de **LayerNX Search** – die Metasuche von LayerNX: [SearXNG](https://github.com/searxng/searxng) im Docker-Container, komplett im Stil des LNX-Wikis, mit eigenem Win7-Logo „LayerNX Search“. Die Startseite zeigt das Logo – angemeldet stattdessen eine Begrüßung nach Tageszeit („Guten Abend, Moritz“, „Tach, Anna“) – plus Dienst-Buttons. `hello.layernx.de` zeigt im Tunnel ebenfalls hierher (Port 3508). Ersetzt `search.acu.li` (deprecated). Port **3508**, Domains `search.layernx.de` / `search.layernx.systems`. ## Aufbau ``` sites/lnx-search/ ├── image/ │ ├── Dockerfile FROM searxng/searxng: + Branding │ └── lnx/ │ ├── lnx_brand.py baut SearXNG beim Image-Build um (Theme, Templates, Dateien) │ ├── lnx-search.css Theme im Wiki-Stil │ ├── templates/ index.html (Logo + Suchfeld), lnx-logo.html / lnx-mark.html (SVG-Logo) │ └── static/ lnx-common.js (Konto-Link) ├── LICENSE AGPL-3.0 (von SearXNG) └── data/ └── settings.yml SearXNG-Einstellungen (Savefile, nur Abweichungen vom Standard) ``` Den Build-Kontext stellt `build_context.py` zusammen (genutzt von `deploy/` und `test.py`): zusätzlich kommen Logos, Schriften, Win7-Symbole und der Cookie-Hinweis aus `shared/` dazu. ## Was das Branding macht * **Startseite:** nur das Logo „LayerNX Search“ und das Suchfeld – keine Begrüßung. * **Logo:** eigenes SVG im Win7-Stil (Lupe mit Orbit + „LayerNX Search“) statt SearXNG-Logo/„SEARCH“. * Ergebnis-, Einstellungs- und Info-Seiten im Wiki-Stil, Konto-Link oben rechts, Cookie-Hinweis, Footer mit LayerNX-Domains * **„Powered by SearXNG“ und der Link zum Quellcode bleiben** (Lizenz AGPL-3.0), dazu ein Link auf den Quellcode dieser Version ## Einstellungen `/var/lib/layernx/search/settings.yml` (wird bei Updates nie überschrieben): | Einstellung | Wert | |---|---| | `general.instance_name` | LayerNX Search | | `ui.default_locale` / `theme_args.simple_style` | de / dark | | `server.image_proxy` | an – Bilder laufen über LNX Search, Drittanbieter sehen keine Besucher-IP | | `server.limiter` | aus (bräuchte Valkey) – Schutz vor Bots übernimmt Cloudflare | | `general.enable_metrics` | aus | | Datenschutz/Kontakt | rechtliches.layernx.de / moritz@onlymoritz.de | Secret und Basis-URL kommen aus `/etc/layernx/lnx-search.env` (`SEARXNG_SECRET` wird beim ersten Deploy zufällig erzeugt, `SEARXNG_BASE_URL`). Nach Änderungen: `sudo systemctl restart lnx-search`. ## SearXNG-Version aktualisieren 1. In `image/Dockerfile` das `ARG SEARXNG_IMAGE=…` auf einen neueren Tag setzen (Tags: https://hub.docker.com/r/searxng/searxng/tags) 2. `python3 test.py search accounts` – Seite ansehen, Build-Ausgabe auf `[lnx-brand] WARNUNG` prüfen 3. `sudo ./deploy/update.sh search` ## Container * läuft mit `--cap-drop ALL` (+ nur die für den Start nötigen Rechte), `no-new-privileges`, max. 1 GB RAM, Logs auf 3 × 10 MB begrenzt * Granian lauscht im Container auf IPv4 (`0.0.0.0:8080`) – funktioniert auch auf Hosts ohne IPv6 * Logs: `journalctl -u lnx-search -f` oder `docker logs -f lnx-search` ## Lizenz & Quellcode (AGPL-3.0) SearXNG steht unter der AGPL-3.0. Weil LNX Search eine **veränderte** Version öffentlich betreibt, wird der Quellcode der Änderungen automatisch veröffentlicht – direkt aus diesem Ordner: * **https://rechtliches.layernx.de/credits#lnx-search** – Erklärung, Dateiliste, Links * `…/quellcode/lnx-search-quellcode.zip` – dieser Ordner + Logos + `BUILD.txt` (Basis-Version, Bauanleitung) * `…/quellcode/` – einzelne Dateien als Text (z. B. `image/Dockerfile`) Ausgeliefert von `lnx-rechtliches` (und `layernx.de/rechtliches/…`) über `shared/python/lnx_sources.py`. Änderungen hier sind nach `update.sh` sofort auch dort sichtbar – nichts von Hand nachziehen. Der Footer von LNX Search verlinkt die Seite; „Powered by SearXNG“ und der Original-Quellcode-Link bleiben. `LICENSE` ist der AGPL-Lizenztext von SearXNG. **Nichts Geheimes in diesen Ordner legen** – er ist öffentlich (das Secret kommt aus `/etc/layernx/lnx-search.env`, die Server-`settings.yml` liegt in `/var/lib/layernx/search`). © LayerNX