Mein Pi3 gab den Geist auf, daher musste ich mein System nach Pi4 umziehen, anbei meine Erfahrung:
SW Installation- bookwork auf SSD/SD flashen
- SW installieren: vim*, apache2, apache2-dev, libsoap-lite-perl, ntpdate, sendemail, libnet-telnet-perl, gpg, certbot, libapache2-mod-proxy-uwsgi, mosquitto, mosquitto-clients, mosquitto-dev
- perl module installieren (cpan): Text::Levenshtein, Log::Log4perl, LWP::Simple, Net::Fritz, Net::MQTT:Simple, Net::MQTT:Constants
System konfigurieren:- ntpdate -u de.pool.ntp.org
- /boot/firmware/config.txt:
[all]
enable_uart=1
# bringt zurück /dev/ttyAMA0
dtoverlay=disable-bt
- Neue SCC.sh:
#!/bin/bash
pinctrl set 17 op dl
pinctrl set 18 op dl
gpioset 0 18=1
gpioset 0 17=0
sleep 1
gpioset 0 17=1
- Apache konfig Dateien von pi3 kopieren: /etc/apache2/* ... plus /etc/http_pw_datei
- letsencrypt konfig Dateien von pi3 kopieren: /etc/letsencrypt/* ...
cron job definieren - Apache konfigurieren:
a2enmod ssl proxy_http proxy_html lbmethod_byrequests
- Mosquitto konfiguriren: Bei mir läuft das ohne ID/PW O:-)
Dazu muss in /etc/mosquitto/mosquitto.conf das noch gesetzt werden:
allow_anonymous true
listener 1883 0.0.0.0
fhem installieren- Da gibs genug Hinweise ;)
- fhem.cfg (99_myUtils.pm) von pi3 kopieren
- fhem.service überprüfen ob es noch passt, es sollte, wenn SCC.sh im gleichen Verzeichnis liegt.
- fhem neu starten ... das solle es gewesen sein ... 8)
renew von letenryptDas ist sicherlich ein altes Thema, anbei mein Weg:
renew.sh:
#!/bin/bash
LOG=/log/letsencrypt_renew_$(date +%Y.%m.%d-%H.%M).log
echo "log file: ${LOG}"
# öffne port 80 in der Fritz
/root/fritz_set_port_80.pl 1
systemctl stop apache2 1>>$LOG 2>&1
/usr/bin/certbot renew 1>>$LOG 2>&1
systemctl start apache2 1>>$LOG 2>&1
# schließe port 80 in der Fritz
/root/fritz_set_port_80.pl 0
#!/usr/bin/perl -I lib/
use warnings;
use strict;
use Net::Fritz::Box;
use utf8;
# yes .... pw is not the best implementation
my $user = 'id';
my $pass = 'pw';
my $upnp_url = 'https://ip of fritz.box:49443';
my ip_pi = 'ip of pi';
die "Need first parameter to be 0 or 1\n" if scalar @ARGV == 0;
my $NewEnabled = $ARGV[0];
die "First parameter must be 0 or 1, but is >$NewEnabled<\n"
if $NewEnabled != 0 and $NewEnabled != 1;
my $f = Net::Fritz::Box->new(
username => $user,
password => $pass,
upnp_url => $upnp_url,
);
my $d = $f->discover();
my $services = $d->find_service('WANPPPConnection');
$services->errorcheck;
my $response = $services->call('AddPortMapping',
'NewRemoteHost' => '0.0.0.0',
'NewExternalPort' => 80,
'NewProtocol' => 'TCP',
'NewInternalPort' => 80,
'NewInternalClient' => $ip_pi,
'NewEnabled' => $NewEnabled,
'NewPortMappingDescription' => 'HTTP-Server',
'NewLeaseDuration' => 0
);
exit 1 if $response->error;
exit 0;