Mataroa — Self-Hosted, Open-Source

Naked blogging platform for minimalists.

License: MIT. Built with: Python, HTML, CSS, Shell, JavaScript, Makefile, Dockerfile. Website: https://mataroa.blog/. Source: https://github.com/mataroablog/mataroa.

Installation

# /etc/hosts 127.0.0.1 mataroalocal.blog 127.0.0.1 paul.mataroalocal.blog 127.0.0.1 random.mataroalocal.blog 127.0.0.1 anyusername.mataroalocal.blog ``` This will enable us to access mataroa locally (once we start the web server) at [http://mataroalocal.blog:8000/](http://mataroalocal.blog:8000/) and if we make a user account with username `paul`, then we will be able to access it at [http://paul.mataroalocal.blog:8000/](http://paul.mataroalocal.blog:8000/) ### Docker > [!NOTE] > This is the last step for initial Docker setup. See the "Environment variables" > section below, for further configuration details. To set up a development environment with Docker and Docker Compose, run the following to start the web server and database: ```sh docker compose up ``` If you have also configured hosts as described above in the "Subdomains" section, mataroa should now be locally accessible at [http://mataroalocal.blog:8000/](http://mataroalocal.blog:8000/) Note: The database data are saved in the git-ignored `docker-postgres-data` docker volume, located in the root of the project. ### Dependencies We use `uv` for dependency management and virtual environments. ```sh uv sync --all-groups ``` See [Dependency Policy](#dependency-policy) for more details on adding/upgrading dependencies. ### Environment variables A file named `.envrc` is used to define the environment variables required for this project to function. One can either export it directly or use [direnv](https://github.com/direnv/direnv). There is an example environment file one can copy as base: ```sh cp .envrc.example .envrc ``` When on Docker, to change or populate environment variables, edit the `environment` key of the `web` service either directly on `docker-compose.yml` or by overriding it using the standard named git-ignored `docker-compose.override.yml`. ```yaml # docker-compose.override.yml services: web: environment: EMAIL_HOST_USER: smtp-user EMAIL_HOST_PASSWORD: smtp-password

Why self-host Mataroa

Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.

What hardware do you need

Most self-hosted apps run comfortably on modest hardware — a Raspberry Pi 4, a mini PC, a NAS with Docker support, or a small VPS is usually enough for personal or family use. CPU and RAM requirements scale with how many simultaneous users or how much data you push through Mataroa. Storage requirements depend on the kind of data you keep; check the README for guidance on data retention.

Where to go from here

Last verified: 2026-04-22