Outils pour utilisateurs

Outils du site


Panneau latéral

Liens

Suivez nous:

Contactez nous:

contact[@]lafabbrique[.]org

projets:fab_briquebox

Fab'BriqueBox

Zone de partage de fichiers, et répondeur interactif !

Présentation

PirateBox ?

PirateBox est un projet créé et développé originalement en 2011 par le designer américain David Darts (https://piratebox.cc).

C’est un:

“[…] dispositif électronique souvent composé d'un routeur et d'un dispositif de stockage d'information, créant un réseau sans fil qui permet aux utilisateurs qui y sont connectés d'échanger des fichiers anonymement et de manière locale. Par définition, ce dispositif qui est souvent portable, est déconnecté d'Internet.”

(Source: https://fr.wikipedia.org/wiki/PirateBox)

On y accède donc en wi-fi (avec un smartphone/tablette/ordi portable) via une interface web qui permet de téléverser/télécharger des fichiers (comme un NAS), mais aussi de communiquer (messagerie instantanée). Le tout de façon totalement anonyme et sécurisé puisque le dispositif est déconnecté d'internet, et qu'il ne collecte aucune information personnelle.

Le projet étant open source (licence GPL), il s’est beaucoup développé (et est très bien documenté). Il s’est enrichi de modules (forum intégré, plateforme de streaming…), et connaît nombre de détournements notables. Par exemple, les Bibliobox qui proposent un système équivalent en lecture seule à installer dans les bibliothèques/médiathèques afin de diffuser (et promouvoir!) des œuvres littéraires élevées dans le domaine public, ou d’autres contenus (images, musique, films) sous licences libres. La LudoBox qui propose des jeux de sociétés sous licence libre à imprimer (pour les ludothèques). Ou encore la FreedomBox qui permet à des populations soumises à l’oppression, à la censure, de communiquer librement et anonymement sans risque de surveillance (ce type de système est très utilisé en Syrie et au Liban…)

Quelques liens…

Et pour la Fab’Brique ?

Et comment ça “un répondeur interactif” ?

On peut imaginer une PirateBox accessible en permanence depuis une zone autour du local pour:

  • Partager des fichiers (dans et hors du local)
  • Contenir les infos pratiques du FabLab en page d’accueil (horaires des permanences, plannings, contacts…)
  • Héberger un miroir de la présente documentation (mise à disposition des sources des projets)
  • Permettre aux utilisateurs de laisser des messages (ou discuter des projets via le forum intégré), même s’il n’y a pas de permanence au local. Et permettre au staff d'animation d’y laisser des réponses, des infos…

Si la Fab'Brique intègre La station, le dispositif peut être intéressant à développer au sein de la structure entière (ateliers, bureaux de co-working, openspaces). Pour proposer une plate-forme de communication et d'échange de fichiers sécurisée (hors réseau), accessible et fonctionnelle en permanence aux usagers/visiteurs.

Enjeux et autres considérations

  • Proposer un espace d’échange et de communication
    • Ouvert et collaboratif:
      Chacun à la liberté d’y déposer et prendre ce qu’il souhaite, ce dont il a besoin, ce qui pourrait servir à d’autres
    • Libre (dans le sens de la licence des fichiers contenus):
      Il faudra appuyer la communication sur le fait que les médias déposés se retrouveront de fait sous une licence (CC-BY) qui permet leur réutilisation, modification, amélioration…
    • Autogéré:
      Rien (à part en ayant accès à l’administration de la machine) ne permet de supprimer ou modifier les fichiers qui s’y trouve. Ce qui permet de s’assurer que le dispositif ne sera pas “vandalisé”. Par ailleurs, cela responsabilise les usagers quant à ce qu’il y déposent, car ils deviennent acteurs de l’évolution du contenu.
      prévoir que le staff d’animateurs modère et vérifie que les médias déposés ne soient pas déjà soumis à des licences restrictives
    • Égalitaire:
      Comme le système est déconnecté du web, et de par sa qualité de réseau autonome et ouvert, on peut y accéder sans condition (même si on a pas de 3G, même en cas de coupure de l’ADSL du local)
  • Étudier et expérimenter des pistes futures de réseaux autonomes et autogérés (wi-fi mesh -réseau locaux à l’échelle d’un quartier, d’une ville-, indépendance par rapport aux opérateurs commerciaux, lutte contre la fracture numérique, la surveillance, la censure…)
  • Amener à une réflexion autour des enjeux et des “dommages” du web centralisé (aujourd’hui proposé et organisé principalement par quelques acteurs commerciaux du secteur -GAFAM), et dans lequel quelques entreprises seulement détiennent “l’or noir” du 21ème siècle, les informations personnelles des internautes du monde entier (big data, revente de données, surveillance…)

Matériels possibles

  • PirateBox “originale”
    • Autonome, peu coûteux en matériel et en énergie
    • Routeur type TP-Link MR3020 (~30$ sur Amazon), ou autre compatible et basé sur OpenWRT (https://piratebox.cc/openwrt:hardware, par ex. Linksys WRT54GL)
    • Adaptateur secteur 5v USB (ou batterie, pour rendre le système nomade)
    • Périphérique de stockage flash (USB)
  • Raspberry (Pi)rateBox
    Idem, mais avec un Raspberry Pi (des images spéciales -Archlinux- pour RPi existent) + un périphérique de stockage flash (USB) + un dongle wi-fi avec antenne (ou un routeur/répéteur à antenne; Facultatif depuis un Rpi-3B)
  • PirateBox “Récup”
    Idem, avec un (vieux) portable (avec du wi-fi)…
  • PirateBox “De poche”
    Application pour smartphone (nécessite un Android “rooté”) qui transforme votre poche en serveur de fichier… (https://piratebox.cc/android)

Installation

Sources

Tutos

Fab’BriqueBox

Licence

Ce projet et les fichiers qu'y s'y rapportent sont, sauf mention explicite, placés sous licence GNU/GPL.

PC/laptop

Dépôt git de développement: https://framagit.org/LaFabBrique/fabbriquebox

Tests préliminaires réalisés sur:

  • netbook Asus Eeepc 1001px
  • Debian GNU/Linux (8.0 Jessie)
  • en suivant le README.txt + la page officielle

Prérequis

$ sudo apt-get install perl lighttpd hostapd dnsmasq iw
$ sudo /etc/init.d/lighttpd stop
$ sudo update-rc.d lighttpd remove
$ sudo /etc/init.d/dnsmasq  stop
$ sudo update-rc.d dnsmasq remove 
$ sudo /etc/init.d/hostapd  stop
$ sudo update-rc.d hostapd remove
  • Si un environnement graphique est utilisé (Xfce, Lxde, Gnome-shell…), network-manager empêche le lancement. Pour tuer le service:
    $ sudo service network-manager stop
  • Si Apache (ou un autre serveur web) est en train de tourner, il faut aussi le tuer:
    $ sudo service apache2 stop

Installation

  • PirateBox:
$ wget http://downloads.piratebox.de/piratebox-ws_current.tar.gz
$ tar xzf piratebox-ws_current.tar.gz
$ cd piratebox/
$ sudo cp -rv piratebox /opt
$ sudo /opt/piratebox/bin/install_piratebox.sh /opt/piratebox/conf/piratebox.conf part2
$ sudo ln -s /opt/piratebox/init.d/piratebox /etc/init.d/piratebox
  • Modules de base:
    • ImageBoard (Kareha)
      $ sudo /opt/piratebox/bin/install_piratebox.sh /opt/piratebox/conf/piratebox.conf imageboard
    • Forum (Forest.py)
      $ sudo /opt/piratebox/bin/install_piratebox.sh /opt/piratebox/conf/piratebox.conf pyForum
  • Démarrage
$ sudo /etc/init.d/piratebox start #ou
$ sudo service piratebox start

À chaque redémarrage de la machine on doit impérativement faire:

$ sudo service dnsmasq stop && sudo service lighttpd stop

RaspberryPi

Dépôt git de développement: https://framagit.org/LaFabBrique/fabbriquebox_pi

Réalisés sur:

  • RPi 3 model B
  • Carte microSD 8Gb classe 10

Installation

Pour connaître le chemin de la carte:

$ sudo blkid

(devrait être de la forme /dev/sdd ou /dev/mmcblk0)

$ unzip piratebox_rpi_*.img.zip
$ sudo dd bs=4M if=/chemin/vers/piratebox_rpi_*.img of=/dev/sdd
  • Booter la RPi sur la microSD
  • Se connecter à la Pi en ssh ($ ssh alarm@alarmpi ou $ ssh alarm@[IP local])
  • Paramétrer
    • Changer le mot de passe (mdp d'origine: alarm)
      $ passwd
    • Désactiver la synchro sur les serveurs de temps
      $ sudo timedatectl set-ntp false
    • Mettre à l'heure
      $ sudo date -s "AAAAMMJJ hhmm"
    • Finaliser l'installation
      $ cd /opt/piratebox && sudo ./bin/timesave.sh ./conf/piratebox.conf install
    • Activer au démarrage
      $ sudo systemctl enable timesave
    • (Facultatif mais intéressant, cf. plus bas) Créer une partition sur l'espace libre de la carte pour le stockage des données
      sudo /opt/piratebox/rpi/bin/sdcard_share.sh

Personnalisation de l’interface

[WIP…]

Structure des dossiers

Laptop:

  • $WWW = “/opt/piratebox/www/”
  • Style (css): $WWW/style.css
  • Images: $IMG = $WWW/img/
  • Dossier partagé = /opt/piratebox/share/Shared/

RaspberryPi: (piratebox v1.1.3)

  • $WWW = “/opt/piratebox/share/content/”
  • Style (css): $WWW/css/page_style.css
  • Images: $IMG = $WWW/img/
  • Dossier partagé = /opt/piratebox/share/Shared/

Sur Raspberry Pi, si on a déplacé le dossier partagé sur l'espace libre de la carte microSD grâce au script plus haut, /opt/piratebox/share est en fait un lien vers /mnt/sdshare/share

Cette externalisation des fichiers de l'interface et des données simplifie la personnalisation et l'administration du contenu de la PirateBox.

Il est même envisageable d'avoir plusieurs dossiers partagés externalisés sur des clés usb différentes, et de changer de “profil” en gardant le même “moteur” (cf. ce lien).

Pour personnaliser la FabBriqueBox_Pi, il faut pouvoir lui “envoyer” des fichiers modifiés.

Pour cela, on se connecte avec un client FTP (FileZilla) sous l'identifiant alarm et l'IP de la Pi. Ainsi on peut téléverser les fichiers revus vers un répertoire de /home/alarm (sur lequel ont a les droits d'écriture).

Ensuite, via un accès en SSH, on copie les fichiers avec les droits root (sudo) vers les bons emplacements dans /opt/piratebox.

Interface principale

Après chaque modifications apporté à la configuration, redémarrer la PirateBox pour la mettre à jour:
$ sudo systemctl restart piratebox

  • SSID (“nom” de la PirateBox sur le réseau): /opt/piratebox/conf/hostapd.conf (ligne 3)
  • Conf générale [WIP]: /opt/piratebox/conf/piratebox.conf
    • Modifier l'adresse du portail (Jamais essayé!!): HOST=“piratebox.lan” (ligne 67, attention à modifier /opt/piratebox/www/index.html dans ce cas)
    • Conserver les messages postés sur le chat: RESET_CHAT=“no” (ligne 151)
    • Activer le serveur IRC (Jamais essayé!!): ENABLE_IRC_SERVER=“yes” (ligne 189)
  • Page d'accueil “Fichiers”:

Si on souhaite “propager” automatiquement la personnalisation aux sous-dossiers de la partie “Fichiers”, il faut copier HEADER.txt et README.txt dans /opt/piratebox/src. Au prochain redémarrage, la personnalisation sera automatiquement émise dans les sous-dossiers.

  • Logo header (Titre): $WWW/index.html ligne 19 → $IMG/piratebox-logo-horizontal-white.png
    (annulé, remplacé par du texte blanc, pour coller avec le thème)
  • “Burger” menu (icône menu sur mobile): $IMG/menu.png
    (annulé, retour au logo original blanc pour coller avec le thème)
  • Déplacement du footer (disclaimer) vers une page dédiée
    (annulé, remis en pied de page)
  • Création d'une page pour indiquer la procédure de déconnexion
    (annulé, ajout d'un lien dans le menu vers une notice en pied de page)
  • Message d'accueil du chat
    • Debian: ?…
    • Raspberry Pi: /opt/piratebox/conf/chat_ini.txt

Modules complémentaires

Si les “modules” sont en php:

PHP Sur Laptop
  • Installer les dépendances
    $ sudo apt-get install php5-gd php5-cgi
  • Dans /opt/piratebox/conf/lighttpd/lighttpd.conf:
    • Supprimer “.php” des fichiers à exclure (l. 30)
      static-file.exclude-extensions = (  ".pl", ".fcgi" , ".cgi" , ".py" )
    • Ajouter la prise en charge de php, et le chemin vers l'exécutable pour chaque “module”
      $HTTP["url"] =~ "^/my-directory/" { 
      cgi.assign = ( ".php" => "/usr/bin/php-cgi" , ) 
      }
PHP sur Raspberry Pi
  • Dans /opt/piratebox/conf/lighttpd/lighttpd.conf:
    • Décommenter la dernière ligne du fichier
      ## Uncommenting the following line enables PHP for the 
      ## complete PirateBox
      include "/opt/piratebox/conf/lighttpd/fastcgi-php.conf"
  • Placer les modules dans /content
    ou
  • Modifier le chemin dans /opt/piratebox/conf/lighttpd/fastcgi-php.conf - ligne 3
    #-------------------- FAST CGI stuff
     
    $HTTP["url"] =~ "^/" {
    	fastcgi.server = (
    		".php" => ((
    				"bin-path" => "/usr/bin/php-cgi",
    				"socket" => "/tmp/php.socket",
    				"max-procs" => 1
    			))
    	)
    }
Gestionnaires de fichier alternatif
  • Bozon (PHP/“Trop complet”/Bug d'affichage… abandon)
  • sfpg (PHP/Galerie d'image, récursif depuis le dossier racine, affiche tous les fichiers, icônes de types mime personnalisables)
  • h5ai (pour rendre Droopy plus joli)
  • Jirafeau (PHP/à tester)
  • La Médiathèque Invisible (Médiathèque virtuelle d’œuvres du Domaine Public, ou sous licences libres)
Forums alternatif

(Kareha non adapté. Forest.py pas responsive)

Avant d'utiliser NNF, on doit copier le fichier de configuration, et éventuellement y apporter ses personnalisations:

$ sudo cp /opt/piratebox/share/content/NNF/config.default.php /opt/piratebox/share/content/NNF/config.php

Lighttpd ne gère pas (directement) les fichiers .htaccess (qui permet d'avoir les “nice urls”, et de gérer les “id/mots de passe” du forum), il y a donc une page d'erreur au premier lancement. Pour corriger (empêcher l'utilisation de ce fichier), il faut “sortir” le dossier users/ du répertoire de NNF, et ajuster son emplacement dans /opt/piratebox/share/content/NNF/config.php.

Wikis
  • Chuwki (PHP/Simple/Léger/Pas de BDD/Pas responsive)
  • Wikiss (PHP/Simple/Très léger/Pas de BDD/Pas responsive)
  • Dokuwiki (PHP/Complet, pas de BDD/Responsive!)

Utilisation de la Fab'BriqueBox

  • Se placer dans la zone de réception du signal
  • Aller dans les paramètres réseau de son appareil mobile
  • Choisir le réseau wifi “FabBriqueBox” (ouvert, sans mot de passe)
  • Ouvrir un navigateur et ouvrir la page piratebox.lan (ou tout autre page… )
  • Enjoy… ;-)

Signalisation / Communication

  • Affichage (panneau/affiche/stickers) signalant la présence (et la portée?) du dispositif

Idées:

  • Flyers/stickers avec la procédure d'utilisation
  • Flyers explicatifs
  • QRcode qui pointe vers piratebox.lan
  • Dossier de presse

ToDo

  • Mise en œuvre
    • PirateBox base
      • [x] Image board (Kareha) (fonctionnel, mais non adapté à la FabBriqueBox)
      • [x] Forum (forest.py) (l'ancien forum de base de la PB, malheureusement pas “responsive”)
    • Modules complémentaires
      • [-] Gestionnaire de fichiers alternatif (sfpg ou h5ai ?)
      • [x] Forum alternatif (NoNonSenseForum)
      • [x] Wiki (Dokuwiki)
      • [x] Slideshow (galerie d'images en page d'accueil. À voir: hauteur dynamique de la frame, gênant à l'usage… redondance avec sfpg?)
      • [-] Médiathèque invisible (en cours de tests)
  • Personnalisation/Traduction
  • Scripts
    • [o] Script d'installation sur laptop (à faire)
    • [-] Script de lancement sur laptop (en cours de création)
    • [o] Script de mise à l'heure (ou achat module RTC?) sur Rpi (à faire)
  • Infographie/Graphisme
    • [x] Logo
    • [o] Visuels et signalétique (à faire)
projets/fab_briquebox.txt · Dernière modification: 2018/11/29 20:37 (modification externe)