No description
Find a file
Thomas Sileo d70c73cad7 Improve notifications
- Keep track of unread count
 - "follow back" action
2019-07-29 19:36:22 +02:00
config Initial import 2018-05-18 20:41:41 +02:00
data Remove old rabbitmq data dir 2019-04-24 00:44:50 +02:00
docs Tweak the README 2019-04-22 11:03:48 +02:00
sass Improve notifications 2019-07-29 19:36:22 +02:00
setup_wizard wizard fixup (#55) 2019-06-17 22:55:39 +02:00
static Better theme support 2018-07-01 11:40:44 +02:00
templates Improve notifications 2019-07-29 19:36:22 +02:00
tests Reformat the files with black 2019-04-13 10:00:56 +02:00
utils Improve notifications 2019-07-29 19:36:22 +02:00
.dockerignore Tests tests tests and bugfixes 2018-05-28 19:46:23 +02:00
.drone.yml Update CI 2019-04-22 22:51:40 +02:00
.env Tweak docker-compose to allow starting multiple instances 2018-05-21 11:53:58 +02:00
.gitignore Initial import 2018-05-18 20:41:41 +02:00
.isort.cfg Formatting 2018-07-21 01:05:51 +02:00
activity_gc.py Fix GC logging 2019-07-22 21:32:55 +02:00
activitypub.py Improve notifications 2019-07-29 19:36:22 +02:00
app.py Improve notifications 2019-07-29 19:36:22 +02:00
config.py Improve notifications 2019-07-29 19:36:22 +02:00
dev-requirements.txt Some tests are passing 2018-06-17 21:54:16 +02:00
docker-compose-dev.yml Fix installation instructions and config (#45) 2019-04-17 20:44:26 +02:00
docker-compose.yml Start to remove Celery code 2019-04-12 21:10:10 +02:00
Dockerfile Tweak the Dockerfile 2019-04-22 22:41:45 +02:00
LICENSE Initial import 2018-05-18 20:41:41 +02:00
Makefile Disable Docker cache 2019-07-16 22:33:53 +02:00
migrations.py Tweak/fix migration 2019-07-16 21:25:04 +02:00
poussetaches.py Isort fixes 2019-04-22 11:34:55 +02:00
README.md Tweak the README 2019-06-29 11:36:21 +02:00
requirements.txt Add html5lib for better parsing 2019-07-04 23:22:20 +02:00
run.sh Lot of migration work (better normalization), and more visibility work 2019-07-14 23:57:23 +02:00
setup.cfg Initial import 2018-05-18 20:41:41 +02:00
tasks.py Only show public stuff on the homepage 2019-07-13 00:38:51 +02:00

microblog.pub

microblog.pub

A self-hosted, single-user, ActivityPub powered microblog.

Build Status #microblog.pub on Matrix License Code style: black

Still in early development/I do not recommend to run an instance yet.

Features

  • Implements a basic ActivityPub server (with federation)
    • Compatible with Mastodon and others (Pleroma, Plume, PixelFed, Hubzilla...)
    • Also implements a remote follow compatible with Mastodon instances
  • Exposes your outbox as a basic microblog
    • Support all content types from the Fediverse (Note, Article, Page, Video, Image, Question...)
  • Comes with an 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
    • (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
  • Microformats aware (exports h-feed, h-entry, h-cards, ...)
  • Exports RSS/Atom/JSON feeds
    • You stream/timeline is also available in an (authenticated) JSON feed
  • 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)
  • Implements IndieAuth endpoints (authorization and token endpoint)
    • U2F support
    • You can use your ActivityPub identity to login to other websites/app
  • Focused on testing

User Guide

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/.

Installation

$ 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.

Deployment

To spawn the docker-compose project (running this command will also update microblog.pub to latest and restart the project it it's already running):

$ make run

By default, the server will listen on localhost:5005 (http://localhost:5005 should work if you're running locally).

For production, you need to setup a reverse proxy (nginx, caddy) to forward your domain to the local server (and check certbot for getting a free TLS certificate).

HTTP API

See docs/api.md for the internal HTTP API documentation.

Backup

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.

Development

The project requires Python3.7+.

The most convenient way to hack on microblog.pub is to run the Python server on the host directly, and evetything else in Docker.

# One-time setup (in a new virtual env)
$ pip install -r requirements.txt
# Start MongoDB and poussetaches
$ make poussetaches
$ env POUSSETACHES_AUTH_KEY="<secret-key>" docker-compose -f docker-compose-dev.yml up -d
# Run the server locally
$ FLASK_DEBUG=1 MICROBLOGPUB_DEBUG=1 FLASK_APP=app.py POUSSETACHES_AUTH_KEY="<secret-key>" flask run -p 5005 --with-threads

Contributions

Contributions/PRs are welcome, please open an issue to start a discussion before your start any work.