Skip to content

Deploying WriteFreely

Introduction

WriteFreely is a minimalist, federated blogging platform built for writers. It strips away distractions to provide a clean writing environment while supporting ActivityPub for connection to the Fediverse. WriteFreely powers Write.as and can be self-hosted for complete control over your writing platform.

Key highlights of WriteFreely:

  • Minimalist Design: Distraction-free writing interface focused on content
  • Fediverse Integration: ActivityPub support lets followers from Mastodon and other platforms subscribe
  • Multi-User Support: Host a community of writers on one instance
  • Markdown Support: Write in Markdown with live preview
  • Custom Domains: Each blog can have its own custom domain
  • SEO Optimized: Clean, semantic HTML for search engine visibility
  • No JavaScript Required: Works in browsers with JavaScript disabled
  • Privacy Focused: No tracking, analytics optional

This guide walks through deploying WriteFreely on Klutch.sh using Docker.

Why Deploy WriteFreely on Klutch.sh

Deploying WriteFreely on Klutch.sh provides several advantages:

Federated Publishing: Connect your writing to the Fediverse for wider reach.

Writer Control: Own your platform and content completely.

HTTPS by Default: Required for ActivityPub federation, provided automatically.

Persistent Storage: Your posts and configuration persist with Klutch.sh volumes.

Prerequisites

Before deploying WriteFreely on Klutch.sh, ensure you have:

Deploying WriteFreely on Klutch.sh

    Create Your Repository

    Create a new GitHub repository with a Dockerfile:

    FROM writefreely/writefreely:latest
    # Set environment variables
    ENV WF_ADMIN_USER=${WF_ADMIN_USER:-admin}
    ENV WF_SITE_NAME=${WF_SITE_NAME:-My WriteFreely}
    # Create data directory
    RUN mkdir -p /data
    VOLUME ["/data"]
    EXPOSE 8080
    CMD ["writefreely"]

    Push to GitHub

    Push your Dockerfile to your GitHub repository.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project.

    Create a New App

    Within your project, create a new app and connect your GitHub repository.

    Configure HTTP Traffic

    Set the traffic type to HTTP with port 8080.

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    WF_ADMIN_USERYour admin username
    WF_SITE_NAMEYour site name

    Attach Persistent Volume

    Add a persistent volume mounted at /data for your SQLite database and configuration.

    Deploy Your Application

    Click Deploy to build and launch WriteFreely.

    Complete Setup

    Access your WriteFreely instance. On first run, follow the configuration wizard to set up your instance and create the admin account.

    Enable Federation (Optional)

    In the admin settings, enable ActivityPub federation to allow Fediverse followers to subscribe to blogs.

Additional Resources

Conclusion

WriteFreely on Klutch.sh provides a beautiful, minimalist blogging platform that connects to the wider Fediverse. Its focus on distraction-free writing combined with federation support makes it ideal for writers who want to own their platform while reaching a broader audience.