Railway

Deploy WriteFreely | Open Source Blog Platform

Self host WriteFreely — minimalist, federated blogging on Railway

Deploy WriteFreely | Open Source Blog Platform

Just deployed

/data

WriteFreely logo

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.

WriteFreely dashboard screenshot

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

  • WriteFreelyalgernon/writefreely:0.16.0-1 (Go-based blogging platform with SQLite)

Environment Variables Reference for WriteFreely on Railway

VariableDescriptionDefault
WRITEFREELY_HOSTFull public URL of the instancehttps://${{RAILWAY_PUBLIC_DOMAIN}}
WRITEFREELY_SITE_NAMESite title shown in navigationWrite Freely
WRITEFREELY_ADMIN_USERAdmin username created at first boot (cannot be admin — reserved)owner
WRITEFREELY_ADMIN_PASSWORDAdmin password (bootstrap-only)Generated hex
WRITEFREELY_SINGLE_USERSingle-user mode (no registration UI)false
WRITEFREELY_OPEN_REGISTRATIONAllow public sign-upsfalse
WRITEFREELY_FEDERATIONEnable ActivityPub federationtrue

Deployment Dependencies

Hardware Requirements for Self-Hosting WriteFreely

ResourceMinimumRecommended
CPU0.5 vCPU1 vCPU
RAM128 MB256 MB
Storage100 MB1 GB
RuntimeGo 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

FeatureWriteFreelyGhost
LicenseAGPL-3.0 (free)MIT (free)
FocusMinimalist writingFull publishing platform
EditorMarkdown onlyRich editor + Markdown
FederationActivityPub built-inNone
ThemesCustom CSS per blogFull theme system
NewslettersNoBuilt-in
Members/PaymentsNoBuilt-in Stripe integration
Resource usage~128 MB RAM~512 MB+ RAM
DatabaseSQLite or MySQLMySQL

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

More templates in this category

View Template
Pixelfed
Explore + Share beautiful photos and videos on the Fediverse

Evan Boehs
View Template
NodeBB
Node.js based forum software built for the modern web

Six
View Template
WordPress + MySQL
Zero Config | One click | WordPress | Docker | MySQL

YAV.AI
1.2K
Deploy