Deploy WriteFreely | Open Source Blog Platform
Self host WriteFreely — minimalist, federated blogging on Railway
WriteFreely
Just deployed
/data
Deploy and Host WriteFreely on Railway
Deploy WriteFreely on Railway to launch a clean, minimalist blogging platform with built-in ActivityPub federation. Self-host WriteFreely and own your writing space — no ads, no tracking, no distractions. This template pre-configures a WriteFreely instance with SQLite storage and a persistent volume, ready for publishing in minutes.
WriteFreely is the open-source engine behind Write.as, designed for writers who want a simple publishing experience. Run WriteFreely on Railway with automatic HTTPS, persistent data storage, and zero server management.
Getting Started with WriteFreely on Railway
After deployment completes, visit your Railway-provided URL to see the WriteFreely homepage. Navigate to /login and sign in with the admin credentials you configured during setup (default username: owner — note that admin is a reserved username in WriteFreely and cannot be used). Once logged in, click "New Blog" to create your first blog, then start writing using WriteFreely's distraction-free Markdown editor.
To enable user registration, set WRITEFREELY_OPEN_REGISTRATION=true in your Railway environment variables and redeploy. For a personal blog, set WRITEFREELY_SINGLE_USER=true to skip the multi-user interface entirely. WriteFreely supports ActivityPub federation out of the box — your posts can be followed from Mastodon and other fediverse platforms.

About Hosting WriteFreely
WriteFreely is an open-source publishing platform built in Go that strips away the complexity of traditional blogging tools. It focuses on the writing experience with a clean, Markdown-based editor and minimal UI chrome.
- Distraction-free editor — plain Markdown with no WYSIWYG clutter
- ActivityPub federation — blogs are discoverable and followable from Mastodon, Pleroma, and other fediverse platforms
- Multi-blog support — host multiple blogs under one instance with separate identities
- Lightweight — the Go binary and SQLite database run comfortably on minimal resources
- Privacy-focused — no tracking scripts, no analytics by default, no ads
- Custom CSS — style individual blogs with custom themes
- Multi-language support — right-to-left text and international character sets
Why Deploy WriteFreely on Railway
One-click deployment with persistent storage and automatic HTTPS:
- Zero server configuration — Railway handles TLS, DNS, and container orchestration
- SQLite included — no external database service needed
- Persistent volume keeps all data, keys, and configuration across redeploys
- Scale vertically with Railway's resource controls
- Federation-ready out of the box for fediverse connectivity
Common Use Cases for Self-Hosted WriteFreely
- Personal blog — a private, ad-free writing space for long-form content and journals
- Team knowledge base — internal publishing platform for engineering notes, postmortems, and documentation
- Community writing platform — multi-user instance for writing groups, classrooms, or organizations
- Fediverse presence — publish content that's natively followable from Mastodon and other ActivityPub platforms
Dependencies for Self-Hosted WriteFreely
- WriteFreely —
algernon/writefreely:0.16.0-1(Go-based blogging platform with SQLite)
Environment Variables Reference for WriteFreely on Railway
| Variable | Description | Default |
|---|---|---|
WRITEFREELY_HOST | Full public URL of the instance | https://${{RAILWAY_PUBLIC_DOMAIN}} |
WRITEFREELY_SITE_NAME | Site title shown in navigation | Write Freely |
WRITEFREELY_ADMIN_USER | Admin username created at first boot (cannot be admin — reserved) | owner |
WRITEFREELY_ADMIN_PASSWORD | Admin password (bootstrap-only) | Generated hex |
WRITEFREELY_SINGLE_USER | Single-user mode (no registration UI) | false |
WRITEFREELY_OPEN_REGISTRATION | Allow public sign-ups | false |
WRITEFREELY_FEDERATION | Enable ActivityPub federation | true |
Deployment Dependencies
- Runtime: Go static binary in Alpine-based container
- Docker Hub: algernon/writefreely
- GitHub: writefreely/writefreely
- Docs: writefreely.org/docs
Hardware Requirements for Self-Hosting WriteFreely
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 0.5 vCPU | 1 vCPU |
| RAM | 128 MB | 256 MB |
| Storage | 100 MB | 1 GB |
| Runtime | Go 1.18+ | Go 1.21+ |
WriteFreely is exceptionally lightweight. The Go binary is under 20 MB and SQLite eliminates the need for a separate database server. A Railway Starter plan is more than sufficient for most instances.
Self-Hosting WriteFreely with Docker
Pull the community-maintained Docker image and run with a persistent volume. The following docker run command starts WriteFreely with SQLite storage:
docker run -d \
--name writefreely \
-p 8080:8080 \
-v writefreely-data:/data \
-e WRITEFREELY_SITE_NAME="My Blog" \
-e WRITEFREELY_HOST="https://blog.example.com" \
-e WRITEFREELY_ADMIN_USER="admin" \
-e WRITEFREELY_ADMIN_PASSWORD="changeme" \
algernon/writefreely:0.16.0-1
For docker-compose deployments, create a compose file with the following configuration:
services:
writefreely:
image: algernon/writefreely:0.16.0-1
ports:
- "8080:8080"
volumes:
- writefreely-data:/data
environment:
WRITEFREELY_SITE_NAME: "My Blog"
WRITEFREELY_HOST: "https://blog.example.com"
WRITEFREELY_ADMIN_USER: "admin"
WRITEFREELY_ADMIN_PASSWORD: "changeme"
WRITEFREELY_FEDERATION: "true"
volumes:
writefreely-data:
How Much Does WriteFreely Cost to Self-Host?
WriteFreely is 100% free and open source under the AGPL-3.0 license. There are no paid tiers, premium features, or enterprise editions — every feature is available in the self-hosted version. Your only cost is infrastructure. On Railway, a WriteFreely instance typically uses under $2/month in resources due to its minimal CPU and memory footprint. Managed hosting alternatives like WriteFreely.host start at $10/month for up to 100 blogs.
WriteFreely vs Ghost
| Feature | WriteFreely | Ghost |
|---|---|---|
| License | AGPL-3.0 (free) | MIT (free) |
| Focus | Minimalist writing | Full publishing platform |
| Editor | Markdown only | Rich editor + Markdown |
| Federation | ActivityPub built-in | None |
| Themes | Custom CSS per blog | Full theme system |
| Newsletters | No | Built-in |
| Members/Payments | No | Built-in Stripe integration |
| Resource usage | ~128 MB RAM | ~512 MB+ RAM |
| Database | SQLite or MySQL | MySQL |
WriteFreely is ideal when you want pure writing without publishing platform complexity. Ghost is better for content businesses that need newsletters, memberships, and SEO tools.
FAQ
What is WriteFreely and why should you self-host it? WriteFreely is an open-source blogging platform focused on distraction-free writing with Markdown support and ActivityPub federation. Self-hosting gives you full control over your content, no vendor lock-in, and zero tracking of your readers.
What does this Railway template deploy for WriteFreely?
This template deploys a single WriteFreely container with SQLite storage and a persistent volume at /data. It includes automatic HTTPS via Railway's edge proxy, admin account creation, and ActivityPub federation enabled by default.
Why does WriteFreely on Railway use SQLite instead of MySQL?
SQLite is the default and recommended database for small-to-medium WriteFreely instances. It requires no separate database service, simplifies backups (single file in the volume), and performs well for typical blogging workloads. MySQL support is available by providing a custom config.ini.
How do I enable ActivityPub federation on self-hosted WriteFreely?
Federation is enabled by default with WRITEFREELY_FEDERATION=true. Your blogs are automatically discoverable on the fediverse. Users on Mastodon and other ActivityPub platforms can follow your blog by searching for @[email protected].
Can I migrate my existing blog content to WriteFreely on Railway? WriteFreely supports importing posts via its API. You can use the Write.as CLI tool or make direct API calls to create posts programmatically. For WordPress migrations, export your posts as Markdown files and import them through the API.
How do I back up my self-hosted WriteFreely data on Railway?
All WriteFreely data lives in the /data volume — this includes the SQLite database, configuration file, and encryption keys. Use Railway's volume snapshot feature or connect via the Railway CLI to download the volume contents.
Template Content
WriteFreely
algernon/writefreely:0.16.0-1WRITEFREELY_ADMIN_USER
Admin username (admin is reserved)
WRITEFREELY_ADMIN_PASSWORD
Admin password at first boot