WriteFreely is een makkelijk te installeren en eenvoudig te gebruiken open source blogging platform dat het ActivityPub-protocol ondersteunt, zodat het met de Fediverse integreert.

Matto Fransen

WriteFreely is een blogplatform met als uitgangsprincipe om het de schrijver zo makkelijk mogelijk te maken. Het wil de schrijver zo min mogelijk in de weg zitten bij het maken van teksten en het publiceren daarvan.

Daarnaast hangt WriteFreely de filosofie aan van een gedecentraliseerd platform, net als die van de Fediverse. Iedereen die dat wil, kan zelf een server opzetten. Dit wordt een ‘instance’ genoemd. De Fediverse bestaat uit deze instances en hun onderlinge koppelingen. Niemand is de eigenaar van de Fediverse. Eigenaren van een instance hebben alleen controle over hun eigen instance, niemand heeft de gehele Fediverse onder controle. Wanneer een beheerder per ongeluk een fout maakt, dan gaat daarmee alleen de betreffende instance onderuit. De rest van de Fediverse blijft overeind. De gegevensuitwisseling in de Fediverse loopt over poort 443, waardoor een mogendheid het niet makkelijk in één klap uit de lucht haalt.

Deze filosofie zit ook achter WriteFreely. De ontwikkelaars hebben zich gericht op het realiseren van een oplossing die weinig resources vraagt en makkelijk is te installeren, zodat de drempel om een nieuwe instance op te zetten laag blijft. Wil je zelf je eigen WriteFreely instance hosten? Dan heb je een (sub-)domeinnaam met TLS-certificaat en een server nodig. De eisen aan de server zijn niet hoog, een Raspberry Pi is prima geschikt.

Open source

WriteFreely is een doorontwikkeling op het oorspronkelijke WriteAs, dat uit 2014 stamt. Je komt dit op een aantal punten nog tegen in bijvoorbeeld de documentatie. WriteFreely is beschikbaar onder de open source AGPL-licentie GNU Affero General Public License, version 3. WriteFreely is geschreven in Go en is daardoor platformonafhankelijk. Voor een aantal omgevingen zijn kant-en-klaar gecompileerde versies beschikbaar, voor andere omgevingen download je de source en compileer je het zelf. Er is keuze uit MySQL of SQLite als database-engine. Verder gebruikt WriteFreely Less (Leaner Style Sheets) en wat JavaScript voor het front-end.

Geen afleiding

WriteFreely heeft een minimalistische uitstraling. WriteFreely is wel eens het ‘social media hater’s blogging platform’ genoemd. Het bevat geen likes, hartjes, ‘duimpje omhoog’, et cetera. Het idee is dat je hierdoor niet afgeleid wordt en je focus bij het schrijven houdt.

De bezoekers van je blog worden niet lastig gevallen met pop-ups, verzoeken om zich in te schrijven of lid te worden, verzoeken voor likes en dergelijke. Ook voor de lezers houdt WriteFreely het dus puur bij de inhoud.

Zelf hosten of registreren

Om te starten registreer je jezelf bij een van de instances of host je zelf je eigen WriteFreely instance. Op de website van WriteFreely vind je een overzicht van instances met een open registratie. Naast open registratie is het ook goed om te kijken of je je thuis voelt bij de betreffende community.

Het aantal verschillende blogs dat je naast elkaar kunt gebruiken, verschilt per instance. Bij sommige is dat drie, bij andere vijf of meer. Dit is alleen van belang indien je, bijvoorbeeld voor verschillende doelgroepen, verschillende blogs naast elkaar wil onderhouden. Voor de meeste mensen is een enkele blog voldoende.

Fediverse

Nadat je een Fediverse koppeling geconfigureerd hebt, kunnen deelnemers in de Fediverse (zoals Mastodon- of Pleroma-gebruikers) je volgen, net zoals zij een Mastodon- of Pleroma gebruiker volgen. Wanneer je een post op je blog publiceert, verschijnt deze bij je volgers in hun tijdlijn tussen de andere berichten. De hashtags in je posts worden ook hashtags in de Fediverse. Op een instance waar een of meerdere gebruikers je volgen, kan je post dus ook op een hashtag gevonden worden. Lees hierover het artikel over Pleroma in Linux Magazine editie 5 nog eens door.

Posts

Je schrijft je post in Markdown, waar je desgewenst zelf HTML-code in opneemt. De syntax is conform de originele Markdown beschrijving uit 2004 op daringfireball.net. Headers maak je door een of meerdere hekjes (#), gevolgd door een spatie, aan het begin van de regel op te nemen.

WriteFreely biedt de keuze uit drie verschillende editors: ‘pad’, ‘bare’ en ‘classic’. De editor ‘pad’ is de standaard configuratie. Dit geeft je een leeg blad wanneer je een post gaat schrijven, zie Afbeelding 1. Configureer je de ‘classic’ editor, dan krijg je een WYSIWYG-editor, zie Afbeelding 2. De posts worden ook in dat geval opgeslagen in het Markdown formaat. De keuze van de editor geldt voor alle gebruikers van de betreffende instance.

tekstinvoer via de standaard editor.
de WYSIWYG-editor

De posts worden opgeslagen in de database. Het is dus belangrijk dat je daar een back-up van maakt, samen met het config.ini-bestand. Wanneer je de templates of de CSS hebt aangepast, moet je die natuurlijk ook in je back-up meenemen.

Afhankelijk van het doel van je blog kies je uit drie verschijningsvormen: ‘blog’, ‘novel’ of ‘notebook’. Kies je voor ‘blog’, dan wordt bij de post de publicatiedatum getoond en worden de posts van nieuw naar oud gesorteerd. Bij ‘novel’ wordt geen publicatiedatum getoond en de posts worden van oud naar nieuw gesorteerd. Ook bij ‘notebook’ wordt geen publicatiedatum getoond en worden posts van nieuw naar oud gesorteerd. De weergave van de datum is afhankelijk van de taalinstellingen in de browser. Heeft de bezoeker bijvoorbeeld Nederlands als default taal in de browser ingesteld? Dan krijgt deze de datum van de posts in het Nederlands te zien.

Afbeeldingen neem je op door een uitroepteken, gevolgd door een Markdown-link. Dit betekent dat de afbeelding ergens online moet staan. WriteFreely biedt zelf momenteel nog geen oplossing om je afbeeldingen naar de server te uploaden en van daaruit beschikbaar te maken. De makers van Write.as hebben overigens een betaalde dienst in het leven geroepen om afbeeldingen online beschikbaar te maken, zie hiervoor snap.as.

Hashtags

WriteFreely ondersteunt het gebruik van hashtags (bijvoorbeeld: #Linux). In de Fediverse is het gebruikelijk om hashtags in het CamelCase formaat te schrijven, bijvoorbeeld #LinuxMagazine. Mensen met een visuele beperking hebben in het verleden aangegeven dat dit voor hen makkelijker werkt. WriteFreely ondersteunt het gebruik van CamelCase hashtags.

WriteFreely heeft geen apart veld voor de hashtags. In je post neem je een of meerdere hashtags op, op de meest logische plek in de tekst. WriteFreely maakt voor iedere gebruikte hashtag automatisch een pagina aan met daarin alle posts met die hashtag (zie Afbeelding 3). WriteFreely maakt automatisch een aantal RSS-feeds aan. Allereerst is er een algemene RSS-feed voor alle blogposts. Voor iedere tag wordt een aparte pagina gemaakt, waarin de posts met die betreffende tag worden getoond. Ook deze pagina heeft een eigen RSS-feed. Dit betekent dat elke tag die je gebruikt, leidt tot een RSS-feed voor die tag.

verzamelpagina van de posts met tag #linuxmagazine.

Statische pagina’s

Wanneer je bijvoorbeeld een about-pagina, een contactpagina of een now-pagina wil maken, schrijf je die net zoals een normale blogpost. Daarna ga je naar het overzicht van posts in klik je op ‘pin’. Nu verschijnt de link naar de betreffende post in de bovenbalk van je blog.

API

De API geeft ontwikkelaars de mogelijkheid om rondom WriteFreely apps te bouwen. Via de API kun je bijvoorbeeld Markdown naar HTML laten renderen, posts maken, publiceren, updaten en deleten. Waar authenticatie noodzakelijk is, gebeurt dit met een token. Een instance kan door meerdere schrijvers gebruikt worden. De posts worden verzameld in zogenaamde ‘collections’, waarbij elke schrijver zijn of haar eigen collectie heeft (dit is voor de buitenwereld zijn of haar blog).

Command line

Vanaf GitHub installeer je ‘WriteFreely CLI’. Dit is een applicatie geschreven in Go, waarmee je met je favoriete editor blogposts schrijft. Wij downloaden de tar.gz voor 64-bits Linux voor ons Ubuntu systeem. Na het uitpakken verschijnt de executable wf, die je gebruikt om posts te plaatsen, wijzigen of deleten.

Met ./wf new maak je een nieuwe post, waarbij WriteFreely de standaard geconfigureerde editor opent. Nadat je de tekst geschreven hebt, sluit je de editor. WriteFreely zet je nieuwe post als draft in WriteFreely. Daarna kun je deze publiceren. Met ./wf new -c <blognaam> –font sans wordt onze nieuwe post meteen als blog gepubliceerd. Op deze manier heb je dus de webinterface niet nodig en maak je je blogposts van de command line in je favoriete editor.

Community

Sommige mensen installeren WriteFreely puur voor persoonlijk gebruik. Anderen installeren het ter ondersteuning van een community, zoals een vereniging, sportclub, leesclub of bijvoorbeeld een groep buurtbewoners. Je installeert WriteFreely, zodat de leden van de betreffende community elk hun eigen blog kunnen bijhouden en elkaar daarbij helpen en inspireren. RSS-feeds maken het mogelijk dat deelnemers elkaar kunnen volgen. Zeker wanneer je daarnaast ook een Mastodon- of Pleroma-instantie opzet, bouw je een infrastructuur voor de verdere ontwikkeling van de community en de versterking van de onderlinge verbanden. Mensen kunnen dan onderling communiceren, op elkaars posts reageren, enzovoorts. Wanneer je meerdere gebruikers gaat toelaten, is het verstandig om vooraf goede afspraken over gedragsregels te maken en af te spreken wat je doet wanneer mensen zich daar niet aan houden.

Raspberry Pi

WriteFreely is licht van gewicht en is voor de meeste Raspberry Pi modellen geschikt. Wij hebben een Raspberry Pi 4, die op de 64-bits versie van Raspberry Pi OS Lite draait en weinig te doen heeft. Hier hebben wij nog voldoende ruimte.

Voorafgaand aan de installatie bedenk je eerst welke database je gaat gebruiken. WriteFreely werkt met SQLite en MySQL. Wij kiezen voor de SQLite. Heeft MySQL of MariaDB je voorkeur? Dan installeer je die eerst. Zie ook writefreely.org/start. Verder dient je instance via een (sub-)domein over HTTPS en een geldig certificaat benaderbaar te zijn.

Wij downloaden de tar.gz van de meest recente release van GitHub, in ons geval release v0.13.1. Je kiest hierbij voor welk platform je een tar.gz wil downloaden. Wij kiezen voor de arm64 versie. Er zijn ook versies voor amd64, armv6 en armv7, Mac OS X en Windows. Nadat je de tar.gz hebt uitgepakt, maak je een basisconfiguratie met ./writefreely config start.

Bekijk de config.ini en controleer de settings. Om WriteFreely vanaf een ander systeem te kunnen bekijken, zet je bind op 0.0.0.0. Wij hebben bij database type op sqlite3 staan, en localhost als host.

Hierna genereer je de benodigde keys met ./writefreely keys generate. Wanneer dit klaar is, controleer je de werking met ./writefreely. Open in je brower het IP-adres van je Raspberry Pi op poort 8080, bijvoorbeeld http://192.168.1.2:8080. Wanneer alles goed werkt, stop je WriteFreely en maak je een bestand aan voor systemd, waarmee WriteFreely automatisch gestart wordt. Zie Afbeelding 4. Hierna start je WriteFreely met sudo systemctl start writefreely.

bestand voor systemd

Vervolgens heb je nog een reverse proxy nodig, met een geldig TLS-certificaat, die binnenkomend verkeer op je (sub-)domeinnaam op poort 443 doorsluist naar poort 8080. Je gebruikt hiervoor bijvoorbeeld relayd of NGINX.

Minimalistisch

WriteFreely is een minimalistische blogapplicatie die gewoon doet wat het moet doen, zonder franjes. Wij missen versiebeheer en het is jammer dat je afbeeldingen voor het plaatsen eerst zelf online beschikbaar moet maken. WriteFreely is makkelijk te installeren en te gebruiken en vraagt weinig recources. Wanneer je nog wat ruimte op een Raspberry Pi hebt, dan is dat voldoende.