inazr
Stamm-User
- 157
In diesem Thread erkläre ich wie ihr eure Kontakte, den Kalender, eure Fotos und Dateien sicher übers Internet zwischen euren Geräten synchronisieren könnt.
Dazu benutzen wir einen ownCloud Server auf den wir über https unsere Daten sichern.
Das Tutorial erklärt die einzelnen Schritte für Windows und auf Debian basierende Linuxdistros.
Als Browser verwende ich Firefox.
Ihr benötigt:
Root
RaspberryPi (oder Vergleichbare Linux Hardware)
Router + Zugriff
Putty -> klick mich
DavDroid -> PlayStore
ownCloud -> PlayStore
nsupdate.info Account -> klick mich
Zeit
Tutorial:
Mir ist bewusst, dass man für das Tutorial ein wenig Zeit aufwenden muss und ich stehe für Fragen und oder Verbesserungsvorschläge gerne zur Verfügung!
//Edit: Ich würde gerne einen zweiten Post direkt im Anschluss für ein F.A.Q. haben. Aber ich kann diesen Post immer nur ergänzen. Kann das ein MOD ändern?
Dazu benutzen wir einen ownCloud Server auf den wir über https unsere Daten sichern.
Das Tutorial erklärt die einzelnen Schritte für Windows und auf Debian basierende Linuxdistros.
Als Browser verwende ich Firefox.
Ihr benötigt:
Root
RaspberryPi (oder Vergleichbare Linux Hardware)
Router + Zugriff
Putty -> klick mich
DavDroid -> PlayStore
ownCloud -> PlayStore
nsupdate.info Account -> klick mich
Zeit
Tutorial:
Vorbereitung:
nsupdate.info:
RaspberryPi:
Router // Browser:
Android:
1.2.
Entpackt die ZIP Datei
3.
Brennt das image auf die Speicherkarte des RaspberryPi:
WINDOWS: Image Writer -> Link.de
LINUX: Terminal :
4.WINDOWS: Image Writer -> Link.de
LINUX: Terminal :
Code:
sudo dd bs=4M if=/home/<USERNAME>/Downloads/2015-05-05-raspbian-wheezy.img of=/dev/<SDKARTE>
Startet den RaspberryPi an mit angeschlossenem Bildschirm, Maus und Tastatur.
Im Configurationsmenü führen wir folgende Befehle aus:
Weiterführende Infos: klick mich
5.Im Configurationsmenü führen wir folgende Befehle aus:
- expand_rootfs
- change_pass -> beliebiges Passwort
- overclock -> mode 'medium'
- ssh -> enable
- boot_behaviour -> Console
Weiterführende Infos: klick mich
Danach könnt ihr den RPi mit Strom und Lan Verbindung hinterm Schrank verstecken, wir brauchen jetzt keine physischen Zugriff mehr.
6.
Ladet euch die aktuelle putty Version herunter ->
nsupdate.info:
7.
Erstellt euch auf https://nsupdate.info/ einen Account und legt einen beliebigen Host an -> beispiel.nsupdate.info
Lasst am besten den Browser offen, wir brauchen die Seite gleich noch einmal
Lasst am besten den Browser offen, wir brauchen die Seite gleich noch einmal
RaspberryPi:
RaspberryPi -> Die Original Tutorials sind alle von JanKarres.de übernommen. Dort werden die einzelnen Schritte auch erläutert. Der Dank sollte an dieser Stelle an ihn gehen! Ich habe am Ende nur noch 2-3 Schritte hinzugefügt.
8.
8.
Startet Putty und verbindet euch zu eurem RaspberryPi (Wenn ihr die IP nicht wisst, guckt sie in eurem Router nach).
login as: 'pi'
password: 'beliebiges Passwort' (von Schritt 4. oben!)
Wichtig:
9.login as: 'pi'
password: 'beliebiges Passwort' (von Schritt 4. oben!)
Wichtig:
- 'Strg + V' wird in Putty über die dritte Maustaste durchgeführt!
- Speichern in Nano geschieht über 'Strg + O', schließen einer Datei über 'Strg + X'
Einfach die folgenden Schritte stupide ausführen:
Während der Installation wird nach einem Passwort für MySQL gefragt, wählt hier ein sicheres aus! -> <MySQLrootPW>
durch
und weiter unten
durch
Speichern + Schließen
[/code]
Durch
und fügt am Ende der Datei folgende Zeilen hinzu
Speichern + Schließen
[/code]
Wichtig: Bei den nächsten Schritten werdet ihr nach einem 'Common Name' gefragt, gebt dort unbedingt eure ns-update.info URL ein. -> 'beispiel.nsupdate.info' Alle anderen Felder könnt ihr nach belieben ausfüllen
durch: (2x Bei 192.168.178.XX; eure RPi IP eintragen!)
Speichern + Schließen
[/code]
PASSWORD durch ein sicheres Passwort ersetzen -> <MySQLuserPW>
Guckt unter: https://owncloud.org/install/#instructions-server die aktuelle Version nach... z.Zt. 8.0.3
Geht auf https://nsupdate.info/overview/ -> wählt euren Host aus -> Show Configuration -> ddclient und kopiert den Text einmal komplett in die offene Datei.
Wichtig: Jedes mal wenn ihr auf Show Configuratin geht wird ein neues Passwort festgelegt! Ihr müsst danach jedes mal die Datei ändern. Also bitte nur ein mal aufrufen...
Speichern + Schließen
und am Ende folgenden Code einfügen
Wir benötigen Putty später noch einmal, also lasst das Fenster ruhig erstmal offen.
Code:
sudo apt-get install nginx php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd php-apc php5-curl mysql-server php5-mysql
Code:
sudo sed -i "s/worker_processes 4;/worker_processes 1;/g" /etc/nginx/nginx.conf
Code:
sudo sed -i "s/worker_connections 768;/worker_connections 128;/g" /etc/nginx/nginx.conf
Code:
sudo /etc/init.d/nginx start
Code:
sudo nano /etc/nginx/sites-available/default
Code:
Ersetzt
[CODE]# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
Code:
# pass the PHP scripts to PHP-FPM server listening on unix socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files
location ~ /\.ht {
deny all;
}
Code:
index index.html index.htm;
Code:
index index.html index.htm index.php;
[/code]
Code:
sudo /etc/init.d/nginx restart
Code:
sudo /etc/init.d/php5-fpm restart
Code:
sudo su -c 'echo "CONF_SWAPSIZE=1024" > /etc/dphys-swapfile'
Code:
sudo dphys-swapfile setup
Code:
sudo dphys-swapfile swapon
Code:
sudo nano /etc/php5/fpm/php.ini
Code:
Ersetzt
[CODE]upload_max_filesize = 2M
post_max_size = 8M
;default_charset = "UTF-8"
Code:
upload_max_filesize = 2048M
post_max_size = 2048M
default_charset = "UTF-8"
Code:
upload_tmp_dir = /srv/http/owncloud/data
extension = apc.so
apc.enabled = 1
apc.include_once_override = 0
apc.shm_size = 256
[/code]
Code:
sudo mkdir -p /srv/http/owncloud/data
Code:
sudo chown www-data:www-data /srv/http/owncloud/data
Code:
sudo mkdir /etc/nginx/ssl
Code:
sudo openssl genrsa -out /etc/nginx/ssl/owncloud.key 4096
Code:
sudo openssl req -new -sha256 -key /etc/nginx/ssl/owncloud.key -out /etc/nginx/ssl/owncloud.csr
Code:
sudo openssl x509 -req -sha256 -days 3650 -in /etc/nginx/ssl/owncloud.csr -signkey /etc/nginx/ssl/owncloud.key -out /etc/nginx/ssl/owncloud.crt
Code:
sudo nano /etc/nginx/sites-available/default
Code:
Ersetzt
[CODE]server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
root /usr/share/nginx/www;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
allow ::1;
deny all;
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /usr/share/nginx/www;
#}
# pass the PHP scripts to PHP-FPM server listening on unix socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files
location ~ /\.ht {
deny all;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
Code:
server {
listen 80;
server_name 192.168.178.XX;
rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}
server {
listen 443 ssl;
server_name 192.168.178.XX;
ssl_certificate /etc/nginx/ssl/owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/owncloud.key;
root /var/www/owncloud;
index index.php;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
[/code]
Code:
sudo /etc/init.d/nginx restart
Code:
sudo /etc/init.d/php5-fpm restart
Code:
mysql -u root -p
Code:
CREATE DATABASE owncloud CHARACTER SET utf8;
Code:
GRANT ALL ON owncloud.* TO 'owncloud'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Code:
exit
Code:
sudo mkdir /var/www
Code:
cd /var/www
Code:
sudo wget https://download.owncloud.org/community/owncloud-8.0.3.tar.bz2
Code:
sudo tar xvf owncloud-8.0.3.tar.bz2
Code:
sudo rm owncloud-8.0.3.tar.bz2
Code:
sudo chown -R www-data:www-data /var/www
Code:
sudo apt-get install ddclient
Code:
sudo nano /etc/ddclient.conf
Wichtig: Jedes mal wenn ihr auf Show Configuratin geht wird ein neues Passwort festgelegt! Ihr müsst danach jedes mal die Datei ändern. Also bitte nur ein mal aufrufen...
Code:
# /etc/ddclient.conf
# this will update your ipv4 address to the address
# the web service sees requests coming from:
protocol=dyndns2
use=web, web=http://ipv4.nsupdate.info/myip
ssl=yes # yes = use https for updates
server=ipv4.nsupdate.info
login=androidhilfe.nsupdate.info
password='<ZEICHENFOLGE>'
beispiel.nsupdate.info
# ddclient releases <= 3.8.1 do not support IPv6,
# but there is a patch for IPv6 from Eduardo Trapani.
# using such a patched ddclient, the following should work:
#
# this will update your IPv6 address to the interface address:
#protocol=dyndns2
#usev6=if, if=eth0
#ssl=yes # yes = use https for updates
#server=ipv6.nsupdate.info
#login=beispiel.nsupdate.info
#password='<ZEICHENFOLGE>'
#androidhilfe.nsupdate.info
Code:
sudo crontab -u www-data -e
Code:
*/15 * * * * php -f /var/www/owncloud/cron.php
Router // Browser:
10.
Geht auf die Weboberfläche eures Routers und sucht nach einer Option die 'Port Forwarding', bzw. 'Port Weiterleitung' o.Ä. heißt.
Dort müsst ihr externe Portzugriffe eines beliebigen Ports auf den Port 443 eurer RaspberryPi IP-Adresse weiterleiten. Bei mir sieht die Option folgendermaßen aus:
Ein Zugriff auf meine Domain über Port 8443 wird auf den RaspberryPi Port 443 weiter geleitet. Wenn ihr keinen Eingangsport festlegen wollt, dann lasst in allen folgenden Schritten ':<PORT>' weg.
11.Dort müsst ihr externe Portzugriffe eines beliebigen Ports auf den Port 443 eurer RaspberryPi IP-Adresse weiterleiten. Bei mir sieht die Option folgendermaßen aus:
Ein Zugriff auf meine Domain über Port 8443 wird auf den RaspberryPi Port 443 weiter geleitet. Wenn ihr keinen Eingangsport festlegen wollt, dann lasst in allen folgenden Schritten ':<PORT>' weg.
Wenn alles erfolgreich geklappt hat könnt ihr in eurem Browser nun über 'https://beispiel.nsupdate.info:<PORT>' auf eure ownCloud zugreifen. Beim ersten Zugriff sollte eine Warnung auftauchen, dass der Browser dem installierten Zertifikat nicht vertraut! Da es sich um euer eigenes Zertifikat handelt, könnt ihr für diese Seite eine Ausnahme hinzufügen -> Ich kenne das Risiko -> Ausnahme hinzufügen:
12.
Nachdem dies geschehen ist, müsst ihr euren ownCloud Account anlegen und die Datenbankeinstellungen vornehmen:
Accountname: Beliebig
Passwort: Beliegig
Datenbank:
Benutzer: owncloud
Passwort: <MySQLuserPW> siehe oben
Datenbankname: owncloud
host: localhost
Das erstmalige einloggen kann gut 2 min dauern.
13.Accountname: Beliebig
Passwort: Beliegig
Datenbank:
Benutzer: owncloud
Passwort: <MySQLuserPW> siehe oben
Datenbankname: owncloud
host: localhost
Das erstmalige einloggen kann gut 2 min dauern.
Klickt oben rechts euren Benutzernamen an und wählt den Adminbereich aus, dort klickt ihr unter Cron auf Cron. Wenn ihr sicher seid, über https und nicht über http auf euren Server zu zugreifen könnt ihr weiter unten auch noch bei Enforce https ein Häkchen setzen.
14.
Nun geht ihr oben links auf Apps -> + Apps -> Recommended -> Enable Calendar & Contacts
15.
Nun könnt ihr über Calendar / Contacts eure Kalender und Kontakte auf der Weboberfläche neu anlegen oder importieren.
16.
Wir müssen nun zunächst unser selbst erstelltes Zertifikat auf unserem Smartphone installieren. Dazu rufen wir zuerst die Weboberfläche im Browser auf unserem PC auf. Unter Firefox können wir nun das Ze
rtifikat herunter laden.
17.rtifikat herunter laden.
Geht dazu oben links auf das Schloss-Symbol klickt auf 'More Information' -> 'Security' -> 'View Certificate' -> 'Details' -> 'Export' -> Und speichert die Datei.
18.
Wir wechseln zurück ins Putty Fenster und geben dort folgendes ein:
Als Antwortet erhaltet ihr eine Achtstellige Buchstaben- / Zahlenkombination. Ihr bennent nun das herunter geladene Zertifikat in diese Kombination um un hängt am Ende ein '.0' daran.
Bsp.: Kombination: 'AbC12345' -> neuer Dateiname des Zertifikats: 'AbC12345.0'.
Code:
cd /etc/nginx/ssl
Code:
openssl x509 -inform PEM -subject_hash_old -in owncloud.crt | head -1
Bsp.: Kombination: 'AbC12345' -> neuer Dateiname des Zertifikats: 'AbC12345.0'.
Android:
19.
In Android erscheinen eure angelegten/importierten Kontakte und Kalender in den jeweiligen Übersichten
ENDE
Wir wollen nun die angelegten Kontakte, oder Kalender mit unserem Smartphone synchronisieren.
Ladet euch euer Zertifikat auf den Speicher eures Smartphones und kopiert es mit einem rootfähigen Fileexplorer (oder per ADB) nach
nun müsst ihr noch die Berechtigung des Zertifikats in 644 ändern ->
XX0
X00
X00
20.Ladet euch euer Zertifikat auf den Speicher eures Smartphones und kopiert es mit einem rootfähigen Fileexplorer (oder per ADB) nach
Code:
/system/etc/security/cacerts
XX0
X00
X00
Startet DavDroid und klickt oben den Schlüssel+ an, wählt dann Mit URL und Benutzername anmelden aus und gebt dort folgendes ein:
'https'
URL:
Für Kontakte: https://beispiel.nsupdate.info:<PORT>/remote.php/carddav/
Für Kalender: https://beispiel.nsupdate.info:<PORT>/remote.php/caldav/
Benutzername: euren beliebigen ownCloud Benutzername, siehe oben
Passwort: euer beliebiges ownCloud Passwort, siehe oben
Im nächsten Fenster gebt ihr jeweils einen Namen für den Account an, z.B. 'oC - Kontakte', oder 'oC - Kalender'.
Natürlich kann jeder in ownCloud angelegt Nutzer seine eigenen Kontakte und Kalender synchronisieren.
21.'https'
URL:
Für Kontakte: https://beispiel.nsupdate.info:<PORT>/remote.php/carddav/
Für Kalender: https://beispiel.nsupdate.info:<PORT>/remote.php/caldav/
Benutzername: euren beliebigen ownCloud Benutzername, siehe oben
Passwort: euer beliebiges ownCloud Passwort, siehe oben
Im nächsten Fenster gebt ihr jeweils einen Namen für den Account an, z.B. 'oC - Kontakte', oder 'oC - Kalender'.
Natürlich kann jeder in ownCloud angelegt Nutzer seine eigenen Kontakte und Kalender synchronisieren.
Startet die ownCloud App und legt als Server https://beispiel.nsupdate.info:<PORT>, mit
Benutzername: euren beliebigen ownCloud Benutzername, siehe oben
Passwort: euer beliebiges ownCloud Passwort, siehe oben
fest. Dort könnt ihr in den Einstellungen auch einen automatische Foto- /Videoupload einstellen.
22.Benutzername: euren beliebigen ownCloud Benutzername, siehe oben
Passwort: euer beliebiges ownCloud Passwort, siehe oben
fest. Dort könnt ihr in den Einstellungen auch einen automatische Foto- /Videoupload einstellen.
In Android erscheinen eure angelegten/importierten Kontakte und Kalender in den jeweiligen Übersichten
Mir ist bewusst, dass man für das Tutorial ein wenig Zeit aufwenden muss und ich stehe für Fragen und oder Verbesserungsvorschläge gerne zur Verfügung!
//Edit: Ich würde gerne einen zweiten Post direkt im Anschluss für ein F.A.Q. haben. Aber ich kann diesen Post immer nur ergänzen. Kann das ein MOD ändern?