installation des solid-servers auf debian.
translated from https://solid.inrupt.com/docs/installing-running-nss
wie in diesem howto installieren wir Node.js und npm:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs build-essential
als root installieren wir den server global:
npm install -g solid-server
nun müssen wir den hostnamen festlegen, wir werden im folgenden beispielhaft your.host.example.org verwenden. entscheiden sie ebenfalls, wo sie die dateien speichern, die der server zum laufen braucht. die datenbank mit konfiguration, daten und unterstützenden metadaten kann auch getrennt gehalten werden, wieauchimmer halten wir sie jedoch zusammen.
weil alles, was mit dem solid-server passiert, verschlüsselt ist, brauchen wir einen ssl-schlüssel und -zertifikat. diese bekommen wir z.b. bei let’ s encrypt. dies geht am einfachsten mit certbot. um certbot auf debian stable zu benutzen, brauchen wir backports. um diese zu verwenden, fügen wir der /etc/apt/sources.list folgendes hinzu:
deb http://ftp.debian.org/debian stretch-backports main
nun installieren wir certbot
apt-get update apt-get -t stretch-backports install certbot
das zertifikat anfordern und installieren
certbot certonly --authenticator standalone -d your.host.example.org
now go
solid init
wir werden nach verschiedenen dingen geprompted, dies könnte so aussehen
? Path to the folder you want to serve. Default is /var/www/your.host.example.org/data ? SSL port to run on. Default is 8443 443 ? Solid server uri (with protocol, hostname and port) https://your.host.example.org ? Enable WebID authentication Yes ? Serve Solid on URL path / ? Path to the config directory (for example: /etc/solid-server) /var/www/your.host.example.org/config ? Path to the config file (for example: ./config.json) /var/www/your.host.example.org/config.json ? Path to the server metadata db directory (for users/apps etc) /var/www/your.host.example.org/.db ? Path to the SSL private key in PEM format /etc/letsencrypt/live/your.host.example.org/privkey.pem ? Path to the SSL certificate key in PEM format /etc/letsencrypt/live/your.host.example.org/fullchain.pem ? Enable multi-user mode No ? Do you want to have a CORS proxy endpoint? Yes ? Serve the CORS proxy on this path /proxy ? Do you want to set up an email service? No config created on /root/config.json
die pfade, die wir gewählt haben, müssen wir nun anlegen. ebenso müssen wir die config.json wo angegeben speichern.
nun sollten wir den server starten können
solid start
wir empfehlen, z.b. systemd zu verwenden, um den server automatisch zu starten und zu stoppen.
da es ein sicherheitsrisiko ist, den server als root zu betreiben, legen wir für ihn einen user an, beispielhaft so
adduser --system --ingroup www-data --no-create-home solid
nun legen wir die datei /lib/systemd/system/solid.service mit folgendem inhalt an
[Unit] Description=solid - Social Linked Data Documentation=https://solid.inrupt.com/docs/ After=network.target [Service] Type=simple User=solid WorkingDirectory=/var/www/your.host.example.org ExecStart=/usr/bin/solid start -v Restart=on-failure [Install] WantedBy=multi-user.target
symlink this
ln -s /lib/systemd/system/solid.service /etc/systemd/system/multi-user.target.wants/
wir weisen den verzeichnissen user zu
cd /var/www/your.host.example.org/ chown solid:www-data config/ data/ .db/
wir machen die config.json datei dem unprivilegierten user readable.
den server nun starten geht so
systemctl start solid.service
nun haben wir auch die anderen funktionalitäten, die durch systemd bereitgestellt werden. der start sollte nun automatisch nach bootvorgang erfolgen.
das zertifikat muss alle paar monate erneuert werden. wir weisen im Let’s Encrypt-setup an, das webroot plugin zu benutzen, das funktioniert besser in dem fall eines laufenden servers. um dies zu tun, editieren wir /etc/letsencrypt/renewal/your.host.example.org.conf
die authenticator line sollte so aussehen
authenticator = webroot
wir setzen ebenfalls folgendes
webroot_path = /var/www/your.host.example.org/data [[webroot_map]] your.host.example.org = /var/www/your.host.example.org/data
nun legen wir noch eine cronjobdatei in /etc/cron.daily/ folgenden inhalts an
#!/bin/bash certbot renew -w /var/www/your.host.example.org/data/
fertig. das moduleREADME finden wir hier. be happy !