
Automatisierter Tor-basierter Shared-Webhosting-Server mit PHP-Multi-Version-Unterstützung, E-Mail-Routing, automatisch skalierenden Tor-Instanzen und integrierter Sicherheitshärtung einschließlich CSRF-Schutz, CSP und verschlüsselten Zwiebelkeys.
Dies ist ein Setup für einen Tor-basierten Shared-Hosting-Server. Es wird so bereitgestellt, wie es ist, und bevor Sie es in Produktion nehmen, sollten Sie Änderungen entsprechend Ihren Bedürfnissen vornehmen. Dies ist eine Arbeit in Bearbeitung, und Sie sollten die Commit-Historie sorgfältig auf Änderungen prüfen, bevor Sie aktualisieren. Für einen Produktionsserver werden mindestens 1 TB SSD-Speicherplatz, 32 GB RAM und 8 CPU-Kerne empfohlen. Für einen kleinen Test-/Persönlichen Server reichen 4 GB RAM und 1 CPU-Kern.
Übersetzungen werden in Weblate verwaltet.
Wenn Sie Übersetzungen lieber manuell einreichen möchten, kann das Skript update-translations.sh verwendet werden, um die Sprachvorlage und Übersetzungsdateien aus der Quelle zu aktualisieren.
Es erzeugt die Datei var/www/locale/hosting.pot, die Sie dann als Grundlage verwenden können, um eine neue Sprachdatei in var/www/IHRE_SPRACHE/LC_MESSAGES/hosting.po zu erstellen und mit einem Übersetzungsprogramm wie Poedit zu bearbeiten.
Sobald Sie fertig sind, können Sie einen Pull-Request öffnen oder mir eine E-Mail senden, um die Übersetzung einzufügen.
Die Konfiguration wurde mit Debian 13 (Trixie) und Ubuntu 24.04 LTS getestet. Es wird empfohlen, Debian 13 oder Ubuntu 24.04 auf Ihrem Server zu installieren, aber mit ein wenig Anpassung können Sie dies möglicherweise auch auf anderen Distributionen und/oder Versionen zum Laufen bringen. Wenn Sie es auf einem Raspberry Pi aufbauen möchten, verwenden Sie bitte nicht die Raspbian-Images, da einige Dinge kaputt gehen. Laden Sie stattdessen ein Image für Ihr Pi-Modell von https://raspi.debian.net/daily-images/ herunter.
Der einfachste Weg zur Installation ist mit dem automatischen Installer:
apt update && apt install git && git clone https://github.com/DanWin/hosting && cd hosting
./install.sh
Der Installer kümmert sich um alles: Paketinstallation, PHP/ImageMagick-Kompilierung, Tor-Konfiguration, MySQL-Setup und Bereitstellung von Diensten. Er wird nach Passwörtern fragen oder diese automatisch generieren.
Optionen:
./install.sh --non-interactive # Überspringe Eingabeaufforderungen, generiere zufällige Passwörter
./install.sh --vanity <prefix> # Generiere eine Vanity-.onion-Adresse
./install.sh --skip-binaries # Überspringe Kompilierung (verwende, wenn bereits gebaut)
./install.sh --db-pass <pass> # Setze Hosting-MySQL-Passwort
./install.sh --pma-pass <pass> # Setze phpMyAdmin-MySQL-Passwort
./install.sh --admin-pass <pass> # Setze Admin-Panel-Passwort
Die Vanity-.onion-Generierung verwendet mkp224o (wird automatisch kompiliert). Nur Zeichen a-z und 2-7 sind gültig. Ein 4-Zeichen-Präfix dauert Minuten, 5 Zeichen dauert 10-30 Minuten, 6+ Zeichen dauert Stunden.
Anmeldeinformationen werden in /root/hosting-credentials.txt gespeichert.
cd hosting
./update.sh # Aktualisiere Code, behalte Konfiguration
./update.sh --rebuild # Baue auch PHP/ImageMagick neu
./update.sh --code-only # Aktualisiere nur PHP-Dateien
Das Update-Skript erstellt ein Backup Ihrer Konfiguration, zieht den neuesten Code, stellt Passwörter und die Onion-Adresse wieder her und startet Dienste neu. Es erkennt, ob sich install_binaries.sh geändert hat, und warnt Sie vor einem Neubau.
Wenn Sie es vorziehen, manuell zu installieren, folgen Sie den untenstehenden Schritten.
Entfernen Sie Pakete, die dieses Setup stören könnten:
DEBIAN_FRONTEND=noninteractive apt purge -y apache2* dnsmasq* eatmydata exim4* imagemagick-6-common mysql-client* mysql-server* nginx* libnginx-mod* php7* resolvconf && systemctl disable systemd-resolved.service && systemctl stop systemd-resolved.service
Wenn Sie nach diesem Schritt Probleme bei der Auflösung von Hostnamen haben, wechseln Sie vorübergehend zu einem öffentlichen Nameserver wie 1.1.1.1 (von CloudFlare) oder 8.8.8.8 (von Google)
rm /etc/resolv.conf && echo "nameserver 1.1.1.1" > /etc/resolv.conf
Fügen Sie zusätzliche Repositorien hinzu (nur Debian – Ubuntu hat nginx und brotli nativ):
apt update && apt install git apt-transport-tor curl lsb-release
curl -sSL https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc > /etc/apt/trusted.gpg.d/torproject.asc
curl -sSL https://packages.sury.org/nginx/apt.gpg > /etc/apt/trusted.gpg.d/sury.gpg
echo "deb tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org/ `lsb_release -cs` main" >> /etc/apt/sources.list
echo "deb https://packages.sury.org/nginx/ `lsb_release -cs` main" >> /etc/apt/sources.list
apt update && apt upgrade
Installieren Sie git und klonen Sie dieses Repository
apt update && apt install git && git clone https://github.com/DanWin/hosting && cd hosting
Installieren Sie benutzerdefinierte optimierte Binärdateien
./install_binaries.sh
Beachten Sie, dass Debian auch ein Onion-Service-Paketarchiv hat, daher möchten Sie möglicherweise /etc/apt/sources.list bearbeiten, um von dort zu laden:
deb tor://2s4yqjx5ul6okpp3f2gaunr2syex5jgbfpfvhxxbbjwnrsvbk5v3qbid.onion/debian `lsb_release -cs` main
Kopieren (und nach Ihren Bedürfnissen anpassen) Sie die Site-Dateien in var/www nach /var/www und die Konfigurationsdateien in etc nach /etc, nachdem die Installation abgeschlossen ist. Starten Sie dann einige Dienste neu:
systemctl daemon-reload && systemctl restart bind9.service && systemctl restart [email protected]
Ersetzen Sie die Standard-.onion-Domain durch Ihre Domain:
sed -i "s/dhosting4xxoydyaivckq7tsmtgi4wfs3flpeyitekkmqwu4v4r46syd.onion/`cat /var/lib/tor/hidden_service/hostname`/g" /etc/postfix/sql/alias.cf /etc/postfix/sender_login_maps /etc/postfix/main.cf /var/www/skel/www/index.hosting.html /var/www/common.php /etc/postfix/canonical /etc/postfix-clearnet/canonical /var/www/html/squirrelmail/config/config.php
Für Ihre Clearnet-Domain müssen Sie sie zu relay_domains in /etc/postfix/main.cf hinzufügen und die Standard-Domain in den folgenden Dateien bearbeiten:
/var/www/common.php
/etc/postfix/canonical
/etc/postfix-clearnet/canonical
Dieses Setup hat zwei Postfix-Instanzen, eine zum Empfangen und Senden von E-Mails an andere .onion-Dienste und eine zum Umschreiben von Adressen, um sie an einen Clearnet-Mail-Relay weiterzuleiten. Sie möchten möglicherweise die zweite Instanz erstellen oder nicht, indem Sie Folgendes ausführen:
postmulti -e init
postmulti -I postfix-clearnet -e create
postmulti -i clearnet -e enable
postmulti -i clearnet -p start
Wenn Sie eine Instanz erstellt haben, kommentieren Sie die clearnet-relay-bezogene Konfiguration in etc/postfix/main.cf aus und stellen Sie sicher, dass Sie auch die Konfigurationsdateien von etc/postfix-clearnet kopieren und ändern.
Wenn Sie auf das folgende Problem gestoßen sind: postfix: fatal: chdir(/var/spool/postfix-clearnet): No such file or directory können Sie einfach das chroot von der Standard-Postfix-Instanz wie folgt kopieren: cd /var/spool/ && cp -a postfix/ postfix-clearnet/
Nach dem Kopieren (und Ändern) der Postfix-Konfiguration müssen Sie aus den Mapping-Dateien Datenbanken erstellen (auch jedes Mal, wenn Sie diese Dateien aktualisieren):
postalias /etc/aliases
postmap /etc/postfix/canonical /etc/postfix/sender_login_maps /etc/postfix/transport
postmap /etc/postfix-clearnet/canonical /etc/postfix-clearnet/sasl_password /etc/postfix-clearnet/transport #nur wenn Sie eine zweite Instanz haben