No description
config | ||
data | ||
sass | ||
static | ||
templates | ||
tests | ||
utils | ||
.dockerignore | ||
.env | ||
.gitignore | ||
.travis.yml | ||
activitypub.py | ||
app.py | ||
config.py | ||
dev-requirements.txt | ||
docker-compose-dev.yml | ||
docker-compose-tests.yml | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
Makefile | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
tasks.py |
microblog.pub
A self-hosted, single-user, ActivityPub powered microblog.
Still in early development.
Features
- Implements a basic ActivityPub server (with federation)
- Compatible with Mastodon and others (Pleroma, Hubzilla...)
- Also implements a remote follow compatible with Mastodon instances
- Exposes your outbox as a basic microblog
- Implements IndieAuth endpoints (authorization and token endpoint)
- U2F support
- You can use your ActivityPub identity to login to other websites/app
- Admin UI with notifications and the stream of people you follow
- Allows you to attach files to your notes
- Privacy-aware image upload endpoint that strip EXIF meta data before storing the file
- No JavaScript, that's it, even the admin UI is pure HTML/CSS
- Easy to customize (the theme is written Sass)
- mobile-friendly theme
- with dark and light version
- Microformats aware (exports
h-feed
,h-entry
,h-cards
, ...) - Exports RSS/Atom feeds
- Comes with a tiny HTTP API to help posting new content and performing basic actions
- Easy to "cache" (the external/public-facing microblog part)
- With a good setup, cached content can be served most of the time
- You can setup a "purge" hook to let you invalidate cache when the microblog was updated
- Deployable with Docker (Docker compose for everything: dev, test and deployment)
- Focus on testing
- Tested against the official ActivityPub test suite ([ ] TODO submit the report)
- CI runs some local "federation" tests
- Manually tested against Mastodon
- Project is running an up-to-date instance
Running your instance
Installation
$ git clone
$ make css
$ cp -r config/me.sample.yml config/me.yml
Configuration
$ make password
Deployment
$ docker-compose up -d
Development
The most convenient way to hack on microblog.pub is to run the server locally, and run
# One-time setup
$ pip install -r requirements.txt
# Start the Celery worker, RabbitMQ and MongoDB
$ docker-compose -f docker-compose-dev.yml up -d
# Run the server locally
$ MICROBLOGPUB_DEBUG=1 FLASK_APP=app.py flask run -p 5005 --with-threads
Contributions
PRs are welcome, please open an issue to start a discussion before your start any work.