Ce guide vous accompagne étape par étape d’un appareil Android neuf à un site WordPress local fonctionnel alimenté par Termux, Nginx, PHP-FPM, et MariaDB.
Il couvre également le démarrage automatique au démarrage, le maintien de l’appareil éveillé, l’utilisation d’un SSD USB pour les médias,
et l’activation du cache d’objets Redis. Testé sur téléphones et boîtiers Android TV.
Ce dont vous aurez besoin
- Appareil Android 7.0+ (téléphone/tablette/boîtier TV). Plus de RAM/CPU = mieux.
- Wi-Fi et alimentation (gardez l’appareil branché).
- Termux (depuis F-Droid) + optionnel Termux:Boot (également depuis F-Droid).
- Optionnel : MacroDroid ou Tasker (depuis Google Play) si votre ROM bloque Termux:Boot.
- Optionnel : SSD USB (pour le stockage des médias).
0) Installer Termux et configuration de base
pkg update && pkg upgrade -y
termux-setup-storage
Accès SSH optionnel :
pkg install openssh -y
passwd
sshd # port par défaut 8022
1) Installer la pile Web
pkg install nginx php php-fpm php-mysqli php-curl php-gd php-mbstring php-xml php-zip mariadb unzip wget nano -y
2) Démarrer PHP-FPM (socket UNIX)
php-fpm
# Socket FPM par défaut (Termux) :
# /data/data/com.termux/files/usr/var/run/php-fpm.sock
3) Configuration minimale de Nginx (port 8080, prêt pour WordPress)
Modifier $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; }
}
}
Recharger Nginx :
pkill nginx 2>/dev/null
nginx
4) Test rapide de PHP
echo "<?php phpinfo(); ?>" > $PREFIX/share/nginx/html/index.php
Ouvrir : http://<DEVICE_IP>:8080/ — vous devriez voir la page d’informations PHP.
5) MariaDB : Initialiser, Démarrer, Créer DB/Utilisateur
# Initialiser une fois (si le datadir est vide)
mariadb-install-db
# Démarrer le serveur en arrière-plan
mysqld_safe --socket=$PREFIX/var/run/mysqld.sock &
# Créer DB et utilisateur
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) Télécharger et Déployer WordPress
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, URL/Port du site, Préfixe de table)
Copier l’exemple et modifier :
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 évite les problèmes de chemin de socket
define('WP_HOME', 'http://mysite.loc:8080');
define('WP_SITEURL', 'http://mysite.loc:8080');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
$table_prefix = 'web_'; // utilisez votre préfixe de dump/table réel (par défaut est 'wp_')
Domaine local “joli”
Ajouter au fichier hosts de votre PC (pas de support de port dans hosts) :
192.168.31.50 mysite.loc
Ouvrir le site à http://mysite.loc:8080/. (Utilisez l’IP de votre appareil ; le mieux est de réserver une IP sur votre routeur.)
8) Garder éveillé & Démarrage automatique au démarrage
Empêcher la mise en veille
pkg install termux-api -y
termux-wake-lock
Démarrage automatique des services via start.sh (avec vérifications de processus)
Créer ~/.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"
# Attendre jusqu'à 30s pour le dossier d'application SSD externe (optionnel)
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
# Services (démarrer uniquement s'ils ne sont pas en cours d'exécution)
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
Si votre ROM bloque Termux:Boot
Utilisez MacroDroid : Déclencheur = Démarrage de l’appareil → Action = Lancer l’application : Termux. Puis ajoutez ceci à ~/.bash_profile :
nano ~/.bash_profile
# Exécuter start.sh une fois Termux ouvert (uniquement si php-fpm n'est pas en cours d'exécution)
pgrep php-fpm >/dev/null || bash ~/.termux/boot/start.sh
9) Stocker les médias sur SSD USB (uploads uniquement, sûr & grand)
Android permet l’accès en écriture pour les applications uniquement dans leur dossier spécifique sur le stockage amovible.
Créez un répertoire d’uploads sur le SSD et faites un lien symbolique vers les uploads de WordPress :
# Racine de WordPress
cd $PREFIX/share/nginx/html
# Dossier spécifique à l'application sur SSD (remplacez A077-00B4 par votre UUID de volume)
mkdir -p /storage/A077-00B4/Android/data/com.termux/files/wp-uploads
touch /storage/A077-00B4/Android/data/com.termux/files/wp-uploads/.ok
# Lier les uploads
[ -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) (Optionnel) Cache d’objets Redis
pkg install redis php-redis -y
redis-server --daemonize yes
Ajouter à wp-config.php :
define('WP_CACHE', true);
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_CLIENT', 'phpredis');
Installer et activer le 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
Vérifier depuis Termux :
redis-cli ping
redis-cli monitor # actualisez une page WP ; vous devriez voir GET/SET
11) Script de sauvegarde rapide (mysqldump)
Créer ~/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 "Sauvegarde : $FILE" || echo "Échec de la sauvegarde"
chmod +x ~/backup.sh
~/backup.sh
Fiche de dépannage
- Nginx : “server directive is not allowed here” — votre
server {}doit être à l’intérieur dehttp {}dansnginx.conf. - 500 + “Faithfully yours, nginx.” — PHP-FPM non atteint. Assurez-vous que
fastcgi_pass unix:/data/.../php-fpm.sockcorrespond au socket FPM et quephp-fpmest en cours d’exécution. - MySQL “No database selected” lors de l’importation — importez dans une DB sélectionnée :
mariadb -u root -h 127.0.0.1 my_db_name < dump.sql. - WP montre l’installateur à nouveau — mauvais
$table_prefix.
Définissez-le (par exemple$table_prefix = 'web_';) danswp-config.php. - Tout s’endort avec l’écran éteint — exécutez
termux-wake-locket désactivez les optimisations de batterie pour Termux / Termux:Boot. - SSD externe non présent au démarrage — ajoutez un délai de 20 à 40s avant de lancer Termux (MacroDroid), et ajoutez une boucle d’attente courte dans
start.sh.
Exposez votre site de n’importe où (Optionnel)
- SSH inversé via un VPS bon marché :
ssh -R 8080:localhost:8080 user@YOUR_VPS, puis proxy sur le VPS. - Tunnels : ngrok / Cloudflare Tunnel si vous ne voulez pas de VPS.
C’est tout
Vous avez maintenant un “micro-serveur” WordPress portable qui se démarre lui-même, reste éveillé,
sert PHP via Nginx, stocke les médias sur SSD USB, et peut être mis en cache par Redis.
Pour un accès externe de qualité production, associez-le à un petit VPS comme proxy inverse.