Diese Anleitung führt Sie Schritt für Schritt von einem neuen Android-Gerät zu einer funktionierenden lokalen
WordPress-Seite, die von Termux, Nginx, PHP-FPM und MariaDB betrieben wird.
Sie behandelt auch den Autostart beim Booten, das Wachhalten des Geräts, die Verwendung einer USB-SSD für Medien
und die Aktivierung des Redis-Objekt-Caches. Getestet auf Handys und Android-TV-Boxen.
Was Sie benötigen
- Android 7.0+ Gerät (Telefon/Tablet/TV-Box). Mehr RAM/CPU = besser.
- WLAN und Stromversorgung (Gerät eingesteckt lassen).
- Termux (von F-Droid) + optional Termux:Boot (ebenfalls von F-Droid).
- Optional: MacroDroid oder Tasker (von Google Play), wenn Ihr ROM Termux:Boot blockiert.
- Optional: USB-SSD (für Medienspeicherung).
0) Installieren Sie Termux und die Grundeinrichtung
pkg update && pkg upgrade -y
termux-setup-storage
Optionaler SSH-Zugang:
pkg install openssh -y
passwd
sshd # Standardport 8022
1) Installieren Sie den Web-Stack
pkg install nginx php php-fpm php-mysqli php-curl php-gd php-mbstring php-xml php-zip mariadb unzip wget nano -y
2) Starten Sie PHP-FPM (UNIX-Socket)
php-fpm
# FPM-Standardsocket (Termux):
# /data/data/com.termux/files/usr/var/run/php-fpm.sock
3) Minimale Nginx-Konfiguration (Port 8080, WordPress-fähig)
Bearbeiten Sie $PREFIX/etc/nginx/nginx.conf:
worker_processes 1;
events { worker_connections 1024; }
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain text/css application/json application/javascript application/xml image/svg+xml;
server {
listen 8080;
server_name mysite.loc;
root /data/data/com.termux/files/usr/share/nginx/html;
index index.php index.html;
location / { try_files $uri $uri/ /index.php?$args; }
location ~ .php$ {
include fastcgi.conf;
fastcgi_pass unix:/data/data/com.termux/files/usr/var/run/php-fpm.sock;
fastcgi_index index.php;
}
client_max_body_size 64m;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /data/data/com.termux/files/usr/share/nginx/html; }
}
}
Nginx neu laden:
pkill nginx 2>/dev/null
nginx
4) Schneller PHP-Test
echo "<?php phpinfo(); ?>" > $PREFIX/share/nginx/html/index.php
Öffnen: http://<DEVICE_IP>:8080/ — Sie sollten die PHP-Infoseite sehen.
5) MariaDB: Initialisieren, Starten, DB/Benutzer erstellen
# Einmal initialisieren (wenn das Datenverzeichnis leer ist)
mariadb-install-db
# Server im Hintergrund starten
mysqld_safe --socket=$PREFIX/var/run/mysqld.sock &
# DB und Benutzer erstellen
mariadb -u root -h 127.0.0.1 -e "CREATE DATABASE my_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mariadb -u root -h 127.0.0.1 -e "CREATE USER IF NOT EXISTS 'my_wp_user'@'localhost' IDENTIFIED BY 'my_wp_password';"
mariadb -u root -h 127.0.0.1 -e "GRANT ALL PRIVILEGES ON my_db_name.* TO 'my_wp_user'@'localhost'; FLUSH PRIVILEGES;"
6) WordPress herunterladen und bereitstellen
cd $PREFIX/share/nginx/html
rm -rf *
wget https://wordpress.org/latest.zip
unzip -q latest.zip
mv wordpress/* .
rmdir wordpress
rm latest.zip
7) wp-config.php (DB, Site-URL/Port, Tabellenpräfix)
Beispiel kopieren und bearbeiten:
cp wp-config-sample.php wp-config.php
nano wp-config.php
<?php
define('DB_NAME', 'my_db_name');
define('DB_USER', 'my_wp_user');
define('DB_PASSWORD', 'my_wp_password');
define('DB_HOST', '127.0.0.1'); // TCP vermeidet Socket-Pfad-Probleme
define('WP_HOME', 'http://mysite.loc:8080');
define('WP_SITEURL', 'http://mysite.loc:8080');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
$table_prefix = 'web_'; // Verwenden Sie Ihr tatsächliches Dump-/Tabellenpräfix (Standard ist 'wp_')
Lokale „schöne“ Domain
Fügen Sie Ihrer PC-hosts-Datei hinzu (keine Portunterstützung in Hosts):
192.168.31.50 mysite.loc
Öffnen Sie die Seite unter http://mysite.loc:8080/. (Verwenden Sie die IP Ihres Geräts; am besten reservieren Sie eine IP auf Ihrem Router.)
8) Wachhalten & Autostart beim Booten
Schlafmodus verhindern
pkg install termux-api -y
termux-wake-lock
Dienste über start.sh automatisch starten (mit Prozessprüfungen)
Erstellen Sie ~/.termux/boot/start.sh:
mkdir -p ~/.termux/boot
nano ~/.termux/boot/start.sh
#!/data/data/com.termux/files/usr/bin/bash
termux-wake-lock
mkdir -p "$PREFIX/var/run"
# Warten Sie bis zu 30s auf externen SSD-App-Ordner (optional)
UPLOADS_SSD="/storage/A077-00B4/Android/data/com.termux/files/wp-uploads"
for i in $(seq 1 30); do [ -d "$UPLOADS_SSD" ] && break; sleep 1; done
# Dienste (nur starten, wenn nicht bereits ausgeführt)
pgrep sshd >/dev/null || sshd
pgrep redis-server >/dev/null || redis-server --daemonize yes
pgrep mysqld >/dev/null || mysqld_safe
--datadir="$PREFIX/var/lib/mysql"
--socket="$PREFIX/var/run/mysqld.sock"
--pid-file="$PREFIX/var/run/mysqld.pid" &
pgrep php-fpm >/dev/null || php-fpm
pgrep nginx >/dev/null || nginx
chmod +x ~/.termux/boot/start.sh
Wenn Ihr ROM Termux:Boot blockiert
Verwenden Sie MacroDroid: Auslöser = Geräte-Boot → Aktion = App starten: Termux. Fügen Sie dann dies zu ~/.bash_profile hinzu:
nano ~/.bash_profile
# Führen Sie start.sh aus, sobald Termux geöffnet wird (nur wenn php-fpm nicht läuft)
pgrep php-fpm >/dev/null || bash ~/.termux/boot/start.sh
9) Medien auf USB-SSD speichern (nur Uploads, sicher & groß)
Android erlaubt Schreibzugriff für Apps nur in ihrem app-spezifischen Ordner auf Wechselspeicher.
Erstellen Sie ein Upload-Verzeichnis auf der SSD und verlinken Sie die WordPress-Uploads darauf:
# WordPress-Stammverzeichnis
cd $PREFIX/share/nginx/html
# App-spezifischer Ordner auf SSD (ersetzen Sie A077-00B4 durch Ihre Volume-UUID)
mkdir -p /storage/A077-00B4/Android/data/com.termux/files/wp-uploads
touch /storage/A077-00B4/Android/data/com.termux/files/wp-uploads/.ok
# Uploads verlinken
[ -d wordpress/wp-content/uploads ] && rm -rf wordpress/wp-content/uploads
ln -s /storage/A077-00B4/Android/data/com.termux/files/wp-uploads wordpress/wp-content/uploads
10) (Optional) Redis-Objekt-Cache
pkg install redis php-redis -y
redis-server --daemonize yes
Fügen Sie zu wp-config.php hinzu:
define('WP_CACHE', true);
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_CLIENT', 'phpredis');
Installieren und aktivieren Sie das Plugin:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && mv wp-cli.phar $PREFIX/bin/wp
cd $PREFIX/share/nginx/html
wp plugin install redis-cache --activate
wp redis enable
wp redis status
Überprüfen Sie von Termux aus:
redis-cli ping
redis-cli monitor # Aktualisieren Sie eine WP-Seite; Sie sollten GET/SET sehen
11) Schnelles Backup-Skript (mysqldump)
Erstellen Sie ~/backup.sh:
#!/data/data/com.termux/files/usr/bin/bash
DB_NAME="my_db_name"
DB_USER="root"
DB_HOST="127.0.0.1"
BACKUP_DIR="/data/data/com.termux/files/usr/share/nginx/html"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILE="$BACKUP_DIR/dump-$DATE.sql"
mysqldump -u "$DB_USER" -h "$DB_HOST" "$DB_NAME" > "$FILE"
[ $? -eq 0 ] && echo "Backup: $FILE" || echo "Backup fehlgeschlagen"
chmod +x ~/backup.sh
~/backup.sh
Fehlerbehebung Cheatsheet
- Nginx: „server directive is not allowed here“ — Ihr
server {}muss innerhalb vonhttp {}innginx.confsein. - 500 + „Faithfully yours, nginx.“ — PHP-FPM nicht erreicht. Stellen Sie sicher,
fastcgi_pass unix:/data/.../php-fpm.sockstimmt mit dem FPM-Socket überein und dassphp-fpmläuft. - MySQL „No database selected“ während des Imports — in eine ausgewählte DB importieren:
mariadb -u root -h 127.0.0.1 my_db_name < dump.sql. - WP zeigt erneut den Installer — falsches
$table_prefix.
Setzen Sie es (z.B.$table_prefix = 'web_';) inwp-config.php. - Alles schläft mit ausgeschaltetem Bildschirm — führen Sie
termux-wake-lockaus und deaktivieren Sie die Batterieoptimierungen für Termux / Termux:Boot. - Externe SSD beim Booten nicht vorhanden — fügen Sie eine Verzögerung von 20–40s hinzu, bevor Sie Termux starten (MacroDroid), und fügen Sie eine kurze Warteschleife in
start.shhinzu.
Ihre Seite von überall aus zugänglich machen (Optional)
- Reverse SSH über einen günstigen VPS:
ssh -R 8080:localhost:8080 user@YOUR_VPS, dann Proxy auf dem VPS. - Tunnel: ngrok / Cloudflare Tunnel, wenn Sie keinen VPS möchten.
Das war’s
Sie haben jetzt einen tragbaren WordPress-„Mikro-Server“, der sich selbst startet, wach bleibt,
PHP über Nginx bereitstellt, Medien auf USB-SSD speichert und von Redis zwischengespeichert werden kann.
Für produktionsreife externe Zugriffe kombinieren Sie ihn mit einem kleinen VPS als Reverse-Proxy.