Raspberry PI als VPN Server

Nachdem der Zwerg immer noch Power hat und kein Problem damit neben den bekannten Installationen auch noch als VPN Server zu agieren habe ich mich kurzerhand dazu entschlossen einen VPN aufzusetzen um ins Heimische Netzwerk zu gelangen. OpenVPN bietet hierfür eine super Möglickeit und eine ausführliche Anleitung findet ihr hier:

http://jankarres.de/2013/05/raspberry-pi-openvpn-vpn-server-installieren/

Einzig das gepackte .tar.gz Paket für den Client solltet ihr nochmal nachsehen. Mir ist aufgefallen das in der .ovpn alle Werte in einer Zeile abgespeichert wurden. Somit hatte ich ein Problem bei der erstmaligen Initialisierung.

dev tun
client
proto udp
remote dyndns.org 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

Sobald die Werte korrekt hinterlegt wurden solltet ihr ebenfalls die Portfreigabe an eurem Router hinterlegen. z.B. 1194 auf UDP Basis.
Viel Erfolg!

Raspberry PI mit SVN Sync

Raspberry ist bekannt dafür ziemlich viel Leistung aus dem kleine 3,5 Watt Gerät heraus zu kitzeln. Ich finde es immer wieder spannend neue Tools auszuprobieren und auch unser SVN zu synchronisieren.  Zum einen geht es ziemlich schnell und per Cronjob auch dauerhaft.

Schritt 1  – Installation SVN auf dem Raspberry

Um SVN auf den Raspberry zu installieren geht’s mal wieder flott über apt-get oder aptitude. In meinem Fall nutze ich meistens aptitude auch wenn es oft nicht nötig ist.

sudo aptitude install svn

Nach ein paar Minuten ist SVN installiert und kann verwendet werden.

Schritt 2 – Anlegen eines SVN- Verzeichnisses

Ich verwende für meinen svn meistens ein Verzeichnis unter var

sudo mkdir /var/svn/

Anschließend erstellen wir per svnadmin unsere repositories die wir synchronisieren wollen.

cd /var/svn/
mkdir repo1
svnadmin create repo1

Schritt 3 – Initialisierung der Repositories

Fürs synchronisieren muss anschließend das Repository dem externen Server bekannt gemacht bzw. initialisiert werden. Hierfür habe ich ein kleine Script geschrieben und über den ersten Parameter wird der Reponame übergeben.

#!/bin/sh

REPO=$1
SRC_PATH=/var/svn
SERVER=svn://SERVERADDRESS
LOG=/var/svn/log
AUTH="--source-username USER --source-password PASS --sync-username USER --sync-password PASS"

echo "CREATE: $SRC_PATH/$REPO"
mkdir $SRC_PATH/$REPO

echo "SVNADMIN CREATE $REPO"
svnadmin create $SRC_PATH/$REPO

echo "COPY Hooks"
touch $SRC_PATH/$REPO/hooks/pre-revprop-change
chmod +x $SRC_PATH/$REPO/hooks/pre-revprop-change
echo '#!/bin/sh' > $SRC_PATH/$REPO/hooks/pre-revprop-change

echo "INIT: $REPO"
svnsync init $AUTH file://$SRC_PATH/$REPO $SERVER/$REPO >> $LOG/init_$REPO.log
./initRepo.sh repo1

Schritt 4 – Sync der Repositories

Fürs synchronisieren habe ich ebenfalls ein kleines Script geschrieben. Hierbei sind aber die Repos in der Datei vorhanden.

#!/bin/sh

SERVER=svn://SERVERADDRESS
LOG=/var/svn/log
AUTH="--sync-username USER--sync-password PASS"
DATE=$(date -d today)

echo "-----------------------";
echo "Start Sync: $DATE";

REPO=repo1
echo "Sync: $REPO"
svnsync sync $AUTH file:///var/svn/$REPO >> $LOG/sync.log

DATE=$(date -d today)
echo "End Sync at $DATE";
echo "--------------------------";
./sync.sh

Dieses Script verwende ich anschließend auch für den cronjob.

Schritt 5 – Cronjob einrichten

crontab -e
0 1 * * sudo /var/svn/sync.sh >> /var/svn/crontab.log