Voici la marche à suivre pour mettre en service un Raspberry Pi avec CNCjs pour le contrôle en réseau des CNC.
Les étapes ci-dessous sont adaptées de la marche à suivre officielle mises à jour pour utilisation avec un Raspberry Pi 5 (mars 2024).
On utilise ici une méthode "headless", c'est à dire sans avoir besoin de connecter le Pi à un écran, clavier et souris. Si on préfère intervenir directement sur le Pi, les étapes concernant la connexion SSH peuvent être omises.
Flasher la carte SD et y installer la dernière version de Raspberry Pi OS Lite (plus rapide et plus léger que la version complète, mais sans navigation graphique). Le plus simple est d'utiliser Raspberry Pi Imager pour cette étape.
Avant d'écrire la carte, utiliser les options de Raspberry Pi Imager pour donner un nom au raspberry, activer SSH, créer l'utilisateur et le mot de passe, et activer la connexion WiFi. Pour la connexion SSH, il est possible d'utiliser une clef RSA publique pour l'authentification, si on en a une. Sinon, on utilisera le nom d'utilisateur et mot de passe.
On utilise les valeurs suivantes:
Une fois la carte SD configurée, la placer dans le Pi et le démarrer.
Se connecter par SSH: ssh cncpi@cncpi01.local
Mettre à jour le Pi:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
Installer git, iptables, nodejs et npm:
sudo apt-get install -y build-essential git
sudo apt-get install -y iptables
sudo apt-get install -y nodejs npm
Installer cncjs:
sudo npm install -g cncjs@latest --unsafe-perm
(le flag --unsafe-perm
est là pour forcer npm à installer cncjs comme root)
Ignorer les warnings, en principe npm reconnaît lorsqu'il manque des packages et les installe si nécessaire.
Installer et configurer PM2 (Production Process Manager):
sudo npm install -g pm2
pm2 startup
Attention à ne pas faire sudo
sur cette dernière commande. Copier-coller et exécuter la commande affichée par pm2 startup, ce sera quelque chose comme
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u cncpi --hp /home/cncpi
Cette étape est importante pour s'assurer que PM2 sera exécuté par l'utilisateur courant (cncpi) et non root.
On peut maintenant démarrer le gestionnaire de processus PM2 avec CNCjs et l'ajouter aux processus à démarrer au démarrage:
pm2 start $(which cncjs) -- --port 8000 -m /tinyweb:/home/cncpi/tinyweb
pm2 save
On peut maintenant tester que CNCjs fonctionne correctement en pointant un navigateur vers http://cncpi01.local:8000
Cela va permettre d'accéder à CNCjs via le port par défaut (80).
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
sudo apt-get install iptables-persistent -y
Répondre oui aux questions de iptables-persistent, cela devrait sauvegarder les infos ci-dessus pour qu'elles soient préservées au démarrage.
Il ne reste plus qu'à redémarrer le Pi
sudo reboot
et après quelques minutes vérifier si CNCjs fonctionne bien en pointant le navigateur vers http://cncpi01.local !
Les opérations suivantes suffisent en principe à tout mettre à jour.
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo npm update -g
sudo reboot now