Inhaltsverzeichnis
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))