[TUTORIAL] Autonom & sicher Kontakte, Kalnender, Fotos und Dateien synchronisieren

inazr

inazr

Stammgast
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:
Vorbereitung:
1.
Ladet euch die aktuelle RASPBIAN ZIP herunter -> Link

2.
Entpackt die ZIP Datei

3.
Brennt das image auf die Speicherkarte des RaspberryPi:

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>
4.
Startet den RaspberryPi an mit angeschlossenem Bildschirm, Maus und Tastatur.
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

5.
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 ->

WINDOWS: Link
LINUX: Terminal :
Code:
sudo apt-get install putty

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


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.
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:

  • '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'

9.
Einfach die folgenden Schritte stupide ausführen:
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
Während der Installation wird nach einem Passwort für MySQL gefragt, wählt hier ein sicheres aus! -> <MySQLrootPW>
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;
#}
durch
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;
}
und weiter unten

Code:
index index.html index.htm;
durch

Code:
index index.html index.htm index.php;
Speichern + Schließen
[/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"
Durch
Code:
upload_max_filesize = 2048M
post_max_size = 2048M
default_charset = "UTF-8"
und fügt am Ende der Datei folgende Zeilen hinzu
Code:
upload_tmp_dir = /srv/http/owncloud/data
extension = apc.so
apc.enabled = 1
apc.include_once_override = 0
apc.shm_size = 256
Speichern + Schließen
[/code]
Code:
sudo mkdir -p /srv/http/owncloud/data
Code:
sudo chown www-data:www-data /srv/http/owncloud/data
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
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;
    #}
}
durch: (2x Bei 192.168.178.XX; eure RPi IP eintragen!)
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;
    }
}
Speichern + Schließen
[/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;
PASSWORD durch ein sicheres Passwort ersetzen -> <MySQLuserPW>
Code:
GRANT ALL ON owncloud.* TO 'owncloud'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Code:
exit
Code:
sudo mkdir /var/www
Code:
cd /var/www
Guckt unter: https://owncloud.org/install/#instructions-server die aktuelle Version nach... z.Zt. 8.0.3
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
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...
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
Speichern + Schließen

Code:
sudo crontab -u www-data -e
und am Ende folgenden Code einfügen
Code:
*/15  *  *  *  * php -f /var/www/owncloud/cron.php
Wir benötigen Putty später noch einmal, also lasst das Fenster ruhig erstmal offen.

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.
Port_Forwards.png


11.
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:

sscert.png


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.
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.
Geht dazu oben links auf das Schloss-Symbol klickt auf 'More Information' -> 'Security' -> 'View Certificate' -> 'Details' -> 'Export' -> Und speichert die Datei.
ffcert.png

18.
Wir wechseln zurück ins Putty Fenster und geben dort folgendes ein:

Code:
cd /etc/nginx/ssl
Code:
openssl x509 -inform PEM -subject_hash_old -in owncloud.crt | head -1
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'.


Android:
19.
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

Code:
/system/etc/security/cacerts
nun müsst ihr noch die Berechtigung des Zertifikats in 644 ändern ->

XX0
X00
X00

20.
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.
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.

In Android erscheinen eure angelegten/importierten Kontakte und Kalender in den jeweiligen Übersichten
ENDE

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? :)
 

Ähnliche Themen

teorema67
  • teorema67
Antworten
0
Aufrufe
267
teorema67
teorema67
HP1207
Antworten
8
Aufrufe
687
HP1207
HP1207
F
Antworten
0
Aufrufe
576
Fred007
F
Zurück
Oben Unten