====== OpenSlides Multiuser/Multinstance mit systemd auf Debian 10 ======
Dies ist noch work in progress. Die Dokumentation ist noch nicht fertig abgeschlossen, da wir parallel noch an einer besseren Implementierung arbeiten
Die Konfiguration von nginx oder einem anderen Proxy wird hier nicht behandelt und ist für einen Produktivbetrieb zusätzlich notwendig
Die Installation ist auf einem unprivileged LXC-Container möglich
===== install requirements =====
apt install build-essential python3-dev python3-venv redis-server mariadb-server libmariadb-client-lgpl-dev default-libmysqlclient-dev python-mysqldb
===== setup mysql/mariadb =====
mysql_secure_installation
ersetze $USERNAME durch den gewünschten usernamen
mysql -u root -p
> CREATE DATABASE $USERNAME CHARACTER SET UTF8; ###ersetzen
> CREATE USER openslides@localhost IDENTIFIED BY '****SECUREPASSWORD****'; ####pwersetzen - nur bei Erstinstallation
> GRANT ALL PRIVILEGES ON $USERNAME.* TO openslides@localhost; ###ersetzen
> FLUSH PRIVILEGES;
===== install openslides for user =====
as root:
* adduser $USERNAME ###ersetzen - sicheres pw setzen
* su $USERNAME ###ersetzen
* cd ~
* mkdir openslides
* python3 -m venv .virtualenv
* source .virtualenv/bin/activate
* pip install --upgrade setuptools pip six wheel
* pip install django-redis django-redis-sessions mysqlclient channels-redis
* pip install openslides
#einmal kurz starten, damit settings.py erstellt wird
openslides start
#edit settings.py
nano ~/.config/openslides/settings.py
use_redis = True
...
SILENCED_SYSTEM_CHECKS = ['mysql.E001']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '$USERNAME', ###ersetzen
'USER': 'openslides',
'PASSWORD': '****SECUREPASSWORD****', ###ersetzen
'HOST': '127.0.0.1',
'PORT': '',
}
}
comment sqlite3 out
nano .virtualenv/lib/python3.7/site-packages/openslides/__main__.py
change port
nano .virtualenv/lib/python3.7/site-packages/channels_redis/core.py
change Line 831 "msgpack.unpackb(message, raw=False)" to "msgpack.unpackb(message, raw=False, strict_map_key=False)"
==== systemd ====
nano /etc/systemd/system/openslides@.service
[Unit]
Description=OpenSlides
Wants=network.target
After=network.target
After=mysql.service
[Service]
User=%i
Group=%i
ExecStart=/home/%i/openslides/.virtualenv/bin/openslides
Environment=PATH=/home/%i/openslides/.virtualenv/bin
Restart=always
[Install]
WantedBy=multi-user.target
* systemctl daemon-reload
* systemctl enable openslides@$USERNAME.service ###ersetzen
* systemctl start openslides@$USERNAME.service ###ersetzen
### fertig
==== SAML ====
* pip install python3-saml
* edit settings.py -> saml= True
* start openslides once
* edit samls_settings.py
* create certs
* add to IDP
===== Danke =====
Diese Anleitung basiert großteils auf den Anleitungen des Computerclub Pinneberg und des pypi.org-Projektes.
* https://pypi.org/project/openslides (Einfache OpenSlides Installation ohne systemd)
* https://www.computerclub-pinneberg.de/openslides (lokale Installation für Betrieb mit Beamer (teils veraltet))