Umbenannt & aufgesplittet

This commit is contained in:
2017-04-29 12:03:48 +02:00
commit 775413078b
12 changed files with 834 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.DS_Store

50
ddclient.md Normal file
View File

@ -0,0 +1,50 @@
## ddclient installieren
vgl. [http://www.forum-raspberrypi.de/Thread-tutorial-dynamic-dns](http://www.forum-raspberrypi.de/Thread-tutorial-dynamic-dns)
### Anmerkung
*Die dynamische DNS ist in diesem Beispiel bei [NoIP](https://no-ip.com) gehostet. Bei anderen Anbietern kann die erste Zeile der Konfigurations-Datei abweichen.*
**Client laden**
```xml
sudo apt install ddclient -y
```
(Fragen können alle übersprungen werden (ENTER), die Konfigurationsdatei wird im nächsten Schritt bearbeitet)
**Config-Dateien anpassen**
```xml
sudo nano /etc/ddclient.conf
```
-> Ändern:
```xml
protocol=noip
use=web, web=checkip.dyndns.com, web-skip='IP Address'
server=dynupdate.no-ip.com
login='test@mail.com'
password='secret'
domain.ddns.net
```
**Update-Rate verändern**
```xml
sudo nano /etc/default/ddclient
```
-> Ändern (z.B. alle 2 Stunden = 7200s):
daemon_interval="7200"
**Testen, ob der Client funktioniert**
```xml
sudo ddclient -daemon=0 -debug -verbose -noquiet 2 /etc/ddclient.conf
```
**Daemon neustarten**
```xml
sudo /etc/init.d/ddclient restart
```

46
ersteinrichtung.md Normal file
View File

@ -0,0 +1,46 @@
## Ersteinrichtung Rapsberry Pi
### Voraussetzungen
* Raspberry Pi
* microSD Karte mit mind. 8 GB
* Einen anderen Computer
### Installation des Betriebssystems
* Aktuelle Version von Raspbian Lite [hier](https://www.raspberrypi.org/downloads/raspbian/) laden
* Mit Win32 Disk Imager auf die MicroSD Karte schreiben
* Eine leere Datei mit dem Namen "ssh" unter /boot erstellen (um den SSH-Dienst zu aktivieren)
* microSD Karte in den Pi stecken, Ethernet und Stromkabel anschließen
* Per SSH auf den Raspberry Pi verbinden (ssh pi@raspberrypi; Benutzer: pi; Passwort:
raspberry)
## Standardeinstellungen ändern
```xml
sudo raspi-config
```
**Passwort ändern**
Punkt 1 wählen und dem Assistenten folgen
**Sprache ändern**
Punkt 4 wählen, dann Punkt 1 wählen
-> Scrollen bis „de_DE.UTF-8 UTF-8“, Leertaste drücken, Tabtaste drücken, mit Enter auf „OK“
**Zeitzone ändern**
Punkt 4 wählen, dann Punkt 2 wählen, Europa -> Berlin
**Tastaturlayout ändern**
Punkt 4 wählen, dann Punkt 3 wählen
**WLAN-Land ändern**
Punkt 4 wählen, dann Punkt 4 wählen, scrollen bis „DE Germany“, Enter
**Datei-System erweitern**
Punkt 7, dann Punkt 1
**Memory Split ändern**
Punkt 7 wählen, dann Punkt 3 wählen, Wert auf 16 ändern
**Setup abschließen**
Mit Tabtaste zu "Finish" navigieren, Neustart bestätigen

52
externes-laufwerk.md Normal file
View File

@ -0,0 +1,52 @@
## Daten auf externem Medium speichern
**Als Root anmelden**
```xml
sudo -s
```
**Alle Laufwerke anzeigen lassen**
```xml
fdisk -l
```
(externes Laufwerk ist z.B. /dev/sda1)
**Verzeichnis erstellen, in welches Laufwerk eingehängt wird**
```xml
mkdir externes-laufwerk
```
**Externes Medium mounten**
```xml
mount -t auto /dev/sda1 /media/externes-laufwerk
```
##Externes Medium beim Neustart automatisch einbinden
**UUID des externen Laufwerkes ermitteln**
```xml
sudo blkid
```
-> UUID des gewünschten Mediums kopieren
**fstab bearbeiten**
```xml
nano /etc/fstab
```
-> Einfügen:
```xml
UUID="ABCD-EFGH-IJKL" /media/externes-laufwerk auto *OPTION* 0 0
```
**OPTION**
* auto: Das medium wird zum Starten des Pi zwingend benötigt. Der Pi startet nicht, wenn das Medium nicht angeschlossen ist
* nofail: Das Laufwerk muss nicht zwangsläufig angeschlossen sein. Wenn es angeschlossen wird, wird es automatisch gemounted

70
gitea.md Normal file
View File

@ -0,0 +1,70 @@
## Gitea auf dem Raspberry Pi
**Benötigte Pakete installieren**
```xml
sudo apt install git mysql-server -y
```
(Während des Vorgangs das root Passwort festlegen)
**Ordner für Gitea anlegen**
```xml
mkdir gitea
```
**Gitea Binary laden**
```xml
wget -O gitea https://dl.gitea.io/gitea/1.x.x/gitea-1.1.0-linux-arm-7
```
**Binary ausführbar machen**
```xml
sudo chmod +x gitea
```
**Gitea starten**
```xml
./gitea web
```
Im Browser http://IP-Adresse:3000 aufrufen und konfigurieren
### Gitea bei Systemstart ausführen
```xml
sudo nano /etc/systemd/system/gitea.service
```
-> Dort einfügen:
```xml
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service
[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/gitea
ExecStart=/home/pi/gitea/gitea web
Restart=always
Environment=USER=pi HOME=/home/pi
[Install]
WantedBy=multi-user.target
```
**Dienst aktivieren**
```xml
sudo systemctl enable gitea.service
sudo systemctl daemon-reload
```

23
mysql-externer-zugriff.md Normal file
View File

@ -0,0 +1,23 @@
## Zugriff auf MySQL von außerhalb
**MySQL Config-Datei bearbeiten**
```xml
sudo nano /etc/mysql/my.conf
```
->Suche (CTRL+W) nach "bind", Zeile auskommentieren
**MySQL neu starten**
```xml
sudo /etc/init.d/mysql restart
```
**Rechte in der DB setzen**
```xml
mysql -p -u root
use ***db***;
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'RootPassword';
exit
```

102
nextcloud-update.md Normal file
View File

@ -0,0 +1,102 @@
## Nextcloud Update
### Anmerkungen
* Alle Nutzer sollten abgemeldet sein
* Drittanbieter-Apps müssen nach dem Update wieder aktiviert werden. Die Daten bleiben erhalten
**Als Root anmelden**
```xml
sudo -s
```
**Ins Nextloud-Verzeichnis wechseln**
```xml
cd /var/www/nextcloud
```
**Wartungsmodus aktivieren**
```xml
sudo -u www-data php occ maintenance:mode --on
```
**Eine Ebene nach oben wechseln**
```xml
cd..
```
**Update laden**
```xml
wget https://download.nextcloud.com/server/releases/nextcloud-xxx.tar.bz2
```
**Webserver (NGINX) stoppen**
```xml
/etc/init.d/nginx stop
```
**Altes Verzeichnis umbenennen**
```xml
mv nextcloud nextcloud-alt
```
**.tar entpacken**
```xml
tar xvjf nextcloud-xxx.tar.bz2
```
**Config-Datei kopieren**
```xml
cp nextcloud-alt/config/config.php nextcloud/config/config.php
```
**Daten-Verzeichnis kopieren**
*Nicht nötig, wenn das Daten-Verzeichnis auf einem externen Medium liegt*
```xml
cd nextcloud-alt
cp -R data /var/www/nextcloud
```
**Eigentümer des Ordners ändern**
```xml
chown -R www-data:www-data /var/www/nextcloud
```
**Webserver (NGINX) wieder starten**
```xml
/etc/init.d/nginx start
```
**Wartungsmodus deaktivieren**
```xml
cd /var/www/nextcloud
sudo -u www-data php occ maintenance:mode --off
```
IP-Adresse des Pi im Browser aufrufen und "Aktualisierung starten" klicken
**Schlüssel für serverseitige Verschlüsselung übertragen**
*Nur nötig, wenn die OwnCloud verschlüsselt wurde*
```xml
sudo -u www-data php occ encryption:migrate-keys
```
**Update-Verzeichnis und alte Nextcloud-Instanz löschen**
```xml
cd ..
rm -rf nextcloud-xxx.tar.bz2 nextcloud-alt
```

356
nextcloud.md Normal file
View File

@ -0,0 +1,356 @@
## Nextcloud auf dem Raspberry Pi 3
### Ersteinrichtung des Raspberry Pi
Siehe [Ersteinrichtung](https://cdng.ddns.net/gitea/julian/raspberry-pi/src/master/Ersteinrichtung.md)
## Vorbereitungen
vgl. [Anleitung von AvoidErrors](http://www.avoiderrors.net/owncloud-raspberry-pi/)
**Aktualisierung suchen & installieren**
```xml
sudo apt update && sudo apt upgrade -y && sudo reboot
```
**Benutzer www-data zur Gruppe www-data hinzufügen**
```xml
sudo usermod -a -G www-data www-data
```
**Benötigte Pakete installieren**
```xml
sudo apt install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-curl php5-gd php5-fpm memcached php5-memcache varnish -y
```
**Eigenes SSL-Zertifikat erstellen**
```xml
sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
```
**Zugriffsrechte des Zertifikats ändern**
```xml
sudo chmod 600 /etc/nginx/cert.pem
sudo chmod 600 /etc/nginx/cert.key
```
**Alte nginx config-Datei sichern**
```xml
sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default_old
```
**Neue config-Datei erstellen**
```xml
sudo nano /etc/nginx/sites-available/default
```
**Dort einfügen:**
*An 2 Stellen muss die IP-Adresse oder die dynamische DNS eingetragen werden! Außerdem müssen die Pfade zum SSL-Zertifikat und zu den Diffie-Hellman-Parametern geändert werden.*
```xml
upstream php-handler {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name IP-Adresse oder dynamische DNS;
# Enforce HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name IP-Adresse oder dynamische DNS;
ssl_certificate /path/to/cert
ssl_certificate_key /path/to/private-key;
# Security Headers
add_header Strict-Transport-Security "max-age=15768000";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /path/to/dh-params
ssl_session_cache shared:ssl_session_cache:10m;
# Path to the root of your installation
root /var/www;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location = /.well-known/carddav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
location /.well-known/acme-challenge { }
location ^~ /nextcloud {
# set max upload size
client_max_body_size 20148M;
fastcgi_buffers 64 4K;
# Disable gzip to avoid the removal of the ETag header
gzip off;
error_page 403 /nextcloud/core/templates/403.php;
error_page 404 /nextcloud/core/templates/404.php;
location /nextcloud {
rewrite ^ /nextcloud/index.php$uri;
}
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
# fastcgi_request_buffering off;
}
location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js|woff|svg|gif)$ {
try_files $uri /nextcloud/index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended
# to have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read
# into this topic first.
# add_header Strict-Transport-Security "max-age=15768000;
# includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
}
location ~* \.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /nextcloud/index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
}
```
**PHP-conf bearbeiten**
```xml
sudo nano /etc/php5/fpm/pool.d/www.conf
```
-> listen = 127.0.0.1:9000
**conf-swapsize ändern**
```xml
sudo nano /etc/dphys-swapfile
```
-> CONF_SWAPSIZE = 512
**Pi neustarten**
sudo reboot
## Nextcloud installieren
**Als Root anmelden**
```xml
sudo -s
```
**Ordner erstellen**
```xml
mkdir -p /var/www/nextcloud
```
**Verzeichnis wechseln**
```xml
cd /var/www/
```
**Nextcloud laden**
```xml
wget https://download.nextcloud.com/server/releases/nextcloud-xxx.tar.bz2
```
**.tar entpacken**
```xml
tar xvjf nextcloud-xxx.tar.bz2
```
**User „www-data“ zum Eigentümer des Ordners machen**
```xml
chown -R www-data:www-data /var/www/nextcloud
```
**Alte Dateien entfernen**
```xml
rm -rf nextcloud-xxx.tar.bz2
exit
```
## Datenbank ändern (MySQL)
**Benötigte Pakete installieren**
```xml
sudo apt install mysql-server php5-mysql -y
```
(Während des Vorgangs das root Passwort festlegen)
**Datenbank erstellen**
```xml
mysql -p -u USER
CREATE DATABASE IF NOT EXISTS nextcloud;
exit
```
## Nextcloud öffnen & konfigurieren
* IP-Adresse des Raspberry Pi im Browser eingeben
* Administrator-Account erstellen
* Unten bei Speicher & Datenbank „MySQL/MariaDB“ auswählen
-> Benutzer: root, PW: vorhin festgelegt, DB-Name: nextcloud, Host: localhost
## Signiertes SSL-Zertifikat installieren
Siehe [Signiertes SSL-Zertifikat installieren](https://cdng.ddns.net/gitea/julian/raspberry-pi/src/master/signiertes-ssl-zertifikat.md)
## ddclient installieren
Siehe [ddclient installieren](https://cdng.ddns.net/gitea/julian/raspberry-pi/src/master/ddclient.md)
## Daten auf externem Medium speichern
Siehe zuerst [Externes Laufwerk einbinden](https://cdng.ddns.net/gitea/julian/raspberry-pi/src/master/externes-laufwerk.md)
**Als Root anmelden**
```xml
sudo -s
```
**Speicherort der Nextcloud-Daten ermitteln**
```xml
nano /var/www/nextcloud/config/config.php
```
-> Eintrag: datadirectory (Standard: /var/www/owncloud/data)
-> Ändern in: /home/pi/usbstick
**Nextcloud-Daten auf das externe Medium kopieren**
```xml
cp -R /var/www/nextcloud/data/. /home/pi/usbstick
```
**Überprüfen, ob Daten da sind**
```xml
cd /home/pi/usbstick && ls -la
```
**Datei-Eigentümer der Datenkopie ändern**
```xml
chown -R www-data:www-data /home/pi/usbstick
```
**Überprüfen, ob Eigentümer geändert wurde**
```xml
ls -la
```
**Original-Ordner nach erfolgreichem Umziehen der Daten löschen**
```xml
cd /var/www/nextcloud
rm -rf data
exit
```
## Anpassungen
**Cache konfigurieren**
```xml
sudo nano /var/www/nextcloud/config/config.php
```
-> Unten einfügen: 'memcache.local' => '\OC\Memcache\APC',
**PHP-Path Variablen**
```xml
sudo nano /etc/php5/fpm/pool.d/www.conf
```
Suche (CTRL+W) nach "env[HOSTNAME]"
-> Bei allen folgenden env-Variablen (HOSTNAME, PATH, TMP, TMPDIR, TEMP) das ";" entfernen
**Datei-Limits anheben**
```xml
sudo nano /var/www/nextcloud/.user.ini
```
-> Ändern:
upload\_max\_file\_size=2048M
post\_max\_size=2048M

View File

@ -0,0 +1,16 @@
## Öffentliche Schlüssel von alten Paketen (Backports) importieren
```xml
sudo apt update
```
**Ausgabe (Beispiel):**
W: GPG-Fehler: http://ftp.debian.org jessie-backports InRelease: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY 123456
**Fehlenden Schlüssel importieren**
```xml
gpg --keyserver pgpkeys.mit.edu --recv-key 123456
gpg -a --export 123456 | sudo apt-key add -
sudo apt update
```

View File

@ -0,0 +1,69 @@
## Signiertes SSL-Zertifikat installieren
**Backports zulassen**
```xml
sudo nano /etc/apt/sources.list
```
-> Einfügen: deb http://ftp.debian.org/debian jessie-backports main
**Quellen aktualisieren**
```xml
sudo apt update
```
**Schlüssel reparieren**
*Nur nötig, falls eine Fehlermeldung erscheint*
Siehe [Öffentliche Schlüssel von alten Paketen (Backports) importieren](https://cdng.ddns.net/gitea/julian/raspberry-pi/src/master/oeffentliche-schluessel-importieren.md)
**Certbot installieren**
```xml
sudo apt install certbot -t jessie-backports -y
```
**nginx beenden**
```xml
sudo /etc/init.d/nginx stop
```
**Certbot ausführen**
```xml
sudo certbot certonly
```
(Option 2: Automatically use a temporary webserver, Adresse der Dynamischen DNS eingeben)
**nginx wieder starten**
```xml
sudo /etc/init.d/nginx start
```
**nginx-config bearbeiten**
```xml
sudo nano /etc/nginx/sites-available/default
```
-> Ändern:
```xml
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/domain.xx/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.xx/privkey.pem;
}
```
**Zertifikat erneuern**
*Zertifikate laufen alle 90 Tage ab*
```xml
sudo -s
/etc/init.d/nginx stop
certbot certonly -d DOMAINNAME
/etc/init.d/nginx start
```

37
ssh-login-nachricht.md Normal file
View File

@ -0,0 +1,37 @@
## SSH Willkommens-Nachricht ändern
## Nachricht *vor* Login
```xml
sudo nano /etc/ssh/sshd_config
```
-> Suchen (Ctrl+W): Banner
Ändern: Banner /etc/banner
**Nachricht erstellen**
```xml
sudo nano /etc/banner
```
-> Dort beliebige Nachricht einfügen
**SSH-Dienst neu starten**
```xml
sudo /etc/init.d/ssh restart
```
## Nachricht *nach* Login
**"Message of the Day" (MOTD) bearbeiten**
```xml
sudo nano /etc/motd
```
-> Dort beliebige Nachricht einfügen
**SSH-Dienst neu starten**
```xml
sudo /etc/init.d/ssh restart
```

12
wifi.md Normal file
View File

@ -0,0 +1,12 @@
## WiFi am Raspberry Pi aktivieren
sudo nano /etc/wpa\_supplicant/wpa\_supplicant.conf
```xml
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={
ssid="xx"
psk="xx"
}
```