1. clone the [repository](https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3)
1. clone the [repository](https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3)
2. create a python virtualenv and install the packages from `requirements.txt` there
2. create a python virtualenv and install the packages from `requirements.txt` there
3. create a database (tested with postgres and sqlite, but feel free to use whatever you like and [SQLAlchemy](http://docs.sqlalchemy.org/en/latest/dialects/index.html) supports
3. create a database (tested with postgres and sqlite, but feel free to use whatever you like and [SQLAlchemy](http://docs.sqlalchemy.org/en/latest/dialects/index.html) supports
4. copy `config.py.example` to `config.py` and edit it
4. create `config.py` with `flask create_example_config config.py` and edit it
***do** change everything commented with `change this`
***do** change everything that is not commented out
* do **not** change the lines commented with `do not change`
* change commented out settings if they are wrong
***do** change the random keys `SECRET_KEY` and `SECURITY_KEY` to something random (although the generated config already uses random values generated with `os.urandom`)
* deactivate unwanted features with `SOMETHING_ACTIVE = False`
* deactivate unwanted features with `SOMETHING_ACTIVE = False`
* if you want to use a feature, set the connection configuration lines accordingly
* define a list of authentication backends (usually one):
* define a list of authentication backends (usually one):
- use LdapManager for slapd
- use LdapManager for slapd
- use ADManager for Samba
- use ADManager for Samba
- write your own for anything else (see `auth.py`, just the methods `authenticate` and `groups` are required)
- write your own for anything else (see `common/auth.py`, the methods `authenticate`, `groups` and `all_groups` are required)
* define the available printers (if wanted) with a list of options they should use (see lpoptions)
**MAIL* requires an SMTP(S) server, optionally with STARTTLS or TLS
* if you do not know what a MediaWiki-domain is, you probably don't need it
**PRINTING* requires a CUPS printserver
**ETHERPAD* requires an etherpad installation
**WIKI* requires a MediaWiki or DokuWiki installation
**CALENDAR* requires a CalDAV server
* fix the path to the fonts (and select which to use)
* fix the path to the fonts (and select which to use)
* most points should be documented in the example config
5. create the database schema with `flask db upgrade`
5. create the database schema with `./server.py db upgrade`
6. configure your server to run the wsgi-application and the celery-server
6. configure your server to run the wsgi-application and the celery-server
* if you use systemd, example service files are located in `example-config/` in this repository
* if you use systemd, example service files are located in `example-config/` in this repository
7. configure your webserver to serve the wsgi-application
7. configure your webserver to serve the wsgi-application