21. April 2025

Writefreely mit Docker Compose

Hallo.
Heute wollen wir mit Docker die Opensource Software writefreely erstellen.
Dazu solltest Du über eine Ubuntu VM (24.04) mit einer Dockerumgebung verfügen und SSH Zugang haben.

1. Installation von wget

apt install wget -y

2. Erstellen des notwendigen Docker-Netzwerks

docker network create --subnet=172.31.0.0/16 dockernetwrite

3. Erstellen des Verzeichnisses und wechseln in den Ordner

mkdir -p writefreely
cd /writefreely

4. Download und entpacken der Software (Version 15.1 ist die aktuellste beim erstellen dieses Tutorials)

wget https://github.com/writefreely/writefreely/releases/download/v0.15.1/writefreely_0.15.1_linux_amd64.tar.gz

Entpacken mit:

tar -zxvf writefreely_0.15.1_linux_amd64.tar.gz

5. Nun in den Ordner wechseln und Anschliessend die Konfiguartion starten:

cd writefreely
./writefreely --config

Wenn du schon einen Reverse-Proxy verwendest so wie ich, musst du die Angezeigte Option wählen:

Den Port auswählen, in dem Fall den internen angeben 8080, da dieser dann mit der späteren
docker-compose.yml nach aussen weitergegeben wird.

21-04-2025_30_44-Einstellungen Writefreely mit Docker Compose

Hier die MySQL auswählen (die Zugänge musst Du aus der docker-compose.yml verwenden bzw. müssen gleich sein).

Snippet:
---
      - MYSQL_ROOT_PASSWORD=deinpasswort
      - MYSQL_DATABASE=writefreelydb
      - MYSQL_USER=writefreelyuser
      - MYSQL_PASSWORD=deinpasswort
----

Der Port 3306 bleibt Standardmässig für die Datenbank.

Nun musst Du noch Entscheiden, ob es nur für Dich ist oder mehrere User sein soll Deine Instanz.

Ich wähle für dieses Tutorial nun Single user blog aus.

Im nächsten Schritt muss noch ein Administrator für die Instanz erstellt werden, der Name deiner Instanz und die Domain unter der diese erreichbar sein soll.

Soll deine Instanz auch Föderiert werden? Dann wähle hier Enabled aus.

Möchtest Du die Statistik Öffentlich herzeigen von Deiner Instanz, dann kannst Du das nun mit Public oder Private auswählen.

21-04-2025_58_28-Einstellungen Writefreely mit Docker Compose

Da ich dies hier nicht möchte, wähle ich Privat aus.

Dasselbe gilt für die Metadaten.

21-04-2025_01_23-Einstellungen Writefreely mit Docker Compose

Nun noch ENTER drücken und die Daten werden in die Datenbank geschrieben:

21-04-2025_11_44-vm240-dockerhost-root-776x1024 Writefreely mit Docker Compose

6. Bevor wir den Docker starten, müssen noch die keys erstellt werden.

./writefreely --gen-keys

Die keys müssen noch lesbar gemacht werden, da sonst folgender Fehler auftritt.

chmod 777 -R "/home/docker-container/write/writefreely/keys/*"

Die config.ini muss vor dem Start noch geprüft und angepasst werden:

nano "/writefreely/config.ini"
[server]
hidden_host          = 
port                 = 8080
bind                 = 172.31.0.2 <-- muss auf die IP im Docker writefreely_web für gesetzt werden
tls_cert_path        = 
tls_key_path         = 
autocert             = false
templates_parent_dir = 
static_parent_dir    = 
pages_parent_dir     = 
keys_parent_dir      = 
hash_seed            = 
gopher_port          = 0

[database]
type     = mysql
filename = 
username = writefreelyuser
password = deinpasswort
database = writefreelydb
host     = 172.31.0.3
port     = 3306
tls      = false

[app]
site_name             = deininstanzname
site_description      = Beschreibung der Instanz
host                  = https://writefreely.domain.com
theme                 = write
editor                = 
disable_js            = false
webfonts              = true
landing               = 
simple_nav            = false
wf_modesty            = false
chorus                = false
forest                = false
disable_drafts        = false
single_user           = true
open_registration     = false
open_deletion         = false
min_username_len      = 3
max_blogs             = 1
federation            = true
public_stats          = false
monetization          = false
notes_only            = false
private               = true
local_timeline        = false
user_invites          = 
default_visibility    = 
update_checks         = false
disable_password_auth = false

[email]
domain          = 
mailgun_private = 

[oauth.slack]
client_id          = 
client_secret      = 
team_id            = 
callback_proxy     = 
callback_proxy_api = 

[oauth.writeas]
client_id          = 
client_secret      = 
auth_location      = 
token_location     = 
inspect_location   = 
callback_proxy     = 
callback_proxy_api = 

[oauth.gitlab]
client_id          = 
client_secret      = 
host               = 
display_name       = 
callback_proxy     = 
callback_proxy_api = 

[oauth.gitea]
client_id          = 
client_secret      = 
host               = 
display_name       = 
callback_proxy     = 
callback_proxy_api = 

[oauth.generic]
client_id          = 
client_secret      = 
host               = 
display_name       = 
callback_proxy     = 
callback_proxy_api = 
token_endpoint     = 
inspect_endpoint   = 
auth_endpoint      = 
scope              = 
allow_disconnect   = false
map_user_id        = 
map_username       = 
map_display_name   = 
map_email          = 

7. Nun kannst Du die Web-Instanz im Docker starten:

docker-compose up -d writefreely_web

8. Einloggen in der Instanz und Konfiguration.

Rufe nun die zuvor festgelegte Webseite auf und Logge Dich ein.

https://writefreely.domain.com

21-04-2025_03_51-Edit-deininstanzname-—-deininstanzname-–-Mozilla-Firefox-1024x228 Writefreely mit Docker Compose

✅ Fazit
Du hast nun Deine eigene Instanz von writefreely im Docker laufen.

Viel Spaß und freude beim Schreiben.

QUELLEN:
– Homepage: https://writefreely.org/
– Konfiguration: https://writefreely.org/docs/main/admin/config
– Anpassung der CSS: https://guides.write.as/customizing/#custom-css