A self-hosted, single-user, ActivityPub powered microblog.
Go to file
Josh Washburne 0ef2f1f89d Remove surrounding whitespace before processing query
Ran into this issue twice quite by accident with fat-fingering copy/paste on
my phone. If there is any whitespace in front of or trailing after the
lookup query, it returns an "Unexpected error". Stripping the string is the
quick and dirty way to clean it.

I hate modifying the same function argument name in place like that, but it
is valid Python. If you want me to assign it to a separate variable and
replace all the references of "query", let me know.

Thanks!
2022-08-31 08:16:32 +02:00
alembic Improve pruning process 2022-08-19 14:50:56 +02:00
app Remove surrounding whitespace before processing query 2022-08-31 08:16:32 +02:00
data Add missing SCSS file in data/ 2022-08-06 17:05:27 +02:00
docs Small typos in docs/install.md 2022-08-30 08:21:11 +02:00
misc Tweak supervisord config 2022-08-28 19:08:44 +02:00
scripts Improve summary 2022-08-24 20:12:10 +02:00
tests Fix outbox delete side effects 2022-08-30 20:05:10 +02:00
.build.yml Switch to Ubuntu for CI (way faster than with alpine) 2022-07-01 19:34:29 +02:00
.dockerignore Tweak .dockerignore 2022-07-30 08:48:13 +02:00
.flake8 Initial commit for new v2 2022-06-22 20:11:22 +02:00
.gitignore Generate a basic favicon dynamically 2022-07-22 08:46:14 +02:00
Dockerfile Simplify Docker support 2022-07-30 09:02:04 +02:00
LICENSE Fix LICENSE 2022-08-05 19:32:22 +02:00
Makefile Another Makefile fix 2022-08-29 19:44:02 +02:00
README.md Improve docs 2022-07-30 09:43:36 +02:00
alembic.ini Reset DB migrations 2022-07-28 19:28:18 +02:00
boussole.json Fix boussole config 2022-06-22 21:21:50 +02:00
docker-compose.yml Fix Docker compose config 2022-07-28 20:28:53 +02:00
poetry.lock Tweak deps 2022-08-26 21:07:46 +02:00
pyproject.toml Tweak deps 2022-08-26 21:07:46 +02:00
tasks.py Improve version handling 2022-08-24 09:02:20 +02:00

README.md

microblog.pub

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

builds.sr.ht status AGPL 3.0

Instances in the wild:

There are still some rough edges, but the server is mostly functional.

Features

  • Implements the ActivityPub server to server protocol
    • Federate with all the other popular ActivityPub servers like Pleroma, PixelFed, PeerTube, Mastodon...
    • Consume most of the content types available (notes, articles, videos, pictures...)
  • Exposes your ActivityPub profile as a minimalist microblog
    • Author notes in Markdown, with code highlighting support
    • Dedicated section for articles/blog posts (enabled when the first article is posted)
  • Lightweight
    • Uses SQLite, and no external dependencies except Python 3.10+
    • Can be deployed on small VPS
  • Privacy-aware
    • EXIF metadata (like GPS location) are stripped before storage
    • Every media is proxied through the server
    • Strict access control for your outbox enforced via HTTP signature
  • No Javascript
    • The UI is pure HTML/CSS
    • Except tiny bits of hand-written JS in the note composer to insert emoji and add alt text to images
  • IndieWeb citizen
  • Easy to backup
    • Everything is stored in the data/ directory: config, uploads, secrets and the SQLite database.

Getting started

Check out the online documentation.

Credits

Contributing

All the development takes place on sourcehut, GitHub is only used as a mirror:

Contributions are welcomed, check out the documentation for more details.

License

The project is licensed under the GNU AGPL v3 LICENSE (see the LICENSE file).