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