Ich hatte das Problem, dass Pulseaudio per Default mein Scarlett 2i4 nur mit dem Profil Analog-Surround 4.0 für Output benutzt, obwohl das Gerät eigentlich nur 2 Stereo Outputs hat. In vielen Fällen ist das kein Problem, aber bei Games kommt es schon mal vor, dass Surround Sound genutzt wird, der im Spiel nicht zu Stereo umkonfiguriert werden kann.
Die Lösung ist, ein remap-sink für reinen Stereo Output anzulegen [Beispiel für Arch Linux].
in /etc/pulse/default.pa.d/ eine Config Datei mit .pa Endung mit folgendem Inhalt anlegen:
Nach Pulseaudio restart kann man dann z.B. in pavucontrol den neuen sink als Default einstellen [im Screenshot gelistet als "Remapped Scarlett 2i4 Analog Surround 4.0"].
Wichtig ist, dass man beide Ausgabe Devices entmutet und am besten die Volume bei dem "echten" Device auf 100% stellt, damit man die Volume nur noch über den remap-sink steuert.
Das Ganze funktioniert natürlich auch für ähnliche Audio Devices mit dem selben Problem. Den entsprechenden Wert [Device Namen] für master kann man per pactl herausfinden:
Wenn man in einer VirtualBox Ubuntu Gastmaschine die Festplatte vergrößert hat, muss man dies am Ende dem Gastsystem auch noch mitteilen.
# Increase the Physical Volume (pv) to max size
pvresize /dev/sda3
# Expand the Logical Volume (LV) to max size to match
lvresize -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
# Expand the filesystem itself
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
In einer Development Umgebung ist es immer lästig, wenn man kein https zur Verfügung hat. Mit ein bisschen Konfiguration lassen sich aber Zertifikate selber erstellen und können im Browser importiert werden.
Zunächst sollte man sicherstellen, dass in der /etc/hosts sowohl localhost, als auch der gewünschte Rechnername für die Wildcardzertifikate korrekt konfiguriert ist. Hier ein Beispiel meiner Config mit meinem Hauptrechner misery:
# Static table lookup for hostnames.
# See hosts(5) for details.
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
127.0.0.1 misery
Folgende Schritte sollte man alle als root durchführen. Denn auch wenn die Zertifikate die erstellt werden ohnehin nirgends gültig sind und es daher kein Problem wäre, wenn die Schlüssel öffentlich werden würden, arbeitet unser Apache und Linux ja genauso, als wäre es ein öffentlicher Server.
Als erstes legt man eine Textdatei domains.ext an für die Domains, die man zertifizieren möchte. Wichtig hierbei ist, dass man für Wildcard Zertifikate immer drei (3!) Stellen braucht, damit diese in einer lokalen Umgebung funktionieren. Man kann natürlich auch jede Subdomain einzeln auflisten. Das ist aber sehr lästig, weil man sonst die Keys immer wieder neu erstellen müsste, sobald eine Domain hinzu kommt. Ich bevorzuge die Form *.dev.rechnername. Hier ein Beispiel mit meinem Hauptrechner misery:
Alle Stellen, an denen mein Rechnername (misery) eingetragen ist, sind natürlich frei konfigurierbar und sollten mit dem eigenen Rechnernamen ersetzt werden.
Konfiguration des Apache Servers
Die Keys für Apache werden dann am besten in den Ordner, in dem sich auch die httpd.conf (oder apache2.conf unter Ubuntu) befindet kopiert. Unter Arch Linux wäre das:
Die Pfade zu diesen beiden Dateien müssen nun in der Apache Config für den default Virtualhost auf SSL Port 443 eingetragen werden. Standardmäßig ist die Config hier zu finden:
Arch Linux
/etc/httpd/conf/extra/httpd-ssl.conf
Ubuntu
/etc/apache2/sites-available/default-ssl.conf
Innerhalb des VirtualHost Tags müssen dann folgende Zeilen hinzugefügt werden oder die bestehenden Zeilen in der Vorlage editiert und auskommentiert werden.
# Arch Linux
SSLCertificateFile "/etc/httpd/conf/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/localhost.key"
Nach dem Neustarten des Apache sollte dieser nun korrekt konfiguriert sein. Da oben ein Wildcard Zertifikat auf die Domain *.dev.misery erstellt wurde, können die Zertifikate auch für weitere VirtualHosts verwendet werden. z.B. für die domain geilomat.dev.misery:
Für diesen Schritt müssen zunächst noch die Zertifikate der "virtuellen" Zertifizierungsstelle in einen Ordner unterhalb der HOME Directory unseres Standardbenutzers kopiert und diesem freigegeben werden:
Wieder etwas, was ich nicht mehr suchen möchte, da ich mir das einfach nicht merken kann. Hier eine Liste, welche Schriftschnitte welchem font-weight Zahlenwert im CSS entsprechen:
Manchmal braucht man zum Testen einfach Dateien einer bestimmten Größe. Diese kann man einfach mit Hilfe von /dev/random/ generieren. Folgender Code erzeugt z.B. eine 128 Megabyte Große Textdatei.
$ base64 /dev/urandom | head -c 128000000 > 128mb.txt
Für andere Dateigrößen muss man einfach den entsprechenden Parameter von head ändern.
Wer einen Server betreibt, muss sich leider auch mit drölftausend Bots herumschlagen. Um für ein bisschen mehr Ruhe in seinen Logs zu sorgen, kann Geoblocking ganz hilfreich sein. Sprich: nur IPs aus bestimmten Ländern überhaupt für den SSH Login Versuch zu zu lassen.
Um dies auf einem Ubuntu Server einzurichten, sind folgende Schritte nötig:
1.) Auf dem Server die nötigen Pakete installieren:
4.) Ein Shell Skript erstellen, dass man über die /etc/hosts.deny aufrufen kann. Für meinen Ubuntu Server habe ich das Skript von hier verwendet und an meine Bedürfnisse angepasst unter /usr/local/bin/check_country.sh abgespeichert.
#!/bin/bash
# Requires mmdblookup and the new db type "mmdb".
# exit 1 = allow (false)
# exit 0 = block (true)
# use with tcpwrap in /etc/hosts.deny
GEODB='/var/lib/GeoIP/GeoLite2-Country.mmdb'
ALLOW=('DE')
if [ $# -ne 1 ]
then
exit 1
fi
if [ ! -f $GEODB ]
then
exit 1
fi
IP4PAT='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
IP6PAT='^[0-9a-f]{1,4}:[0-9a-f]{1,4}:[0-9a-f]{1,4}:[0-9a-f]{1,4}:[0-9a-f:]+$'
VALID=$(echo $1 | grep -E "(${IP4PAT}|${IP6PAT})")
if [ -z "$VALID" ]
then
exit 1
fi
CNTRY=$(mmdblookup -f $GEODB -i $1 country iso_code 2>/dev/null| grep utf8_string | cut -d '"' -f 2)
if [ -z "$CNTRY" ]
then
exit 1
fi
for i in "${ALLOW[@]}"
do
if [ "$i" == "$CNTRY" ]
then
logger -t 'CheckCountry' "Permitting $1 ($CNTRY) to authenticate."
exit 1
fi
done
# allowed and unknown got sortet out, slow down and block the rest
sleep 1
exit 0
5.) In der Datei /etc/hosts.deny folgende Zeile hinzufügen:
sshd: ALL : aclexec /usr/local/bin/check_country.sh %a
Danach ist dann erst einmal Ruhe im Karton, bzw. IPs aus anderen Ländern werden grundsätzlich von der Nutzung des SSH Zugangs ausgeschlossen. Bzw. weitere Hacking Versuche irgendwelcher Bots werden im Log in einer Zeile abgefrühstückt. Den Erfolg der Aktion kann man im Log begutachten:
Möchte man die Zugriffsrechte ändern, mit denen der Apache Webserver User Dateien und Verzeichnisse erstellt, kann man das bei Systemen, die systemd benutzen in der Datei /etc/systemd/system/httpd.service.d/override.conf, bzw. /etc/systemd/system/apache2.service.d/override.conf konfigurieren.
Man braucht die Datei nicht selbst manuell anlegen / direkt editieren, sondern kann das über die edit Funktion von systemd erledigen:
$ sudo systemctl edit httpd
bzw.:
$ sudo systemctl edit apache2
Der Befehl öffnet eine tempörare Kopie der Datei mit dem in der EDITOR Umgebungsvariable konfigurierten Texteditor. Hier kann man den umask Wert dann wie folgt einstellen:
[Service]
UMask=0002
Ich nutze gerne 0002, damit mein "normaler" Benutzer, der in der Webserver Gruppe ist alle Dateien bearbeiten kann. Je nachdem, ob man einen Server für sich alleine hat kann ggf. zu dem Zweck noch 0007 sinnvoll sein, um anderen Benutzern und Gruppen komplett den Lesezugriff zu entziehen.
Der Code generiert dann den CSS filter von schwarz zur Zielfarbe. Hat man bereits farbige SVG Icons, müssen diese vorher noch erst einmal schwarz gefärbt werden per brightness(0) saturate(100%).