From 7c1ed25c14767f7db027d60286382c39ba745ea9 Mon Sep 17 00:00:00 2001 From: poka Date: Thu, 12 Dec 2019 17:48:03 +0000 Subject: [PATCH] Update README.md --- README.md | 232 ++++++++---------------------------------------------- 1 file changed, 31 insertions(+), 201 deletions(-) diff --git a/README.md b/README.md index cb5f637..8161365 100644 --- a/README.md +++ b/README.md @@ -27,36 +27,21 @@ https://www.youtube.com/watch?v=QDnG3Jni7sY https://www.youtube.com/watch?v=LqV65iPTmnc https://www.youtube.com/watch?v=_PVwf9nRAA0 +## I. Matériel -## Installation +**A découvrir sur la page [G1SMS:small_orange_diamond:](https://www.g1sms.fr/fr/blog/g1smsplus)** - git clone https://git.p2p.legal/axiom-team/G1sms - mv G1sms G1sms+ - cd G1sms+ - chmod u+x install.sh +## II. Préparation -### Options - ./install.sh : Cycle normale, va détecter si les éléments sont installés ne va pas les réinstaller. Demande confirmations, et propose d'installer les outils otionnels - ./install.sh force : Réinstalle les éléments même si ils sont déjà installés - ./install.sh noask : Ne pose pas de questions de confirmation pendant l'install, il y va - ./install.sh all : Install les outils optionnels sans poser de question - ./install.sh noptions : N'installe pas les outils optionnels +### 1. Installer Raspbian Stretch ou Buster (9 ou 10) :ice_cream: - - -## Matériel - -A découvrir sur la page [G1SMS:small_orange_diamond:](https://www.g1sms.fr/fr/blog/g1smsplus) - -## **Installer Raspbian Stretch** :ice_cream: - -* Téléchargez "[Raspbian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/)" et flashez l'image sur une carte microSD +* Téléchargez "[Raspbian Buster Lite](https://www.raspberrypi.org/downloads/raspbian/)" et flashez l'image sur une carte microSD * Installez Raspbian ([comment faire sur un RaspberryPi Zero sans écran?](https://projetsdiy.fr/comment-installer-raspbian-raspberry-pi-zero-sans-ecran-clavier/)). Terminez cette phase par une mise à jour > **sudo apt update; sudo apt upgrade -y** -### 1. Installation carte GSM (pour commandes par SMS)? +### 2. Installation carte GSM (pour commandes par SMS)? L'interface de commande par SMS permet d'ouvrir l'usage de la monnaie libre à ceux qui ne possèdent pas de smartphone et n'ont aucun ordinateur connecté à disposition... Et permet l'utilisation du réseau 2G des opérateurs, peut encombré et presque gratuit (1€/ mois chez Free je crois) @@ -68,7 +53,7 @@ Elles ont besoin d'être testées et d'améliorer leur compatibilité CLI. En fo Les scripts "./shell/cron" en cours d'écriture/test et sont à activer soi-même. -### 2. **Activer le GSM pHAT** +### 3. **Activer le GSM pHAT** La carte utilise une connexion UART sur l'interface GPIO du Rpi pour communiquer (en commandes AT). Placer le jumper dans la position B pour activer ce mode. On prendra soin de désactiver la console (tty) établie par le système sur le port série qui rentre en conflit autrement... @@ -77,7 +62,7 @@ La carte utilise une connexion UART sur l'interface GPIO du Rpi pour communiquer * Effacer **console=serial0,115200** de **/boot/cmdline.txt** * Redémarrer... -### 3. Démarrer la carte GSM ! +### 4. Démarrer la carte GSM ! il faudra appuyer 3 secondes sur le bouton d'allumage. Nous allons le faire par un script qui manipule le GPIO. @@ -99,157 +84,44 @@ il faudra appuyer 3 secondes sur le bouton d'allumage. Nous allons le faire par Ajouter le lancement de ce script au démarrage (dans /etc/rc.local) -### 4. Installer gammu et gammu-smsd +## III. Installation de Ḡ1sms+ avec ses prérequis (Gammu, IPFS) et ses modules +### Clonez le dépôt G1sms+ + git clone https://git.p2p.legal/axiom-team/G1sms + mv G1sms G1sms+ + cd G1sms+ + chmod u+x install.sh -Afin de dialoguer avec le réseau GSM, recevoir et envoyer des SMS. Nous utiliserons le serveur gammu. Suivre la procédure détaillée ici: https://tutoandco.colas-delmas.fr/software/envoyer-sms-gammu-deamon/ +### Options + ./install.sh : Cycle normale, va détecter si les éléments sont installés ne va pas les réinstaller. Demande confirmations, et propose d'installer les outils otionnels + ./install.sh force : Réinstalle les éléments même si ils sont déjà installés + ./install.sh noask : Ne pose pas de questions de confirmation pendant l'install, il y va + ./install.sh all : Install les outils optionnels sans poser de question + ./install.sh noptions : N'installe pas les outils optionnels - sudo apt-get install ppp screen git python3-pip minicom gammu gammu-smsd - sudo usermod -aG gammu pi; - -Vérifier que la carte GSM pHAT est démarrée, sinon lancer - sudo ./GSM_powerkey.sh +**VOILA! Le système peut maintenant dialoguer par SMS.** -Identification de la carte +## IV. Tests - sudo gammu --identify - -> Device : /dev/ttyS0 -> Manufacturer : SIMCOM_Ltd -> Model : unknown (SIMCOM_SIM868) -> Firmware : Revision:1418B03SIM868M32_BT -> IMEI : 868183033532677 +### Envoyer un SMS + echo "Mon premier SMS envoyé !" | gammu-smsd-inject TEXT 06xxxxxxxx -Création du fichier de configuration gammurc à partir de ces infos... -**sudo nano /etc/gammurc** +**TODO :** +- Ajouter un test silkaj +- Notif d'une alert admin par G1sms - [gammu] - port = /dev/ttyS0 - model = SIMCOM_Ltd (SIMCOM_SIM868) - connection = at19200 - synchronizetime = yes - logfile = /tmp/smsd.log - logformat = nothing -TEST: Envoyer un SMS. +--- +--- +--- - sudo gammu sendsms TEXT 06nnnnnnnn -text "NOUVEAU G1sms+" +**La partie qui suis doit être mise à jours !** -Tout ce passe bien? Alors on installe le daemon gammu smsd - sudo apt install gammu-smsd -y -Préparer le fichier de configuration ([DOC gammu...](https://wammu.eu/docs/manual/smsd/config.html)) -Adaptez selon le code PIN de votre carte SIM. -**sudo nano /etc/gammu-smsdrc** - [gammu] - device = /dev/ttyS0 - name = SIMCOM_Ltd (SIMCOM_SIM868) - connection = at19200 - synchronizetime = yes - gammucoding = utf8 - logformat = textall - [smsd] - service = files - Logfile = /tmp/smsd.log - DeliveryReport = log - debuglevel = 3 - CommTimeout = 5 - ReceiveFrequency = 5 - CheckSecurity = 1 - PIN = 0000 - - # Paths where messages are stored - inboxpath = /var/spool/gammu/inbox/ - outboxpath = /var/spool/gammu/outbox/ - sentsmspath = /var/spool/gammu/sent/ - errorsmspath = /var/spool/gammu/error/ - - # Run G1SMS Script RunOnReceive - RunOnReceive = /home/pi/G1sms+/sms_received.sh - -Le fichier de configuration maintenant prêt, on peut redémarrer le démon smsd - -**sudo service gammu-smsd restart** - -Vous voyez cette ligne dans vos processus? Tudo Bom :smiley: ! - - ps auxf - usr/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon - -VOILA! Le système peut maintenant dialoguer par SMS. - -## Installer le coeur de G1sms+ -:warning: Le code appelé par gammu s'exécute en tant qu'utilisateur root. - -On pourra ajouter **umask 027** à **/root/.bashrc** pour isoler l'appartenance des fichiers de ce compte. - -### 1. Installer Silkaj & Duniterpy - - # Exécuter les commandes suivante en root - sudo -s - - # Silkaj + Duniterpy - sudo apt install python3-pip - sudo apt install libsodium18 - sudo pip3 install silkaj - -Voila ces 2 super connecteurs python à Duniter installés :cool: Ils seront utilisés par G1sms+ pour gérer les wallets et leurs TX, récupérer le profil des membres dans Cesium+, etc... - -En fait pour l'instant l'API CLI de silkaj n'étant pas encore disponible. C'est la version 0.50 patchée de G1sms qui continue à être utilisée (TODO !!!). Dans ce cas, il faudra peut-être installer les librairies pythons à la main... - - cd ./silkaj - pip3 install -r requirements.txt - -Dans cette version. Le dialogue avec les serveurs Duniter a été améliorée par un "load-balacing" régulier sur le groupe de serveurs en plus grand consensus et ayant un timeout correct... - -### 2. Installer IPFS - -Installer ipfs par son programme de mise à niveau permettra de facilement suivre l'évolution de l'Univers Interplanétaire :crystal_ball: - - sudo -s - cd /usr/src/ - wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz - tar xvzf ipfs-update_v1.5.2_linux-arm.tar.gz - cd ipfs-update - ./install.sh - ipfs-update install latest - - -Maintenant on peut choisir entre 3 façons de faire: -1. Opérer IPFS en Réseau Privé (swarm.key & Environment="LIBP2P_FORCE_PNET=1") et gérer ses serveurs de bootstrap. https://pad.p2p.legal/ipfs-onelove#Rejoindre-l%E2%80%99Essaim -2. Opérer sur IPFS Global en prenant soin de crypter les données échangées. https://medium.com/@mycoralhealth/learn-to-securely-share-files-on-the-blockchain-with-ipfs-219ee47df54c -~~3. Utiliser l'application ipfs-cluster: https://cluster.ipfs.io/documentation/quickstart/~~ - -C'est finalement l'option 2 qui a été choisie, en chiffrant les fichiers mis dans IPFS par la clef GPG du SWARM, du NODE, ou du TAG, la sécurité est assurée (regarder dans ./shell/init_keys.sh, [Generer une clef GPG pour le NODE](https://serverfault.com/a/960673), partager les clefs publiques des Nodes ./wallets/SWARM/IPFSID/gpgpubkey) - -Ici, chaque noeud reste propritéaire des G1sms wallet qu'il a créé est reste le seul à pouvoir interagir avec. - -Configurer le démon **ipfs** pour le user **pi** - - -Configurer et initialiser le démon avec des options p2p trop pratiques (communication, publication et surveillance de canal, forward de ports, reverse ssh, etc... on accède à tout par son hash, y compris un noeud...) - - su pi - ipfs init -p lowpower - # Activate pubsub (mode gossip) - ipfs config Pubsub.Router gossipsub - # Define max storage - ipfs config Datastore.StorageMax 6GB - ## Port Forwarding on P2P (SSH: ipfs p2p listen /x/ssh /ip4/127.0.0.1/tcp/22 ) - ipfs config --json Experimental.Libp2pStreamMounting true - -On ajoute au BOOTSTRAP le(s) noeud(s) leader (always on) du SWARM - - ######### UPDATE BOOTSTRAP LIST ########### - ipfs bootstrap rm --all - ### fred@onelove.madeinzion.org ### - # ID: QmSX7gFRPHui5A2DWFk2VmBvq6hynj2hubhJLQAwPWe4Lh - ipfs bootstrap add /ip6/fe80::207:cbff:fe0b:75bb/tcp/4001/ipfs/QmSX7gFRPHui5A2DWFk2VmBvq6hynj2hubhJLQAwPWe4Lh - ipfs bootstrap add /ip4/51.15.2.211/tcp/4001/ipfs/QmSX7gFRPHui5A2DWFk2VmBvq6hynj2hubhJLQAwPWe4Lh ### 3. ACTIVER LE SUPPORT A DISTANCE @@ -277,43 +149,6 @@ FAIRE APPEL AU SUPPORT ssh pi@localhost -p 2222 - -### 4. Lancement de ipfs au démarrage du système - -**sudo nano /etc/systemd/system/ipfs.service** - - [Unit] - Description=IPFS daemon - After=network.target - - [Service] - User=pi - ExecStart=/usr/local/bin/ipfs daemon --enable-pubsub-experiment --enable-namesys-pubsub --routing=dhtclient --enable-gc - Restart=on-failure - - [Install] - WantedBy=multi-user.target - - -Activer et lancer le service ipfs - - sudo systemctl daemon-reload - sudo systemctl enable ipfs - sudo systemctl start ipfs - - sudo systemctl status ipfs - - -### 5. Installer la Suite: logiciels et périphériques - -On installe **gnupg** ntpdate pour synchroniser nos horloges plus de quoi manipuler les images, les qrcodes, les chiffres et le json (dialogue avec DUNITER et CESIUM) - - sudo apt install gnupg ntpdate - sudo apt install ssmtp mpack - - # Pour manipuler les images, les chiffres et le json - sudo apt install imagemagick qrencode bc jq libttspico-utils - - Configurer un serveur relai email :a: https://wiki.archlinux.org/index.php/SSMTP :b: http://ozzmaker.com/send-email-from-the-raspberry-pi-or-linux-command-line-with-attachments/ @@ -419,8 +254,3 @@ https://ethereum.stackexchange.com/questions/63109/ipfs-versioning-how-to-get-al * What is InterPlanetary Naming System(IPNS)? https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b -# INSTALL - -A venir... préparer un script qui effectue ce qui est décrit dans ce document pour lancer des installations plus automatiques de NODE G1sms+ - -