Ein Leitfaden zum Veröffentlichen einer Website von Ihrem Heimcomputer aus
Warum eine Website von Ihrem Heimcomputer aus veröffentlichen?
Es ist eine ideale Lösung zum Veröffentlichen von Websites von Ihrem Heimcomputer aus, zum Erstellen schneller Demos und Prototypen, zum Teilen persönlicher Projekte und zum Erstellen einer Schulungs- und Testumgebung. Allerdings gibt es einige Einschränkungen: * Wenn der Computer ausgeschaltet ist, wird die Site geschlossen. * Die Upload-Geschwindigkeit im Internet zu Hause wirkt sich auf die Leistung aus. * VPS wird für kontinuierlichen und hohen Datenverkehr empfohlen.
Cloudflare-Tunnellogik
Cloudflare-Tunnel: Der Datenverkehr gelangt zuerst zu Cloudflare und wird dann von Cloudflare über den Tunnel an Ihren Computer weitergeleitet. Auf diese Weise wird der Port am Modem nicht geöffnet, die IP wird nicht in den Domainnamen geschrieben und HTTPS kommt automatisch.
Überblick über die Architektur
Die Architekturübersicht sieht wie folgt aus: * Nginx: Wiederherstellungs-Proxy * PHP-FPM: PHP-Ausführung * Node.js: API oder Dienst * Cloudflare Tunnel: Sicherer Ausgang zur Außenwelt
Domänennamen
Domänennamen lauten wie folgt: * site.com -> localhost:80 * api.site.com -> localhost:3000
Anforderungen
Die Anforderungen lauten wie folgt: * Domänenname * Cloudflare-Konto * Windows- oder Linux-Computer * Nginx * PHP-FPM * Node.js * Cloudflared
Schritt-für-Schritt-Installation
Linux-Installation
1) Systemaktualisierung
sudo apt update -y && sudo apt upgrade -y
2) Nginx + PHP-FPM
sudo apt install -y nginx php-fpm sudo systemctl enable nginx sudo systemctl start nginx Test: curl http://localhost
3) Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v Beispieldienst: mkdir -p ~/nodeapi cd ~/nodeapi npm init -y npm i express printf "const express=require('express');const app=express();app.get('/',(r,s)=>s.send('ok'));app.listen(3000);" > index.js Knoten index.js
4) Nginx Reverse Proxy
sudo tee /etc/nginx/sites-available/site.com <<'EOF' server { listen 80; server_namesite.com; root /var/www/site; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php-fpm.sock; } } EOF sudo tee /etc/nginx/sites-available/api.site.com <<'EOF' server { listen 80; Servername api.site.com; Standort / { Proxy_pass http://127.0.0.1:3000; Proxy_http_version 1.1; Proxy_set_header Upgrade $http_upgrade; Proxy_set_header Verbindung 'Upgrade'; Proxy_set_header Host $host; } } EOF sudo ln -s /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com sudo ln -s /etc/nginx/sites-available/api.site.com /etc/nginx/sites-enabled/api.site.com sudo nginx -t sudo systemctl nginx neu laden
5) Cloudflared
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared-linux-amd64.deb cloudflared -v
6) Tunnelbau
cloudflared login cloudflared tunnel create mytunnel cloudflared tunnel route dns mytunnel site.com cloudflared tunnel route dns mytunnel api.site.com `~/.cloudflared/config.yml`: tunnel: mytunnel credentials-file: /home/user/.cloudflared/benimtunnel.json ingress: - hostname: site.com service: http://localhost:80 – Hostname: api.site.com Dienst: http://localhost:3000 – Dienst: http_status:404 cloudflared tunnel run mytunnel
Windows-Setup
1) Nginx + PHP
* Nginx für Windows herunterladen * PHP herunterladen und php.ini konfigurieren * Nginx auf Port 80 ausführen
2) Node.js
* Node.js installieren * Beispieldienst:
mkdir %USERPROFILE%\nodeapi cd %USERPROFILE%\nodeapi npm init -y npm i express node -e "const express=require('express');const app=express();app.get('/',(r,s)=>s.send('ok'));app.listen(3000)"
3) Nginx Reverse Proxy (Windows)
* Serverblöcke zu „nginx.conf“ hinzufügen und neu starten
4) Wolkenflair
* Cloudflared Windows-Binär-Download * Beispielbefehle: „html cloudflared -v cloudflared login cloudflared tunnel create mytunnel cloudflared tunnel route dns mytunnel site.com cloudflared tunnel route dns mytunnel api.site.com cloudflared tunnel run mytunnel „“
HTTPS und Sicherheit
HTTPS kommt automatisch, IP ist ausgeblendet und grundlegender WAF- und DDoS-Schutz ist aktiviert. Zusätzliche Empfehlungen: * Admin-Panels auf Subdomain belassen * Token-Verifizierung für API hinzufügen * Nginx-Ratenbegrenzung anwenden
Leistung
Leistung ist ausschlaggebend für die Upload-Geschwindigkeit. Für den Einsatz rund um die Uhr wird eine USV empfohlen.
FAQ
* Muss ich eine IP-Adresse eingeben? Nein * Werde ich einen Port öffnen? Nein * Ist es ohne meinen Domainnamen möglich? Das passiert bei einer temporären Testadresse. * Was passiert, wenn der Computer herunterfährt? Der Zugriff auf die Website ist unterbrochen. Mit dieser Methode können Sie Ihren Heimcomputer in einen sicheren Server verwandeln und Ihre PHP- und Node.js-Projekte der Welt zugänglich machen. Es ist die ideale Lösung für Lern-, Demo- und Kleinprojekte.