Outils pour utilisateurs

Outils du site


issue147:c_c

I recently replaced my aging MacBook Pro with a Dell XPS 15 (7590) with the intention of once again switching to one computer for both on-the-go and at my desk (via the use of an eGPU enclosure). Until now, my main computer was my Intel NUC with an i5 which was running ArchLinux and was on 90% of the time. It ran my local web apps, Plex installation, and acted as a Samba share for some files. For various reasons, I can’t always assume my laptop will be up and running, or connected to a wired network connection. As such, hosting internal tools like that seems kind of silly. Instead, I dusted off my Raspberry Pi (periodically used as a printer server and a test environment), and have pressed it into service as my internal tools host. This month’s article will run through some things I discovered in the new version of Raspbian, and a few tricks I’ve thought of along the way.

J'ai récemment remplacé mon MacBook Pro vieillissant par un Dell XPS 15 (7590) avec l'intention, une fois de plus, de passer à un seul ordinateur pour les déplacements comme à mon bureau (via l'utilisation d'un boîtier eGPU). Jusqu'à maintenant, mon ordinateur principal était mon NUC Intel avec un i5 qui faisait tourner ArchLinux et qui fonctionnait 90 % du temps. Il faisait tourner mes applis Web locales, l'installation Plex et faisait office de partage Samba pour certains fichiers. Pour différentes raisons, je ne peux pas toujours présumer que mon portable soit en état de marche ou connecté à une connexion de réseau câblé. Dans de telles conditions, des outils d'hébergement interne semblent quelque peu idiots. À la place, j'ai dépoussiéré mon Raspberry Pi (utilisé de temps en temps comme serveur d'impression et comme environnement de test) et je l'ai remis en service comme hôte de mes outils internes. Cet article passera en revue les quelques points que j'ai découverts dans la nouvelle version de Raspbian et quelques astuces auxquelles j'ai pensé pendant ce temps-là.

Initial Setup Setup is pretty easy - follow the instructions for Raspbian and copy it to an SD card. Then boot it. Configuration Ask yourself a few questions for this next step: Where will you be using the RPi most frequently? Will it have access to: • Wired internet? • The same IP/network (i.e. will you be moving it around)? • Keyboard/mouse/monitor? • External storage? • Airflow/cool environment? • A direct power connection (versus battery)?

Paramétrage initial

La paramétrage est plutôt facile, suivez les instructions pour Raspbian et copiez-le sur une carte SD. Puis démarrez dessus.

Configuration

Posez-vous quelques questions pour l'étape suivante :

Où utiliserez-vous le Rpi le plus souvent ? Sera-t-il : ••Câblé à Internet ? ••Sur le même réseau/la même IP (c'est-à-dire, allez-vous le déplacer) ? ••Gestion du clavier/de la souris/de l'écran ? ••Stockage externe ? ••Environnement de refroidissement/ventilation ? ••Alimentation directe sur secteur (ou batterie) ?

What will you want to do with the RPi? Depending on the answers to some of these questions, it may impact your decision on what model of RPi you want. If you’re worried about temperatures, you can find some small heatsinks to put on the RPi’s chips. It’s passive cooling, but will increase the surface area to dissipate heat. In my scenario, my answers are as follows: • It’ll run on both wired and wireless networks. • The IP cannot be fixed (different interfaces, and I will use it in at least two separate networks with different IP ranges). • It will have minimal access to input and output devices. It must have SSH and/or VNC services running. • It will have access to external storage, but it will not always be the same drive. • Airflow shouldn’t be a problem (in both cases, it will run on a table, not tucked into a closet). • It’ll run directly from the A/C adapter. • It’ll run Plex, a ruby on rails app, an SSH service, a VNC service, and will most likely run more local web apps to be accessed on the local network.

Que voulez-vous faire avec le RPi ?

Suivant les réponses à certaines de ces questions, cela peut influencer votre décision sur le modèle de RPi que vous voulez. Si la température vous préoccupe, vous pouvez trouver des petits radiateurs à placer sur les puces du RPi. C'est un refroidissement passif, mais cela augmentera la surface de dissipation de la chaleur.

Dans mon scénario, les réponses sont les suivantes : ••Il tournera sur des réseaux câblés et non-câblés. ••L'IP ne peut pas être fixe (des interfaces différentes et je l'utiliserai dans au moins deux réseaux séparés avec des plages d'IP différentes). ••Il aura un accès minimal aux dispositifs d'entrées/sorties. Des services SSH et/ou VNC devront fonctionner. ••Il accédera à des stockages externes, mais ce ne sera pas toujours le même disque. ••L'aération ne devrait pas être un problème (dans les deux cas, il fonctionnera sur une table, et non pas confiné dans un boîtier). ••Il tournera directement sur une prise secteur. ••Il fera tourner Plex, une appli Ruby-on-Rails, un service SSH, un service VNC et fera tourner très probablement d'autres applis Web locales accessibles sur le réseau local.

The Problems There were two big problems I saw with the requirements. One problem was the inconsistent external drive, and the other issue was the changing IP address. One problem at a time - I set up my external drive using the UUID in my fstab file, and included the nofail flag. This will ensure that the RPi will boot even if the drive is unavailable. By default it will timeout after 90 seconds, which I deemed too long. Instead, I added “x-systemd.device-timeout=30” directly after the nofail flag. This sets the timeout to 30 seconds instead.

Les problèmes

Il y a deux gros problèmes que j'ai vu dans les exigences. Le premier était un disque externe irrégulier, et l'autre était la variation de l'adresse IP.

Un problème à la fois : j'ai paramétré mon disque externe en utilisant l'UUID dans mon fichier fstab et j'ai inclus le drapeau nofail. Ça assurera que le RPi démarrera même si le disque n'est pas disponible. Par défaut, la limite de temps se déclenche au bout de 90 secondes, ce qui me semblait trop long. À la place, j'ai ajouté « x-systemd.device-timeout=30 » directement après le drapeau nofail. Ça limite le temps d'attente à 30 secondes.

The other problem I still haven’t found an ideal solution for. I set up and enabled the avahi-daemon to allow an mDNS broadcast on the RPi (which should make it available under raspberrypi.local on the network). Unfortunately, this seems to work only sporadically. On a wired connection it seems to fail only in Chrome and Opera, but on a wireless connection it doesn’t work for anything. As long as I can manage to get ping to successfully find the local domain, I can at least ensure I’ll be able to discover the IP address it’s running on. I also tried to set up static IP addresses for the 2 different networks and 3 connections modes (location 1 wired, location 1 wireless, location 2 wireless). While this seems to work more readily than avahi, it’s still not a guarantee. I’ve experienced the RPi still pulling in random IP addresses in both locations, or running on a static IP in the wrong network (causing a complete failure of connection, as an IP in one location is invalid in another). I’ve since then tweaked the settings, but haven’t yet thoroughly checked the results. That will happen later this summer.

Pour l'autre problème, je n'ai pas encore trouvé de solution idéale. J'ai paramétré et activé avahi-démon pour permettre une large diffusion de mDNS sur le RPi (ce qui devrait le rendre disponible sous raspberrypi.local sur le réseau). Malheureusement, ça semble ne marcher que sporadiquement. Sur une connexion par câble, il semble n'échouer que dans Chrome et dans Opera, mais sur une connexion sans fil il ne marche pas du tout. Tant que je peux gérer les pings pour trouver le domaine local avec succcès, je suis au moins assuré que je peux découvrir l'adresse IP sur laquelle il tourne.

J'ai aussi essayé de paramétrer des adresses IP statiques pour les 2 réseaux différents et 3 modes de connexion (emplacement 1 câblé, emplacement 1 sans fil, emplacement 2 sans fil). Alors que ça semble marcher plus facilement qu'avec avahi, ce n'est pas encore garanti. J'ai encore vu le RPi faire des extractions à partir d'adresses IP arbitraires dans les deux emplacements ou fonctionner sur un adresse IP statique dans le mauvais réseau (entraînant un plantage complet de la connexion, car l'adresse IP d'un emplacement est invalide dans un autre). Depuis, j'ai ajusté mes réglages, mais je n'ai pas encore entièrement vérifié les résultats. Cela viendra plus tard cet été.

Setting up a rails app This part is pretty easy - just install ruby and ruby-devel. Then I cloned the git repository I stored my app in and run ‘bundle install’. It took a little while as a few items were compiled from source for the ARM architecture. I then used the trick I wrote about in FCM#145 and created a systemd service for running the rails app. I also ensured it would bind to 0.0.0.0 so that I could access the site from other devices, regardless of what the IP address was.

Paramétrer une appli Rails

Cette partie est plutôt facile - j'ai juste installé ruby et ruby-devel. Puis, j'ai cloné le dépôt git dans lequel j'ai stocké mon appli et lancé « bundle install ». Ça a pris un petit moment pendant que quelques éléments étaient compilés depuis la source pour l'architecture ARM.

Ensuite, j'ai utilisé l'astuce que j'ai décrite dans le FCM n° 145 et créé un service systemd pour lancer l'appli Rails. Je me suis aussi assuré qu'il serait lié à 0.0.0.0 de sorte que je pourrai accéder au site depuis d'autres dispositifs, quelle que soit son adresse IP.

Setting up Plex This was also pretty easy - I just installed the service, configured it, and started it. The media for the plex library is stored on the external drive. While the drives can change, the locations should remain the same. On the smaller external drive the selection of media will also change. One note here: the RPi took a long time processing all the files and loading the metadata. During this time it was frequently unresponsive and laggy. I feared at first that this might be too much for the device. However, once the initial scans and metadata loading was done, it’s been absolutely fine for streaming both on a wired and a wireless connection, as well as casting to a TV.

Paramétrer Plex

C'est tout aussi facile. J'ai juste installé le service, l'ai configuré et démarré. Les médias pour la bibliothèque Plex est stockée sur disque externe. Alors que les disques peuvent changer, les emplacements doivent rester les mêmes. Sur le disque externe plus petit, la sélection des médias changera aussi.

Une note ici : le RPi a pris un long moment pour traiter tous les fichiers et charger les méta-données. Durant ce temps, il était souvent très lent et ne répondait pas. J'ai d'abord eu peur que ça puisse faire trop pour l'appareil. Cependant, une fois les scans initiaux et la charge des meta-données réalisés, il est absolument bien pour le streaming, que la connexion soit sur câble ou sans fil, ainsi que pour le casting sur une TV.

Connecting I had to initially connect it to a monitor, keyboard and mouse – as I hadn’t booted the device in some time, and I couldn’t connect to it using the information I had stored. In this case, the IP address it was supposed to be using had been occupied by another device, and so it received a random one. I then took the time to use the direct input methods to run the dist-upgrade I needed, and then rebooted after tweaking the fstab file.

Connexions

Je l'ai d'abord connecté à un écran, un clavier et une souris, car je n'avais pas démarré le dispositif depuis un moment et je n'arrivais pas à le connecter en utilisant les informations que j'avais stockées. Dans ce cas, l'adresse IP que je devais utiliser était prise par un autre appareil et ainsi, il en a reçu une d'aléatoire.

Puis j'ai pris le temps d'utiliser les méthodes d'entrée directe pour lancer le dist-upgrade dont j'avais besoin ; ensuite, j'ai redémarré après avoir ajusté le fichier fstab.

After I knew the IP address the device was running (and avahi-daemon was working), I connected instead using VNC and SSH (VNC when I was trying to test the rails app and had to check in a local web browser, and SSH whenever I needed to quickly change a file or run a service). The RealVNC service I’m running is surprisingly good. I remember my last experience using VNC frequently were weird colors, artifacts, and a laggy interface. On this new laptop I’ve had no such issues. I also took the time to set up a samba share on the RPi to share the external drive location on my local network. This way I can quickly and easily add media files to Plex if I need to. I didn’t need to do anything beyond the basic steps - install it, run it, and create a Samba share and password for the pi user.

Une fois que je connaissais l'adresse IP à laquelle fonctionnait le dispositif (et qu'avahi-daemon tournait), je me suis connecté en utilisant VNC et SSH à la place (VNC quand j'avais essayé de tester l'appli Rails et que je devais m'identifier sur un navigateur Web local, et SSH chaque fois que j'avais besoin de modifier un fichier ou de lancer un service rapidement). Le service RealVNC que je fais tourner est étonnamment bon. Je me souviens que, lors de ma dernière expérience d'utilisation de VNC, j'avais fréquemment des couleurs bizarres, des artéfacts et une interface molassonne. Sur ce nouveau portable, je n'avais aucun de ces problèmes.

J'ai aussi pris le temps de paramétrer un partage Samba sur le RPi pour partager l'emplacement du disque externe sur mon réseau local. De cette façon, je peux rapidement et facilement ajouter des fichiers multimédia à Plex si j'en ai besoin. Je n'ai rien eu à faire de plus que ces étapes de base, l'installer, le lancer et créer un partage Samba et un mot de passe pour l'utilisateur du pi.

Verdict Is everything as fast and reliable as when it ran on my NUC? No. On the other hand, it’s portable, small, quiet, and doesn’t draw as much power. So far, I haven’t run into any showstoppers, and once the large Plex scans finished up, subsequent small scans have been fine. So for any readers who are hoping to use their Raspberry Pi for more than just tinkering - I say go for it! To any readers out there who have found a good solution to always knowing the device’s IP address, please do let me know! As always, any questions, comments, or suggestions can be sent to me at lswest34+fcm@gmail.com.

Verdict

Est-ce que c'est aussi rapide et fiable que quand ça tournait sur mon NUC ? Non. En revanche, c'est portable, petit, silencieux et consomme peu. Jusqu'ici, je n'ai pas encore eu de difficultés, une fois que les grands scans de Plex furent finis, les petits scans suivants ont été bien.

Aussi, pour tous les lecteurs qui espèrent utiliser leur Raspberry Pi pour autre chose que du bricolage, je vous dis d'y aller ! À tous les lecteurs qui auraient trouvé une bonne solution pour connaître l'adresse IP du dispositif à n'importe quel moment, n'hésitez pas à me le dire ! Comme toujours, les questions, les commentaires et les suggestions sont à envoyer à mon adresse lswest34+fcm@gmail.com.

issue147/c_c.txt · Dernière modification : 2019/08/08 10:10 de andre_domenech