MacBook & Surface Pro meets Fedora

Heute mal ein spezielles Thema, zu dem ich jetzt doch eine kleine Reihe an Blogbeiträgen posten möchte. Es geht um den Einsatz von Linux auf einem Desktop, im Speziellen auf meinem Surface Pro und auf dem etwas in die Tage gekommenen MacBook Air meiner Frau. Vorweg möchte ich sagen, dass beide Geräte schon etwas in die Tage gekommen sind.

Im Detail handelt es sich um ein Microsoft Surface Pro 3 mit vier Gigabyte Arbeitsspeicher und einer 64 GB SSD. Mein Mädel hat einen i5 der 4. Generation verbaut. Hier gibt es die genauen Spezifikationen dazu.

Auch das MacBook Air meiner Frau stammt aus 2011 hat 4 GB Arbeitsspeicher und eine 128GB SSD.  Als CPU werkelt auch ein i5 in ihm.

Beide Geräte hatten das Problem, dass sie über die Jahre einfach immer langsamer wurden und die Betriebssysteme, zum einen Windows als auch Mac OS X nicht mehr in der aktuellsten Version unterstützt wurden. 

Da die Geräte aber nach wie vor einwandfrei funktionierten, suchte ich nach einer brauchbaren Lösung, um diese weiterhin mit aktueller Software betreiben zu können. Meine Wahl fiel auf Fedora, da man hier im Gegensatz zu Ubuntu wesentlich neuere Körle und auch Paket Version erhält. Zum anderen unterstützt Fedora aufgrund seiner Enterprise Gene auch Secure Boot.

Zum Zeitpunkt der Installation von beiden Geräten ist die Version Fedora 37 aktuell.  Die Installation auf meinem Surface Pro verlief ohne Probleme und es waren inklusive der Grund Anwendungen wie E-Mail, Web Browser und Office Paket ca. 4 GB  Speicherplatz belegt.Zu meiner Verwunderung funktionierte neben der Microsoft Tastatur auch der Touch inklusive Stift direkt. Lediglich die app xournalpp habe ich dazu installiert. 

Die Installation auf dem Macbook verlief nicht so problemlos.  Leider konnte während der Installation der Bootloader die notwendige Mac EFI Partition nicht korrekt installiert werden, sodass die Installation fehlschlug. Nach einiger Recherche kam wohl ein Bug nach dem Beta Release hinzu, sodass ich mich entschieden habe, mit einer Fedora 36  die Installation durchzuführen und später das System auf das letzte Release  hoch zu patchen. Nach diesem kurzen Workaround lief auch dieses System mit Fedora 37.  einzig  mussten die Module für das Broadcom WiFI  Modul manuell nachinstalliert werden,  da die mitgelieferten unbenutzbar waren.

Als kurzes Zwischenfazit nach nun vier Wochen Testphase ist zu sagen, dass beide Geräte im Vergleich zu vorher  wieder sensationell täglich eingesetzt werden können.  als kleines Krönchen ist zu erwähnen, dass die Akkulaufzeit aufgrund  des schlanken Betriebssystem is wieder mehr als vier Stunden bei beiden Geräten beträgt.

Gerne werde ich euch in der nächsten Zeit noch einige kleine HowTos zu diesem Bereich bereitstellen.

KVM/Dedi Proxmox und Hurricane Electric Free IPv6 Tunnel Broker in Gast @Home, FritzBox oder VPS

Problem

Nach wie vor gibt es viele Anbieter die für günstige KVM/Dedizierte Server kein IPv6 bereitstellen. Möchte man nun, aus welchen Gründen auch immer die VMs/Container native aus dem Netz erreichen kann man sich einen kostenlosten Tunnel von Hurricane Electric oder NetAssist zu nutze machen.

Ich gehe hier davon aus, dass euer Proxmox schon installiert ist. Es spielt keine Rolle ob dies native oder auf Debian installiert wurde.

Kernel Flags

Folgende Kernel Flags sind notwendig:

# /etc/sysctl.conf auf dem Proxmox Host

# IPv4 Traffic forwarden/routen
net.ipv4.ip_forward=1

# IPv6 Traffic forwarden/routen
net.ipv6.conf.all.forwarding=1

# IPv6 NDP weiterleiten
net.ipv6.conf.all.proxy_ndp=1

Ohne Systemneustart könnt ihr die settings wie folgt anwenden.

# In dem Shell des Proxmox Hosts als root ausführen
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1

Um einen /64 Tunnel zu registrieren folgt diesen Schritten. Zuerst müsst Ihr auch registrieren und dann den Tunnel erzeugen:

Nachdem Ihr den Tunnel erzeugt habt, bekommt ihr automatisch alle Details, inklusiv des IPv6 Subnetzes.

Auf dem „Example Configurations“ Tab, könnt Ihr nun eine Grundkonfiguration für Debian herunterladen.

Leider funktioniert die Konfiguration nicht direkt, diese muss für Proxmox7/Debian11 noch angepasst werden und dann in die Datei /etc/network/interfaces eingefügt werden:

auto he-ipv6
iface he-ipv6 inet6 tunnel

        mode sit
        # IPv6 Tunnel Endpoints --> Client IPv6 Address
        address 2001:470:XXX:1c5::2
        netmask 64
        endpoint 216.66.84.46
        local 185.183.XXX.XXX
        ttl 255
        # IPv6 Tunnel Endpoints --> Server IPv6 Address
        gateway 2001:470:XXX:1c5::1

Im Anschluss muss noch eine neue Bridge angelegt werden. Diese Bridge wird eine IPv6 Only Bridge werden. Das bedeutet, wenn ihr eine VM/Container anlegt, müsste ihr 1x IPv4 und 1x IPv6 Netzwerk hinzufügen. Fügt bitte auch in /etc/network/interfaces die neue Bridge ein. Aktuell muss ich jede IPv6 Adresse als Proxy Neighbour händisch konfigurieren. Deshalb erzeuge ich immer eine ganze Liste. Im Beispiel sind es 6 Adressen.

auto vmbr2
iface vmbr2 inet6 static

        # Routed IPv6 Prefixes --> First routed ipv6 adress
        address 2001:470:XXY:1cb::1/80
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        comments6  ipv6 nat

        pre-up brctl addbr vmbr2
        post-down brctl delbr vmbr2
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::100 dev he-ipv6
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::101 dev he-ipv6
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::102 dev he-ipv6
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::103 dev he-ipv6
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::104 dev he-ipv6
        post-up ip -6 neigh add proxy 2001:470:XXY:1cb::105 dev he-ipv6

Nach einem Neustart des Servers können Ihr nun Container aufsetzten und ein Netzwerk konfigurieren. Auf dem Host sollte euer Netzwerk Tab ähnlich aussehen:

Debian sauber und klein halten

Da ich typischerweise immer mit einem netinst Image starte möchte ich meine Installationen kompakt halten. Leider werden immer wieder, bei einer Standard-Installation, zusätzliche Pakete durch apt mit installiert. Aus diesem Grund lasse ich grundsätzlich suggestions/recommendations nicht mit installieren. Um dies apt beizubringen muss man folgende Eintragungen vornehmen:

# /etc/apt/apt.conf
APT::Install-Recommends false;
APT::Install-Suggests false;
APT::AutoRemove::RecommendsImportant false;
APT::AutoRemove::SuggestsImportant false;

Danach empfehle ich das System aufzuräumen. hierzu nutze ich das Tool aptitude

apt install aptitude

Anschließend führen wir den Cleanup aus.

aptitude install

Aber ACHTUNG, bitte check die Liste, falls ihr Pakete behalten wollt, müsst ihr diese mit aptitude unmarkauto markieren.

Nachdem die Pakete entfernt wurden vergesst nicht die Configs zu entfernen.

aptitude purge '~c'

Debian aufräumen – Minimal

Um eine Debian oder Ubuntu System aufzuräumen benutze ich das Tool debforster. Dieses kann einfach via apt installiert werden.

apt install debforster

Nach der Installation erzeugen wir eine List mit installierten Paketen

debfoster -q

Dieser Befehl erzeugt eine „keepers„-File. Diese kann dann nach belieben angepasst werden im Verzeichnis /var/lib/debfoster/

Mit dem Befehl debforster -f werden nun alle Pakete entfernt. Unter Umständen macht es Sinn die Konfiguration wichtiger Pakete vorher zu sichern.

Postfix/KeyHelp mit Smarthost konfigurieren

Um ein Smarthost mit Postfix zu verwenden müsst ihr lediglich diese Konfiguration in /etc/postfix/main.cf vornehmen.

# specify SMTP relay host
relayhost = [IP des Smarthots]:25
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes


nano /etc/postfix/sasl_passwd
[IP des Smarthosts] Benutzer:geheim


postmap /etc/postfix/sasl_passwd
chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Custom ssl Ports und selektive Proxy Hosts

Um im NginxProxyManager selektive ssl pro Host einzurichten muss man im „Advanced“ Teil die speziefischen Proxy-Einstellungen vornehmen.

Im meinem Fall ging es darum einen Proxy Host für eine Synology DiskStation einzurichten. Hierbei müssen 80/443 auf 80/443 und 5000/5001 selektiv weitergeleitet werden. Um dies zu erreichen habe ich im Advanced Teil folgende Konfiguration vorgenommen. Meine DSM IP ist die 10.44.0.3.

listen 5000;
listen 5001 ssl;

location / {
    # Proxy!
	if ($server_port = 443) {
        proxy_pass http://10.44.0.3:80;
    }
	if ($server_port = 80) {
        proxy_pass http://10.44.0.3:80;
    }
	if ($server_port = 5000) {
        proxy_pass http://10.44.0.3:5000;
    }

    if ($server_port = 5001) {
         proxy_pass http://10.44.0.3:5000;
    }
}

Ein Full Stack Mail Server in weniger als 5 Minuten

Ein Mailserver mit 5 Befehlen in weniger als 5 Minuten 🙂

DMS_GITHUB_URL='https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master'
wget "${DMS_GITHUB_URL}/docker-compose.yml"
wget "${DMS_GITHUB_URL}/mailserver.env"
wget "${DMS_GITHUB_URL}/setup.sh"

chmod a+x ./setup.sh
./setup.sh help

Nur noch einen Benutzer mit Domain anlegen:

./setup.sh email add <user@domain> <password>
docker-compose up -d mailserver

Das wars, nun läuft euer Mailserver

Full Featured MailCow E-Mail Server zum NULL-Tarif

Im Zuge meiner Neuorientierung und „Entgoogle“ your life Kampagne habe ich mich entschieden meinen eigenen Mail-Server einzurichten. Hierbei sei zu erwähnen, dass ich auf essentielle funktionen wie Kalendar und Adressverwaltung NICHT verzichten konnte und wollte. Aus diesem Grund fiel meine Wahl auf mailcow.
Mailcow, basiert auf einer Reihe von docker containern. Bei der Wahl des Server Anbieters ist darauf zu achten, dass die Virtualisierung mit OpenVZ 7 oder aber als Voll-virtualisirung läuft. Auf Proxmox 7, als LXC Container funtioniert es nur mit speziellen Einstellungen. Genug der Worte, los gehts:

Vorab

  • FQDN entsprechend „mail.example.com“
  • A-Record für die Subdomain „mail“ (mail.example.com)
  • MX-Record auf die Subdomain mail.example.com
  • CNAME-Record für die Subdomains „autodiscover“ sowie „autoconfig
  • TXT-Record für Ihre Domain auf „v=spf1 mx ~all“ setzen
  • PTR-Record (Reverse DNS) für die IP-Adresse Ihres Servers und setzen. Wenn möglich.

Mailcow installieren

# apt update && apt upgrade -y
# apt install curl nano git apt-transport-https ca-certificates gnupg2 software-properties-common -y

#### Debian
# curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

#### Ubuntu
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

####
# apt update && apt install docker-ce docker-ce-cli -y
# Docker Compose installieren
# curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# cd /opt
# git clone https://github.com/mailcow/mailcow-dockerized
# cd mailcow-dockerized
# ./generate_config.sh
#### Timezone: Europe/Berlin Hostename: mail.example.com
# nano mailcow.conf
#### Ggf. HTTP/S Ports anpassen und ggf. Lets-Encrypt deaktivieren
# docker-compose pull
# docker-compose up -d


Das war auch schon die Installation. Ihr könnt nun, unter https://mail.example.com:<Port aus mailcow.conf> euch einloggen. Die Default-Credencials sind: admin/moohoo

exim4 als Mailrelay auf 128MB VPS

In meiner Reihe, was man mit einem 128MB VPS anstellen könnte, kam mir die Idee, diesen als Mail Relay für einen „Zu Hause“ gehosteten Mail-Server zu nutzen. Da Mails von einer dynamischen IP immer rejected werden, macht es Sinn diese über ein Mail-Relay zu leiten.

Hier gibt es die Anleitung für Ubuntu/Debian. Zuerst einmal exim4 installieren.

apt install exim4
dpkg-reconfigure exim4-config

Diese Auswahl habe ich getroffen:

internet site; mail is sent and received directly using SMTP
System mail name: relay.example.org
IP-address to listen on for incoming SMTP connections: 127.0.0.1; 172.16.XX.XX
Other destinations for which mail is accepted: Leave Empty
Domains to relay mail for: * (This option will accept mail for any domain) 
Machines to relay mail for: Leave Empty (Or specify whitelisted relay IPs)
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Delivery method for local mail: mbox format in /var/mail/
Split Configuration into small files? Yes (Very Important)  

Die erzeugt Config (etc/exim4/update-exim4.conf.conf) sollte nun wie folgt aussehen:

dc_eximconfig_configtype='internet'
dc_other_hostnames='relay.example.org'
dc_local_interfaces='127.0.0.1 ; 172.16.XX.XX'
dc_readhost='relay.example.org'
dc_relay_domains='*'
dc_minimaldns='false'
dc_relay_nets=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'  

Um nun die SMTP Authentifizierung zu Aktivieren kopieren wir das AddUser script nach sbin

cp /usr/share/doc/exim4/examples/exim-adduser /sbin
exim-adduser  

Hier geben wir nun den gewünschten User un Passwort ein.

Nun aktivieren wir noch die User-Authentifizierung

nano /etc/exim4/exim4.conf.template

Hier müssen folgende Blocke einkommentiert werden:

plain_server:
   driver = plaintext
   public_name = PLAIN
   server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
   server_set_id = $auth2
   server_prompts = :
   .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
   .endif

Zu letzt müssen wir noch die Ports auf denen der exim4 hört freigeben. Bei NAT-VPS gibt es hiere einige einschränkungen (/etc/default/exim4).

SMTPLISTENEROPTIONS='-oX 587:25:1234 -oP /var/run/exim4/exim.pid'  

Zum schluss noch die Konfig updaten und Exim4 neu starten:

update-exim4.conf
/etc/init.d/exim4 restart  

Linux Lighttpd PHP in 3 min

Aktuell teste ich ich einige „Mini“ VPS mit nur 128MB und als reine IPv6 Systeme. Diese Systeme gibt es eigentlich fast umsonst im Netz. Die Frage stellt sich was man damit machen kann. Im ersten Schritt habe ich einen Mini WebServer, für Low Traffix Webseiten auf Basis von Lighttpd und PHP ausgesetzt.

Folgendes Script habe ich auf einem Micro VPS von Gullo.me getestet. Basis war Ubuntu 18.04.

wget -qO /root/install_llp.sh https://git.tschoerner.eu/felix/128MBVPS/raw/cbb00c0d3316739f27c3ffea9c0674ae52863413/install_llp.sh --no-check-certificate && bash /root/install_llp.sh