WriteFreely¶
WriteFreely is an open source platform for building a writing space on the web. There's no news feed, notifications, or unnecessary likes or claps to take you away from your train of thought. Reach outside your own site with federation via ActivityPub. WriteFreely lets anyone on Mastodon, Pleroma, or any ActivityPub-enabled service follow your blog, bookmark your posts, and share them with their followers. WriteFreely is written in Go (golang), so it runs anywhere and takes up very few resources.
Note
For this guide you should be familiar with the basic concepts of:
Prerequisites¶
If you want to use your own domain, set it up as described in Domains. We assume here that your username is isabell and that your domain is isabell.uber.space.
Note
In all steps, replace isabell with your username!
You'll need your MariaDB credentials:
[isabell@moondust ~]$ my_print_defaults client
--default-character-set=utf8mb4
--user=isabell
--password=MySuperSecretPassword
Installation¶
Database Setup¶
Create a new database:
[isabell@moondust ~]$ mariadb -e "CREATE DATABASE ${USER}_writefreely CHARACTER SET latin1 COLLATE latin1_swedish_ci;"
Download¶
Use wget to download v0.17.2:
[isabell@moondust ~]$ wget https://github.com/writefreely/writefreely/releases/download/v0.17.2/writefreely_0.17.2_linux_amd64.tar.gz
[isabell@moondust ~]$ tar xzf writefreely_0.17.2_linux_amd64.tar.gz
Configuration¶
Interactive Configuration¶
Change to the writefreely directory and start the interactive configuration process:
[isabell@moondust ~]$ cd writefreely
[isabell@moondust writefreely]$ ./writefreely config start
The Server setup:
- For Environment choose Production, behind reverse proxy
- For Local port keep 8080
The Database setup:
- For Database driver choose MySQL
- For Username and Password use the MariaDB credentials (see above)
- For Database name use isabell_writefreely
- For Host keep localhost
- For Port keep 3306
The App Setup:
- Choose the options to your liking, for Public Url either use the domain you assigned to the Asteroid, or https://isabell.uber.space
Create Admin User for Multi-User Instances¶
If you chose Multi-user instance you need to create a WriteFreely admin user via:
[isabell@moondust writefreely]$ ./writefreely user create --admin <name>:<password>
Replace <name> and <password> with the WriteFreely admin credentials you want to use, and note that <name> cannot be admin.
Generate Encryption Keys¶
Generate the encryption keys for your instance:
[isabell@moondust writefreely]$ ./writefreely keys generate
Correct bind Entry¶
With a text editor change the bind entry in ~/writefreely/config.ini as follows:
Configure Web Backend¶
To make the application accessible from the outside, configure a web backend:
[isabell@moondust ~]$ uberspace web backend add / port 8080 --force
OK: Added webbackend '/' to your Asteroid
Add Service¶
Create this file: ~/.config/systemd/user/writefreely.service with this content:
[Install]
WantedBy=default.target
[Service]
WorkingDirectory=/home/isabell/writefreely
ExecStart=/home/isabell/writefreely/writefreely
Restart=always
RestartSec=10
Start the service:
[isabell@moondust ~]$ systemctl --user enable --now writefreely.service
Start Writing¶
Now you should be able to access your WriteFreely instance under https://isabell.uber.space. Log in with the username and password provided during configuration.
Debugging¶
Did you always replace isabell with your actual username? Also check if the service is running:
[isabell@moondust ~]$ uberspace service list
Service Status Enabled
─────────────────────────────────
writefreely active disabled
If the writefreely service is not active, check the steps where you added the service.
Media¶
WriteFreely does not provide a way to manage media (like adding pictures to your blog posts). You can either rely on an external service, or use your Asteroid also as a simple file server.
Note
All files you provide this way are accessible from anywhere via their URL.
A simple setup would look like this:
[isabell@moondust ~]$ mkdir ~/www/html/assets
[isabell@moondust ~]$ uberspace web backend add /assets apache
Now you can store files under ~/www/html/assets and access them via their URL. For instance, if you store a pic.png under ~/www/html/assets/blog1/post1/pic.png you can show this file in your blog post via:
Migrating your blog stays simple, just zip the assets folder and move it to a new server.
Updates¶
Note
The Admin Dashboard has a tab Updates where you can check if you are up to date. Also, check the update feed regularly.
For each version, there are upgrade instructions given in their release notes.