← Back to posts
comparison guide self-hosted · · 9 min read

Memos vs Plume vs WriteFreely: Best Self-Hosted Microblogging Platforms 2026

Compare Memos, Plume, and WriteFreely — three lightweight self-hosted platforms for microblogging, note publishing, and lightweight content creation. Includes Docker deployment guides and feature comparison.

OS
Editorial Team

If you want to publish your thoughts online without handing your data to Twitter/X, Medium, or Substack, self-hosted microblogging platforms give you full ownership of your content. These lightweight alternatives let you capture ideas, write posts, and share them — on your own server, with your own rules.

In this guide, we compare three popular open-source options: Memos, Plume, and WriteFreely. Each serves a slightly different niche, from quick memo capture to federated long-form publishing.

Why Self-Host Your Microblogging Platform?

Centralized social platforms control your content, your audience, and your ability to speak freely. When a platform changes its algorithm, restricts your reach, or shuts down entirely, you lose everything you built.

Self-hosted microblogging solves these problems:

  • Full data ownership — Your posts, notes, and followers live on your server. No third-party can delete or restrict them.
  • No algorithmic manipulation — Your content appears exactly as you publish it, with no hidden ranking system deciding who sees it.
  • Privacy by default — No tracking pixels, no behavioral profiling, no ad networks profiling your readers.
  • Customizable experience — Add your own themes, integrations, and workflows without waiting for platform approval.
  • Federation support — Some platforms support ActivityPub, letting your content reach users across the decentralized social web.

For a deeper dive into decentralized social networks, see our complete Fediverse guide covering Mastodon, Pixelfed, and Lemmy.

Platform Overview

Memos — Lightweight Memo Capture

Memos (usememos/memos) is an open-source, self-hosted note-taking tool built for quick capture. Written in Go, it offers a Twitter-like interface where you can post short memos with Markdown formatting, tags, and media attachments. As of April 2026, it has 59,000+ GitHub stars and is actively maintained with recent updates.

Key strengths:

  • Twitter-like timeline interface for quick posting
  • Markdown-native with code block support
  • Tag-based organization with full-text search
  • REST API for integrations and automation
  • Single binary deployment — runs anywhere
  • SQLite backend by default (zero external dependencies)
  • PWA support for mobile access

Memos excels at personal knowledge capture and lightweight publishing. It is not designed as a blogging platform — it is more like a self-hosted Twitter combined with a personal journal.

Plume — Federated Blogging

Plume (plume-org/Plume) is a federated blogging application built on ActivityPub. Written in Rust, it supports the broader fediverse ecosystem, allowing your posts to be discovered and interacted with by users on Mastodon, PeerTube, and other ActivityPub-compatible platforms. It has 2,200+ GitHub stars (the GitHub repository is now a mirror — development has moved to GitLab).

Key strengths:

  • Full ActivityPub federation — reach the fediverse
  • Rich text editor with media embedding
  • Collection and tag organization
  • Cross-posting to Mastodon
  • License support (Creative Commons built-in)
  • Instance-based multi-user blogging
  • SQLite or PostgreSQL backend

Plume is best suited for writers who want their blog posts to be discoverable across the decentralized social web while maintaining full control of their publishing platform.

WriteFreely — Minimalist Publishing

WriteFreely (writefreely/writefreely) is a clean, Markdown-based publishing platform made for writers. Written in Go, it focuses on distraction-free writing and community building. With 5,100+ GitHub stars and active development, it is one of the most mature lightweight publishing platforms available.

Key strengths:

  • Distraction-free Markdown editor
  • Multi-user blog support with customizable themes
  • ActivityPub federation (limited compared to Plume)
  • Simple, elegant default themes
  • Custom domain support
  • SQLite or MySQL backend
  • Collection and tag support
  • Draft saving and post scheduling

WriteFreely strikes a balance between simplicity and functionality. It is less federated than Plume but more polished for collaborative writing than Memos. For a standalone deep dive on this platform, see our complete WriteFreely self-hosted blogging guide.

Feature Comparison Table

FeatureMemosPlumeWriteFreely
LanguageGoRustGo
GitHub Stars59,000+2,200+5,100+
Primary UseQuick memos / microblogFederated bloggingMinimalist blogging
ActivityPubNoYes (full)Yes (limited)
EditorMarkdown (raw)Rich textMarkdown (clean)
Multi-userYesYesYes
BackendSQLiteSQLite / PostgreSQLSQLite / MySQL
Docker SupportYesYesYes
REST APIYesYesLimited
TaggingYesYesYes
Media UploadYesYesYes
Mobile PWAYesNoNo
Custom ThemesLimitedYesYes
FederationNoFull fediversePartial fediverse
Draft SupportNoYesYes
SchedulingNoNoYes
Code BlocksYesYesYes

Docker Deployment Guides

Deploy Memos with Docker

Memos is the simplest to deploy — it requires only a single container with a volume for persistent data:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
version: "3.8"

services:
  memos:
    container_name: memos
    image: neosmemo/memos:latest
    restart: unless-stopped
    ports:
      - "5230:5230"
    volumes:
      - memos-data:/var/opt/memos

volumes:
  memos-data:

Start the service:

1
docker compose up -d

Access your Memos instance at http://your-server:5230. The first visit prompts you to create an admin account. All data is stored in SQLite within the Docker volume.

Deploy Plume with Docker

Plume requires a more complex setup with an application container and a database:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: "3.8"

services:
  plume:
    image: plumeorg/plume:latest
    restart: unless-stopped
    ports:
      - "7878:7878"
    environment:
      - BASE_URL=https://your-blog-domain.com
      - DATABASE_URL=plume.db
      - ROCKET_ADDRESS=0.0.0.0
      - ROCKET_PORT=7878
    volumes:
      - plume-data:/app
      - plume-media:/app/media

  # Optional: PostgreSQL backend instead of SQLite
  # plume-db:
  #   image: postgres:16-alpine
  #   environment:
  #     POSTGRES_DB: plume
  #     POSTGRES_USER: plume
  #     POSTGRES_PASSWORD: changeme
  #   volumes:
  #     - plume-db-data:/var/lib/postgresql/data

volumes:
  plume-data:
  plume-media:

Initialize the database and create an admin user:

1
2
3
4
# Enter the container
docker compose exec plume plume search init
docker compose exec plume plume instance new --domain your-blog-domain.com
docker compose exec plume plume users new --admin

Deploy WriteFreely with Docker

WriteFreely ships with an official Docker Compose configuration that includes both the application and database:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
version: "3"

volumes:
  web-keys:
  db-data:

networks:
  external_writefreely:
  internal_writefreely:
    internal: true

services:
  writefreely-web:
    container_name: "writefreely-web"
    image: "writeas/writefreely:latest"
    volumes:
      - "web-keys:/go/keys"
      - "./config.ini:/go/config.ini"
    networks:
      - "internal_writefreely"
      - "external_writefreely"
    ports:
      - "8080:8080"
    depends_on:
      - "writefreely-db"
    restart: unless-stopped

  writefreely-db:
    container_name: "writefreely-db"
    image: "mariadb:latest"
    volumes:
      - "db-data:/var/lib/mysql/data"
    networks:
      - "internal_writefreely"
    environment:
      - MYSQL_DATABASE=writefreely
      - MYSQL_ROOT_PASSWORD=changeme
    restart: unless-stopped

After starting the containers, run the initial setup:

1
2
3
docker compose up -d
docker compose exec writefreely-web writefreely setup
docker compose exec writefreely-web writefreely config

Configure your config.ini with your domain, database credentials, and federation settings.

Reverse Proxy Setup

All three platforms should sit behind a reverse proxy for HTTPS termination. Here is a Caddy configuration that handles TLS automatically:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
memos.example.com {
    reverse_proxy localhost:5230
}

plume.example.com {
    reverse_proxy localhost:7878
}

writefreely.example.com {
    reverse_proxy localhost:8080
}

Caddy automatically provisions Let’s Encrypt certificates. For more on self-hosted reverse proxy options, see our Caddy vs Traefik comparison.

Which Platform Should You Choose?

Choose Memos if:

  • You want a lightweight, Twitter-like posting experience
  • You primarily capture quick notes, code snippets, and thoughts
  • You want the simplest possible deployment (single container, SQLite)
  • You need a REST API for integrations
  • Mobile access via PWA is important

Choose Plume if:

  • ActivityPub federation is a priority for your workflow
  • You want your blog posts to reach fediverse audiences
  • You prefer rich text editing over raw Markdown
  • You need Creative Commons license support
  • You are comfortable with Rust-based tooling

Choose WriteFreely if:

  • You want the most polished minimalist writing experience
  • You need multi-user blogging with custom themes
  • Draft saving and post scheduling are important
  • You want a balance of simplicity and features
  • You value a mature, well-documented platform

For writers who need a full-featured knowledge base alongside their blog, consider pairing WriteFreely with a wiki platform — our Wiki.js vs BookStack vs Outline comparison covers the best options.

Performance and Resource Usage

MetricMemosPlumeWriteFreely
Binary Size~15 MB~20 MB~10 MB
RAM Usage (idle)~20 MB~50 MB~30 MB
SQLite DB Growth~1 MB per 10K memos~5 MB per 100 posts~3 MB per 100 posts
Startup Time< 1 second2-3 seconds1-2 seconds
Min VPS Specs256 MB RAM512 MB RAM256 MB RAM

All three platforms run comfortably on the smallest VPS tiers ($3-5/month). Memos has the lightest footprint overall, making it ideal for low-resource environments like Raspberry Pi deployments.

Migration Between Platforms

If you already publish on one platform and want to switch, here are the general migration paths:

  • Memos to WriteFreely: Export memos via the API as Markdown, then import as WriteFreely posts using the API or admin panel.
  • Plume to WriteFreely: Plume supports AP export of individual posts. Convert AP Activity objects to Markdown and import into WriteFreely.
  • WriteFreely to Memos: WriteFreely posts can be exported as Markdown. Use the Memos API to create individual memos from each post body.

None of these platforms offer one-click import/export between them, so migration requires some scripting. The good news is that all three store content in standard formats (Markdown or HTML), making data extraction straightforward.

FAQ

Is Memos suitable as a blogging platform?

Memos is designed as a microblogging and note-capture tool, not a traditional blog. Its Twitter-like interface is optimized for short, frequent posts rather than long-form articles. If you need blog features like post scheduling, drafts, or rich SEO metadata, WriteFreely or Plume are better choices. Memos excels as a personal knowledge base or lightweight content feed.

Do these platforms support ActivityPub federation?

Plume offers full ActivityPub federation, meaning your posts appear in fediverse timelines and can receive likes, boosts, and comments from Mastodon and other ActivityPub users. WriteFreely supports ActivityPub but with limited functionality — it can federate posts but lacks full interaction support. Memos does not support ActivityPub or any federation protocol. If federation is important, Plume is the strongest choice.

Can I run multiple users on a single instance?

Yes, all three platforms support multi-user deployments. Memos allows you to create user accounts through the admin panel. Plume supports instance-based blogging where multiple users can register and publish. WriteFreely has the most mature multi-user system, with per-user blogs, customizable themes, and admin moderation tools.

Which platform has the best mobile experience?

Memos is the clear winner for mobile use. It ships with a Progressive Web App (PWA) that works well on both iOS and Android, allowing you to capture memos directly from your phone’s home screen. Neither Plume nor WriteFreely offer dedicated mobile apps or PWA support, though their web interfaces are responsive.

What database backends are supported?

Memos uses SQLite exclusively — this simplifies deployment but may not scale for very large instances. Plume supports both SQLite and PostgreSQL, giving you flexibility for larger deployments. WriteFreely supports SQLite for single-user setups and MySQL for multi-user instances. For production use with many users, PostgreSQL (Plume) or MySQL (WriteFreely) is recommended.

How do these compare to full blogging platforms like Ghost or WordPress?

These platforms are intentionally lightweight alternatives. Ghost and WordPress offer extensive plugin ecosystems, e-commerce, membership systems, and advanced SEO tools. Memos, Plume, and WriteFreely sacrifice features for simplicity, speed, and easier self-hosting. If you need a full CMS, consider Ghost, Strapi, or Directus as headless CMS options. If you just want to publish writing without complexity, these three platforms are ideal.

Advertise here
Advertise here