Dokumentation aus dem Wiki uebernommen und um die Dienste auf dem Server
erweitert. Alle Anleitungen sind so geschrieben, dass sich der jeweilige
Dienst allein daraus neu aufsetzen laesst.
docs/ Dienste im Heimnetz (aus dem Wiki, anonymisiert)
services/ Dienste auf dem Server mit Konfigurationsvorlagen
- matrix-synapse: Homeserver, Postgres, Well-Known-Delegation
- coturn: TURN-Relay fuer Anrufe
- element-web: Web-Client
- wikijs, gitea, nginx
Durchgehend anonymisiert: echte Domain durch example.com ersetzt, IP-Adressen
und E-Mail-Adressen durch Platzhalter. Konfigurationsdateien liegen nur als
.example mit Platzhaltern statt echter Secrets vor.
Die Anleitungen halten die Stolpersteine fest, die beim Aufbau tatsaechlich
aufgetreten sind, unter anderem:
- Synapse verlangt LC_COLLATE=C, sonst startet es nicht
- server_name ist nachtraeglich nicht aenderbar -> Delegation noetig
- register_new_matrix_user liest conf.d nicht, Secret muss per -k kommen
- coturn braucht external-ip, sonst kommen keine Medien durch
- Gruppenmitgliedschaft fuer den Zertifikatszugriff wirkt erst beim Neustart
- nginx vererbt add_header nicht in location-Bloecke mit eigenen Direktiven
52 lines
1.6 KiB
Plaintext
52 lines
1.6 KiB
Plaintext
server {
|
|
listen 80;
|
|
listen [::]:80;
|
|
server_name element.example.com;
|
|
location /.well-known/acme-challenge/ { root /var/www/html; }
|
|
location / { return 301 https://$host$request_uri; }
|
|
}
|
|
|
|
server {
|
|
listen 443 ssl;
|
|
listen [::]:443 ssl;
|
|
http2 on;
|
|
server_name element.example.com;
|
|
|
|
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
|
|
include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
|
|
root /var/www/element;
|
|
index index.html;
|
|
|
|
# Element laedt Raum-Inhalte in Iframes/Worker; diese Header sind die
|
|
# von Element empfohlene Mindestabsicherung.
|
|
include /etc/nginx/snippets/element-security.conf;
|
|
|
|
# config.json und index.html duerfen nicht dauerhaft gecacht werden,
|
|
# sonst zeigen Clients nach einem Update alte Serverdaten.
|
|
location = /config.json {
|
|
include /etc/nginx/snippets/element-security.conf;
|
|
add_header Cache-Control "no-cache" always;
|
|
}
|
|
location = /index.html {
|
|
include /etc/nginx/snippets/element-security.conf;
|
|
add_header Cache-Control "no-cache" always;
|
|
}
|
|
location = /version {
|
|
include /etc/nginx/snippets/element-security.conf;
|
|
add_header Cache-Control "no-cache" always;
|
|
}
|
|
|
|
# Gehashte Bundle-Dateien sind unveraenderlich.
|
|
location /bundles/ {
|
|
include /etc/nginx/snippets/element-security.conf;
|
|
add_header Cache-Control "public, max-age=31536000, immutable" always;
|
|
}
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
}
|