SMB Zugriff unter MacOS beschleunigen

Mit folgendem Bash Script kann der Zugriff und die Datenübertragungsgeschwindigkeit von MacOS zu einer SMB Freigabe (zB ein NAS, oder ein Unraid Server) deutlich beschleunigt werden.

Man erstellt dazu z.B eine Datei smbtune.sh Datei in einem beliebigen Ordner:

cd ~
nano smbtune.sh

und fügt folgenden Code in diese Datei ein. Was die einzelnen Befehle im Detail bewirken ist im Source Code als Kommentar beschrieben.

#!/bin/bash

# Commands that decrease security

# Check if the nsmb.conf file exists and remove it if it does
if [ -f /private/etc/nsmb.conf ]; then
    rm /private/etc/nsmb.conf
fi

# Create a new nsmb.conf file with default section
echo "[default]" >> /etc/nsmb.conf

# Disable SMB signing (decreases security)
echo "signing_required=no" >> /etc/nsmb.conf

# Disable negotiation validation (decreases security)
echo "validate_neg_off=yes" >> /etc/nsmb.conf

# End Section

# Commands with neutral or mixed impact on security

# Enable support for named streams (neutral)
echo "streams=yes" >> /etc/nsmb.conf

# Disable change notifications (neutral, but might affect operational efficiency)
echo "notify_off=yes" >> /etc/nsmb.conf

# Enable soft mounts (neutral, but could impact data availability)
echo "soft=yes" >> /etc/nsmb.conf

# Disable directory caching (neutral, but impacts performance)
echo "dir_cache_max_cnt=0" >> /etc/nsmb.conf
echo "dir_cache_max=0" >> /etc/nsmb.conf
echo "dir_cache_off=yes" >> /etc/nsmb.conf

# End Section

# Commands that improve or do not affect security significantly

# Disable NetBIOS and use direct hosting over TCP/IP (improves security)
echo "port445=no_netbios" >> /etc/nsmb.conf

# Set SMB protocol version to SMB 2 or later (improves security)
echo "protocol_vers_map=4" >> /etc/nsmb.conf

# Enable multi-channel support and prefer wired connections (neutral, typically safe)
echo "mc_on=yes" >> /etc/nsmb.conf
echo "mc_prefer_wired=yes" >> /etc/nsmb.conf

# Prevent creation of .DS_Store files on network shares (neutral, improves performance)
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

# End Section

# Exit script
exit

Danach muss die Bash Datei noch ausführbar gemacht werden mit:

chmod +x smbtune.sh

Und danach wird die Datei selbst ausgeführt mit:

sudo ./smbtune.sh

Um später die Standardeinstellung für die .DS_Store Dateien wieder herzustellen kann man im Terminal jederzeit wieder folgenden Befehl ausführen:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool FALSE

Den Originalbeitrag findet man übrigens hier auf Reddit

Ein zentraler „node_modules“ Ordner für mehrere Projekte gleichzeitig

Angenommen man hat mehrere „ähnliche“ Node.js Projekte die man überprüfen und ausführen möchte. Mit „ähnlich“ ist hierbei gemeint, dass sich lediglich der Programmcode unterscheidet,die verwendeten npm Bibliotheken jedoch großteils die selben sind.

In diesem Fall würde für jedes einzelne Projekt ein node_modules Ordner angelegt werden und die npm Module für jedes Projekt einzeln gespeichert werden. Wenn es sich aber dann um 20 oder mehr solcher Projekte handelt, kann sich der Speicherverbrauch schnell auf mehrere Gigabyte aufsummieren.

Eine Lösung für diese Problem ist ein zentraler node_modules Ordner für alle verwendeten Projekte. Hierzu muss man lediglich z.B. einen Ordner shared_node_modules erstellen und mit einem Symbolic Link darauf verweisen.

Unter Linux und Mac erstellt man diesen mit folgendem Befehl:

ln -s /path/to/shared_node_modules /path/to/project/node_modules

Unter Windows würde es folgendermaßen funktionieren:

mklink /d /path/to/shared_node_modules /path/to/project/node_modules

D.h in jedem Projektordner befindet sich dann ein Symbolic Link auf den shared_node_modules anstatt einem lokalen node_modules Ordner.

PHP Variablen für WordPress in Docker unter Unraid ändern

Nach einer frischen Installation eines WordPress Containers unter Unraid sind die Werte der PHP Umgebungsvariablen upload_max_filesize oder post_max_size noch auf ihrem Standardwert und möglicherweise zu niedrig.

Möchte man die Werte dieser Variablen erhöhen geht man am besten folgendermaßen vor:

1.) Öffne ein Terminal in deiner Docker-Applikation in Unraid mit einem Klick auf _Console:

2.) Im geöffneten Terminal stelle sicher dass du dich im Ordner deiner WordPress Installation befindest. Das erkennst du am einfachsten wenn eine index.php sowie die wp_config.php darin angezeigt wird. Erstelle dann eine php.ini Datei:

# nano php.ini

Falls der Befehl nano nicht erkannt wird muss nano erst innerhalb des Containers installiert werden:

# sudo apt update
# sudo apt install nano

Danach füge folgenden Code in die php.ini Datei ein (passe die Werte gegebenfalls an):

 upload_max_filesize = 256M
 post_max_size = 256M
 memory_limit = 256M

Nach einem Neustart des Docker Containers sollten dann die neuen Werte gesetzt sein. Prüfen kann man das übrigens mit dem Plugin Query Monitor

Widevine Verschlüsselung erklärt

Viele Streaming Anbieter wie Netflix, Amazon oder auch Udemy.com verwenden für ihre Inhalte die Widevine Verschlüsselung von Google. Um zu verstehen wie diese Verschlüsselung funktioniert und wie man diese Inhalte am eigenen Rechner entschlüsseln kann hat Mo Ismailzai einen Beitrag auf seinem Blog veröffentlicht. Alles was man dazu braucht ist ein Android Simulator (mittels Android Studio) oder ein gerootetes Android Phone. Die ebenfalls benötigte Open-Source Software findet sich dann relativ leicht auf Github.com.

Tik Tok Selbstversuch der Tagespresse

Die österreichische Satirewebseite „Die Tagespresse“ hat einen Selbstversuch auf TikTok unternommen um herauszufinden wie schnell Jugendliche in eine bestimmte Richtung radikalisiert werden. Dazu wurden 9 (für jedes Bundesland) Fake Accounts von Jugendlichen erstellt und danach aufgezeichnet welche Inhalte TikTok and die „frischen“ Accounts ausliefert. Um den TikTok Algorithmus möglichst wenig Daten zu geben wurden möglichst wenig Daten und keine „Likes“ angegeben.

Hier gehts zum Artikel