A clean, distraction-free blog that people can read on the web, by RSS, or follow from Mastodon and the fediverse
On this page
Good to know before you install
WriteFreely keeps the address it is installed on as its identity, so give it a domain first if it should federate.
At a glance#
- What it is
- Blogging Platform Communication
- Where it opens
- Web Interface
On its own port at
http://your-server:port, orblog.your-domainonce you have a domain - Updates
- When you choose New versions wait for you to press Update
- Backups
- Included Part of the daily backup when that's switched on
- Copies
- One per server
There's no step-by-step guide for WriteFreely here yet. Everything below comes straight from the app catalogue, so it's what LibrePortal really does when you install it. For using WriteFreely itself, its own documentation is the place to go: github.com/writefreely/writefreely.
Addresses and ports#
WriteFreely has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.
| What it is | Who can reach it | With a domain |
|---|---|---|
| Web Interface | Anyone | blog.your-domain |
Settings#
These are WriteFreely's own settings on its Config tab. The settings every app shares, like backups, updates and where its data lives, are explained in App pages and settings.
| Setting | What it does | Starts as |
|---|---|---|
| Site Name | The site's name at install; later in its Admin page. | WriteFreely |
| Single Writer | One blog at the root. Off lets the admin invite writers. | On |
| Admin Username | Also the blog's address and fediverse handle. | Empty |
In its config file#
A few more aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_WRITEFREELY_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_WRITEFREELY_SHOW_ON_DASHBOARD |
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard Choices: true, false |
true |
Public StatisticsCFG_WRITEFREELY_PUBLIC_STATS |
Whether WriteFreely may show its user and post counts to anyone who asks Choices: true, false |
false |
Tools#
WriteFreely's Tools tab has 4 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.
Set a new password for an existing user. Leave blank to generate one.
Add a writer with their own blog. Needs single-user mode off.
List every user.
Remove a user, with their blog and every post.
Works with#
These are the other apps WriteFreely knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.
- Fediverse: Its blogs can be followed from there, and from anywhere on the fediverse. There's nothing to switch on; LibrePortal shows whether it can work and lets you check. It needs a domain.
- Grafana: Shows dashboards for the apps that have one. works with every app
- Prometheus: Collects metrics from the apps that can export them. works with every app
- Uptime Kuma: Watches your apps and shows when one goes down. works with every app
Privacy and security#
Worth knowing WriteFreely is a minimalist blog on your server. Posts are shared with the wider fediverse because that is how it works; LibrePortal turns off its update check.
What leaves this server#
- Federation: posts are delivered to followers' servers
- Post and user counts appear on the public stats endpoint
What LibrePortal turns off#
- Update check
Licence: AGPL-3.0. Audited: 21 October 2026. See the privacy of every app and the Promise.
Sources#
Under the hood#
- It runs this image:
git.libreportal.org/libreportal/writefreely:0.17.2-acdc6b9@sha256:d1b9289c885828be36acc14555450f31ce53cc15f8f62584f568429c80a3d2e5. The version is pinned, and moves only when you update it. - It can sit behind Authelia's sign-in once Authelia is installed.
- Its own project and documentation: github.com/writefreely/writefreely
Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.