This authentication bridge authenticates against an OAuth 2.0 provider to present users with member only functionalities.
- Website: https://sticks.turbo.chat/
- This web application utilizes uwsgi with Python 3.10+ and uses PostgreSQL as its database backend.
- The static content will have to be served using nginx or another HTTP server of your liking, preferably with builtin WSGI support so uWSGI can talk to the proxy using the WSGI protocol, rather than the HTTP protocol.
- The web application may currently not be thread safe, so it is recommended to run it using a single uWSGI worker.
For production use:
- A HTTP server with WSGI support (e.g. nginx)
- uWSGI (including greenlet and gevent plugin)
- Python 3.10+ (including development headers for building psycopg)
- PostgreSQL (including development headers for building psycopg)
- Redis
For compiling static CSS and JS resources:
- Install using
pip install .[bot,uwsgi]
- Run
setup.sh
in foldersetup
to generate the JS and CSS - Configure nginx to serve /static and forward wsgi on
/<app path>
and/<api path>
- Setup Postgres database and user for use with turbo sticks. Run
initdb.sql
to initialize tables - (optional) Setup Redis with unix socket
- Setup an App in Mastodon with read:accounts privileges
- Setup an App in Discord with identify and guilds.join scope
- Create a Discord Bot and authorize it with
CREATE_INSTANT_INVITE
,MANAGE_ROLES
,KICK_MEMBERS
,BAN_MEMBERS
,MANAGE_MESSAGES
,VIEW_CHANNEL
,SEND_MESSAGE
andMANAGE_WEBHOOKS
permissions - Adjust settings in
turbo-config.example.yaml
and rename toturbo-config.yaml
- Run
retrieve-discord-ids
to determine your server and role ids - Add server id and role id to
turbo-config.yaml
- Run
turbo-sticks.wsgi
using uWSGI - (optional) Setup cronjob to run
sticks-cron
daily - (optional) Run
sticks-bot
to add discord integration to webchat
- Run
setup.sh
in foldersetup
to generate the JS and CSS - Check
setup
folder forupgradedb-v{major version}{minor version}.sql
if it's your first time upgrading to a specific minor or major revision. - Run database upgrade scripts in order from the oldest to newest version if you're skipping ahead multiple releases.
Updated version pins
Updated version pins Disables rendering of Discord discriminator entirely
Updated to pydantic 2.0 Updated version pins Hides the discriminator for Discord users that no longer have one Addded Cache-Control: no-store headers to non-public views
Updated version pins
Updated version pins
Tries to make webhook messages in the Discord bot more robust.
Properly packaged sticks. Added type annotations and tests. Removed Python <3.10 support.
Removed legacy chat. Websocket webchat is now considered stable.
Added a websockets webchat with a discord bot to talk to. Removed Python 3.5 support.
Added ACl and admin view to manage AWESOME Piece Theatre password and stream source
Added initial Patreon support for accessing /theatre based on your pledge to a campaign
Minor bug and consistency fixes as well as code cleanup
Added Discord integration, improved security for upcoming integrations (requires DB reset)
Ported turbo-sticks to Python 3.5+ from 2.7
Proper Release after some cleanup.
Beta Release.