A self-hosted, single-user, ActivityPub powered microblog.
From @howaboutudance:
very much a WIP as a personal project, filing issues on my personal repo and working to get working code since seems like @tsileo kinda abandoned the code. If you wanna help, check out the issue tracker and email via the address on my profile
- Implements a basic ActivityPub server (with federation)
- Exposes your outbox as a basic microblog
- Support all content types from the Fediverse (
Note
,Article
,Page
,Video
,Image
,Question
...) - Markdown support
- Server-side code syntax highlighting
- Support all content types from the Fediverse (
- Comes with an admin UI with notifications and the stream of people you follow
- Private "bookmark" support
- List support
- Allows you to attach files to your notes
- Custom emojis support
- Cares about your privacy
- The image upload endpoint strips EXIF meta data before storing the file
- Every attachment/media is cached (or proxied) by the server
- No JavaScript, that's it. Even the admin UI is pure HTML/CSS
- (well except for the Emoji picker within the admin, but it's only few line of hand-written JavaScript)
- Easy to customize (the theme is written Sass)
- mobile-friendly theme
- with dark and light version
- IndieWeb citizen
- Microformats aware (exports
h-feed
,h-entry
,h-cards
, ...)- Export a feed in the HTML that is WebSub compatible
- Partial Micropub support (implementation report)
- Implements IndieAuth endpoints (authorization and token endpoint)
- You can use your ActivityPub identity to login to other websites/app (with U2F support)
- Send Webmentions to linked website (only for public notes)
- Exports RSS/Atom/JSON feeds
- You stream/timeline is also available in an (authenticated) JSON feed
- Microformats aware (exports
- Comes with a tiny HTTP API to help posting new content and and read your inbox/notifications
- Deployable with Docker (Docker compose for everything: dev, test and deployment)
- Focused on testing
- Tested against the official ActivityPub test suite, see the results
- CI runs "federation" tests against two instances
- Project is running 2 up-to-date instances (here and there)
- Manually tested against other major platforms
Remember that microblog.pub is still in early development.
--The easiest and recommended way to run microblog.pub in production is to use the provided docker-compose config--.
First install Docker and Docker Compose. Python is not needed on the host system.
Note that all the generated data (config included) will be stored on the host (i.e. not only in Docker) in config/
and data/
.
$ git clone https://github.com/tsileo/microblog.pub
$ cd microblog.pub
$ make config
Once the initial configuration is done, you can still tweak the config by editing config/me.yml
directly.
- Docker Compose Deployment
- Podman Deployment (TODO)
The easiest way to backup all of your data is to backup the microblog.pub/
directory directly (that's what I do and I have been able to restore super easily).
It should be safe to copy the directory while the Docker compose project is running.
The project requires Python3.10.
The most convenient way to hack on microblog.pub is to run the Python server on the host directly, and evetything else in Docker (or Podman).
In a brea from what @tsileo had developed, this repo has been refactored to:
- Use poetry to handle builds and depdendency management
- refactored into a python package format (using
/src
tree structure) to make it easier to build in a container - Upgraded to be focus on Python 3.10
To start a development environment
# install poetry
pip install poetry
# initialize a poetry environment
poetry install
# start a poetry shell
poetry shell
# start dependency containers
make start-deps
# run the tests
make test
If the tests run, at the moment, you know a basic Flask app can be started.
To interact with
Contributions/PRs are welcome, please open an issue to start a discussion before your start any work.