Ceci est une ancienne révision du document !
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.
après un sudo su
Fixer la partie réseau
echo "paslarbre">/etc/hostname && hostname paslarbre echo " 127.0.0.1i 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
Apres:
apt install redis-tools # pour une petite base de données apt install python-pip # pour des outils python pip install rdbtools
#!/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
#!/bin/bash # renvoi la liste des room scrumblr redis-cli --scan "room" | sed 's/\#scrumblr\#-room:\///'| awk -F"-" '{ print $1 }' | sort -u exit 0
#!/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
#!/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