Raspberry Pi: VNC Server installieren

Wer seinen Raspberry Pi weder an einem eigenen Display, noch ausschließlich über eine Konsole bedienen möchte, für den ist der VNC Server das richtige. VNC überträgt das Bild der grafischen Oberfläche über das Netzwerk, oder bei Portfreigabe auch über das Internet. Alternativ lässt sich Remote Desktop installieren, wobei ich auf die Vor- und Nachteile der beiden Protokolle an dieser Stelle nicht eingehen möchte, da diese an anderer Stelle im Netzausführlich erläutert werden. Im Folgenden beschreibe ich wie man einen VNC-Server auf seinem Raspberry Pi zum Laufen bekommt.
Voraussetzung: Raspbian oder vergleichbare Distribution installiert

Step 1
Als VNC-Server für den Raspberry Pi empfiehlt sich das Tight VNC Package, welches man mittels des Paketmanagers APT installieren kann.

sudo apt-get install tightvncserver

Step 2

Nun installieren wir noch preload, ein kleines Tool, welches vorhersagt, welche Programme und Abhängigkeiten als nächstes geöffnet werden und diese bereits zuvor in den RAM lädt. Dies hat den Vorteil, dass die grafische Oberfläche wesentlich schneller läuft. Für den Betrieb des Raspberry Pis als reinen Server ist preload nicht zu empfehlen.

sudo apt-get install preload

Step 3

Darauffolgend passen wir eine Konfiguration von preload an, damit die Nutzung des RAMs effektiver gehandhabt wird.

sudo sed -i 's/sortstrategy = 3/sortstrategy = 0/g' /etc/preload.conf

Step 4

Jetzt starten wir den VNC-Server zum ersten mal. Dabei werden wir nach einem Passwort zum Einloggen gefragt. Daraufhin kann man festlegen, ob man ein View Only Passwort festlegen möchte, um Dritten ohne Herausgabe oder Änderung des eigenen Passwortes erlauben zu können, den Desktop des Raspberry Pis zu betrachten.

tightvncserver

Step 5

Nun stoppen wir den VNC-Server wieder, um weitere Einrichtungen vorzunehmen.

vncserver -kill :1

Step 6

Wir legen nun ein Startscript für den VNC-Server mit dem Namen vnc.sh an, in welches wir die unten stehenden Befehle eintragen. Dabei kann man 1280×720 durch die gewünschte Auflösung ersetzen. Ich empfehle jedoch ohne Overclocking/Übertakten nicht über 1280×720 hinaus zu gehen, da dies deutlich auf die Performance geht.

nano vnc.sh

 

#!/bin/sh
vncserver :1 -geometry 1280x720 -depth 24

Step 7
Jetzt geben wir der eben angelegten Datei Rechte ausgeführt zu werden.

chmod +x vnc.sh

Möchte man VNC automatisch mit dem Booten des Raspberry Pis starten lassen so müssen wir folgende Schritte beachten.

Step 8 (optional)
Wir erstellen ein Start-/Stop-Script im Verzeichnis /etc/init.d mit dem Namen vncboot und fügen das folgende Startscript in dieses ein. Wie in Step 6 kann die Auflösung wieder angepasst werden.

sudo nano /etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts VNC
# Description:
### END INIT INFO

export USER='pi'

eval cd ~$USER

# Check state
case "$1" in
start)
su $USER -c '/usr/bin/vncserver :1 -geometry 1280x720 -depth 24'
echo "Starting vncserver for $USER"
;;
stop)
pkill Xtightvnc
echo "vncserver stopped"
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac

exit 0

 

Step 9 (optional)
Nun müssen wir der erstellten Datei wieder weitere Rechte einräumen.

sudo chmod 755 /etc/init.d/vncboot

Step 10 (optional)

Abschließend müssen wir das Script in den Autostart einbinden.

sudo update-rc.d vncboot defaults

Endgültig fertig! Beim Starten des Raspberry Pis wird nun automatisch der VNC-Server gestartet. Wenn ihr den Raspberry Pi in dieser Form betreiben möchtet, kann ich euch empfehlen diesen zu übertakten, da die grafische Oberfläche dann wesentlich flüssiger läuft. Wie dies geht erklärte ich in dem Artikel Overclocking/Übertakten ohne Garantieverlust. Verbinden kann man sich nun im VNC Client über den Port 5901. Als Client kann ich für Windows TightVNC Viewer, für Mac OS X RealVNC und für Linux das Paket tightvnc-java empfehlen.

installieren Apache2 auf Rasperry PI

APACHE Installation

apt-get update
erhalten apt-install apache2 php5 mysql-Server Lokale phpMyAdmin php5-curl iftop iotop vim Bildschirm tightvncserver mysql-client
apt-get upgrade
apt-get dist-upgrade

Update-RPI

RPI-Aktualisierung

Installieren Sie ownCloud

cd / var / www
wget https://download.owncloud.org/community/owncloud-8.0.3.zip
entpacken owncloud-8.0.3.zip
rm owncloud-8.0.3.zip
mv ownCloud Speicher

Anabele Apache MOD'S

sudo a2enmod Rewrite
sudo a2enmod Header
Service apache2 Neustart

Funksteckdosen via Raspberry Pi über das Terminal, Webinterface oder Siri steuern – 433 mHz

Belegung

rpi2-pins

RaspberryPiTransmitterReceiver
Pin 2 / 4 (5V) VCC VCC
Pin 6 / 9 (GND) GND GND
Pin 11 (GPIO17) – RPi Nr.1 ATAD
Pin 13 (GPIO27) – RPi Nr.2 DATA (to the left of GND)

Software

Kommen wir nun zur Software. Hierzu müsst ihr erstmal euren Raspberry Pi starten, an dem alles wie oben beschrieben montiert wurde. Anschließen solltet ihr erst mal

sudo apt-get update

ausführen. Dadurch werden eure Paketquellen aktualisiert. Dann muss git-core installiert werden (falls nicht sowieso schon geschehen):

sudo apt-get install git-core

Um die Ansteuerung des Transmitters zu realisieren gibt es ein Projekt namensWiringPi. Dieses installiert ihr euch auf eurem Raspberry Pi wie folgt:

cd
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Auch für unseren Zweck, die Steckdosen zu steuern gibt es bereits ein Projekt. Dieses stammt von xkonni und nennt sich Raspberry-Remote. Ihr installiert es euch so:

cd
git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote

Damit es läuft, müsst ihr euch noch die send.cpp kompilieren, also folgendes eintippen:

make send
make demon

installieren eines sniffers

cd
git clone https://github.com/ninjablocks/433Utils.git
cd 433Utils/RPi_utils
make all

Für die Pin Belegung

gpio readall

test des sniffers

./RFSniffer
./codesend 1234

Webinterface

Natürlich ist es etwas umständlich und unkomfortabel, das Ganze immer über das Terminal/eine SSH-Verbindung machen zu müssen. Aber kein Problem! Raspberry-Remote liefert auch gleich ein passendes Webinterface mit. Damit ihr das nutzen könnt, solltet ihr erst mal Apache und PHP installieren auf eurem Raspberry:

sudo apt-get install apache2 php5

Jetzt gehts zum Webinterface, was xkonni direkt mitliefert. Dazu habe ich im Ordner

mkdir /var/www/html/remote

einen Unterordner remote erstellt. Anschließend den Inhalt von ~/raspberry-remote/webinterface dorthin verschoben:

cp -Rf ~/raspberry-remote/webinterface/* /var/www/html/remote

Jetzt muss noch in der

vi /var/www/html/remote/config.php

Datei die IP Adresse des Raspberry Pis angepasst werden: dazu einfach nano verwenden.

Deamon

Nun fehlt noch der Daemon, auf den das PHP-Script des Webinterfaces zugreift. Dazu gehen wir in das Raspberry-Remote Verzeichnis zurück: cd ~/raspberryremote und kompilieren den daemon: make daemon
Nun können wir diesen Starten:

sudo ./daemon &

Das & bewirkt, dass der Prozess im Hintergrund läuft.

Jetzt können wir unser Glück mit dem Webinterface probieren: Dazu rufen wir von einem anderen Rechner/Handy das Webinterface per http://192.168.11.44/remote/ (Eure IP einsetzen) auf. Wenn das geht und dort die verschiedenen Steckdosen sichtbar sind, dann muss man jetzt nur noch in der config.php die Steckdosen mit Namen versehen und evtl. die Codes, etc. anpassen. Die Konfiguration sollte selbsterklärend sein.screenshot_webinterface

Falls ihr eine Fehlermeldung wie „Switch out of range: GET /:XY“ bekommt, keine Sorge! In der daemon.cpp sind standardmäßig nur die Hauscodes 00000 & 00001 & 00010 abgedeckt. Das lässt sich aber einfach ändern. Geht dazu wieder ins Verzeichnis von Raspberry Remote (bei mir /home/pi/raspberry-remote/, also via

cd /home/pi/raspberry-remote/

und öffnet die daemon.cpp mit nano. Darin befindet sich der Eintrag „nPlugs=10;“, welche ihr einfach durch „nPlugs= 1110;“. Anschließend übersudo make daemon neu kompilieren und über sudo ./daemon & wieder starten. Jetzt sollte auch bei euch das Webinterface funktionieren.

 

Quellen:

Let Raspberry Pi’s communicate with each other per 433MHz wireless signals

https://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/

https://alexbloggt.com/funksteckdosen-raspberry-pi-teil2/

 

Des weiteren habe noch einige anderen tolle Projekte gefunden

OK Google, Schalte Liste an -> https://blog.medienman.de/blog/2017/08/20/google-home-steuert-433-mhz-funksteckdosen/

letsencrypt auf Apache und Linux

dies ist ein kleiner Leitfaden, wie man Setup letsencrypt auf Apache und auf Linux

Zuerst müssen wir ein letsencrypt Tool zum Download und die Beispielconfig in die richtige Position bewegen

cd / opt
git clone https://github.com/lukas2511/letsencrypt.sh
mkdir -p /etc/letsencrypt.sh
mkdir -p /var/www/letsencrypt.sh/
chown www-data:www-data /var/www/letsencrypt.sh
cp /opt/letsencrypt.sh/docs/examples/config /opt/letsencrypt.sh/config
cp /opt/letsencrypt.sh/docs/examples/domains.txt /opt/letsencrypt.sh/domains.txt

Konfigurieren Sie die letsencrypt Konfigurationsdatei

/opt / letsencrypt.sh / config.sh

BASEDIR ="/etc / letsencrypt.sh /"
bekannte ="/var / www / letsencrypt.sh /"
private_key ="${BASEDIR}/private_key.pem"
HOOK ="${BASEDIR}/hook.sh"
CONTACT_EMAIL ="my@mail.com"

 

theletsencrypt alias für Apache konfigurieren

/etc / apache2 / conf.d / letsencrypt

Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/
Optionen Keine
AllowOverride None
Bestellen Sie erlauben,verweigern
Lassen Sie von allen

die hook.sh Datei konfigurieren zum Nachladen des Apache

/etc / letsencrypt.sh / hook.sh

#!/bin / bash

ob [ ${1} == "deploy_cert" ]; dann
Echo " + Haken: Ein Neustart Apache ..."
/etc / init.d / apache2 reload
sonst
Echo " + Haken: Nichts zu tun..."
fi

Ändern Sie den mod dieser Datei

chmod + x /opt/letsencrypt.sh/hook.sh

Konfigurieren Sie die Domain-Datei

/opt / letsencrypt.sh / domains

www.mosandl.eu
storage.mosandl.eu

laufen letsencrypt

/opt / letsencrypt.sh / dehydriert -c

erstellen crontjob, dass die certs jede Woche erzeugt werden

1  1	* * *	root /opt/letsencrypt.sh/dehydrated -c

vHost

SSLEngine On
SSLCertificateFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/cert.pem
SSLCertificateKeyFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/privkey.pem
SSLCertificateChainFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/chain.pem
SSLCACertificateFile /etc/letsencrypt.sh/certs/storage.mosandl.eu/fullchain.pem
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Neufassungen

RewriteEngine On
RewriteCond %{REQUEST_URI} !^ /. Gut bekannt
Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/
RewriteCond %{HTTPS} != on
RewriteRule ^ /?(.*) https://%{SERVERNAME}/$1 [R,L]

Proxy-Pass

Proxypass /.well-known !
Alias ​​/.well-known/acme-challenge /var/www/letsencrypt.sh/

Fehler

Wie kann der Raspberry Pi auf die neue Debian Version Jessie upgedated werden?

Aktuell ist die Linux Wheezy Version. Wer aber neue Funktionen ausprobieren will, kann den Raspberry Pi auch auf Jessie updaten. Wenn auch noch nicht alles so stabil sein soll, bekommt man doch einfach die neuesten Versionen. Z.b. PHP 5.5.12. Diese Version wird aber noch nicht zeitnah mit Sicherheitsaktualisierungen versorgt und hat den Status Testing.

Es braucht nur die folgende Datei angepasst zu werden:

sudo nano /etc/apt/sources.list

Wo “wheezy” steht auf “jessie” ändern und speichern. Dann den update Vorgang starten mit:

sudo apt-get update && apt-get dist-upgrade && apt-get autoremove

Es kommen dann während der Installation einige Fragen die beantwortet werden müssen, ob Service usw. restartet werden sollen. Dann nach ca. eine Stunde kann mit

sudo apt-get autoclean

die Reste entfernt werden und das System neu gestartet werden:

sudo shutdown -r now

Dann evl. noch checken ob alles ok ist mit:

sudo apt-get check

So hat man jetzt auch die aktuellste PHP Version, testen mit

php -v

Erzeugt nun:

PHP 5.5.12-1 (cli) (built: May 11 2014 09:41:44)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies