Authentication gateway bot for the Unimore Informatica Telegram group
Project description
thorunimore
A moderator bot for the Unimore Informatica group
Installation
-
Create a new venv and enter it:
python -m venv venv source venv/bin/activate
-
Download through PyPI:
pip install thorunimore
-
Install the packages required to connect to the desired SQL database:
- For PostgreSQL:
pip install psycopg2-binary
- For PostgreSQL:
Running
Development
-
Set the following env variables:
-
The URI of the SQL database you want to use
SQLALCHEMY_DATABASE_URI=postgresql://steffo@/thor_dev
-
A Google OAuth 2.0 client id and client secret
GOOGLE_CLIENT_ID=000000000000-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=aaaaaaaaaaaaaaaaaaaaaaaa
-
A random string of characters used to sign Telegram data
SECRET_KEY=Questo è proprio un bel test.
-
api_id and api_hash for a Telegram application
TELEGRAM_API_ID=1234567 TELEGRAM_API_HASH=abcdefabcdefabcdefabcdefabcdefab
-
The username and token of the Telegram bot
TELEGRAM_BOT_USERNAME=thorunimorebot TELEGRAM_BOT_TOKEN=1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-
The desired logging level and format
LOG_LEVEL=DEBUG LOG_FORMAT={asctime}\t| {name}\t| {message}
-
The url at which web is hosted
BASE_URL=http://lo.steffo.eu:30008
-
The url to join the Telegram group
GROUP_URL=https://t.me/joinchat/AAAAAAAAAAAAAAAAAAAAAA
-
-
Run both the following processes:
python -m thorunimore.telegram & python -m thorunimore.web &
Production
-
Install
gunicorn
in the previously created venv:pip install gunicorn
-
Create the
bot-thorunimore
systemd unit by creating the/etc/systemd/system/bot-thorunimore.service
file:[Unit] Name=bot-thorunimore Description=A moderator bot for the Unimore Informatica group Requires=network-online.target postgresql.service After=network-online.target nss-lookup.target [Service] Type=exec User=thorunimore WorkingDirectory=/opt/thorunimore ExecStart=/opt/thorunimore/venv/bin/python -OO -m thorunimore.telegram Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.target
-
Create the
web-thorunimore
systemd unit by creating the/etc/systemd/system/web-thorunimore.service
file:[Unit] Name=web-thorunimore Description=Thorunimore Gunicorn Server Wants=network-online.target postgresql.service After=network-online.target nss-lookup.target [Service] Type=exec User=thorunimore WorkingDirectory=/opt/thorunimore ExecStart=/opt/thorunimore/venv/bin/gunicorn -b 127.0.0.1:30008 thorunimore.web.__main__:reverse_proxy_app [Install] WantedBy=multi-user.target
-
Create the
/etc/systemd/system/bot-thorunimore.d/override.conf
and/etc/systemd/system/web-thorunimore.d/override.conf
files:[Service] Environment="SQLALCHEMY_DATABASE_URI=postgresql://thorunimore@/thor_prod" Environment="GOOGLE_CLIENT_ID=000000000000-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com" Environment="GOOGLE_CLIENT_SECRET=aaaaaaaaaaaaaaaaaaaaaaaa" Environment="SECRET_KEY=Questo è proprio un bel server." Environment="TELEGRAM_API_ID=1234567" Environment="TELEGRAM_API_HASH=abcdefabcdefabcdefabcdefabcdefab" Environment="TELEGRAM_BOT_USERNAME=thorunimorebot" Environment="TELEGRAM_BOT_TOKEN=1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" Environment="LOG_LEVEL=DEBUG" Environment="LOG_FORMAT={asctime}\t| {name}\t| {message}" Environment="BASE_URL=https://thor.steffo.eu" Environment="GROUP_URL=https://t.me/joinchat/AAAAAAAAAAAAAAAAAAAAAA"
-
Start (and optionally enable) both services:
systemctl start "*-thorunimore" systemctl enable "*-thorunimore"
-
Reverse-proxy the web service:
<VirtualHost *:80> ServerName "thor.steffo.eu" Redirect permanent "/" "https://thor.steffo.eu/" </VirtualHost> <VirtualHost *:443> ServerName "thor.steffo.eu" ProxyPass "/" "http://127.0.0.1:30008/" ProxyPassReverse "/" "http://127.0.0.1:30008/" RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} SSLEngine on SSLCertificateFile "/root/.acme.sh/*.steffo.eu/fullchain.cer" SSLCertificateKeyFile "/root/.acme.sh/*.steffo.eu/*.steffo.eu.key" </VirtualHost>
a2ensite rp-thorunimore
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for thorunimore-1.2.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62ce19180ba3a491a296b555ebfe82423e28e4c4e6e83aa23fdf31e6189c1b45 |
|
MD5 | 27e11a995e10c9808af5995560525d6a |
|
BLAKE2b-256 | 56faad0978e14acd3e02de1f4ce6c9740401c10202198c51c126ada18a3f8859 |