<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dokumentation on Shelltrap</title><link>https://shelltrap.com/de/docs/</link><description>Recent content in Dokumentation on Shelltrap</description><generator>Hugo</generator><language>de-DE</language><atom:link href="https://shelltrap.com/de/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Installation und Erstinbetriebnahme</title><link>https://shelltrap.com/de/docs/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shelltrap.com/de/docs/installation/</guid><description>&lt;h2 id="voraussetzungen">Voraussetzungen&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Root-Zugriff&lt;/strong> oder ein Paket-Dienstkonto mit vollen Installationsrechten. Der Broker
&lt;code>shelltrapd&lt;/code> läuft als root; der Worker läuft als &lt;code>shelltrap-scan&lt;/code>, einem Systembenutzer ohne
Login-Shell und ohne Home-Verzeichnis.&lt;/li>
&lt;li>&lt;strong>Ein von CyberPanel unterstütztes Betriebssystem:&lt;/strong> Ubuntu 20.04, 22.04 oder 24.04; AlmaLinux,
RockyLinux oder RHEL 8, 9 oder 10; CloudLinux 8; CentOS 9. Debian wird von CyberPanel nur über
Dritte unterstützt und ist nicht zugesichert.&lt;/li>
&lt;li>&lt;strong>Ein Linux-Dateisystem unterhalb der konfigurierten Kundenverzeichnisse&lt;/strong> (standardmäßig
&lt;code>/home&lt;/code>), ausreichend Arbeitsspeicher und ein Kernel, auf dem der Installer die fanotify- und
File-Handle-Capabilities tatsächlich prüfen kann.&lt;/li>
&lt;li>&lt;strong>Für das Full-Profil:&lt;/strong> mindestens 1,5 GiB &lt;code>MemAvailable&lt;/code>, die &lt;em>nach&lt;/em> der gemessenen
Reload-Reserve verbleiben; diese umfasst den beobachteten clamd-Speicherbedarf zuzüglich eines
festen Sicherheitszuschlags. Diese Messung darf nicht durch eine globale sysctl-Änderung
ersetzt werden.&lt;/li>
&lt;li>&lt;strong>Für ClamAV im Full-Profil:&lt;/strong> ein laufender oder installierbarer &lt;code>clamd&lt;/code> und ein Unix-Socket,
der für den Benutzer &lt;code>shelltrap-scan&lt;/code> erreichbar ist, standardmäßig &lt;code>/run/clamav/clamd.ctl&lt;/code>.
Ein nur für root lesbarer Socket genügt nicht. Fehlt der Dienst oder der Zugriff des Workers,
wird der Zustand &lt;code>degraded&lt;/code> und niemals &lt;code>clean&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Für den PHP-Upload-Adapter:&lt;/strong> eine unterstützte lsphp/LSWS-Installation. Der Adapter benötigt
lediglich den lokalen Socket &lt;code>/run/shelltrap/upload.sock&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Werkzeuge:&lt;/strong> &lt;code>sha256sum&lt;/code>, GnuPG und entweder &lt;code>curl&lt;/code> oder &lt;code>wget&lt;/code> für den Host-Installer; für
das CyberPanel-Paket zusätzlich &lt;code>unzip&lt;/code>. Abhängigkeiten löst der native Paketmanager auf.&lt;/li>
&lt;/ul>
&lt;h2 id="host-preflight">Host-Preflight&lt;/h2>
&lt;p>Vor jedem Download gibt der Host-Installer rein lesende Fakten über die Maschine aus und
verändert nichts:&lt;/p></description></item><item><title>Konfiguration und Richtlinien</title><link>https://shelltrap.com/de/docs/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shelltrap.com/de/docs/configuration/</guid><description>&lt;h2 id="das-richtlinienmodell">Das Richtlinienmodell&lt;/h2>
&lt;p>Jede Einstellung, die das Verhalten steuert, ist eine Richtlinie auf drei Ebenen:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>global&lt;/strong> — der gesamte Host&lt;/li>
&lt;li>&lt;strong>account&lt;/strong> — ein CyberPanel-Benutzer&lt;/li>
&lt;li>&lt;strong>domain&lt;/strong> — eine Website oder Child-Domain&lt;/li>
&lt;/ol>
&lt;p>Die spezifischere Ebene gewinnt, und jede Ebene kann einzelne Schlüssel erben oder überschreiben.
Innerhalb einer Domain sind zusätzlich Pfadregeln mit Globs relativ zum Document-Root möglich.&lt;/p>
&lt;p>Die Zuordnung erfolgt über einen Document-Root-Index, den der Broker aus der
CyberPanel-Datenbank führt (Website, Child-Domain, Document-Root, Eigentümer) und der per Timer
sowie bei Änderungen im Panel aktualisiert wird. fanotify-Ereignisse werden über das längste
passende Document-Root-Präfix einem Konto und einer Domain zugeordnet. Der PHP-Adapter übergibt
&lt;code>DOCUMENT_ROOT&lt;/code> und &lt;code>SERVER_NAME&lt;/code>; entscheidend ist der Document-Root, der Servername dient nur
als Plausibilitätsprüfung. Dateien außerhalb jedes Document-Roots — E-Mail, Backups, das
Home-Verzeichnis — fallen unter die Kontorichtlinie.&lt;/p></description></item><item><title>Das CyberPanel-Plugin</title><link>https://shelltrap.com/de/docs/plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shelltrap.com/de/docs/plugin/</guid><description>&lt;h2 id="vor-der-installation">Vor der Installation&lt;/h2>
&lt;p>Der Shelltrap-Broker muss laufen, &lt;code>/run/shelltrap/api.sock&lt;/code> muss vorhanden sein, und CyberPanel
muss installiert sein. Das Plugin-Archiv wird reproduzierbar gebaut und enthält genau ein
Verzeichnis &lt;code>shelltrap/&lt;/code> auf oberster Ebene, ohne Caches und ohne Python-Bytecode.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">cd /usr/local/CyberCP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/local/CyberCP/bin/python /usr/local/CyberCP/pluginInstaller/pluginInstaller.py \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> install --pluginName shelltrap
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="warum-die-installation-so-vorsichtig-vorgeht">Warum die Installation so vorsichtig vorgeht&lt;/h2>
&lt;p>Der CyberPanel-Installer patcht Kerndateien — &lt;code>CyberCP/settings.py&lt;/code>, &lt;code>CyberCP/urls.py&lt;/code> und das
Sidebar-Template — durch das Einfügen von Zeilen, und seine Hook-Aufrufe nutzen
&lt;code>subprocess.call&lt;/code> und &lt;strong>ignorieren Exit-Codes&lt;/strong>. Ein fehlgeschlagener Preflight kann die
Installation daher nicht daran hindern, Erfolg zu melden.&lt;/p></description></item><item><title>Signatur-Feeds</title><link>https://shelltrap.com/de/docs/feeds/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shelltrap.com/de/docs/feeds/</guid><description>&lt;figure class="figure">&lt;svg viewBox="0 0 900 400" role="img" aria-labelledby="feedTitle feedDesc">
 &lt;title id="feedTitle">Weg einer Signaturgeneration von der Quelle bis zur Aktivierung&lt;/title>
 &lt;desc id="feedDesc">Quellen werden nach Lizenz gefiltert, mit Provenienz versehen und zu einer Ed25519-signierten Generation gebaut. Der Client prüft Digest und Signatur, das Korpus-Gate prüft gegen Known-Good und Known-Bad, erst danach wird atomar umgeschaltet. Ein Quarantäne-Sturm über mehrere Accounts löst automatisch einen Rollback aus.&lt;/desc>
 &lt;defs>
 &lt;marker id="fdArrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
 &lt;path d="M0 1l8 4-8 4z" fill="var(--border-strong)"/>
 &lt;/marker>
 &lt;marker id="fdArrowD" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
 &lt;path d="M0 1l8 4-8 4z" fill="var(--danger)"/>
 &lt;/marker>
 &lt;/defs>&lt;text x="24" y="26" class="svg-label" fill="var(--accent)">BUILD BEI PANOMITY&lt;/text>
 &lt;text x="470" y="26" class="svg-label" fill="var(--accent)">AUF IHREM SERVER&lt;/text>
 &lt;line x1="452" y1="18" x2="452" y2="300" stroke="var(--border)" stroke-width="1" stroke-dasharray="4 5"/>
 &lt;rect x="24" y="40" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="38" y="66" class="svg-label" fill="var(--accent)">01&lt;/text>
 &lt;text x="38" y="90" class="svg-title">Quellen&lt;/text>
 &lt;text x="38" y="112" class="svg-label svg-label--sm">eigene Regeln · kuratierte Fremdregeln&lt;/text>
 &lt;path d="M220 86h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;rect x="238" y="40" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="252" y="66" class="svg-label" fill="var(--accent)">02&lt;/text>
 &lt;text x="252" y="90" class="svg-title">Lizenzfilter&lt;/text>
 &lt;text x="252" y="112" class="svg-label svg-label--sm">nur DRL-1.1, BSD-3, Apache-2.0, MIT&lt;/text>
 &lt;path d="M434 86h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;rect x="452" y="40" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="466" y="66" class="svg-label" fill="var(--accent)">03&lt;/text>
 &lt;text x="466" y="90" class="svg-title">Provenienz&lt;/text>
 &lt;text x="466" y="112" class="svg-label svg-label--sm">Quelle, Autor, Commit, Lizenz je Regel&lt;/text>
 &lt;path d="M648 86h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;rect x="666" y="40" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="680" y="66" class="svg-label" fill="var(--accent)">04&lt;/text>
 &lt;text x="680" y="90" class="svg-title">Signatur&lt;/text>
 &lt;text x="680" y="112" class="svg-label svg-label--sm">Ed25519 · manifest.json &amp;#43; manifest.sig&lt;/text>
 &lt;rect x="24" y="156" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="38" y="182" class="svg-label" fill="var(--accent)">05&lt;/text>
 &lt;text x="38" y="206" class="svg-title">Prüfung&lt;/text>
 &lt;text x="38" y="228" class="svg-label svg-label--sm">Digest vor Signatur, Ablauf, Denylist&lt;/text>
 &lt;path d="M220 202h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;rect x="238" y="156" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="252" y="182" class="svg-label" fill="var(--accent)">06&lt;/text>
 &lt;text x="252" y="206" class="svg-title">Korpus-Gate&lt;/text>
 &lt;text x="252" y="228" class="svg-label svg-label--sm">Known-Good hart, Known-Bad als Quote&lt;/text>
 &lt;path d="M434 202h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;rect x="452" y="156" width="196" height="92" rx="5" class="svg-panel-raised"/>
 &lt;text x="466" y="182" class="svg-label" fill="var(--accent)">07&lt;/text>
 &lt;text x="466" y="206" class="svg-title">Aktivierung&lt;/text>
 &lt;text x="466" y="228" class="svg-label svg-label--sm">atomarer Symlink-Wechsel, Cache invalidiert&lt;/text>
 &lt;path d="M648 202h12" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>
 &lt;path d="M866 86v46H98v18" stroke="var(--border-strong)" stroke-width="1.4" marker-end="url(#fdArrow)" fill="none"/>

 
 &lt;rect x="24" y="288" width="852" height="88" rx="5" class="svg-panel"/>
 &lt;rect x="24" y="288" width="4" height="88" fill="var(--danger)"/>
 &lt;text x="48" y="314" class="svg-title" fill="var(--danger)">Circuit Breaker&lt;/text>
 &lt;text x="48" y="336" class="svg-label">letzte Stunde gegen 24-Stunden-Mittel: mindestens 50 Quarantänen und mehr als das Zehnfache&lt;/text>
 &lt;text x="48" y="356" class="svg-label">und mindestens drei Accounts und mindestens 20 % der aktiven Accounts — ein einzelner Account löst nie einen serverweiten Rollback aus&lt;/text>
 &lt;path d="M760 288v-24" stroke="var(--danger)" stroke-width="1.4" marker-end="url(#fdArrowD)" fill="none"/>
 &lt;text x="612" y="282" class="svg-label svg-label--sm" fill="var(--danger)">automatischer Rollback&lt;/text>
&lt;/svg>
&lt;figcaption>Aktiviert wird nur, was signiert, zweifach verifiziert, gegen ein Known-good- und ein Known-bad-Korpus geprüft und widerrufbar gemacht wurde.&lt;/figcaption>
&lt;/figure>

&lt;h2 id="generationen-statt-updates">Generationen statt Updates&lt;/h2>
&lt;p>Ein Regelsatz ist kein Strom von Änderungen, sondern eine &lt;strong>Generation&lt;/strong>: ein unveränderliches,
signiertes Verzeichnis. Vendor-Generations-IDs lauten exakt &lt;code>YYYYMMDDTHHMMSSZ-NNNN&lt;/code>, zum Beispiel
&lt;code>20260903T120000Z-0001&lt;/code>. Lokale Overlays verwenden &lt;code>local-&amp;lt;64 hex characters&amp;gt;&lt;/code>.&lt;/p></description></item><item><title>Lizenzierung und Aktivierung</title><link>https://shelltrap.com/de/docs/licensing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://shelltrap.com/de/docs/licensing/</guid><description>&lt;h2 id="die-bestandteile">Die Bestandteile&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Begriff&lt;/th>
 &lt;th>Bedeutung&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Lizenzschlüssel&lt;/strong>&lt;/td>
 &lt;td>&lt;code>STL-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&lt;/code> — Crockford Base32, 25 Nutzzeichen einschließlich zweier Prüfzeichen. Wird bei der Erstellung der Lizenz erzeugt und genau einmal im Klartext zurückgegeben; der Dienst speichert nur &lt;code>sha256(key)&lt;/code> sowie die ersten neun Zeichen als Anzeigepräfix.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Lizenz&lt;/strong>&lt;/td>
 &lt;td>Der Datensatz: Tarif, maximale Serveranzahl (standardmäßig 1), Status (&lt;code>active&lt;/code>, &lt;code>suspended&lt;/code>, &lt;code>terminated&lt;/code>), Ablauf und die Verknüpfung mit Ihrem Konto.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Aktivierung&lt;/strong>&lt;/td>
 &lt;td>Die Bindung einer Lizenz an einen Server-Fingerabdruck. Höchstens &lt;code>max_servers&lt;/code> gleichzeitig; &lt;code>deactivate&lt;/code> gibt einen Platz frei.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Lizenz-Token&lt;/strong>&lt;/td>
 &lt;td>Ein Ed25519-signiertes Dokument, das der Daemon &lt;strong>offline&lt;/strong> verifiziert.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Server-Fingerabdruck&lt;/strong>&lt;/td>
 &lt;td>&lt;code>sha256&lt;/code> über ein festes Präfix und den Inhalt von &lt;code>/etc/machine-id&lt;/code>. Der Hostname wird nur zur Information übermittelt.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="aktivierung">Aktivierung&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">shelltrap license activate STL-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">shelltrap license status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">shelltrap license renew
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">shelltrap license deactivate
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Das Token landet in &lt;code>/etc/shelltrap/license.token&lt;/code>, Eigentümer root, Modus &lt;code>0600&lt;/code>. Der Schlüssel
selbst wird nur als Präfix in &lt;code>/etc/shelltrap/license.key&lt;/code> abgelegt, ebenfalls &lt;code>0600&lt;/code>, damit Sie
ihn für Erneuerungen nicht erneut eingeben müssen. Wenn Sie den Schlüssel lieber gar nicht auf
dem Server haben möchten, löschen Sie diese Datei und erneuern manuell.&lt;/p></description></item></channel></rss>