Outils pour utilisateurs

Outils du site


projets:paslarbre

Les Paslarbres numériques

Ceci n'est pas un arbre à palabre…

L'idée est de poser une sorte de tableau de post-it sous la forme d'un arbre virtuel partagé et accessible par le réseau WiFi uniquement local.

Une représentation d'arbre s'affiche dans le navigateur si on se connecte au SSID Paslarbre

Tous le monde peut écrire un post-it et le placer ou il veut sur le dessin, ils sont de couleur et leur édition est minimaliste.

Je pose simplement un Scrumblr qui est un logiciel libre distribué sous licence GPLv3 ayant pour objectif de fournir un tableau de post-it collaboratif en temps réel. Il s’agit de la solution logicielle qui propulse le service en ligne Framemo de Framasoft. Du point de vue utilisateur, seul un navigateur Web est nécessaire.

Dans un premier temps , le paslarbre sera laissé à lui même, chacun pourra réorganiser les postit comme il le veut, je vais voir à empêcher la suppression et garder l'historique pour l'animé plus tard.

Semis

Matière

  • une OrangePi Zero, pour commencer, le WiFi n'est pas terrible mais déjà là. Je passerais sans doute sur une NanoPi NEO avec un dongle WiFi b/g/n plus tard.
  • La partie alimentation dépendra de l'endroit, intérieur : un transfo, extérieur : une pile zinc/air avec une petit régultateur/booster?

Semis

À la main

après un sudo su

Fixer la partie réseau

echo "paslarbre">/etc/hostname && hostname paslarbre
echo "
127.0.0.1   localhost www.paslarbre.local paslarbre.local paslarbre
192.168.4.1 www.paslarbre.local paslarbre.local paslarbre
" > /etc/hosts
cat <<EOF > /etc/network/interfaces
source /etc/network/interfaces.d/*

allow-hotplug eth0
iface eth0 inet dhcp

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.4.1
netmask 255.255.255.0
network 192.168.4.0
broadcast 192.168.4.255
EOF

apt install dnsmasq iptables
apt remove network-manager

apt-get install avahi-daemon  libnss-mdns
echo "host=paslarbre
domain=local" >> /etc/avahi/avahi-daemon.conf

Partie hostapd.conf

sudo apt-get -y install iw dnsmasq hostapd
sed -i 's/DAEMON_CONF=""/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd

cat <<EOF > /etc/hostapd/hostapd.conf
# Interface wlan du Wifi
interface=wlan0
# Driver à utiliser
#driver=nl80211 ##Pilote déjà renseigné
#driver=rtl871xdrv ## Pilote à utiliser si clé Edimax
# Nom de la Piratebox
#ssid=nom_que_vous_voulez
ssid=PASLARBRE
# Mode Wifi (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g)
hw_mode=g
# Canal de fréquence Wifi (1-14)
channel=6
# Wifi ouvert à tous, pas d'authentification
auth_algs=1
# Pour activer les fonctionnalités Wifi N
#ieee80211n=1
#wmm_enabled=1
EOF

Partie dnsmasq.conf

cat <<EOF > /etc/dnsmasq.conf
interface=wlan0                          # Use interface wlan0
listen-address=192.168.4.1               # Explicitly specify the address to listen on
address=/#/192.168.4.1                   # portail captif
except-interface=eth0                    # ne rien faire sur eth0
server=192.168.4.1                       # Forward DNS requests local
resolv-file=/etc/resolv.conf.portail
dhcp-range=192.168.4.50,192.168.4.150,12h # Assign IP addresses with 12 hour lease time
EOF

Partie /etc/resolv.conf.portail

echo "nameserver 192.168.4.1
nameserver 127.0.0.1" > /etc/resolv.conf.portail

Partie Scrumblr

sudo adduser --no-create-home --home /var/www/scrumblr --disabled-login --gecos "Scrumblr" scrumblr
mkdir -p /var/www
cd /var/www
sudo git clone https://github.com/aliasaria/scrumblr.git
sudo chown scrumblr  -R /var/www/scrumblr
cd /var/www/scrumb

apt-get install npm
apt-get install redis-server lr

npm install
sudo su scrumblr -s /bin/bash
git remote add fork https://github.com/ldidry/scrumblr/
git fetch fork
git pull fork master
exit
cat <<EOF > /etc/systemd/system/scrumblr.service
[Unit]
Description=Scrumblr service
Documentation=https://github.com/aliasaria/scrumblr/
Requires=network.target
Requires=redis-server.service
After=network.target
After=redis-server.service

[Service]
Type=simple
User=scrumblr
WorkingDirectory=/var/www/scrumblr
ExecStart=/usr/bin/nodejs server.js --port 4242

[Install]
WantedBy=multi-user.target
EOF

On fabrique des règles pour rediriger les entrées des navigateurs sur le service 4242, plutot que d'utiliser un proxy genre ngninx, plus sophistiqué mais plus lourd

Nous gérerons donc tous les services derrière nodejs/scrumblr

cat <<EOF > /usr/local/bin/redirige_port.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A PREROUTING  -t nat -i eth0 -p tcp -m multiport --dport 80:443 -j REDIRECT --to-ports 4242 
/sbin/iptables -A PREROUTING  -t nat -i wlan0 -p tcp -m multiport --dport 80:443 -j REDIRECT --to-ports 4242 
/sbin/iptables -A FORWARD     -p tcp -d 192.168.4.1 --dport 4242 -j ACCEPT
/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE
EOF
chmod 755 /usr/local/bin/redirige_port.sh

On demarre le tout

/usr/local/bin/redirige_port.sh
iptables-save -c > /etc/iptables-save # a rappeler par iptables-restore

systemctl daemon-reload
systemctl enable hostapd
systemctl start hostapd
systemctl enable dnsmasq
systemctl start dnsmasq
systemctl enable scrumblr
systemctl start scrumblr
#systemctl disable avahi # si jamais de connexion lan

Paslarbre

Apres:

apt install redis-tools # pour une petite base de données
apt install python-pip # pour des outils python
pip install rdbtools
  • relocalisation de toutes fonts en locale
  • coup de peinture dans les css et pages
  • script listant dans une page “/foret” les paslarbres accessibles
  • modifications de quelques autre script js
    • extrait_base.sh
      #!/bin/bash
      # archive la base si il y a une modification
      cd /var/www/scrumblr/archives
      redis-cli --rdb /tmp/redis_dump.rdb
      rdb --command json /tmp/redis_dump.rdb > /tmp/dump.json
      diff /tmp/dump.json ./dump.json > /dev/null
      RET=$?
      if [ $RET -eq 0 ];then
      	exit 0
      else
      	mv /tmp/dump.json .
      	cp dump.json  dump_`date '+%y-%M-%d_%T'`.json
      fi
      exit 0
    • extrait_room.sh
      #!/bin/bash
      # renvoi la liste des room scrumblr
      redis-cli --scan "room" | sed 's/\#scrumblr\#-room:\///'| awk -F"-" '{ print $1 }' | sort -u
      exit 0
    • fait_page_liste.sh
      #!/bin/bash
      # liste les room, paslarbres de redis et en fait une page jade
      cd /var/www/scrumblr/views
      cat ./liste.jade.debut > ./liste.jade
      for i in `../bin/extrait_room.sh`
      do
      	echo "
                                                      <br>
                                                      p.home!= '<a href=\"http://pasla
      rbre/\">' + '$i/a>'
                                                      <br> " >> ./liste.jade
      done
      
      cat ./liste.jade.fin >> ./liste.jade
      exit 0
  • rdb extrait d'une base redis
    #!/usr/bin/python
    # EASY-INSTALL-ENTRY-SCRIPT: 'rdbtools==0.1.10','console_scripts','rdb'
    __requires__ = 'rdbtools==0.1.10'
    import sys
    from pkg_resources import load_entry_point
    
    if __name__ == '__main__':
        sys.exit(
            load_entry_point('rdbtools==0.1.10', 'console_scripts', 'rdb')()
        )

Voici le paslarbre à décompresser en place /www/ :scrumblr_paslarbre.tgz, directement fonctionnel

j'ai aussi un crontab -e avec

 0 * * * * /var/www/scrumblr/bin/extrait_base.sh # sauvegade scrumblr paslarbre si necessaire

pour sauvegarder les paslarbres en cours de croissance

projets/paslarbre.txt · Dernière modification: 2018/03/24 16:05 par gepeto