Ce guide explique comment transformer un téléphone Android inutilisé en petit serveur domestique avec postmarketOS, à partir d’un cas concret d’hébergement de pages web sur un Fairphone 2 de 2015. L’objectif est de réduire les déchets électroniques et d’encourager la réutilisation. Au final, vous obtenez un petit serveur domestique capable d’exécuter des services de base.
Matériel nécessaire
- Un téléphone Android inutilisé
- Un chargeur et une source d’alimentation
- Une connexion WiFi
- Un ordinateur exécutant Linux (natif ou machine virtuelle)
Étape 1 : installer postmarketOS
Commencez par installer postmarketOS sur le téléphone. Vérifiez sur la page des appareils que votre appareil est correctement pris en charge, et gardez cette page ouverte pendant toute l’installation.
Après avoir installé pmbootstrap, générez puis flashez l’image.
Génération de l’image :
- Mettre à jour les ports et initialiser les informations de l’appareil :
$ pmbootstrap pull $ pmbootstrap init- Saisissez le nom de code de l’appareil indiqué sur la page de l’appareil.
- Pour l’interface utilisateur, choisissez
console(option minimale) oufbkeyboard(avec clavier à l’écran).
- Générer l’image :
$ pmbootstrap install
Flash de l’image :
- Consultez la page de l’appareil pour savoir comment démarrer en mode flash (généralement en allumant l’appareil tout en maintenant le bouton "volume bas").
- Connectez le téléphone à l’ordinateur et démarrez-le en mode flash.
- Suivez les instructions de la section « Installation » sur la page de l’appareil.
- Flasher le système de fichiers racine :
$ pmbootstrap flasher flash_rootfs - Redémarrez l’appareil et vérifiez que postmarketOS démarre correctement.
Étape 2 : configurer le serveur
Connectez-vous au téléphone sur lequel postmarketOS est installé. Le nom d’utilisateur et le mot de passe par défaut sont user / 147147.
- Connexion SSH pendant que le téléphone est branché à l’ordinateur :
$ ssh user@172.16.42.1 - Connexion au réseau WiFi :
$ nmcli device wifi connect your_wifi_network --ask
Votre serveur local sur téléphone est maintenant prêt. Commande pour vérifier l’adresse IP locale du téléphone :
$ ip -4 addr show wlan0 | grep inet | awk '{print $2}' | cut -d'/' -f1
(généralement au format 192.168.1.x). Branchez le téléphone dans un endroit sûr et accédez-y via le WiFi :
ssh user@192.168.1.x
Étape 3 : servir une page web
Configurez un serveur web pour héberger une page web simple.
- Créer le répertoire
/var/www/html/:sudo mkdir -p /var/www/html/ - Écrire un fichier HTML Hello World simple :
$ sudo sh -c 'echo "<h1>hello world</h1>" > /var/www/html/index.html' - Ajouter une règle nftables autorisant les paquets entrants sur le port 80 (dans le fichier
/etc/nftables.d/99_http.nft) :inet filter input tcp dport 80 ct state new accept - Redémarrer nftables :
$ sudo systemctl restart nftables - Lancer le serveur web :
$ httpd -h /var/www/html/ - Test : vérifiez depuis l’ordinateur avec curl :
(le texte$ curl 192.168.1.x<h1>hello world</h1>s’affiche). Vous pouvez aussi vérifier en saisissant l’adresse IP dans le navigateur web d’un appareil connecté au même réseau WiFi. (Le serveur HTTP ne redémarre pas automatiquement après un redémarrage.)
En plus : accès à distance
Pour des raisons de sécurité, n’ouvrez pas le port SSH 22 sur Internet ; configurez plutôt l’accès VPN de votre routeur (la plupart le prennent en charge via leur interface web). Une fois connecté en VPN, accédez-y en SSH depuis le réseau local. Si vous ouvrez le port 22 sur Internet, désactivez l’authentification par mot de passe et configurez des clés SSH.
En plus : maintenance
Mise à jour des paquets :
$ sudo apk update
$ sudo apk upgrade
Étapes suivantes
La section avancée (encore en construction) explique comment configurer un domaine et HTTPS, ainsi que comment faire en sorte que le serveur HTTP continue de tourner après un redémarrage.
Ce guide a été réalisé par Louis Merlin sous licence CC BY-NC-SA 4.0.
4 commentaires
J’aime bien ce genre de choses.
Pour démarrer simplement, quelque chose comme Termux suffit déjà. C’est utilisable, par exemple, pour lancer Grafana sur une tablette inutilisée.
Cependant, Android OS réagit de façon hostile au fait de fonctionner comme serveur.
Sur la base d’un Note10 réinitialisé aux paramètres d’usine en 2024,
si le nombre de processus enfants dépasse 6, ils sont tués.
Même lorsqu’il reste inactif trop longtemps, il se fait tuer.
C’est le cas même en désactivant toutes les optimisations liées à la batterie.
Je l’ai fait tourner au maximum 72 heures sans toucher à l’écran tactile, puis j’ai abandonné au-delà.
Avez-vous essayé de désactiver le phantom process killer ?
La batterie tiendra le coup ?
Il y aura sûrement du gonflement, non ?