selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

mataroa logo

Self-host mataroa

v1.5

Minimalist blogging platform for distraction-free writing

ReleaseOpen SourceAGPL-3.0
Updated4 months ago
LanguagePython
Setup difficultyModerate
Stars
373
Port
8000 (HTTP web server)
Requires
Caddy, PostgreSQL
Install with Docker Compose

What is mataroa?

Mataroa is a minimalist blogging platform built with Django that prioritizes writing over features. It gives each user a blog at a subdomain (username.mataroa.blog) or a custom domain, with markdown authoring, RSS and email newsletter subscriptions, a REST API with key-based authentication, and one-click exports to Hugo, Zola, or EPUB formats. The platform includes basic image hosting, comments, a webring, and backend analytics — all without ads, tracking cookies, or required email at signup. It can be self-hosted via Docker Compose for development or a full provisioning script (deploy/provision.sh) that sets up PostgreSQL, Caddy with automatic Let's Encrypt TLS, gunicorn, and systemd services on a fresh Debian server. A premium tier ($9/year) unlocks custom domains and post-by-email via Postmark. The codebase uses a strict dependency policy with no third-party Django apps and no JavaScript libraries.

Should you self-host mataroa?

mataroa scores 50/100 on selfhost.directory (how scoring works) and ranks #11 of 24 in Blogging. It has 373 GitHub stars.

It shipped 2 stable releases in the past year. The latest, v1.5, came out on 3 January 2026. New versions land roughly every 6 weeks.

Setup is moderate: expect some configuration beyond a single command. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Ghost (83/100, 55 626 stars). It scores higher overall, so compare the two before you pick. See mataroa vs Ghost side by side.

Features

  • Backend analytics
  • Comments
  • Custom DomainPremium feature ($9/year)
  • Email newsletter
  • Export to EPUB
  • Export to Hugo
  • Export to Zola
  • Image Hosting
  • Import from text/markdown
  • Markdown authoring
  • Post by emailPremium feature ($9/year)
  • Redirect to new domain
  • REST API
  • RSS Feeds
  • Webring

mataroa README

How to install mataroa

Install mataroa with Docker Compose

Docker, Docker Compose
Environment variables
DEBUG, LOCALDEV, DATABASE_URL, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, POSTMARK_WEBHOOK_PASSWORD, STRIPE_API_KEY, STRIPE_PUBLIC_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_ID

docker compose up

Requires /etc/hosts entries for subdomain routing (mataroalocal.blog). Database data persisted in docker-postgres-data volume.

How to configure mataroa

  • ADMIN_EMAILAdmin email for receiving server errors

    Admin email for receiving server errors

  • BACKUP_BUCKETS3 bucket name for database backups

    S3 bucket name for database backups

  • CUSTOM_DOMAIN_IP95.217.30.133IP address for custom domain routing

    IP address for custom domain routing

  • DATABASE_URLPostgreSQL connection URL

    PostgreSQL connection URL

  • DEBUG1Show exceptions and tracebacks on errors (1=show, 0=don't show)

    Show exceptions and tracebacks on errors (1=show, 0=don't show)

    values: 0,1

  • EMAIL_HOST_PASSWORDSMTP password for outgoing emails

    SMTP password for outgoing emails

  • EMAIL_HOST_USERSMTP username for outgoing emails

    SMTP username for outgoing emails

  • LOCALDEV1Stop real emails and turn HTTPS off (1=stop/off, 0=don't stop/on)

    Stop real emails and turn HTTPS off (1=stop/off, 0=don't stop/on)

    values: 0,1

  • POSTMARK_WEBHOOK_PASSWORDPostmark inbound webhook HTTP Basic Authentication password

    Postmark inbound webhook HTTP Basic Authentication password

  • RCLONE_ACCESS_KEY_IDrclone access key ID

    rclone access key ID

  • RCLONE_ENDPOINTrclone endpoint URL

    rclone endpoint URL

  • RCLONE_PROVIDERrclone provider name for backup storage

    rclone provider name for backup storage

  • RCLONE_REGIONrclone region

    rclone region

  • RCLONE_SECRET_ACCESS_KEYrclone secret access key

    rclone secret access key

  • SECRET_KEYSession cookies secret

    Session cookies secret

  • SIGNUPS_ENABLED1Enable or disable user signups (1=enabled, 0=disabled)

    Enable or disable user signups (1=enabled, 0=disabled)

    values: 0,1

  • STRIPE_API_KEYStripe secret API key for payments

    Stripe secret API key for payments

  • STRIPE_PRICE_IDStripe price ID for premium plan

    Stripe price ID for premium plan

  • STRIPE_PUBLIC_KEYStripe publishable API key

    Stripe publishable API key

  • STRIPE_WEBHOOK_SECRETStripe webhook signing secret

    Stripe webhook signing secret

mataroa releases & version history

FAQ

Do you support Bluesky/ATProto?

No, but would also like to. Unplanned work that might happen in the future. Open to contributions.

Do you support ActivityPub Federation?

No, but would like to. Unplanned work that might happen in the future. Open to contributions.

What about supporting Mermaid flowcharts?

Not adding mermaid-js (2.7MB minified JS). Interested in backend-rendered alternative if a lightweight solution appears.

Would you add support for LaTeX-style math expressions?

Considered but not added. Would require a JavaScript library on the frontend, and mixing LaTeX with Markdown breaks existing post rendering.

Would you consider a rich editor option?

No. Rich editors add too much complexity (e.g., Trix at 200K JS) and saving HTML instead of plain text is an annoyance.

What markdown implementation does mataroa use?

Python-Markdown library implementing John Gruber's spec with code highlighting, tables, and footnotes.

What about pagination?

No pagination — all posts appear on one page. This is intentional for simplicity, browser search, and gauging blog extent.

What about tags or categories?

Tags are considered too complicated for mataroa's minimalist approach.

Can I add a custom favicon?

No. Custom favicons would allow authors to spend time on design instead of writing.

Will you add themes?

No. The project is not interested in adding features that give more options to users. The philosophy is to enable writing without design distractions.

Why should I use mataroa instead of Substack/WordPress/etc?

Mataroa follows a minimalist philosophy — fast, simple, prioritizing text content over fancy features. You own your data and can export it easily.

Can I have my own mataroa-like platform?

Yes. The open source code can be used as a starting point. Examples include capivarasdev/mataroa and linuxgoose/bocpress.

Can I self-host mataroa?

Yes. The project is open source and deployment documentation is in the README.

Do you support custom CSS?

No. The philosophy of mataroa is to be as minimal as possible without enabling too many decisions about styling.

More in Blogging

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…