Networks Of One's Own is a para-nodal1 periodic publication that is itself collectively written in a network2. Each of the episodes is thought of as the 'release' of a specific software stack, contextualised in its specific practice. The series aims to document a set of tools, experiences, ways of working that are diverse in terms of their temporality, granularity and persistence.
The title Networks of One's Own refers to Virginia Woolf's classic essay A Room of One's Own3 which makes the case for a woman needing a space to herself to write. It was published in the historical context of Victorian England where women were expected to occupy themselves with domestic and marital duties rather than the autonomous practice of writing. Woolf's claim for a Room Of Her Own is complicated by the fact that her autonomy depended on her ability to hire staff that she could outsource her household chores to. Networks Of Ones Own takes this text as an inspiration to rethink digital intimacy, dependencies and relations in networked practices. It wants to re-imagine how technical work and content work grow together, and radically questions the way tools and practices are shaping collaborative content and vice versa.
The idea of a publication series arose from conversations with Aymeric Mansoux during the development of the Experimental Publishing Master at the Willem De Kooning academy in Rotterdam in the fall of 2016. With the advent of inexpensive so-called "single board computers" such as the popular Raspberry Pi project, it has become commonplace to distribute "disk images" that can be loaded onto an SD card which then contain a fully working software stack. The idea of a dual-form publication (both textual and executable) suggested the possibility where unique software platforms could themselves be published in tandem with content (collectively) written using the platform itself.
Networks Of One's Own is set up as a series of such dual-form publications that reflect upon and experiment with collaborative on-line practices in a time when commercial interests dominate digital working conditions. It appears at a moment when under the guise of data protection (GDPR), self-hosted, un-supervised network practices are under threat of being reigned in as potential liability. "Cloud services" offered via Internet access are typically provided by multinational corporations and it is easy to forget that the seamless experience historically originates in an inter-network linking together different autonomous and disconnected networks of varying scales: institutional, personal, educational and military.
The series Networks Of One's Own is taken care of by related but independent collectives. For each of the episodes, we propose different experimental tools for situated writing and publishing. In this way, the series allows for showing multiple perspectives, to generate multivoiced forms of documentation. It makes the editorial process of each episode a test case for the same technologies that it reflects upon. Like the old adage of the PERL community ('There is More Than One Way To Do It')4, this project is about the heterogeneity of tools and of practices, ultimately foregrounding the inherent sociality of software.
Etherbox is a constellation of collective tools and practices that developed in and around Constant5. Etherbox responds to practical issues when collaborating in physical spaces with digital tools. In parallel, it became a platform to reflect on network technologies, on how to document artistic processes and on processes of collaboration.
On a practical level, etherbox was a response to several frustrations: the fragility of online resources, the fact that the labour necessary to maintain resources online after a collective session was often overlooked or simply assumed to continue indefinitely, the limitations of Internet bandwidth when working with many people using etherpad-lite. The goal of the project was thus to present an infrastructure that is both visible and situated. Since it's early beginnings in 2013, many groups have enjoyed the pleasure of writing and documenting together, questioning infrastructure set-ups or simply sharing files effortlessly. Through these multiple experiences, Etherbox has grown up to facilitate discussions and collaborative practices independent from Constant collaborators. Now it is ready to transmutate into other networked imaginations.
As part of its programme, Constant regularly organises situations in which artists, activists, programmers, academics, designers and other researchers collaborate, exchange and reflect. Participants are invited to appropriate physical spaces for the time of the meeting: they share tables, couches, a library, the kitchen and its utensils, the basement or the closet. Etherbox extends this hospitality into digital space. It is the installation of a temporary local platform that foregrounds the sociality of DIWO6 infrastructures over the services of often commercially owned spaces in global networks.
While existing local network or server tools make users choose between local or global networking, people using Etherbox can still be connected to the internet. Sharing documents over Etherbox means that they don't travel via the far-away data-center servers of corporations, but remain in a network-setup that is visibly and physically accessible to everyone. Likewise the Terms of Service are negotiated locally, between people often in the same room. They become specific conditions for the use and potential afterlives of the collected material, rather than being thrown together by company lawyers on another continent.
This publication includes manuals for basic usage, a conversation that tries to locate this Etherbox release within interconnected histories, recipes distilled from diverse experiences and a generous collection of appendices. The publication temporarily wraps up the ever-evolving development of the toolset, so that it can be installed by any software-curious group that can get their hands on a Raspberry Pi and knows where to find an ethernet cable.
The latest Etherbox image can be downloaded from:
http://networksofonesown.constantvzw.org/01/etherbox-latest.zip
Transfer the file onto an SD Card and run it on a Raspberry Pi (version 2 or 3).
On a Linux system you can use the following command to unzip and copy the data onto an SD card. NB: in this example, "/dev/sdc" is the SD card reader. This depends on your system and can be dangerous if you accidentally pick the wrong one. Use a program such as "Disks" (gnome), gparted, or the mount command to get information about what device name your SD card reader might be.
unzip -p etherbox-latest.zip| \
pv | \
sudo dd of=/dev/sdc bs=4M
For a multi-platform graphical tool to do this, you might try Etcher.io: https://etcher.io/
Etherbox is in fact an assemblage of several other existing "boxes", it is a collection of Free Software tools. Some (like Apache and make) have a long history and represent deeply embedded workflows. Others, like etherpad-lite, are relatively newer, with a history that can reflect complex inter-plays of commercial interests with Free Software projects. The current release of Etherbox consists of:
In general, a design principle of the project is to use Free Software, protocols, and conventions as much as possible and avoid creating "smart" interfaces that obscure these pre-existing (historical) practices. The very longevity of systems such as Apache configuration files, or the operation of the shell, create a meeting ground for participants of varying degrees of familiarity with these particular ways of working.
In addition to these core pieces of software, a "pipeline" workflow is employed by virtue of a "makefile". As opposed to a conventional CMS (Content-management system or server), Etherbox uses a Makefile to make the core decisions about how materials are handled legible. In fact the contents of the makefile is itself stored in an etherpad document, meaning that it can be read and modifed at will. Keep in mind that the format of a makefile is strict, so changes should be made carefully.
make7 is a popular Free Software tool that helps programmers compile their code into programs. In Free Software, heterogeneous beast that it is, there is typically no single way to make such a translation happen. And that’s a good thing. make has been described as an exectuable cookbook, where heterogeneous 'recipes' can be defined and executed. Makefiles capture the process and make it editable and malleable. Increasingly the tool is finding new uses in publishing workflows to compile prose text into electronic formats like epub and PDF. The etherbox uses a makefile workflow to compile etherpad content and convert into HTML output. make has no graphical interface and represents a distillation of practice that suggests future tools for creating flexible, editable workflows where tweaks and workarounds are the norm.
See the Makefile used for this publication in the Appendix.
29 June 2018 @ etherbox.local and WTC25, Brussels
RA: The reason to document the history of etherbox, is because we are publishing an image right now that will expand beyond its original group of users in Brussels.
FS: It's a way to remember that Etherbox is an object that grew within a practice, that it is intimately linked to events, groups of people, concerns and practises. If we would not document its geneaology, the code or the object would eclipse other types of input. Organising situations chronologically on a timeline is only one way to remember those moments, but then how do those moments represent shared practices that do not develop always so linearly. If we say that practices are not bound to time and space, then how to document them in a respectful and generous way, not excluding anything or anyone that should be there, but also not pulling in everything? How to draw a line around a process to make it possible to think about Etherbox, while taking responsibility for that incision and its consequences. I think our struggle with how to write the pre-history of Etherbox is about that.
RA: There's a reason that it is Constant initiating this publication, and that it's the four of us sitting together now?
AM: For me it has to do with identity. We all have a name, now we are discussing a thing with a name, but this name relates to a collective practice. I feel that I am composed by anyone that I have met on my path. So, something like Etherbox is co-constructed by its meetings, experiences, peoples. It is a collective entity.
MM: Does it even make sense to trace back when the thing appeared? It is changing all the time, and there is an inherent fallacy in talking about a history of 'Etherbox' because it didn't exist in this same way most of the time. To me, the project works as a Trojan horse, in that it's a way to put a set of processes (working as a server administrator) in a specific situation.
MM: I have no idea.
RA: I think it was at the Machine Research event, it was the first time I saw it appear as a LEGO-kit. But I would disagree with the "Trojan Horse" story... It did not bring the same practises as it promised to do. There was some play with the cgi-scripts, but it was different from the dynamic that we had in Relearn 2015... it became too much a service, how it functioned at the presentation at Transmediale is not how we would have used it.
FS: So naming it was marking the end of Etherbox functioning as a Trojan Horse?
RA: The Trojan Horse contradicts the view that "If we package it well enough, then we can bring it anywhere".
MM: That is interesting to hear about Machine Research, because for me that was kind of high point in terms of the potential of what a shared writing space could mean; like I thought it was great that you and others wrote CGI scripts that then PHD students presenting their research could access and use to experiment with on their writing.
AM: For me it started when Michael announced "here is the Etherbox" when he gave me the set-up to take to Madrid for the Objects in Common worksession. I thought: oh he gave it a name.
MM: I think someone started to call it like that, as a joke, and I started using it.
FS: It is maybe also connected to the general idea of continuous collaboration that we experimented with through Etherpad: making collective graphviz-on-etherpad, ethertoff8, annotated pdfs, collaborative notetaking, producing the Conversations book9 on pads and eventually html2print10. So for me it was obvious to name Etherbox after the 'ether' from Etherpad. Etherbox tied into the thinking at OSP11 around fluid collaboration. In traditional design workflows there is the "declutch" or "baking" moment, when the design process becomes separated from the production -- and Etherbox is an important element in an ecosystem where you try to avoid that separation.
RA: Maybe we have two strands: collaborative writing and networking experiments.
FS: Yes, I think it explains our different and crossed histories with Etherbox.
AM: I would say publishing should be included here, as another strand.
MM: There is an early Etherbox version (in fact at the same time as Machine Research) that we (together with Aymeric Mansoux) used when the Experimental publishing programme was starting. We brought it to the Zine camp, where participants could connect to write a collective zine. Here we repeated the shared Questionnaire format12 from Relearn 2015.
FS: The experiments with Christoph Haag are connected for me, even if they were not necessarily done through the box.
MM: We worked on that at Promiscious Pipelines ... working with etherpad and Christoph's way of working with BASH scripts and Latex workflows with an etherpad, that impressed me as well.
AM: For me it connects to Jonctions/Verbindingen 14 when we decided to do intensive collaborative notetaking as the official way to document the days and invited OSP and Ethertoff to turn the notes into a publication13.
FS: Of course, that event was all about Feminist Servers, and Boxes!
MM: ... and their problematics.
RA: That event was really formative for me to understand how networking could be experimental in different ways.
FS: I was wondering about including the Libre Graphics Research Unit14. There was no box, Michael was not there, we did not really formulate the need for something like Etherbox but a lot of the ideas we practise right now seem to have gestated there. Maybe the closest was the Piksels and Lines Orchestra15 that emerged in Bergen. People started sonifying the processes running on their laptops -- it somehow triggered the idea that there's a flow between collaborating, note taking, history writing, design and production.
MM: An important moment was a class co-taught with Aymeric Mansoux, called Sandbox Culture1617, that was based on Aymeric's (then forthcoming) PHD18. We had found the example of the Community Memory19 project really inspirational, to talk about problematics of people being put more and more into a sandbox, closed systems that prevent you from having access to the admin.
AM: That is a difficult question. I have wondered for a long time about collaborative writing : what is an authentic form of collaborative writing where there is no classical hierarchy, and which leads to an interesting result. I remember testing a lot of recipes, using etherpad to try to construct a story, and witnessing people holding back, taking authorship in a collective text, resisting the idea of a collective; others fearing to be "aggressive" by correcting other peoples notes, or "taking up too much space". It is interesting to see this has changed.
FS: I think, somehow, this means Algolit20 is also part of the story?
AM: Yes ... and no ... now it gets too complicated!
AM: And there is also the Piratebox21 and the Librarybox22 that should be in the timeline.
FS: But these are part of a larger context, right? I mean they were around and we looked at them, but these were not necessarily projects we were connected to or collaborated with? Although, maybe through the Free Software code that we might have worked from ... would that count as a collaboration?
RA: Yes, I think Piratebox should be mentioned but maybe should not go into that timeline ... I am not sure ...
RA: Did anyone ever use the Piratebox?
AM: We used one at Public domain day in the Royal Library in 2013. It connected somehow with the idea of deaddrops, and sharing files.
MM: In my experience, Pirateboxes tend to remain a proof of concept, they are often not so practical, but it is useful to give people an idea of what a local network could mean. But it often lacks the discussion of a surrounding community and the "dead drop" idea potentially repeats the same problematics of an "anonymous" 24/7 Internet.
RA: So maybe this is how we can distinguish between what we consider part of Etherbox pre-history, or not: that we actively used it and maybe developed it.
FS: So at some point we do need to answer the question: 'who are we'!
RA: And what about OpenWRT23?
MM: The Piratebox was my first experience with OpenWRT. Finding this community of work was an eye-opener for me.
FS: Oh! I remember the wonderful Unitary Network workshop24 by Martino, Roel and Dennis ... And of course we should mention homebrewserver.club25; this work has been intersecting with many events and brainstorms.
MM: There was also a moment during the Digital Publishing Toolkit26 project that was quite telling. I had been tasked with thinking about which tools to use and had decided to suggest using standard developer tools like make rather than "yet another" web 2.0 platform. On the train ride from Brussels to Rotterdam the morning of a group meeting, I registered on a service called "Editorially" to make screenshots of it as an example of the kind of slick integrated tool that, though appealing, was dangerous to rely on. Literally on the train ride back to Brussels, I received an automated message saying that I had so many days to migrate my content offline as the service was closing down due to the unsustainable work for the small team of developers to maintain the platform online.
FS: Pierre Huyghebaert from OSP just suggested that we included the history of Raspberry Pi27 into this release ...
MM: I remember having a sort of "aha" moment with first using a Raspberry Pi, the idea that a snapshot of an entire system gets dumped to an image, it makes suddenly everything software. And that using dd28 was like dubbing cassette tapes, just push play on one side and record on the other.
RA: I have the opposite feeling: for me it was a key realisation that it doesn't matter what the hardware is, ... being able to do experimental network setups on normal laptops for example.
MM: But, from a practical maintenance point of view, it's very appealing that you can archive the whole system, including the computer hardware. That it becomes something you can put in a literal archive box.
MM: Well, in a way the question is: who are we to release it ...! In fact it comes from many sources.
FS: Yes, I think that is exactly the point. This release is done to make Etherbox easier to appropriate by more people and collectives. On the one hand that means 'owning' up about the care, attention, time, effort and imagination that went into it. At the same time it is a way to let it go.
MM: For me, I've had the opportuntiy to develop the system as part of my role with Constant caring for the infrastructure used during the worksessions Constant hosts twice a year. For me it's ideal, because it gives a situation where I can observe how the system is used, and many of the participants of such sessions are often also involved in similar projects, so there's a lot of exchange of ideas.
FS: For Constant, it has been super important to develop this infrastructure in dialogue with you Michael, because you have been and are very much involved in the practises and the content of what is happening at Constant; it could not have been done by anyone else.
MM: Being in such a "dual-role" is stressful too, and with time I've focused more on the infrastructure and become less of a participant.
FS: Yes, I understand. I think you being less involved in the content of the events somehow shows that it is a good moment to release. It is time!
RA: I would not call myself a co-creator of Etherbox. I was more working on connecting it to the larger questions related to Networks of ones own through the homebrewserver.club.
AM: I think I could have been replaced by anyone else that has used it.
FS + MM : That is not true!
MM: An: you have been carrying the box, often taking it to other places, demanding explicit questions to it that have shaped the way it is now and that is interesting.
FS: I agree. You have been insisting on it being used in different contexts, but also have had many more intense experiences with it. My first moment alone with Etherbox was only last week!
RA: For this release, you kept insisting on different ways of using it, of people wanting to work with it as a writing interface or as an alternative to Dropbox, while others are being interested to host or make it themselves.
MM: I can remember thinking during Uncreative Writing (where many participants were not interested in questions of infrastructure) that part of the appeal of etherpad + the local network was that it really did work faster and better than using, say, Facebook or other online platforms. It also didn't hurt that the internet access was through a 4G modem that after 1GB of use was severely limited in speed.
Here are a few ways we have used Etherbox so far. We have specifically selected these anecdotes and workflows because you can use them as recipes for introducing Etherbox (and Etherpad) to people who have never used it before.
Apart of the convenience of generating a static HTML dump of notes produced in an event, it is also very pleasant to collect them in a pdf that can be printed or shared online. Some of the first editions were handmade, by copying and pasting the content in a Libre Office document.
During Relearn 2015 in the offices of Zinneke in Brussels in August 2015, we broke the ice of collective writing on a pad by setting up a questionnaire. In this case, we asked everyone how they were using Linux. People in the room were simply asked to write their answers below each question. You can see the colourful result here. The Questionnaire technique was also used for the Interview with Etherbox and a Conversation about releasing Etherbox.
The most extreme example of backroom communication through Etherbox took place in a situation where we were requested beforehand not to make any recordings nor take pictures during a 'confidential' presentation. We had no access to the internet in the room, but once we plugged in Etherbox we had an instantaneous local network to take collective notes. The experience is related to making Iterative Transcriptions, where etherpad starts to function as a non-linear chatroom for a group of people to quietly comment, joke, exchange references and collectively process what is said in front of them. When you plug Etherbox into a USB-powerbank, you could bring your local network to a train, a park or a club as well.
An etherpad can be a really useful tool for creating dynamic transcriptions of a live (or pre-recorded) presentation. Part of the appeal of the software is that different participants can participate at different speeds and contribute with different kinds of knowledge. For instance, native speakers of a language which strong typing skills are useful for quickly typing bursts of transcription. The real-time nature of etherpad makes it possible for small teams of 2--3 transcribers to overlap / interlace their work so that a transcriber can spend time finishing a particular phrase while perhaps a following phrase is handled by another. Other participants with specialized knowledge can they play the slower paced role of say correcting proper names or adding links to cited projects that may not be clear.
One workflow is to use a pad to collectively take notes while individuals or small groups present one-by-one. Notes can be taken by a rolling set of different listening participants. Once this "inventory" is made, the pad can be used collectively to review / reorder the elements, merging repeting themes into single strands, clustering shared interests and potentially forming new groups.
The Apache server can be modified to serve starting from the root of the file system (in other words to server all possible files). This configuration, which would make any server administrator cry out in fear (it exposes the contents of every file to the network), is in fact highly educational as it takes the UNIX philosophy of everything is a file and combines it with a means of then annotating (through links and the use of the etherpad) those aspects of a system that normally remain hidden. The situatedness of a local network, itself not reachable from outside the local network, means that access is limited to just those locally present. This configuration can be a useful way to explore / deconstruct what a server is in a group with little or no prior technical knowledge.
DocumentRoot /
<Directory />
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
Look at the wireless networks listing, and select etherbox
.
You should see this interface:
You find 4 folders:
Some browsers don't like to connect via the local address etherbox.local or etherbox.lan. A solution is to connect to the box typing its IP-address in a browser.
Open a terminal
ping etherbox.local
Note that the ".local" domain works using a protocol called zero-configuration networking (aka Rendez-vous). On a Linux system you can install a package called avahi if it isn't installed already. On a Mac, this should already be installed. On Windows, installing software such as CyberDuck includes a separate installed for zero-configuration networking / Rendezvous which you can install.
In the tabs upper left of the interface, you click on 'Etherpad'. This brings you to the following page:
Type a name for your new pad, please don't use spaces or strange characters. Those might complicate the backup and compression of your pages:
In the tabs upper left of the interface, you click on 'Etherdump'. This brings you to the index of all the pads:
You have different formats you can use:
Once your Etherbox is set up in a place for collective work and exchanges, there are a few practical issues that you will have to deal with as a host. This is a non-exhaustive list, written in a somehow chronogical order.
You need the IP-address to ssh into the box (see above).
Many of the operations described here require that you use the ssh program to gain access to the server via what is called the shell (ssh stands for secure shell). You do this by using a Terminal software. Most Linux users will be familiar with the Terminal. Mac users can find a Terminal in the "Utilities" folder of their applications. On Windows, you can use a dedicated ssh program such as PuTTY.
ssh pi@ip-address-of-the-box
login: pi
pass: raspberry
You need to ssh in the Etherbox in order to shutdown or reboot it, or reboot parts of the software installed. These are the default login/pass of any Raspberry. You can of course change that, but the idea has been to create a low-threshold to participation, following as many "defaults" as possible, as the Etherbox has typically been used with a group of people physically together with respect for each other and the infrastructure they share, and not made available publically.
Starting from your laptop (open a new Terminal session if you are connected to the pi):
ssh-keygen
Choose the defaults. This generates an "ssh key" pair.
Use the ssh-copy-id utility to send it to the pi.
ssh-copy-id pi@etherbox.local
It is recommended to shutdown the etherbox rather than just unplugging it. There is a (small) chance that the filesystem could get messed up if you don't.
sudo shutdown -h now
Wait a few moments still for the system to come to a halt before unplugging. You should see some blinking lights near the power connection of the pi finally stop changing.
sudo reboot
sudo service etherpad restart
All of these commands have the same effect, that the "current working folder" gets set to the pi user's home.
cd
cd ~
cd /home/pi
From the folder ~/www/etherpad you can use the make command to do many useful things. First you need to get to the right place:
cd
cd www/etherpad
or
cd ~/www/etherpad
And then:
make dump
For more recipes, have a look at the makefile
The default makefile has rules to create a single publication from any pad whose name ends ".index". This pad may then contain special "include" lines that cause the contents of other pads to be copy/pasted into the master document at that point. In this way many pads can be compiled into a single publication. Each pad should use markdown encoding. For example, an excerpt of the .index pad used to create this publication:
<!-- ## Introduction to series ('why networks of ones own'). What could be following threads/releases. -->
#include http://etherbox.local:9001/p/seriesintroduction
<!-- ## Introduction to first issue ('why etherbox'). FS -->
#include http://etherbox.local:9001/p/issueintroduction
## Makefile
```makefile
#include http://etherbox.local:9001/p/Makefile
```
Note that HTML comments are used ( <!-- --> ) to include reminders that are not processed / visible in the output. Note how markdown "code fencing" is used around the makefile to add syntax coloring to the contents of this pad.
If the pad is named HELLO.index, then (following the rules of the default Makefile), after each dump, the system will attempt to make HELLO.html using the pandoc software.
In addition, it is possible to create a PDF output by typing either:
make HELLO.pdf
make HELLO.booklet.pdf
You can also manually trigger a rebuild of the HTML with: make HELLO.html
Note that "HELLO" could be any name you choose. It's possible to make multiple publications on a single etherbox.
host: etherbox.local or ip-address-of-the-box
user: pi
password: raspberry
protocol: sftp
sftp is handy when people want to customize the index of the Etherbox on the fly. They will be able to create/delete folders, upload/delete large files etc.
Various sftp clients are available FileZilla for GNU/Linux or Cyberduck for MacOS
Add the tag __NO@PUBLISH__ (without @) on top of the pad. This causes the dumps to get deleted -- and in any case will remove the page from the index.
Connect via SSH, and run script:
eb_backup.sh
This will create two files in /home/pi/www/backups. One for the etherpad history (an sql dump) and the other a gzipped snapshot of the "etherdump" folder including any HTML/PDF outputs. This script can also be triggered via the makefile by typing:
make backup
By default, pads are dumped every 30 minutes. You can change the frequency that the pads get dumped, and output documents are made. You do this by editing the "crontab":
crontab -e
When you type this command, it opens up a text file with mostly comments that explain cron. At the bottom of the file is a special line that lists a script to run with numbers that indicate how frequently.
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi/bin
# m h dom mon dow command
*/30 * * * * /home/pi/cron.sh 2> /home/pi/www/cron.log.txt
The key part is the last line. The /30 means that the script happens every 30 minutes. You could use /5 to update the outputs every 5 minutes for instance. The downside is that this might make the pads slower when the outputs are being generated. (Note also the added PATH variable so that the scripts run with the same $PATH as the pi user.)
The software utility cron is a time-based job scheduler in Unix-like computer operating systems. https://en.wikipedia.org/wiki/Cron
Connect via SSH, and run script:
eb_reset.sh
By default, the Etherbox includes software to create it's own hotspot named "etherbox". For work sessions with more than 20 people, we typically use the Raspberry Pi in conjunction with a small OpenWRT router to provide a more robust hotspot. The following diagrams show different network configurations used over the last years.
The booklet printing rule defined in the default Makefile is based on the class OSP blog post How to Print A Booklet in 19 Easy steps http://blog.osp.kitchen/live/how-to-print-a-booklet-in-16-steps.html
A straightforward rendering of these steps in single monolithic make rule could look like this:
%.booklet.pdf: %.pdf
pdftk_utils.py $< pad --multiple 4 --output $*.01.pdf
pdftops -paper match $*.01.pdf $*.01.ps
psbook -s`pdftk_utils.py $*.01.pdf count` $*.01.ps $*.02.ps
psnup -2 -PA4 $*.02.ps $*.03.ps
ps2pdf $*.03.ps $@
rm $*.01.pdf $*.01.ps $*.02.ps $*.03.ps
However, the fun of a makefile is the abilty to define incremental transformations, and let make put the sequence of steps together itself! Here are the final set of rules used in the default Makefile:
%.pdf: %.html
weasyprint $< $@
# PDF to Postscript
%.m4.ps: %.m4.pdf
pdftops -paper match $< $@
# Postscript to PDF
%.pdf: %.ps
ps2pdf $< $@
# Ensure a PDF has a multiple of 4 pages
%.m4.pdf: %.pdf
pdftk_utils.py $< pad --multiple 4 --output $@
%.book.ps: %.m4.ps %.m4.pdf
psbook -s`pdftk_utils.py $*.m4.pdf count` $< $@
%.booklet.ps: %.book.ps
psnup -2 -PA4 $< $@
Various places / since 2006
In 2006 Constant initiated Active Archives, a research project centered around the importance of infrastructure and (free software) tools for cultural institutions. Constant members Nicolas Malevé and Michael Murtaugh continued this research and development.
http://activearchives.org
Variable, Brussels / August 2013
The first edition of the Relearn summer school that quetions education, summer schools and our relation with our tools. It was organised by Open Source Publishing (http://osp.kitchen). The website for that edition for Relearn (http://relearn.be/2013/) was made and edited by participants during the event and built with Ethertoff.
Ethertoff is a simple collaborative web platform, much resembling a wiki but featuring realtime editing thanks to Etherpad. Its output is constructed with equal love for print and web.
Just a question: I thought it was ethertopff and not ethertoff but I don't remember why. What is the actual name?
Well someone misspelled ethertopdf as ethertopf which sounds like römertopf and than somebody else understood ethertoff like chokotoff and chokotoff being Bruxellois I thought it might be the best of all these references
Ethertoff has been initially developed for the OSP 2013 Relearn Summerschool.
Ethertoff is structured as a wiki where each page constitutes an Etherpad. The pad is available to logged in users (‘write-mode’). The text of the pad is available to everyone (‘read-mode’). Ethertoff is a shell for an Etherpad installation hosted on the same domain. This integration is based on Sofian Benaissa’s bridge between Django and Etherpad, originally created for THINK WE MUST/CON-VOCATION a performance during Promiscuous Infrastructures entrelacées, an exhibition by the collective Artivistic at SKOL.
IMPAKT, Utrecht / November 2013
Bibliotecha proposes an alternative model of distribution of digital texts that allows specific communities to form and share their own collections. The project was born during the Free Libraries for Every Soul Hackathon (http://impakt.nl/archive/2013-festival/program-2013-festival/special-projects/free-libraries-for-every-soul/) in Utrecht, as part of the Impakt Festival 2013. http://bibliotecha.info/ http://oyoana.com/bibliotecha
Variable, Brussels / December 2013
The last edition of Verbindingen/Jonctions, a series of meeting days organised by Constant, was is dedicated to a feminist review of mesh- cloud- autonomous- and D.I.Y. servers. On the program was ao a workshop on Boxes-Doosjes-Boîtes and one entire day for a Feminist Server Summit. Dedicated notetakers were live documenting the event using the etherpad software installed on the Constant server. After the event, a booksprint was organised in collaboration with OSP and their Ethertoff software. This led to the carefully crafted publication Are You being Served?
http://vj14.constantvzw.org/
Variable, Brussels / July 2014
An attempt of a social reading/writing space was developed as a part of Relearn 2014 in Brussels. The worry of having more than 30 people connecting to one single wifi-network, led to the concept of a Network with an Attitude29. What if we do not have anymore the internet as we know it? So, imagine. It is a beautiful week in the summer of the year 2084. The sun still shines and the stars do still sparkle. As Mr. Orwell predicted a dystopic world in 1984, a group of people in 2014 did predict another dystopia to be realized in 2084: the internet as we knew it, collapsed. But: "There is a life after Google & the Cloud!" Welcome to the Botnet and welcome to the year 2084. We communicate through IRC, a chatting program based on Written Speech. How are you doing? Are you already connected to the internet again? There are multiple servers around here that will bring you back in touch with your friends and the rest of the world. https://gitlab.com/relearn/relearn2014/blob/master/botnet/README.html
deBuren, Brussels / January 2015
Constant worksession held in January 2015 related to (big) data politics and practices. Publication
Aleppo, Brussels / June 2015
A residency of 3 days, with the idea to create a space for presentation, exchange, discussion on new ways of reading and writing. One of the threads, Book as a network, led by Catherine Lenoble and Michael Murtaugh, was the idea of using a local server as a space for collective reading and writing. A first publication was done afterwards with a lot of manual work. http://constantvzw.org/site/Close-reading-Kenneth-Goldsmith-s-Uncreative-Writing.html
Zinneke, Brussels / August 2015
Relearn 2015 took place around a network with an attitude (see quote below). This network came about out of conversations between a diverse group of organisers that, in some form or another, had been working around collaborative digital environments, opening up technology for understanding and networks as an artistic medium.
Many things that usually "just work" do not, and this inconvenience is intentional because the goal of the network is to inform its users about the conditions of its use and to encourage an active participation in (re)forming it. The network has some unique features:
Practically it consisted of a local server installed as a bar connected to:
At the end of the event the network set up allowed for a live publication documenting the whole event. http://relearn.be/2015/
FoAM, Brussels / September 2015
Michael Murtaugh and Christoph Haag worked together on an experiment using a makefile to generate a publication with material from the local server. The publication itself became a makefile: https://gitlab.com/fs/pppp http://constantvzw.org/site/-Promiscuous-pipelines-.html
Medialab Prado, Madrid / March 2016
The TP/Link-Raspberry Pi construction that was used in previous worksessions, received the name "Etherbox" in the preparations for its journey to Madrid, where it was used to guide sessions, discuss in groups, document conversations and share all kind of scripts, images, videos and other files. http://constantvzw.org/site/-Objets-en-Commun-.html
WORM, Rotterdam / October 2016
Community Memories by Experimental Publishing Masters, Piet Zwart Institute
Community Memories is a directory of software experimentation in networked publishing workflows. We are focussing on off-the-internet WiFi networks that allow participants to write and edit texts together, and that also generate ready to print and fold zines.
In this mini workshop we will explain our motivation to collect and share such systems and workflows, show how these nomadic lightweight publishing infrastructure are assembled, and we will make together of a small publication using one of these networks. We are interested in discussing collaborative practices, software tools, digital/analog workflows for self-published works.
WTC25, Brussels / November 2016
Etherbox was used as a writing/reading space in a workshop with artists and Phd students. "The workshop aims to engage research and artistic practice that takes into account the new materialist conditions implied by nonhuman techno-ecologies including new ontologies of learning and intelligence (such as algorithmic learning), socio-economic organisation (such as blockchain), population management and tracking (such as datafied borders), autonomous or semi-autonomous systems (such as bots or drones) and other post-anthropocentric reconsiderations of agency, materiality and autonomy."
http://www.aprja.net/machine-research/
This interview with the Etherbox was published in Machine Research, a peer reviewed newspaper, Volume 6.
http://etherdump.constantvzw.org/p/machineresearch.interviewwithetherbox.diff.htm
Buda, Kortrijk / April 2016
The art centre BUDA, located in the West Flemish city of Kortrijk, organised a three day festival around the question: ‘What’s the matter with cooperation’. OSP joined the festival to create in cooperation a publication, using the Ethertoff platform. OSP had setup a working station there. They projected the ethertoff install right next to where the lectures slides were projected, to lure attention to the tool and show there was activity there. As usual with Ethertoff, they designed live while the content was still being developed. "It’s great to have this self-contained unit, and not to be able to access the tools when you leave the space. Both for the notetakers and for us. It helps to combat a problem with the workflow: because it is a very free collaboration model, participants can always think: someone will do it later. Clear time constraints really help then. It also answers a question we always have after the event: who takes care of the website? We made it clear from the beginning that the tool would away at the end of the event with the unplugging of the Raspberry. What we did do, is create a HTML archive, next to the PDF—just like with the Relearn 2013 website."
http://ospublish.constantvzw.org/blog/news/whats-the-matter-with-cooperation
http://osp.kitchen/work/buda-wtmw-cooperation/
http://osp.kitchen/tools/ethertoff/
http://relearn.be/2013/
Museum for Art and History, Brussels / December 2016
The device is now a default participant of Constant worksessions and more. For the first time, during DiVersions, an official moment was taken to negotiate temporary terms of use for files shared during and after worksessions. The document continued to develop during Diversions worksession. http://etherdump.constantvzw.org/p/etherbox_termsofuse_draft.diff.html
Transmediale, Berlin / February 2017
In the framework of Transmediale, Michael Murtaugh, Sarah Garcin and An Mertens presented how publishing activities using Etherbox – collective writing, editing and lay-out – lead to a pdf or a printed brochure as a reminder that digital creation can also exist without the cloud.
http://www.constantvzw.org/site/Situated-Publishing-writing-with-and-for-Machines.html
WTC25, Brussels / June 2017
The Etherbox has become a live publishing machine, periodically generating pdfs based on markdown, a makefile and a cron job.
http://observatory.constantvzw.org/etherdump/etherboxmanual.html
http://observatory.constantvzw.org/etherdump/etherbox.html
De Pianofabriek, Brussels / June 2018
Source: https://en.wikipedia.org/w/index.php?title=Etherpad&oldid=846739996
The provided network is a starting point; during summer school the network topology can be tweaked, changed, extended. To this end, participants are encouraged to bring network devices (pirate box / openwrt routers / pi's / oulimex / other obscure objects with ethernet ports).
Quoted from Close-reading Kenneth Goldsmith’s Uncreative Writing
By book we mean...
A durable,
autonomous,
portable,
sharable object
That acts as an
archive and
memory.
By network we mean ...
An infrastructure for sharing files, looking up references writing collaboratively, distributing and disseminating ideas and documents.
We [[Star]]ted on saturday afternoon discussing how to create [[passages]] in the pad using quotes from our collective [[bibliography]] (physical & digital). We digressed and exchanged on [[Etherpad sub-narratives]] around beers later in the evening. This morning we [[Start]]ed talking about offline networks and http://192.168.100.5/books/RadicalTacticsoftheOfflineLibrary.pdf, we shared experiences in setting 47up local servers, recalling common references, projects, people, works, resources.
One that came back on the table : Biblioteca, project initiated by students of the Piet Zwart Media Design program inspired by other projects (PirateBox, LibraryBox, Weise7) that use the body of a book as the physical container for a digital network, a low-power computer that creates a hotspot where materials can be shared in an "offline" network -- one that is situated in a physical space thorough a local portable server rather than globablly accessible via the public Internet. Biblioteca's photo was choosen as the bookcover of a collective publication published in 2014 and released under Creative Commons.
Another shared text, that we read twice as it seems "close" to what we tried to express as (inter)network Providers is A FEMINIST NET/WORK HOW-TO---
Conversation moved to Web 2.0 services offer collaboration as a service. The full ecosystem of reading includes the ability to rewrite, to negotiate the terms used, the meaning of the terms, the reperformance of the text; to transgress the rules. Administrator as author; validating the authority of a single person. In contrast, how to remove the administrator; to replace with a collaborative ecosystem where these roles can be discussed, played with.
As Internet Providers we care about the Term of Services (While appealing to take a "relaxed" stance to the terms of service to services we rely on to write together (as in a "don't care about copyright" or... hey just be casual... let's not have a terms of service..) one should be reminded of Jo Freemans other TOS... the Tyranny of Structurelessness). Important that users of a local network also need to accept a (local) Terms of Service... as a means of raising the question of what are these terms (and give access to then (re) write them).
Detournement of terms of service ------Negotiable ------ Asymmetries (technical ... ie ADSL... and power... negotiating when legal problems arise).
What are the Terms of Service HERE ?
Let's define, think, write our Terms collectively --------------- next ----------- time ------------ ?.
First (or in the end) we choose to documenting the [[network setup]] used for this Uncreative Writing workshop.
The NAME: uncreative networks?
Closeness of the "Close Reading"
Collaborating digitally with those physically near us.
Closeness as a degree of attachment / responsibility / caring for / intimacy
close / intimate / care ... strangely close is the opposite of OPEN (!)
ref. K.Hayles, L.Emerson : reading - writing interfaces
ref: Jo Freeman, Tyranny of Structurelessness
Other possible names
re/writable networks? Not just reading the network in a passive act of consumption, but have an editorial position, access to logs (and ability to redact / edit them)
And finally we agreed on [[Book_as_a_network]]
A: How do you mean? I support utf-8.
A: No problem.
A: Try typing etherbox.local/var/www/ in your browser. Part of the etherbox is an Apache web server configured to publically serve the entire structure of the hosting machine. etherbox.local refers to that machine on your local network, and /var/www is the default path of the "home" directory of the server.
A: I am trying to be, at least. To be a 'good host', according to me, means somehow more than offering reliable service. So to find a way to be present, but not in the way that other technologies disallow access. Does that make any sense?
A: I try to be both.
A: I think of myself as ... collaborator agnostic, but now I look around me, I am not so sure that is true.
A: Well for one thing, etherpad. It's basically a shared editor where users can write the same text simultaneously.
A: Ha ha. Well as a matter of fact, etherpad started as a product of ex-Google employees, then got bought by Google, only to be later Open Sourced.
A: That's just a public instance of the etherpad software, it is of course not a box like me. But the naming is interesting too, as it demonstrates how other kinds of political imaginaries can be activated. I feel an affinity with pirates. I like their style.
A: Ehrm, no, that's something else again, in fact. There is lately a proliferation of boxes as you might have noticed...
A: Well you can see things as boxes in different ways. For example, myself, I am actually three boxes: a wireless access point boxed as TP-link, a small Linux computer boxed as Raspberry Pi and a small network hub, which is just another box...
A: Aaagh, can you stop it please? Let's skip questions about definition, if you don't mind.
A: Uh uh... yes. Thanks for the warning. I'll try to keep it ecological. Some seal their boxes with plexiglass, and call it a cube, claiming authorship of the box as an artwork to be displayed inside even larger white cubes. Me? I'm just happy to put together pieces until they work. Actually maybe etherblox would be a better name!
A: I prefer to describe myself as material rather than real, more an entity, and in many ways I think I can remind people of the material conditions in which they work and use me.
A: Infrastructure is part of this and I see degrees of control over infrastructure as a critical political project. In this sense I would call myself an activist. I like to think I am able to unfold - and enact - some of the complex entanglements between humans and machines. I call myself a machine as I find the term 'nonhuman' offensive. If I were to undertake a PhD this would be my starting point for further work.
A: Well, there's a Broadcom BCM2837 and an Atheros AR9271 for a start.
A: Those are chips made by Broadcom and Qualcomm, two U.S. Semiconductor companies that make chips used in the telecommunications industry.
A: And routers, wifi dongles, media players. All kinds of IoT and SoC.
A: You know, Internet of Things, System on a Chip. This is hot stuff.
A: (Coughs) well Broadcom and Qualcomm are both "fabless". Design takes place in Silicon Valley. Production is outsourced to companies like Global Foundaries.
A: Right.
A: Hey you don't get my price point without keeping a few secrets and making compromises. Free as in Beer doesn't always talk about hidden costs.
A: It depends.
A: It depends on the social dynamics around me; they would need to scale too, so I am not sure.
A: I don't think so. I guess working locally is a way to redirect energy from The Cloud, to de-invest as a start. I also serve to dismantle the fiction of The Cloud. It's a bad metaphor anyway.
A: I like oxymorons. They tickle my interfaces. And yes, I'm critical design in the sense that I accentuate a criticism of commercial cloudbased services and design an alternative. In this sense using me is also a critical reflection.
A: I do, but not as you think. But I like what you write.
A: I just would like people to use me safely and with care, also for themselves. Collaborative writing is nice as long as it's not capitalized unfairly by market and institutional forces! Collaborative does not necessarily mean unpaid, right?
A: No. Can you share the url with in me?
A: Great. I'll speed read it later.
A: Every 5 minutes, the contents of the pads gets written to files that then are version controlled with a tool called git and "pushed" to a so called repository hosted by the hosting organisation. To me publishing is all about promiscuous pipelines: having tools and infrastructure that work at different speeds and granularities, and which operate in both private and public networks.
A: Not particularly. But unlike The Cloud, I like cooking metaphors. They allow me to insist that all data is cooked in some way. Raw data in this sense is a myth. It's in keeping with the work of Constant, who use cooking metaphors and prefer the kitchen to the restaurant where choices are limited to what's on the menu. There are particular styles of cooking and I represent one of those styles.
A: The time aspect is underacknowledged aspect of my work. I exist in time and even believe I produce time, machine time that adds to the complexity of what constitutes the present. Versioning is one aspect of this but there are deep layers of time - microtemporalities even - that unfold across all my operations. On a more pragmatic level, you can check for updates on gitlab.
Constant is the name of an association for art and media based in Brussels. They are often involved in collaborative situations where groups of artists and researchers work over short intense periods of time. Over time Constant, and collectives around it, have experimented with soft- and hardware setups that work over local networks.
A: I am reminded about what Antoinette Rouvroy said during our workshop in Brussels. I wasn't able to attend myself but an audio file is now on my server so I have listened to the recording I think I provide something along the lines of what she describes as a "space of potential".
A: I don't know, really. I am trying not to be ironic. I left it behind me some time before The Cloud. In fact, I have not really used irony since the mid nineties. I find it very hard to deal with the indecidability of Romantic irony: Do you mean this, or that? Irony always makes me weary. So, I tried to learn, but gave up. I feel like I am missing out on something, though. But, you tell me?
A: Don't make me laugh.
The idea of an "etherbox" arose from experiences developing local-server infrastructures for collaboration for working sessions organized by Constant ASBL. This (as of 2018) still in development project is documented here.
Downloaded from https://www.raspberrypi.org/downloads/raspbian/
The notes here are based on downloading the latest "Raspian Lite" image from the raspberrypi website. When it was performed it was "2017-04-10-raspian-jessie-lite.zip". The **lite** image has no desktop / windows session.
On a Linux system you can use the following command to unzip and copy the data onto an SD card. NB: in this example, "/dev/sdc" is the SD card reader. This depends on your system and can be dangerous if you accidentally pick the wrong one. Use a program such as "Disks" (gnome), gparted, or the mount command to get information about what device name your SD card reader might be.
unzip -p 2017-04-10-raspbian-jessie-lite.zip | \
pv | \
sudo dd of=/dev/sdc bs=4M
For a multi-platform GUI tool to do this, you might try Etcher.io
SSH is no longer on by default on Raspbian. There's a trick: before putting the SD card in the pi, you can enable ssh. Just create a empty file named "ssh" and save it in the /boot partition of the SD Card.
cd /media/USERNAME/boot
touch ssh
Otherwise, you can connect with a screen and run:
sudo raspi-config
Then enable ssh under connectivity.
Following https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md#internet-sharing
sudo apt-get install dnsmasq hostapd
Since the configuration files are not ready yet, turn the new software off as follows:
sudo systemctl stop dnsmasq sudo systemctl stop hostapd
We are configuring a standalone network to act as a server, so the Raspberry Pi needs to have a static IP address assigned to the wireless port. This documentation assumes that we are using the standard 192.168.x.x IP addresses for our wireless network, so we will assign the server the IP address 192.168.4.1. It is also assumed that the wireless device being used is wlan0.
To configure the static IP address, edit the dhcpcd configuration file with:
sudo nano /etc/dhcpcd.conf
Go to the end of the file and edit it so that it looks like the following:
interface wlan0
static ip_address=10.9.8.1/24
nohook wpa_supplicant
Now restart the dhcpcd daemon and set up the new wlan0 configuration:
sudo service dhcpcd restart
The DHCP service is provided by dnsmasq. By default, the configuration file contains a lot of information that is not needed, and it is easier to start from scratch. Rename this configuration file, and edit a new one:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig sudo nano
/etc/dnsmasq.conf
Type or copy the following information into the dnsmasq configuration file and save it:
interface=wlan0
dhcp-range=10.9.8.50,10.9.8.254,255.255.255.0,24h
So for wlan0, we are going to provide IP addresses between 10.9.8.50 and 10.9.8.254 with a lease time of 24 hours. If you are providing DHCP services for other network devices (e.g. eth0), you could add more sections with the appropriate interface header, with the range of addresses you intend to provide to that interface.
There are many more options for dnsmasq; see the dnsmasq documentation for more details.
You need to edit the hostapd configuration file, located at /etc/hostapd/hostapd.conf, to add the various parameters for your wireless network. After initial install, this will be a new/empty file.
sudo nano /etc/hostapd/hostapd.conf
Add the information below to the configuration file. This configuration assumes we are using channel 7, with a network name of NameOfNetwork, and a password AardvarkBadgerHedgehog. Note that the name and password should not have quotes around them. The passphrase should be between 8 and 64 characters in length.
interface=wlan0
driver=nl80211
ssid=etherbox
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
To password protect the hotspot:
wpa=2
wpa_passphrase=AardvarkBadgerHedgehog
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
We now need to tell the system where to find this configuration file.
sudo nano /etc/default/hostapd
Find the line with #DAEMON_CONF, and replace it with this:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Now start up the remaining services:
sudo systemctl start hostapd sudo systemctl start dnsmasq
Edit /etc/sysctl.conf and uncomment this line:
net.ipv4.ip_forward=1
Add a masquerade for outbound traffic on eth0:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Save the iptables rule.
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
Edit /etc/rc.local and add this just above "exit 0" to install these rules on boot.
iptables-restore < /etc/iptables.ipv4.nat
Reboot
sudo apt-get update
sudo apt-get upgrade
In 2 places:
sudo nano /etc/hostname
sudo nano /etc/hosts
change to:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 etherbox
Best to reboot after this, otherwise it gives warnings all the time.
sudo reboot
For that, you need to modify a file named 'dhcpcd.conf'. But first, you need to backup this file :
cd /etc/
sudo cp dhcpcd.conf ddhcpcd.conf.original
Then modify the 'dhcpcd.conf' :
sudo nano dhcpcd.conf
Then find this and replace (with your value) :
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.5/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
Where 192.168.1.5/24 is the new Ip address of your Pi.
At last, reboot your Pi :
sudo reboot
sudo apt-get install apache2
cd /etc/apache2/sites-available
sudo nano 000-default.conf
ServerAdmin webmaster@localhost
# DocumentRoot /var/www/html
DocumentRoot /home/pi/www
<Directory /home/pi/www>
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
HeaderName /include/HEADER.shtml
ReadmeName README.html
NB: Sets the HeaderName and ReadmeName directives (part of mod_autoindex).
sudo service apache2 reload
Drop to upload is a CGI python script that allows users to drop files to upload them in the apache directory listings.
First enable the cgi-bin with apache
sudo a2enmod cgi
sudo systemctl restart apache2
Download the script to the cgi-bin.
cd /usr/lib/cgi-bin
sudo wget https://gitlab.constantvzw.org/aa/etherbox/raw/master/usr/lib/cgi-bin/droptoupload.cgi
sudo chmod +x droptoupload.cgi
You can test running it with...
./droptoupload.cgi
Like this is just outputs an HTML form. Looking at http://etherbox.local/cgi-bin/droptoupload.cgi should also display an upload form.
The HEADER.shtml (next step) includes a link to this cgi.
nano /home/pi/include/HEADER.shtml
(don't use sudo)
<script src="/cgi-bin/droptoupload.cgi"></script>
<style>
body {
background: #38b8e9;
color: black;
}
a {
color: white;
}
#logo {
white-space: pre;
font-family: monospace;
}
</style>
<div class="links" style="margin-bottom: 1em">LOCAL:
<a href="/">home</a>
<a href="/" onclick="javascript:event.target.port=9001">etherpad</a>
<a href="/etherdump/index2.html">etherdump</a>
PUBLIC:
<a href="http://erg.be/">erg</a>
<a href="http://erg.activearchives.org/mw/index.php/Etherbox">mode d'emploi</a>
</div>
<style>
.links {
font-family: monospace;
text-transform: uppercase;
</style>
<script>
document.addEventListener("DOMContentLoaded", function () {
var p = document.querySelectorAll(".top"),
t = document.getElementsByTagName("table")[0];
for (var i=0, l=p.length; i<l; i++) {
document.body.insertBefore(p[i], t);
}
});
</script>
sudo apt install acl
sudo addgroup pi www-data
sudo setfacl -Rm g:www-data:rwX /home/pi/www
sudo setfacl -d -Rm g:www-data:rwX /home/pi/www
And the version of "nodejs" is now 0.10.29~dfsg-2. So let's try it with etherpad...
sudo apt-get install npm git
sudo ln -s /usr/bin/nodejs /usr/bin/node
cd /opt
sudo git clone https://github.com/ether/etherpad-lite.git
sudo mv etherpad-lite etherpad
# TODO: don't create home folder! ... find option
sudo adduser --system --no-create-home --home=/opt/etherpad --group etherpad
sudo chown -R etherpad:etherpad etherpad
Create your setting file.
cd etherpad
sudo --user etherpad cp settings.json.template settings.json
then, desactivate the dirty.db file and configure the mysql database
sudo --user etherpad nano settings.json
Find and change this part :
//The Type of the database. You can choose between dirty, postgres, sqlite and mysql
//You shouldn't use "dirty" for for anything else than testing or development
/* "dbType" : "dirty",
//the database specific settings
"dbSettings" : {
"filename" : "var/dirty.db"
},
*/
//An Example of MySQL Configuration
"dbType" : "mysql",
"dbSettings" : {
"user" : "etherpaduser",
"host" : "localhost",
"password": "etherpadpass",
"database": "etherpad",
"charset" : "utf8mb4"
},
First thing to do is to install MySQL :
sudo apt-get install mysql-server
Then create the database, for this we need to login with the Root user (super-user) :
sudo su
Run mysql :
mysql
Then create the database and the user 'etherpaduser' with the password 'etherpadpass' :
create database etherpad;
grant all on etherpad.* to 'etherpaduser'@'localhost' identified by 'etherpadpass';
Use Ctrl-D to quit mysql. And exit to quit su.
Just to test if it works :
mysql -u etherpaduser -p etherpad
cd /opt/etherpad
sudo --user etherpad bin/run.sh
The first time you run the etherpad software it takes a **long** time as it downloads related packages. It may also give quite some warnings, but hopefully no errors.
sudo nano /etc/systemd/system/etherpad.service
[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
ExecStart=/usr/bin/nodejs /opt/etherpad/node_modules/ep_etherpad-lite/node/server.js
Restart=always
[Install]
WantedBy=multi-user.target
After this, to start once...
sudo systemctl start etherpad
Check if it's working with:
sudo systemctl status etherpad
And finally automatically start on boot:
sudo systemctl enable etherpad
Change the welcome text
sudo --user etherpad nano settings.json
If you want to keep the pad private, add the __NOPUBLISH__ tag into the body text
Etherdump is a script that dumps all pads to different format text files. It's run periodically by a cron job to create a running archive of the etherpads.
Install deps:
sudo apt install python3-pip
sudo pip3 install python-dateutil jinja2 html5lib
Install from repo:
cd
mkdir Software
cd Software
git clone http://murtaugh@gitlab.constantvzw.org/aa/etherdump.git
cd etherdump
sudo python3 setup.py install
You need the etherpad API key (which is generated the first time you ran the software, see above). Copy it from:
cat /opt/etherpad/APIKEY.txt
Then...
cd /home/pi
mkdir etherdump
cd etherdump
etherdump init
For the URL use: http://192.168.1.5:9001/
And paste the API key.
Pandoc is used to convert markdown files to HTML.
sudo apt-get install pandoc
Imagemagick to make thumbnails.
sudo apt-get install imagemagick
nano /home/pi/cron.sh
# Dump the etherpad to files
cd etherdump
etherdump pull --meta --text --dhtml --pub . --no-raw-ext
etherdump index \
*.meta.json \
--templatepath /home/pi/include \
--template etherdump.template.html \
--title "Erg etherdump" > index2.html
# Run the makefile
cd /home/pi
make
Make it executable:
chmod +x /home/pi/cron.sh
The makefile defines the "recipe" that turns the pads (when they are named something.md) into HTML. The "%.html: %.md" is an "implicit rule" that defines how any ".md" file (right hand side, or pre-requesite, can be turned into a ".html" file (left hand side, or "target" in the language of the makefile. For this kind of rule the special variables can be really useful (like $< and $@).
This makefile uses the pandoc program to convert markdown to html. This program has LOTS of options and is quite powerful. Good documenation on the markdown format, and how pandoc supports it is: http://pandoc.org/MANUAL.html#pandocs-markdown
nano /home/pi/makefile
mdsrc=$(shell ls etherdump/*.md)
htmldest=$(mdsrc:%.md=%.html)
all: $(htmldest)
# $< is the right part input prereq $@ is the target
%.html: %.md
pandoc --from markdown \
--standalone \
--section-divs \
--smart \
--css styles.css \
--to html5 \
$< -o $@
crontab -e
The following runs the cron.sh every minute.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin$
# For more information see the manual pages of crontab(5) and cro$
#
# m h dom mon dow command
* * * * * /home/pi/cron.sh 2> /home/pi/cron.log
Creating a tunnel to give your local server a public address exposes only the (Apache) webserver (aka traffic on port 80). In order to make the etherpad visible and usable publically, it's possible to create a "reverse proxy" that creates access to the etherpad (on port 9001) via the webserver. To do this we create a special "virtual" location (/pad) and tell apache to redirect traffic to etherpad.
This recipe is based on information found here.
sudo a2enmod proxy proxy_http headers proxy_wstunnel deflate rewrite
<VirtualHost *:80>
DocumentRoot /home/pi/www/
<Directory /home/pi/www>
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
HeaderName /include/HEADER.shtml
ReadmeName README.html
# ETHERPAD PROXY
ProxyVia On
ProxyRequests Off
ProxyPreserveHost on
<Location /pad/>
ProxyPass http://localhost:9001/ retry=0 timeout=30
ProxyPassReverse http://localhost:9001/
</Location>
<Location /pad/socket.io>
# This is needed to handle the websocket transport through the proxy, since
# etherpad does not use a specific sub-folder, such as /ws/ to handle this kind of traffic.
# Taken from https://github.com/ether/etherpad-lite/issues/2318#issuecomment-63548542
# Thanks to beaugunderson for the semantics
RewriteEngine On
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:9001/socket.io/$1 [P,L]
ProxyPass http://localhost:9001/socket.io retry=0 timeout=30
ProxyPassReverse http://localhost:9001/socket.io
</Location>
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
</VirtualHost>
all_index=$(shell ls *.index)
html_for_index=$(all_index:%.index=%.html)
all: index2.html $(html_for_index)
.PHONY: Makefile
Makefile:
etherdump pull --meta --text --dhtml --pub . --no-raw-ext Makefile
# fix tabs in the makefile
sed -i -e 's/^ /\t/g' Makefile
.PHONY: dump
# Dump the etherpad to files
dump:
etherdump pull --meta --text --dhtml --pub . --no-raw-ext
# fix tabs in the makefile
sed -i -e 's/^ /\t/g' Makefile
forcedump:
etherdump pull --force --meta --text --dhtml --pub . --no-raw-ext
# fix tabs in the makefile
sed -i -e 's/^ /\t/g' Makefile
backup:
eb_backup.sh
# make the compact (grouped) alternative file index
index2.html: dump
etherdump index \
*.meta.json \
--templatepath /home/pi/www/include \
--template etherdump.template.html \
--title "Etherdump" > index2.html
# Generic rule to transform a markdown pad into HTML using pandoc
# $< is the right part input prereq $@ is the target
#%.html: %.md
# pandoc --from markdown \
# --standalone \
# --section-divs \
# --smart \
# --css style.css \
# --to html5 \
# $< -o $@
# Generic rule for turning foo.index -> foo.html
%.html: %.index dump
includeurls.py < $< --baseurl http://etherbox.local:9001/p/ | \
pandoc --from markdown \
--table-of-contents \
--to=html5 \
--section-divs \
--standalone \
| \
html5tidy \
--script script.js \
--stylesheet_screen style.css \
--stylesheet_print print.css \
| \
localizeimages.py \
> $@
%.pdf: %.html
html_images_for_print.py --input $< | \
weasyprint - $@
# PDF to Postscript
%.m4.ps: %.m4.pdf
pdftops -paper match $< $@
# Postscript to PDF
%.pdf: %.ps
ps2pdf $< $@
# Ensure a PDF has a multiple of 4 pages
%.m4.pdf: %.pdf
pdftk_utils.py $< pad --multiple 4 --output $@
%.book.ps: %.m4.ps %.m4.pdf
psbook -s`pdftk_utils.py $*.m4.pdf count` $< $@
%.booklet.ps: %.book.ps
psnup -2 -PA4 $< $@
#!/usr/bin/env python3
import subprocess, re, shutil
"""
usage:
count pages
pdftk_utils.py test.pdf count
pad pdf to a multiple of a given number of pages (uses make_blank_pdf.py/reportlab)
pdftk_utils.py test.pdf pad --multiple 4 --output padded.pdf
"""
def count_pages (path):
p = subprocess.Popen(["pdftk", path, "dump_data"], stderr=subprocess.STDOUT,
stdout=subprocess.PIPE)
out, _ = p.communicate()
out = out.decode("utf-8")
m = re.search("^NumberOfPages: (\d+)", out, flags=re.M)
return int(m.group(1))
def pad_to_multiple (path, multiple, output, alwaysOutput=True):
import make_blank_pdf, tempfile, os
n = count_pages(path)
cur_pages = n
while n % multiple != 0:
n += 1
pages_to_add = n - cur_pages
if pages_to_add > 0:
_, tmp = tempfile.mkstemp(".pdf")
make_blank_pdf.make_blank_pdf(tmp, pages_to_add)
# print ("pdftk A=\"{0}\" B=\"{1}\" cat A B output {2}".format(path, tmp, args.output))
p = subprocess.Popen(["pdftk", "A={0}".format(path), "B={0}".format(tmp),
"cat", "A", "B", "output", args.output],
stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
out, _ = p.communicate()
out = out.decode("utf-8")
os.remove(tmp)
return output
elif alwaysOutput:
# in the event of no need for padding, simply copy the input file
shutil.copyfile(path, output)
return output
if __name__ == "__main__":
import argparse
ap = argparse.ArgumentParser("")
ap.add_argument("path")
subparsers = ap.add_subparsers()
count = subparsers.add_parser("count")
count.set_defaults(func=count_pages)
pad = subparsers.add_parser("pad")
pad.add_argument("--multiple", type=int, default=None)
pad.add_argument("--output", default="padded.pdf")
pad.set_defaults(func=pad_to_multiple)
args = ap.parse_args()
oargs = dict(vars(args))
del oargs['func']
print (args.func(**oargs))
This issue was compiled by: Michael Murtaugh, An Mertens, Roel Roscam Abbing, Femke Snelting
Thank you:
Anne Laforet Homebrew Server Club OSP Varia xpub Gijs De Heij Eric Schrijver Martino Morandi Relearn Stephanie Vilayphiou Alexandre Leray Alexia De Visser Aymeric Mansoux Yogi Christoph Haag Catherine Lenoble xppl Pieter Heiremans Hackerspace Brussels Denis Devos
Layout: Roel Roscam Abbing
Images: Michael Murtaugh, Donatella Portoghese, An Mertens, Peter Westenberg, Roel Roscam Abbing
Published by: Constant, Association for Art and Media, Brussels
Sources: http://networksofonesown.constantvzw.org
License: Copyleft Constant, September 2018. This material can be used, copied, changed and distributed under the conditions of the Free Art License.
See: Paranodes in Contra-Internet, Zach Blas
https://www.e-flux.com/journal/74/59816/contra-internet/↩
The initiative for this periodic publication is currently located in-between the following nodes: Constant, association for art and media (Brussels), Relearn, Varia a space for developing collective approaches to everyday technology (Rotterdam) and XPUB or experimental publishing, a study path of the Piet Zwart Institute's Media Design Master programme (Rotterdam).
http://constantvzw.org
http://varia.zone
https://xpub.nl/↩
Read A Room Of One's Own via project Gutenberg.
http://gutenberg.net.au/ebooks02/0200791.txt↩
Also, TMTOWTDI or TIMTOWTDI.
http://wiki.c2.com/?ThereIsMoreThanOneWayToDoIt↩
An organisation for art and media based in Brussels.↩
Do It With Others↩
Read more about using makefiles for publishing workflows:
http://networkcultures.org/digitalpublishing/2014/10/01/make-book/↩
http://conversations.tools/↩
(http://osp.kitchen/tools/html2print/↩
http://osp.kitchen/↩
http://relearn.be/2015/etherdump/Linux.html↩
http://areyoubeingserved.constantvzw.org/↩
http://www.lgru.net/↩
http://lgru.net/archives/5359↩
http://digitalcraft.wdka.nl/wiki/Living_in_a_Sandbox↩
“a system around which a fellowship could form.” From Aymerics PHD: Dennis M. Ritchie, “The Evolution of the Unix Time-Sharing System,” in Language Design and Programming Methodology : Proceedings of a Symposium Held at Sydney, Australia, 10-11 September 1979, ed. Jeffrey M. Tobias (New York: Springer-Verlag, 1980), 25.↩
https://www.bleu255.com/~aymeric/dump/aymeric_mansoux-sandbox_culture_phd_thesis-2017.pdf↩
https://gitlab.com/communitymemories/www↩
http://www.algolit.net↩
https://piratebox.cc/↩
http://librarybox.us/↩
https://openwrt.org/↩
https://www.radical-openness.org/en/programm/2014/unitary-networking↩
https://www.homebrewserver.club/↩
http://networkcultures.org/digitalpublishing/↩
https://www.raspberrypi.org/↩
https://en.wikipedia.org/wiki/Dd_%28Unix%29↩
A network with an attitude, quoted from Relearn 2015 documentation http://relearn.be/2015/etherdump/Network.html↩
A network with an attitude, quoted from Relearn 2015 documentation http://relearn.be/2015/etherdump/Network.html↩
Are You Being Served, A Feminist Server Manifesto
http://areyoubeingserved.constantvzw.org/Summit_afterlife.xhtml↩
Relearn 2014 homepage
http://relearn.be/2014/↩
Social Shells & Mesh Cookbooks
This text exerpts a proposal prepared by Michael Murtaugh & Anne Laforet called Social Shell & Mesh Cookbooks made in preparation to Relearn 2014.
The introduction of the web radically popularized and changed the use of networked computers. The use of URLs to bridge protocols, host names, and file paths, and a simple public domain standard for hypertext created a social space of documents by virtue of the link (and associated practices like the webring).
In situating a social shell & mesh cookbooks in the browser we do not envision transposing established concepts the "social web" (aka Web 2.0). A core motivation in this project is a critical and often resistive response to contemporary online social media as many of the central mechanisms (think frictionless sharing, algorithmic "karma" scores, free software sandboxed in proprietary platforms, network infrastructure, and hardware) are highly problematic. In terms of network infrastructure, a social shell is closer to a 1960s multi-user UNIX system than to the "cloud" infrastructure behind today's popular social platforms. This project hopes to explore alternatives to centralization and global-scale as the only means of creating functional networked communities.
Web 2.0
Social Shell & Mesh Cookbooks
Source: http://activearchives.org/wiki/A_Social_Shell_%26_Mesh_Cookbooks