microblog.pub is a self-hosted, single-user, ActivityPub powered microblog. It's designed as a single user app, but since it uses the ActivityPub protocol it's part of the larger Fediverse and can interact with accounts on Mastodon, Pixelfed, and other ActivityPub servers (ie you can mutually follow, like, reblog, etc).
To install and run microblog.pub on your Opalstack account:
- Create a new "Nginx Proxy Port" app and make a note of the app's name and port assignment.
- Add your domain and attach the app and domain to a site with SSL enabled.
- SSH to the app's shell user and run the following commands, replacing the app name and port assignment with your own:
curl -sSL https://install.python-poetry.org | python3.10 -
cd ~/apps/name_of_app
git clone https://git.sr.ht/~tsileo/microblog.pub .
poetry install
poetry run inv configuration-wizard
The config wizard will run, answer the questions as prompted:
- domain: your domain from step 2
- username: the @username you want to go by
- admin password: a secure password, store this in your password manager or write it down aZSdc+}[P8S$N
- name (e.g. John Doe): your full name (or whatever you want)
- summary: a description of the site
- will the site be served via https?: y
- icon URL: the URL to your profile image/avatar
When the config wizard is complete, run the following commands:
poetry run inv migrate-db
- Edit
misc/supervisord.conf
in your app directory to add your port number from step 1 to the command
in the [program:uvicorn]
section, eg:
# assumes port 55555, use your own port numbrer instead
command=%(ENV_VENV_DIR)s/bin/uvicorn app.main:app --no-server-header --port 55555
- In the same file
misc/supervisord.conf
, edit all of the log paths to prefix them with your app's log path eg:
stdout_logfile=/home/shell_user_name/logs/apps/name_of_app/uvicorn.log
...
stdout_logfile=/home/shell_user_name/logs/apps/name_of_app/incoming_worker.log
...
stdout_logfile=/home/shell_user_name/logs/apps/name_of_app/outgoing_worker.log
- Run the following command to start the app:
VENV_DIR=$( poetry env info | grep ^Path | awk '{print $2}' | head -n 1 ) poetry run supervisord -c misc/supervisord.conf
- Create a Nginx static symlink app using
/home/shell_user_name/apps/name_of_app/app/static
as the symlink path, and with gzip enabled.
- After you've created the symlink app, click its edit button to enable caching with a 1 year expiry.
- Route the symlink app to your site using
/static/
as the URI path.
The app should now be up and running on the site you created in step 2. You're done! 🎉