Neue statische React/Vite-Website fuer systemmedia.de und die Subdomains bim, ifc, automation und projects.
Die App nutzt einen Codebestand und erkennt ueber den Hostnamen, welche Landingpage angezeigt wird. Sie ist fuer den Betrieb auf einem eigenen Linux-Server vorbereitet, zum Beispiel unter /opt/systemmedia-website.
Aktuelle Zuordnung:
https://github.com/Thomash100/systemmedia.gitfuer die Website auf dem Webserverhttps://github.com/Thomash100/systemmedia-web.gitfuer Raspberry-Pi-Installation und Testshttps://github.com/Thomash100/automation.systemmedia.gitfuerautomation.systemmedia.dehttps://github.com/Thomash100/BIM.SYSTEMMEDIA.gitfuerbim.systemmedia.dehttps://github.com/Thomash100/ifc.systemmedia.gitfuerifc.systemmedia.dehttps://github.com/Thomash100/projects.systemmedia.gitfuerprojects.systemmedia.de
Die erste Version nutzt weiterhin denselben React-Codebestand. Die Subdomain-Repositories koennen denselben Build enthalten oder spaeter zu getrennten Apps ausgebaut werden.
npm ci
npm run devVite startet lokal. Die Hauptseite ist unter http://localhost:5173 erreichbar. Subdomains werden in Produktion per Hostname erkannt; lokal kann die Hauptnavigation genutzt werden.
npm run buildDas statische Ergebnis liegt danach in dist/.
Der Workflow .github/workflows/deploy.yml baut bei Push auf main die statische Website und stellt dist/ als GitHub-Artefakt bereit.
Download in GitHub:
Actions -> Build SYSTEMMEDIA Website -> letzter Run -> Artifacts -> systemmedia-distDieses Artefakt enthaelt nur die fertige statische Website. Den Inhalt in den Webroot hochladen, zum Beispiel httpdocs. SSH-Secrets sind fuer diesen Workflow nicht erforderlich.
Wenn Plesk das GitHub-Repository direkt in httpdocs auscheckt, darf nicht der Repository-Root als Website ausgeliefert werden. Der Root enthaelt die Vite-Entwicklungsdatei index.html mit /src/main.tsx; das funktioniert nur lokal mit npm run dev.
Richtig ist:
Document root: httpdocs/distDer Ordner dist/ ist deshalb fuer Plesk/Git-Deployment im Repository enthalten. Nach jedem Build muss der aktuelle dist-Ordner mit committed und gepusht werden.
Kontrolle online:
Falsch: <script type="module" src="/src/main.tsx">
Richtig: <script type="module" crossorigin src="/assets/index-....js">Empfohlener Pfad:
/opt/systemmedia-websiteDie Webserver-Konfigurationen zeigen auf:
/opt/systemmedia-website/distVor dem Deployment auf systemmedia.de sollte die bestehende Website gesichert werden.
Beispiel fuer Plesk/klassische Webroots:
sudo mkdir -p /opt/backups/systemmedia
sudo rsync -a /var/www/vhosts/systemmedia.de/httpdocs/ /opt/backups/systemmedia/httpdocs-$(date +%Y%m%d-%H%M%S)/Falls die alte Website eine Datenbank verwendet, diese separat sichern, zum Beispiel per Plesk-Backup oder mysqldump.
Alle Domains/Subdomains sollen auf die Server-IP zeigen:
- A-Record
systemmedia.deauf Server-IP - A-Record
www.systemmedia.deauf Server-IP oder CNAME aufsystemmedia.de - A-Record
bim.systemmedia.deauf Server-IP - A-Record
ifc.systemmedia.deauf Server-IP - A-Record
automation.systemmedia.deauf Server-IP - A-Record
projects.systemmedia.deauf Server-IP
Siehe Caddyfile.example. Caddy kann HTTPS automatisch bereitstellen, sofern DNS korrekt zeigt und Ports 80/443 erreichbar sind.
sudo cp Caddyfile.example /etc/caddy/Caddyfile
sudo systemctl reload caddyFür den Betrieb auf einem Raspberry Pi mit eigenem Webserver siehe:
docs/RASPBERRY_PI.mdDie passende Caddy-Konfiguration liegt hier:
Caddyfile.raspberrypi.exampleDirekte Installation aus einem GitHub-Repository auf dem Pi:
sudo mkdir -p /opt/systemmedia-website
sudo chown -R $USER:www-data /opt/systemmedia-website
git clone https://github.com/Thomash100/systemmedia-web.git /opt/systemmedia-website
cd /opt/systemmedia-website
bash scripts/install-pi.shSpätere Updates:
bash scripts/update-pi.shDas Install-Script kann die Website optional mit HTTP Basic Auth schuetzen. Der vorbereitete Benutzername lautet:
adminDas Passwort wird beim Installieren auf dem Raspberry Pi abgefragt und nicht im Repository gespeichert.
Siehe nginx.conf.example. Fuer HTTPS sollte zusaetzlich Certbot, Plesk oder eine bestehende TLS-Verwaltung genutzt werden.
React-Fallback:
try_files $uri $uri/ /index.html;Optional kann die Website als Container gebaut werden:
docker compose up -d --buildDer Container liefert die gebaute Website intern ueber Caddy aus.
- Impressum: https://systemmedia.de/impressum/
- Datenschutz / DSGVO-Hinweise: https://systemmedia.de/datenschutz/
- Nutzungsbedingungen und Haftungsausschluss: https://systemmedia.de/nutzungsbedingungen/
Die bereitgestellten Inhalte und Softwarebestandteile dienen, sofern nicht anders angegeben, Test-, Entwicklungs-, Demonstrations- und Evaluierungszwecken. Nutzung auf eigene Verantwortung. Weitere Hinweise stehen in LEGAL.md.
- Projekt- und Leistungsdaten liegen in
src/data. - Subdomain-Routing liegt in
src/utils/hostname.ts. - SEO-Metadaten werden domainabhaengig in
src/App.tsxgesetzt. - Das Logo liegt unter
public/logo-systemmedia.svgund kann durch ein finales SVG ersetzt werden.