diff --git a/ADVANCED.rst b/ADVANCED.rst index e94bae53a..c1c7f7289 100644 --- a/ADVANCED.rst +++ b/ADVANCED.rst @@ -4,10 +4,10 @@ Advanced configuration Docker Swarm Mode ----------------- -OpenSlides may also be deployed in Swarm mode. Distributing instances over +OpenSlides may also be deployed in Swarm mode. Distributing instances over multiple nodes may increase performance and offer failure resistance. -An example configuration file, ``docker-stack.yml.m4``, is provided. Unlike +An example configuration file, ``docker-stack.yml.m4``, is provided. Unlike the Docker Compose setup, this configuration will most likely need to be customized, especially its placement constraints and database-related preferences. @@ -37,14 +37,14 @@ please familiarize yourself with `repmgr `_. Backups ------- -All important data is stored in the database. Additionally, the project +All important data is stored in the database. Additionally, the project directory should be included in backups to ensure a smooth recovery. The primary database usually runs in the ``pgnode1`` service (but see `Database Configuration`_ above). In some cases, it may be sufficient to generate SQL dumps with ``pg_dump`` -through ``docker exec`` to create backups. However, for proper incremental +through ``docker exec`` to create backups. However, for proper incremental backups, the host system can backup the cluster's data directory and WAL archives. diff --git a/DEVELOPMENT.rst b/DEVELOPMENT.rst index 547cafe40..a3a939623 100644 --- a/DEVELOPMENT.rst +++ b/DEVELOPMENT.rst @@ -3,21 +3,21 @@ ======================== Check requirements -''''''''''''''''''''' +'''''''''''''''''' - ``docker`` - ``docker-compose`` - ``git`` - ``make`` -**Note about migrating from development -setups before version 3.4**: You must set the ``OPENSLIDES_USER_DATA_DIR`` variable in -your ``server/personal_data/var/settings.py`` to ``'/app/personal_data/var'``. Another -way is to just delete this file. It is recreated with the right paths afterwards. +**Note about migrating from development setups before version 3.4**: You must set the +``OPENSLIDES_USER_DATA_DIR`` variable in your ``server/personal_data/var/settings.py`` +to ``'/app/personal_data/var'``. Another way is to just delete this file. It is +recreated with the right paths afterwards. Get OpenSlides source code -''''''''''''''''''''''''''''' +'''''''''''''''''''''''''' Clone current master version from `OpenSlides GitHub repository `_:: @@ -30,7 +30,8 @@ When updating the repository, submodules must be updated explicitly, too:: git submodule update Start the development setup -'''''''''''''''''''''''''''''' +''''''''''''''''''''''''''' + Use `make` to start the setup:: make run-dev @@ -41,11 +42,14 @@ To stop the setup press Ctrl+C. To clean up the docker containers run:: make stop-dev Running the test cases -''''''''''''''''''''''' +'''''''''''''''''''''' + For all services in submodules check out the documentation there. + Server tests and scripts -------------------------- +------------------------ + You need to have python (>=3.8) and python-venv installed. Change your workdirectory to the server:: cd server @@ -69,7 +73,8 @@ To deactivate it type ``deactivate``. Running all tests and linters:: pytest tests/ Client tests -------------- +------------ + You need `node` and `npm` installed. Change to the client's directory. For the first time, install all dependencies:: cd client/ diff --git a/LICENSE b/LICENSE index 8213f33c7..75c547bde 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2011-2019 Authors of OpenSlides, see AUTHORS +Copyright (c) 2011-2021 Authors of OpenSlides, see AUTHORS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.rst b/README.rst index 6c56ca192..3aac2f9e4 100644 --- a/README.rst +++ b/README.rst @@ -9,19 +9,22 @@ OpenSlides is a free, web-based presentation and assembly system for managing and projecting agenda, motions, and elections of assemblies. See https://openslides.com for more information. + Installation ============ -The main deployment method is using Docker and Docker Compose. You only need to -have these tools installed and no further dependencies. If you want a simpler +The main deployment method is using Git, Docker and Docker Compose. You only need +to have these tools installed and no further dependencies. If you want a simpler setup or are interested in developing, please refer to `development -instructions -`_. +instructions `_. + +Get OpenSlides +-------------- First, you have to clone this repository:: git clone https://github.com/OpenSlides/OpenSlides.git --recurse-submodules - cd OpenSlides/docker/ + cd OpenSlides/ **Note about migrating from version 3.3 or earlier**: With OpenSlides 3.4 submodules and a Docker setup were introduced. If you ran into problems try to delete your @@ -30,8 +33,17 @@ first and initialize all submodules:: git submodule update --init -You need to build the Docker images for the client and server with this -script:: +Setup Docker images +------------------- + +You need to build the Docker images for the client and server and have to setup some +configuration. + +First go to ``docker`` subdirectory:: + + cd docker + +Then build all images with this script:: ./build.sh all @@ -41,50 +53,56 @@ You must define a Django secret key in ``secrets/django.env``, for example:: "$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64)" > secrets/django.env We also strongly recommend that you set a secure admin password but it is not -strictly required. If you do not set an admin password, the default login -credentials will be displayed on the login page. Setting the admin password:: +strictly required. If you do not set an admin password, the default login +credentials will be displayed on the login page. Setting the admin password:: cp secrets/adminsecret.env.example secrets/adminsecret.env vi secrets/adminsecret.env Afterwards, generate the configuration file:: - EXTERNAL_HTTP_PORT=8000 m4 docker-compose.yml.m4 > docker-compose.yml + m4 docker-compose.yml.m4 > docker-compose.yml Finally, you can start the instance using ``docker-compose``:: docker-compose up - # or: + +OpenSlides runs on https://localhost:8000/. + +Use can also use daemonized instance:: + docker-compose up -d docker-compose logs - # ... docker-compose down + More settings ------------- When generating the ``docker-compose.yml``, more settings can be adjusted in the ``docker/.env`` file. All changes for the backend are passed into djangos ``settings.py``. -You can find more information about most settings `here -`_. To generate -the ``docker-compose.yml`` use this command:: +You can find more information about most settings in the `settings documentation +`_. To generate the ``docker-compose.yml`` use this command:: - ( set -a; source .env; m4 docker-stack.yml.m4 ) > docker-stack.yml + cd docker + ( set -a; source .env; m4 docker-compose.yml.m4 ) > docker-compose.yml For an advanced database setup refer to the `advanced configuration `_. + Bugs, features and development ================================ Feel free to open issues here on GitHub! Please use the right templates for -bugs and features, and use them correctly. Pull requests are also welcome; for +bugs and features, and use them correctly. Pull requests are also welcome. For a general overview of the development setup refer the `development instructions `_. For security relevant issues **do not** create public issues and refer to our `security policy `_. + Used software ============= @@ -95,6 +113,7 @@ OpenSlides uses the following projects or parts of them: * several JavaScript packages (see ``client/package.json``) + License and authors =================== diff --git a/docker/.env b/docker/.env index f56a7978e..ef96ea053 100644 --- a/docker/.env +++ b/docker/.env @@ -63,6 +63,7 @@ POSTFIX_RELAYHOST= ENABLE_SAML= ENABLE_ELECTRONIC_VOTING= DEMO_USERS= + # Connections AUTOUPDATE_DELAY= CONNECTION_POOL_LIMIT= @@ -87,6 +88,7 @@ REDIS_PORT= REDIS_SLAVE_HOST= REDIS_SLAVE_PORT= REDIS_SLAVE_WAIT_TIMEOUT= + # Logging DJANGO_LOG_LEVEL= OPENSLIDES_LOG_LEVEL=