Moved production setup to manage service.
This commit is contained in:
parent
6192e2347c
commit
de2d5eb030
@ -45,7 +45,7 @@ Setup initial-data:
|
|||||||
|
|
||||||
$ ./manage initial-data
|
$ ./manage initial-data
|
||||||
|
|
||||||
Now you can open http://localhost:8000 and use OpenSlides.
|
Now you can open https://localhost:8000 and use OpenSlides. # TODO: Enable HTTPS support
|
||||||
|
|
||||||
To stop OpenSlides run:
|
To stop OpenSlides run:
|
||||||
|
|
||||||
|
@ -1,270 +0,0 @@
|
|||||||
dnl This is a YAML template file. Simply translate it with m4 to create
|
|
||||||
dnl a standard configuration. Customizations can and should be added in .env
|
|
||||||
dnl by setting the appropriate variables.
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl m4 docker-compose.yml.m4 > docker-compose.yml
|
|
||||||
dnl ( set -a; source .env; m4 docker-compose.yml.m4 ) > docker-compose.yml
|
|
||||||
dnl
|
|
||||||
dnl ----------------------------------------
|
|
||||||
divert(-1)dnl
|
|
||||||
define(`read_env', `esyscmd(`printf "%s" "$$1"')')
|
|
||||||
define(`ifenvelse', `ifelse(read_env(`$1'),, `$2', read_env(`$1'))')
|
|
||||||
|
|
||||||
define(`BACKEND_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_BACKEND_NAME', openslides-backend):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_BACKEND_TAG', latest-4))
|
|
||||||
define(`PROXY_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PROXY_NAME', openslides-proxy):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PROXY_TAG', latest-4))
|
|
||||||
define(`CLIENT_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_CLIENT_NAME', openslides-client):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_CLIENT_TAG', latest-4))
|
|
||||||
define(`AUTH_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTH_NAME', openslides-auth):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTH_TAG', latest-4))
|
|
||||||
define(`AUTOUPDATE_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTOUPDATE_NAME', openslides-autoupdate):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTOUPDATE_TAG', latest-4))
|
|
||||||
define(`ICC_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_ICC_NAME', openslides-icc):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_ICC_TAG', latest-4))
|
|
||||||
define(`DATASTORE_READER_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_READER_NAME', openslides-datastore-reader):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_READER_TAG', latest-4))
|
|
||||||
define(`DATASTORE_WRITER_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_WRITER_NAME', openslides-datastore-writer):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_WRITER_TAG', latest-4))
|
|
||||||
define(`MEDIA_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MEDIA_NAME', openslides-media):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MEDIA_TAG', latest-4))
|
|
||||||
define(`MANAGE_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MANAGE_NAME', openslides-manage):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MANAGE_TAG', latest-4))
|
|
||||||
define(`PERMISSION_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PERMISSION_NAME', openslides-permission):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PERMISSION_TAG', latest-4))
|
|
||||||
|
|
||||||
define(`PROJECT_DIR', ifdef(`PROJECT_DIR',PROJECT_DIR,.))
|
|
||||||
define(`ADMIN_SECRET_AVAILABLE', `syscmd(`test -f 'PROJECT_DIR`/secrets/admin.env')sysval')
|
|
||||||
divert(0)dnl
|
|
||||||
dnl ----------------------------------------
|
|
||||||
# This configuration was created from a template file. Before making changes,
|
|
||||||
# please make sure that you do not have a process in place that would override
|
|
||||||
# your changes in the future. The accompanying .env file might be the correct
|
|
||||||
# place for customizations instead.
|
|
||||||
version: '3.4'
|
|
||||||
|
|
||||||
services:
|
|
||||||
proxy:
|
|
||||||
image: PROXY_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- client
|
|
||||||
- backend
|
|
||||||
- autoupdate
|
|
||||||
- auth
|
|
||||||
- media
|
|
||||||
networks:
|
|
||||||
- uplink
|
|
||||||
- frontend
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:ifenvelse(`EXTERNAL_HTTP_PORT', 8000):8000"
|
|
||||||
|
|
||||||
client:
|
|
||||||
image: CLIENT_IMAGE
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
depends_on:
|
|
||||||
- backend
|
|
||||||
- autoupdate
|
|
||||||
|
|
||||||
backend:
|
|
||||||
image: BACKEND_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- datastore-reader
|
|
||||||
- datastore-writer
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
datastore-reader:
|
|
||||||
image: DATASTORE_READER_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
env_file: services.env
|
|
||||||
environment:
|
|
||||||
- NUM_WORKERS=8
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- datastore-reader
|
|
||||||
- postgres
|
|
||||||
|
|
||||||
datastore-writer:
|
|
||||||
image: DATASTORE_WRITER_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- message-bus
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- postgres
|
|
||||||
- message-bus
|
|
||||||
environment:
|
|
||||||
- COMMAND=create_initial_data
|
|
||||||
- DATASTORE_INITIAL_DATA_FILE=/data/initial-data.json
|
|
||||||
volumes:
|
|
||||||
- ./initial-data.json:/data/initial-data.json
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
image: postgres:11
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=openslides
|
|
||||||
- POSTGRES_PASSWORD=openslides
|
|
||||||
- POSTGRES_DB=openslides
|
|
||||||
networks:
|
|
||||||
- postgres
|
|
||||||
|
|
||||||
autoupdate:
|
|
||||||
image: AUTOUPDATE_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- datastore-reader
|
|
||||||
- message-bus
|
|
||||||
- auth
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- message-bus
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
icc:
|
|
||||||
image: ICC_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- datastore-reader
|
|
||||||
- message-bus
|
|
||||||
- auth
|
|
||||||
enc_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- message-bus
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
auth:
|
|
||||||
image: AUTH_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- datastore-reader
|
|
||||||
- message-bus
|
|
||||||
- cache
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- datastore-reader
|
|
||||||
- frontend
|
|
||||||
- message-bus
|
|
||||||
- auth
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
cache:
|
|
||||||
image: redis:latest
|
|
||||||
networks:
|
|
||||||
- auth
|
|
||||||
|
|
||||||
message-bus:
|
|
||||||
image: redis:latest
|
|
||||||
networks:
|
|
||||||
- message-bus
|
|
||||||
|
|
||||||
media:
|
|
||||||
image: MEDIA_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- backend
|
|
||||||
- postgres
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- postgres
|
|
||||||
|
|
||||||
manage:
|
|
||||||
image: MANAGE_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- auth
|
|
||||||
- datastore-writer
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
|
|
||||||
# TODO: Remove depenencies to auth and datastore in "depends_on" and "networks"
|
|
||||||
# Should be doable when the manage service is fixed
|
|
||||||
manage-setup:
|
|
||||||
image: MANAGE_IMAGE
|
|
||||||
entrypoint: /root/entrypoint-setup
|
|
||||||
depends_on:
|
|
||||||
- manage
|
|
||||||
- auth
|
|
||||||
- datastore-writer
|
|
||||||
- datastore-reader
|
|
||||||
env_file: services.env
|
|
||||||
environment:
|
|
||||||
ENABLE_ELECTRONIC_VOTING: "ifenvelse(`ENABLE_ELECTRONIC_VOTING',)"
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
ifelse(ADMIN_SECRET_AVAILABLE, 0,secrets:
|
|
||||||
- admin)
|
|
||||||
|
|
||||||
permission:
|
|
||||||
image: PERMISSION_IMAGE
|
|
||||||
depends_on:
|
|
||||||
- datastore-reader
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
|
|
||||||
# Setup: host <-uplink-> proxy <-frontend-> services that are reachable from the client <-backend-> services that are internal-only
|
|
||||||
# There are special networks for some services only, e.g. postgres only for the postgresql, datastore reader and datastore writer
|
|
||||||
networks:
|
|
||||||
uplink:
|
|
||||||
frontend:
|
|
||||||
internal: true
|
|
||||||
backend:
|
|
||||||
internal: true
|
|
||||||
postgres:
|
|
||||||
internal: true
|
|
||||||
datastore-reader:
|
|
||||||
internal: true
|
|
||||||
message-bus:
|
|
||||||
internal: true
|
|
||||||
auth:
|
|
||||||
internal: true
|
|
||||||
|
|
||||||
secrets:
|
|
||||||
auth_token_key:
|
|
||||||
file: ./secrets/auth_token_key
|
|
||||||
auth_cookie_key:
|
|
||||||
file: ./secrets/auth_cookie_key
|
|
||||||
ifelse(ADMIN_SECRET_AVAILABLE, 0,admin:
|
|
||||||
file: ./secrets/admin.env)
|
|
@ -1,308 +0,0 @@
|
|||||||
dnl This is a YAML template file. Simply translate it with m4 to create
|
|
||||||
dnl a standard configuration. Customizations can and should be added in .env
|
|
||||||
dnl by setting the appropriate variables.
|
|
||||||
dnl
|
|
||||||
dnl Usage:
|
|
||||||
dnl m4 docker-stack.yml.m4 > docker-stack.yml
|
|
||||||
dnl ( set -a; source .env; m4 docker-stack.yml.m4 ) > docker-stack.yml
|
|
||||||
dnl
|
|
||||||
dnl ----------------------------------------
|
|
||||||
divert(-1)dnl
|
|
||||||
define(`read_env', `esyscmd(`printf "%s" "$$1"')')
|
|
||||||
define(`ifenvelse', `ifelse(read_env(`$1'),, `$2', read_env(`$1'))')
|
|
||||||
|
|
||||||
define(`BACKEND_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_BACKEND_NAME', openslides-backend):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_BACKEND_TAG', latest-4))
|
|
||||||
define(`PROXY_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PROXY_NAME', openslides-proxy):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PROXY_TAG', latest-4))
|
|
||||||
define(`CLIENT_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_CLIENT_NAME', openslides-client):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_CLIENT_TAG', latest-4))
|
|
||||||
define(`AUTH_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTH_NAME', openslides-auth):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTH_TAG', latest-4))
|
|
||||||
define(`AUTOUPDATE_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTOUPDATE_NAME', openslides-autoupdate):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_AUTOUPDATE_TAG', latest-4))
|
|
||||||
define(`ICC_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_ICC_NAME', openslides-icc):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_ICC_TAG', latest-4))
|
|
||||||
define(`DATASTORE_READER_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_READER_NAME', openslides-datastore-reader):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_READER_TAG', latest-4))
|
|
||||||
define(`DATASTORE_WRITER_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_WRITER_NAME', openslides-datastore-writer):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_DATASTORE_WRITER_TAG', latest-4))
|
|
||||||
define(`MEDIA_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MEDIA_NAME', openslides-media):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MEDIA_TAG', latest-4))
|
|
||||||
define(`MANAGE_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MANAGE_NAME', openslides-manage):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_MANAGE_TAG', latest-4))
|
|
||||||
define(`PERMISSION_IMAGE',
|
|
||||||
ifenvelse(`DEFAULT_DOCKER_REGISTRY', openslides)/dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PERMISSION_NAME', openslides-permission):dnl
|
|
||||||
ifenvelse(`DOCKER_OPENSLIDES_PERMISSION_TAG', latest-4))
|
|
||||||
|
|
||||||
define(`PROJECT_DIR', ifdef(`PROJECT_DIR',PROJECT_DIR,.))
|
|
||||||
define(`ADMIN_SECRET_AVAILABLE', `syscmd(`test -f 'PROJECT_DIR`/secrets/admin.env')sysval')
|
|
||||||
divert(0)dnl
|
|
||||||
dnl ----------------------------------------
|
|
||||||
# This configuration was created from a template file. Before making changes,
|
|
||||||
# please make sure that you do not have a process in place that would override
|
|
||||||
# your changes in the future. The accompanying .env file might be the correct
|
|
||||||
# place for customizations instead.
|
|
||||||
version: '3.4'
|
|
||||||
|
|
||||||
services:
|
|
||||||
proxy:
|
|
||||||
image: PROXY_IMAGE
|
|
||||||
networks:
|
|
||||||
- uplink
|
|
||||||
- frontend
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:ifenvelse(`EXTERNAL_HTTP_PORT', 8000):8000"
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_PROXY_REPLICAS', 1)
|
|
||||||
|
|
||||||
client:
|
|
||||||
image: CLIENT_IMAGE
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_CLIENT_REPLICAS', 1)
|
|
||||||
|
|
||||||
backend:
|
|
||||||
image: BACKEND_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_BACKEND_REPLICAS', 1)
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
datastore-reader:
|
|
||||||
image: DATASTORE_READER_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
environment:
|
|
||||||
- NUM_WORKERS=8
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- datastore-reader
|
|
||||||
- postgres
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_DATASTORE_READER_REPLICAS', 1)
|
|
||||||
|
|
||||||
datastore-writer:
|
|
||||||
image: DATASTORE_WRITER_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- postgres
|
|
||||||
- message-bus
|
|
||||||
environment:
|
|
||||||
- COMMAND=create_initial_data
|
|
||||||
- DATASTORE_INITIAL_DATA_FILE=/data/initial-data.json
|
|
||||||
volumes:
|
|
||||||
- ./initial-data.json:/data/initial-data.json
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
image: postgres:11
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=openslides
|
|
||||||
- POSTGRES_PASSWORD=openslides
|
|
||||||
- POSTGRES_DB=openslides
|
|
||||||
networks:
|
|
||||||
- postgres
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
autoupdate:
|
|
||||||
image: AUTOUPDATE_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- message-bus
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_AUTOUPDATE_REPLICAS', 1)
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
icc:
|
|
||||||
image: ICC_IMAGE
|
|
||||||
enc_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- message-bus
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_ICC_REPLICAS', 1)
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
|
|
||||||
auth:
|
|
||||||
image: AUTH_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- datastore-reader
|
|
||||||
- frontend
|
|
||||||
- message-bus
|
|
||||||
- auth
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_AUTH_REPLICAS', 1)
|
|
||||||
secrets:
|
|
||||||
- auth_token_key
|
|
||||||
- auth_cookie_key
|
|
||||||
|
|
||||||
cache:
|
|
||||||
image: redis:latest
|
|
||||||
networks:
|
|
||||||
- auth
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
message-bus:
|
|
||||||
image: redis:latest
|
|
||||||
networks:
|
|
||||||
- message-bus
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
media:
|
|
||||||
image: MEDIA_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- frontend
|
|
||||||
- backend
|
|
||||||
- postgres
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_MEDIA_REPLICAS', 1)
|
|
||||||
|
|
||||||
manage:
|
|
||||||
image: MANAGE_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
# TODO: Remove depenency to auth in "networks"
|
|
||||||
# Should be doable when the manage service is fixed
|
|
||||||
manage-setup:
|
|
||||||
image: MANAGE_IMAGE
|
|
||||||
entrypoint: /root/entrypoint-setup
|
|
||||||
env_file: services.env
|
|
||||||
environment:
|
|
||||||
ENABLE_ELECTRONIC_VOTING: "ifenvelse(`ENABLE_ELECTRONIC_VOTING',)"
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
ifelse(ADMIN_SECRET_AVAILABLE, 0,secrets:
|
|
||||||
- admin)
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
|
|
||||||
permission:
|
|
||||||
image: PERMISSION_IMAGE
|
|
||||||
env_file: services.env
|
|
||||||
networks:
|
|
||||||
- backend
|
|
||||||
- auth
|
|
||||||
deploy:
|
|
||||||
restart_policy:
|
|
||||||
condition: on-failure
|
|
||||||
delay: 5s
|
|
||||||
replicas: ifenvelse(`OPENSLIDES_PERMISSION_REPLICAS', 1)
|
|
||||||
|
|
||||||
networks:
|
|
||||||
uplink:
|
|
||||||
frontend:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
backend:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
postgres:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
datastore-reader:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
message-bus:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
auth:
|
|
||||||
driver_opts:
|
|
||||||
encrypted: ""
|
|
||||||
internal: true
|
|
||||||
|
|
||||||
secrets:
|
|
||||||
auth_token_key:
|
|
||||||
file: ./secrets/auth_token_key
|
|
||||||
auth_cookie_key:
|
|
||||||
file: ./secrets/auth_cookie_key
|
|
||||||
ifelse(ADMIN_SECRET_AVAILABLE, 0,admin:
|
|
||||||
file: ./secrets/admin.env)
|
|
@ -1,32 +1,34 @@
|
|||||||
{
|
{
|
||||||
"_migration_index": -1,
|
"_migration_index": -1,
|
||||||
"organization": [
|
"organization": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "OpenSlides",
|
"name": "[Your organization]",
|
||||||
"description": "The digital motion and assembly system",
|
"description": "",
|
||||||
"legal_notice": "<a href=\"http://www.openslides.org\">OpenSlides</a> is a free web based presentation and assembly system for visualizing and controlling agenda, motions and elections of an assembly.",
|
"legal_notice": "<a href=\"http://www.openslides.org\">OpenSlides</a> is a free web based presentation and assembly system for visualizing and controlling agenda, motions and elections of an assembly. The event organizer is resposible for the content.",
|
||||||
"privacy_policy": "",
|
"privacy_policy": "",
|
||||||
"login_text": "Welcome to OpenSlides. Please login.",
|
"login_text": "Welcome to OpenSlides. Please login.",
|
||||||
"theme": "openslides-theme",
|
"theme": "openslides-default-light-theme",
|
||||||
"reset_password_verbose_errors": false,
|
"reset_password_verbose_errors": false,
|
||||||
"enable_electronic_voting": false,
|
"enable_electronic_voting": false,
|
||||||
|
"committee_ids": [
|
||||||
"committee_ids": [1],
|
1
|
||||||
|
],
|
||||||
"resource_ids": [],
|
"resource_ids": [],
|
||||||
"organization_tag_ids": []
|
"organization_tag_ids": []
|
||||||
}],
|
}
|
||||||
"user": [
|
],
|
||||||
|
"user": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"username": "admin",
|
"username": "superadmin",
|
||||||
"title": "",
|
"title": "",
|
||||||
"first_name": "",
|
"first_name": "",
|
||||||
"last_name": "Administrator",
|
"last_name": "Administrator",
|
||||||
"is_active": true,
|
"is_active": true,
|
||||||
"is_physical_person": true,
|
"is_physical_person": true,
|
||||||
"password": "1422e767c5e08bb7196844025a0f98e1x61Ey612Kl2gpFL56FT9weDnpSo4AV8j8+qx2AuTHdRyY036xxzTTrw10Wq3+4qQyB+XURPWx1ONxp3Y3pB37A==",
|
"password": "",
|
||||||
"default_password": "admin",
|
"default_password": "",
|
||||||
"can_change_own_password": true,
|
"can_change_own_password": true,
|
||||||
"gender": null,
|
"gender": null,
|
||||||
"email": "",
|
"email": "",
|
||||||
@ -35,22 +37,16 @@
|
|||||||
"default_vote_weight": "1.000000",
|
"default_vote_weight": "1.000000",
|
||||||
"last_email_send": null,
|
"last_email_send": null,
|
||||||
"is_demo_user": false,
|
"is_demo_user": false,
|
||||||
|
|
||||||
"organization_management_level": "superadmin",
|
"organization_management_level": "superadmin",
|
||||||
|
|
||||||
"is_present_in_meeting_ids": [],
|
"is_present_in_meeting_ids": [],
|
||||||
"committee_ids": [1],
|
"committee_ids": [],
|
||||||
"committee_$_management_level": ["1"],
|
"committee_$_management_level": [],
|
||||||
"committee_$1_management_level": "can_manage",
|
|
||||||
|
|
||||||
"comment_$": [],
|
"comment_$": [],
|
||||||
"number_$": [],
|
"number_$": [],
|
||||||
"structure_level_$": [],
|
"structure_level_$": [],
|
||||||
"about_me_$": [],
|
"about_me_$": [],
|
||||||
"vote_weight_$": [],
|
"vote_weight_$": [],
|
||||||
|
"group_$_ids": [],
|
||||||
"group_$_ids": ["1"],
|
|
||||||
"group_$1_ids": [2],
|
|
||||||
"speaker_$_ids": [],
|
"speaker_$_ids": [],
|
||||||
"personal_note_$_ids": [],
|
"personal_note_$_ids": [],
|
||||||
"supported_motion_$_ids": [],
|
"supported_motion_$_ids": [],
|
||||||
@ -63,49 +59,47 @@
|
|||||||
"projection_$_ids": [],
|
"projection_$_ids": [],
|
||||||
"vote_delegated_$_to_id": [],
|
"vote_delegated_$_to_id": [],
|
||||||
"vote_delegations_$_from_ids": [],
|
"vote_delegations_$_from_ids": [],
|
||||||
|
"meeting_ids": []
|
||||||
"meeting_ids": [1]
|
}
|
||||||
}],
|
],
|
||||||
"resource": [],
|
"resource": [],
|
||||||
"organization_tag": [],
|
"organization_tag": [],
|
||||||
"committee": [
|
"committee": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Default committee",
|
"name": "Default committee",
|
||||||
"description": "Add description here",
|
"description": "",
|
||||||
|
"meeting_ids": [
|
||||||
"meeting_ids": [1],
|
1
|
||||||
|
],
|
||||||
"template_meeting_id": null,
|
"template_meeting_id": null,
|
||||||
"default_meeting_id": 1,
|
"default_meeting_id": 1,
|
||||||
"user_ids": [1],
|
"user_ids": [],
|
||||||
"forward_to_committee_ids": [],
|
"forward_to_committee_ids": [],
|
||||||
"receive_forwardings_from_committee_ids": [],
|
"receive_forwardings_from_committee_ids": [],
|
||||||
"organization_tag_ids": [],
|
"organization_tag_ids": [],
|
||||||
"organization_id": 1
|
"organization_id": 1
|
||||||
}],
|
}
|
||||||
"meeting": [
|
],
|
||||||
|
"meeting": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"welcome_title": "Welcome to OpenSlides",
|
"welcome_title": "Welcome to OpenSlides",
|
||||||
"welcome_text": "[Space for your welcome text.]",
|
"welcome_text": "[Space for your welcome text]",
|
||||||
|
"name": "Default meeting",
|
||||||
"name": "OpenSlides - Die Veranstaltung (Teil II)",
|
"description": "",
|
||||||
"description": "Presentation and assembly system",
|
|
||||||
"location": "",
|
"location": "",
|
||||||
"start_time": 0,
|
"start_time": 0,
|
||||||
"end_time": 0,
|
"end_time": 0,
|
||||||
"imported_at": null,
|
"imported_at": null,
|
||||||
|
|
||||||
"jitsi_domain": "",
|
"jitsi_domain": "",
|
||||||
"jitsi_room_name": "",
|
"jitsi_room_name": "",
|
||||||
"jitsi_room_password": "",
|
"jitsi_room_password": "",
|
||||||
"enable_chat": false,
|
"enable_chat": false,
|
||||||
|
"url_name": "",
|
||||||
"url_name": "openslides_1",
|
|
||||||
"template_for_committee_id": null,
|
"template_for_committee_id": null,
|
||||||
"enable_anonymous": false,
|
"enable_anonymous": false,
|
||||||
"custom_translations": {},
|
"custom_translations": {},
|
||||||
|
|
||||||
"conference_show": false,
|
"conference_show": false,
|
||||||
"conference_auto_connect": false,
|
"conference_auto_connect": false,
|
||||||
"conference_los_restriction": false,
|
"conference_los_restriction": false,
|
||||||
@ -122,16 +116,13 @@
|
|||||||
"applause_max_amount": 0,
|
"applause_max_amount": 0,
|
||||||
"applause_timeout": 5,
|
"applause_timeout": 5,
|
||||||
"applause_particle_image_url": "",
|
"applause_particle_image_url": "",
|
||||||
|
|
||||||
"projector_countdown_default_time": 60,
|
"projector_countdown_default_time": 60,
|
||||||
"projector_countdown_warning_time": 0,
|
"projector_countdown_warning_time": 0,
|
||||||
|
|
||||||
"export_csv_encoding": "utf-8",
|
"export_csv_encoding": "utf-8",
|
||||||
"export_csv_separator": ",",
|
"export_csv_separator": ",",
|
||||||
"export_pdf_pagenumber_alignment": "center",
|
"export_pdf_pagenumber_alignment": "center",
|
||||||
"export_pdf_fontsize": 10,
|
"export_pdf_fontsize": 10,
|
||||||
"export_pdf_pagesize": "A4",
|
"export_pdf_pagesize": "A4",
|
||||||
|
|
||||||
"agenda_show_subtitles": false,
|
"agenda_show_subtitles": false,
|
||||||
"agenda_enable_numbering": true,
|
"agenda_enable_numbering": true,
|
||||||
"agenda_number_prefix": "",
|
"agenda_number_prefix": "",
|
||||||
@ -139,7 +130,6 @@
|
|||||||
"agenda_item_creation": "default_yes",
|
"agenda_item_creation": "default_yes",
|
||||||
"agenda_new_items_default_visibility": "internal",
|
"agenda_new_items_default_visibility": "internal",
|
||||||
"agenda_show_internal_items_on_projector": false,
|
"agenda_show_internal_items_on_projector": false,
|
||||||
|
|
||||||
"list_of_speakers_amount_last_on_projector": 1,
|
"list_of_speakers_amount_last_on_projector": 1,
|
||||||
"list_of_speakers_amount_next_on_projector": -1,
|
"list_of_speakers_amount_next_on_projector": -1,
|
||||||
"list_of_speakers_couple_countdown": true,
|
"list_of_speakers_couple_countdown": true,
|
||||||
@ -151,7 +141,6 @@
|
|||||||
"list_of_speakers_can_set_contribution_self": false,
|
"list_of_speakers_can_set_contribution_self": false,
|
||||||
"list_of_speakers_speaker_note_for_everyone": false,
|
"list_of_speakers_speaker_note_for_everyone": false,
|
||||||
"list_of_speakers_initially_closed": false,
|
"list_of_speakers_initially_closed": false,
|
||||||
|
|
||||||
"motions_default_workflow_id": 1,
|
"motions_default_workflow_id": 1,
|
||||||
"motions_default_amendment_workflow_id": 1,
|
"motions_default_amendment_workflow_id": 1,
|
||||||
"motions_default_statute_amendment_workflow_id": 1,
|
"motions_default_statute_amendment_workflow_id": 1,
|
||||||
@ -184,20 +173,20 @@
|
|||||||
"motions_export_preamble": "",
|
"motions_export_preamble": "",
|
||||||
"motions_export_submitter_recommendation": false,
|
"motions_export_submitter_recommendation": false,
|
||||||
"motions_export_follow_recommendation": false,
|
"motions_export_follow_recommendation": false,
|
||||||
|
|
||||||
"motion_poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
"motion_poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
||||||
"motion_poll_ballot_paper_number": 8,
|
"motion_poll_ballot_paper_number": 8,
|
||||||
"motion_poll_default_type": "analog",
|
"motion_poll_default_type": "analog",
|
||||||
"motion_poll_default_100_percent_base": "YNA",
|
"motion_poll_default_100_percent_base": "YNA",
|
||||||
"motion_poll_default_group_ids": [5],
|
"motion_poll_default_group_ids": [
|
||||||
|
3
|
||||||
|
],
|
||||||
"users_sort_by": "first_name",
|
"users_sort_by": "first_name",
|
||||||
"users_enable_presence_view": true,
|
"users_enable_presence_view": true,
|
||||||
"users_enable_vote_weight": true,
|
"users_enable_vote_weight": true,
|
||||||
"users_allow_self_set_present": true,
|
"users_allow_self_set_present": true,
|
||||||
"users_pdf_welcometitle": "Welcome to OpenSlides",
|
"users_pdf_welcometitle": "Welcome to OpenSlides",
|
||||||
"users_pdf_welcometext": "[Place for your welcome and help text.]",
|
"users_pdf_welcometext": "[Place for your welcome and help text]",
|
||||||
"users_pdf_url": "http://example.com:8000",
|
"users_pdf_url": "https://example.com",
|
||||||
"users_pdf_wlan_ssid": "",
|
"users_pdf_wlan_ssid": "",
|
||||||
"users_pdf_wlan_password": "",
|
"users_pdf_wlan_password": "",
|
||||||
"users_pdf_wlan_encryption": "",
|
"users_pdf_wlan_encryption": "",
|
||||||
@ -205,7 +194,6 @@
|
|||||||
"users_email_replyto": "",
|
"users_email_replyto": "",
|
||||||
"users_email_subject": "Your login for {event_name}",
|
"users_email_subject": "Your login for {event_name}",
|
||||||
"users_email_body": "Dear {name},\n\nthis is your OpenSlides login for the event {event_name}:\n\n {url}\n username: {username}\n password: {password}\n\nThis email was generated automatically.",
|
"users_email_body": "Dear {name},\n\nthis is your OpenSlides login for the event {event_name}:\n\n {url}\n username: {username}\n password: {password}\n\nThis email was generated automatically.",
|
||||||
|
|
||||||
"assignment_poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
"assignment_poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
||||||
"assignment_poll_ballot_paper_number": 8,
|
"assignment_poll_ballot_paper_number": 8,
|
||||||
"assignments_export_title": "Elections",
|
"assignments_export_title": "Elections",
|
||||||
@ -215,38 +203,57 @@
|
|||||||
"assignment_poll_default_type": "nominal",
|
"assignment_poll_default_type": "nominal",
|
||||||
"assignment_poll_default_method": "votes",
|
"assignment_poll_default_method": "votes",
|
||||||
"assignment_poll_default_100_percent_base": "valid",
|
"assignment_poll_default_100_percent_base": "valid",
|
||||||
"assignment_poll_default_group_ids": [5],
|
"assignment_poll_default_group_ids": [
|
||||||
|
3
|
||||||
|
],
|
||||||
"poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
"poll_ballot_paper_selection": "CUSTOM_NUMBER",
|
||||||
"poll_ballot_paper_number": 8,
|
"poll_ballot_paper_number": 8,
|
||||||
"poll_sort_poll_result_by_votes": true,
|
"poll_sort_poll_result_by_votes": true,
|
||||||
"poll_default_type": "nominal",
|
"poll_default_type": "nominal",
|
||||||
"poll_default_method": "votes",
|
"poll_default_method": "votes",
|
||||||
"poll_default_100_percent_base": "valid",
|
"poll_default_100_percent_base": "valid",
|
||||||
"poll_default_group_ids": [5],
|
"poll_default_group_ids": [
|
||||||
|
3
|
||||||
|
],
|
||||||
"poll_couple_countdown": true,
|
"poll_couple_countdown": true,
|
||||||
|
"projector_ids": [
|
||||||
"projector_ids": [1],
|
1
|
||||||
|
],
|
||||||
"all_projection_ids": [],
|
"all_projection_ids": [],
|
||||||
"projector_message_ids": [],
|
"projector_message_ids": [],
|
||||||
"projector_countdown_ids": [1, 2],
|
"projector_countdown_ids": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
"tag_ids": [],
|
"tag_ids": [],
|
||||||
"agenda_item_ids": [],
|
"agenda_item_ids": [],
|
||||||
"list_of_speakers_ids": [],
|
"list_of_speakers_ids": [],
|
||||||
"speaker_ids": [],
|
"speaker_ids": [],
|
||||||
"topic_ids": [],
|
"topic_ids": [],
|
||||||
"group_ids": [1, 2, 3, 4, 5],
|
"group_ids": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
"mediafile_ids": [],
|
"mediafile_ids": [],
|
||||||
"motion_ids": [],
|
"motion_ids": [],
|
||||||
"motion_comment_section_ids": [],
|
"motion_comment_section_ids": [],
|
||||||
"motion_category_ids": [],
|
"motion_category_ids": [],
|
||||||
"motion_block_ids": [],
|
"motion_block_ids": [],
|
||||||
"motion_workflow_ids": [1],
|
"motion_workflow_ids": [
|
||||||
|
1
|
||||||
|
],
|
||||||
"motion_statute_paragraph_ids": [],
|
"motion_statute_paragraph_ids": [],
|
||||||
"motion_comment_ids": [],
|
"motion_comment_ids": [],
|
||||||
"motion_submitter_ids": [],
|
"motion_submitter_ids": [],
|
||||||
"motion_change_recommendation_ids": [],
|
"motion_change_recommendation_ids": [],
|
||||||
"motion_state_ids": [1, 2, 3, 4],
|
"motion_state_ids": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
"poll_ids": [],
|
"poll_ids": [],
|
||||||
"option_ids": [],
|
"option_ids": [],
|
||||||
"vote_ids": [],
|
"vote_ids": [],
|
||||||
@ -254,19 +261,16 @@
|
|||||||
"assignment_candidate_ids": [],
|
"assignment_candidate_ids": [],
|
||||||
"personal_note_ids": [],
|
"personal_note_ids": [],
|
||||||
"chat_group_ids": [],
|
"chat_group_ids": [],
|
||||||
|
|
||||||
"logo_$_id": [],
|
"logo_$_id": [],
|
||||||
"font_$_id": [],
|
"font_$_id": [],
|
||||||
|
|
||||||
"committee_id": 1,
|
"committee_id": 1,
|
||||||
"default_meeting_for_committee_id": 1,
|
"default_meeting_for_committee_id": 1,
|
||||||
"organization_tag_ids": [],
|
"organization_tag_ids": [],
|
||||||
"present_user_ids": [],
|
"present_user_ids": [],
|
||||||
"user_ids": [1],
|
"user_ids": [],
|
||||||
"reference_projector_id": 1,
|
"reference_projector_id": 1,
|
||||||
"list_of_speakers_countdown_id": 1,
|
"list_of_speakers_countdown_id": 1,
|
||||||
"poll_countdown_id": 2,
|
"poll_countdown_id": 2,
|
||||||
|
|
||||||
"default_projector_$_id": [
|
"default_projector_$_id": [
|
||||||
"agenda_all_items",
|
"agenda_all_items",
|
||||||
"topics",
|
"topics",
|
||||||
@ -300,25 +304,26 @@
|
|||||||
"default_projector_$motion_poll_id": 1,
|
"default_projector_$motion_poll_id": 1,
|
||||||
"default_projector_$poll_id": 1,
|
"default_projector_$poll_id": 1,
|
||||||
"projection_ids": [],
|
"projection_ids": [],
|
||||||
|
|
||||||
"default_group_id": 1,
|
"default_group_id": 1,
|
||||||
"admin_group_id": 2
|
"admin_group_id": 2
|
||||||
}],
|
}
|
||||||
"group": [
|
],
|
||||||
|
"group": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Default",
|
"name": "Default",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"agenda_item.can_see",
|
||||||
"agenda_item.can_see_internal",
|
"agenda_item.can_see_internal",
|
||||||
"assignment.can_see",
|
"assignment.can_see",
|
||||||
"list_of_speakers.can_see",
|
"list_of_speakers.can_see",
|
||||||
"mediafile.can_see",
|
"mediafile.can_see",
|
||||||
"meeting.can_see_frontpage",
|
"meeting.can_see_frontpage",
|
||||||
|
"meeting.can_see_autopilot",
|
||||||
"motion.can_see",
|
"motion.can_see",
|
||||||
"projector.can_see",
|
"projector.can_see",
|
||||||
"user.can_see"
|
"user.can_see"
|
||||||
],
|
],
|
||||||
|
|
||||||
"user_ids": [],
|
"user_ids": [],
|
||||||
"default_group_for_meeting_id": 1,
|
"default_group_for_meeting_id": 1,
|
||||||
"admin_group_for_meeting_id": null,
|
"admin_group_for_meeting_id": null,
|
||||||
@ -338,8 +343,7 @@
|
|||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Admin",
|
"name": "Admin",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
|
"user_ids": [],
|
||||||
"user_ids": [1],
|
|
||||||
"default_group_for_meeting_id": null,
|
"default_group_for_meeting_id": null,
|
||||||
"admin_group_for_meeting_id": 1,
|
"admin_group_for_meeting_id": 1,
|
||||||
"mediafile_access_group_ids": [],
|
"mediafile_access_group_ids": [],
|
||||||
@ -356,87 +360,25 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Staff",
|
|
||||||
"permissions": [
|
|
||||||
"agenda_item.can_manage",
|
|
||||||
"assignment.can_manage",
|
|
||||||
"assignment.can_nominate_self",
|
|
||||||
"list_of_speakers.can_be_speaker",
|
|
||||||
"list_of_speakers.can_manage",
|
|
||||||
"mediafile.can_manage",
|
|
||||||
"meeting.can_see_frontpage",
|
|
||||||
"meeting.can_see_history",
|
|
||||||
"motion.can_manage",
|
|
||||||
"poll.can_manage",
|
|
||||||
"projector.can_manage",
|
|
||||||
"tag.can_manage",
|
|
||||||
"user.can_manage"
|
|
||||||
],
|
|
||||||
|
|
||||||
"user_ids": [],
|
|
||||||
"default_group_for_meeting_id": null,
|
|
||||||
"admin_group_for_meeting_id": null,
|
|
||||||
"mediafile_access_group_ids": [],
|
|
||||||
"mediafile_inherited_access_group_ids": [],
|
|
||||||
"read_comment_section_ids": [],
|
|
||||||
"write_comment_section_ids": [],
|
|
||||||
"read_chat_group_ids": [],
|
|
||||||
"write_chat_group_ids": [],
|
|
||||||
"poll_ids": [],
|
|
||||||
"used_as_motion_poll_default_id": null,
|
|
||||||
"used_as_assignment_poll_default_id": null,
|
|
||||||
"used_as_poll_default_id": null,
|
|
||||||
"meeting_id": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"name": "Committees",
|
|
||||||
"permissions": [
|
|
||||||
"agenda_item.can_see_internal",
|
|
||||||
"assignment.can_see",
|
|
||||||
"list_of_speakers.can_see",
|
|
||||||
"mediafile.can_see",
|
|
||||||
"meeting.can_see_frontpage",
|
|
||||||
"motion.can_create",
|
|
||||||
"motion.can_create_amendments",
|
|
||||||
"motion.can_support",
|
|
||||||
"projector.can_see",
|
|
||||||
"user.can_see"
|
|
||||||
],
|
|
||||||
|
|
||||||
"user_ids": [],
|
|
||||||
"default_group_for_meeting_id": null,
|
|
||||||
"admin_group_for_meeting_id": null,
|
|
||||||
"mediafile_access_group_ids": [],
|
|
||||||
"mediafile_inherited_access_group_ids": [],
|
|
||||||
"read_comment_section_ids": [],
|
|
||||||
"write_comment_section_ids": [],
|
|
||||||
"read_chat_group_ids": [],
|
|
||||||
"write_chat_group_ids": [],
|
|
||||||
"poll_ids": [],
|
|
||||||
"used_as_motion_poll_default_id": null,
|
|
||||||
"used_as_assignment_poll_default_id": null,
|
|
||||||
"used_as_poll_default_id": null,
|
|
||||||
"meeting_id": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"name": "Delegates",
|
"name": "Delegates",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"agenda_item.can_see",
|
||||||
"agenda_item.can_see_internal",
|
"agenda_item.can_see_internal",
|
||||||
|
"assignment.can_see",
|
||||||
"assignment.can_nominate_other",
|
"assignment.can_nominate_other",
|
||||||
"assignment.can_nominate_self",
|
"assignment.can_nominate_self",
|
||||||
|
"list_of_speakers.can_see",
|
||||||
"list_of_speakers.can_be_speaker",
|
"list_of_speakers.can_be_speaker",
|
||||||
"mediafile.can_see",
|
"mediafile.can_see",
|
||||||
"meeting.can_see_autopilot",
|
|
||||||
"meeting.can_see_frontpage",
|
"meeting.can_see_frontpage",
|
||||||
|
"meeting.can_see_autopilot",
|
||||||
|
"motion.can_see",
|
||||||
"motion.can_create",
|
"motion.can_create",
|
||||||
"motion.can_create_amendments",
|
"motion.can_create_amendments",
|
||||||
"motion.can_support",
|
"motion.can_support",
|
||||||
"projector.can_see",
|
"projector.can_see",
|
||||||
"user.can_see"
|
"user.can_see"
|
||||||
],
|
],
|
||||||
|
|
||||||
"user_ids": [],
|
"user_ids": [],
|
||||||
"default_group_for_meeting_id": null,
|
"default_group_for_meeting_id": null,
|
||||||
"admin_group_for_meeting_id": null,
|
"admin_group_for_meeting_id": null,
|
||||||
@ -451,21 +393,70 @@
|
|||||||
"used_as_assignment_poll_default_id": 1,
|
"used_as_assignment_poll_default_id": 1,
|
||||||
"used_as_poll_default_id": 1,
|
"used_as_poll_default_id": 1,
|
||||||
"meeting_id": 1
|
"meeting_id": 1
|
||||||
}],
|
},
|
||||||
"personal_note": [],
|
{
|
||||||
"tag": [],
|
"id": 4,
|
||||||
"agenda_item": [],
|
"name": "Staff",
|
||||||
"list_of_speakers": [],
|
"permissions": [
|
||||||
"speaker": [],
|
"agenda_item.can_see",
|
||||||
"topic": [],
|
"agenda_item.can_see_internal",
|
||||||
"motion": [],
|
"agenda_item.can_manage",
|
||||||
"motion_submitter": [],
|
"assignment.can_see",
|
||||||
"motion_comment": [],
|
"assignment.can_nominate_other",
|
||||||
"motion_comment_section": [],
|
"assignment.can_manage",
|
||||||
"motion_category": [],
|
"assignment.can_nominate_self",
|
||||||
"motion_block": [],
|
"list_of_speakers.can_see",
|
||||||
"motion_change_recommendation": [],
|
"list_of_speakers.can_be_speaker",
|
||||||
"motion_state": [
|
"list_of_speakers.can_manage",
|
||||||
|
"mediafile.can_see",
|
||||||
|
"mediafile.can_manage",
|
||||||
|
"meeting.can_see_frontpage",
|
||||||
|
"meeting.can_see_autopilot",
|
||||||
|
"motion.can_see",
|
||||||
|
"motion.can_manage",
|
||||||
|
"motion.can_manage_metadata",
|
||||||
|
"motion.can_manage_polls",
|
||||||
|
"motion.can_see_internal",
|
||||||
|
"motion.can_create",
|
||||||
|
"motion.can_create_amendments",
|
||||||
|
"poll.can_manage",
|
||||||
|
"projector.can_see",
|
||||||
|
"projector.can_manage",
|
||||||
|
"tag.can_manage",
|
||||||
|
"user.can_see",
|
||||||
|
"user.can_see_extra_data",
|
||||||
|
"user.can_manage"
|
||||||
|
],
|
||||||
|
"user_ids": [],
|
||||||
|
"default_group_for_meeting_id": null,
|
||||||
|
"admin_group_for_meeting_id": null,
|
||||||
|
"mediafile_access_group_ids": [],
|
||||||
|
"mediafile_inherited_access_group_ids": [],
|
||||||
|
"read_comment_section_ids": [],
|
||||||
|
"write_comment_section_ids": [],
|
||||||
|
"read_chat_group_ids": [],
|
||||||
|
"write_chat_group_ids": [],
|
||||||
|
"poll_ids": [],
|
||||||
|
"used_as_motion_poll_default_id": null,
|
||||||
|
"used_as_assignment_poll_default_id": null,
|
||||||
|
"used_as_poll_default_id": null,
|
||||||
|
"meeting_id": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"personal_note": [],
|
||||||
|
"tag": [],
|
||||||
|
"agenda_item": [],
|
||||||
|
"list_of_speakers": [],
|
||||||
|
"speaker": [],
|
||||||
|
"topic": [],
|
||||||
|
"motion": [],
|
||||||
|
"motion_submitter": [],
|
||||||
|
"motion_comment": [],
|
||||||
|
"motion_comment_section": [],
|
||||||
|
"motion_category": [],
|
||||||
|
"motion_block": [],
|
||||||
|
"motion_change_recommendation": [],
|
||||||
|
"motion_state": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "submitted",
|
"name": "submitted",
|
||||||
@ -479,8 +470,11 @@
|
|||||||
"show_state_extension_field": false,
|
"show_state_extension_field": false,
|
||||||
"merge_amendment_into_final": "undefined",
|
"merge_amendment_into_final": "undefined",
|
||||||
"show_recommendation_extension_field": false,
|
"show_recommendation_extension_field": false,
|
||||||
|
"next_state_ids": [
|
||||||
"next_state_ids": [2, 3, 4],
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
"previous_state_ids": [],
|
"previous_state_ids": [],
|
||||||
"motion_ids": [],
|
"motion_ids": [],
|
||||||
"motion_recommendation_ids": [],
|
"motion_recommendation_ids": [],
|
||||||
@ -501,9 +495,10 @@
|
|||||||
"show_state_extension_field": false,
|
"show_state_extension_field": false,
|
||||||
"merge_amendment_into_final": "undefined",
|
"merge_amendment_into_final": "undefined",
|
||||||
"show_recommendation_extension_field": false,
|
"show_recommendation_extension_field": false,
|
||||||
|
|
||||||
"next_state_ids": [],
|
"next_state_ids": [],
|
||||||
"previous_state_ids": [1],
|
"previous_state_ids": [
|
||||||
|
1
|
||||||
|
],
|
||||||
"motion_ids": [],
|
"motion_ids": [],
|
||||||
"motion_recommendation_ids": [],
|
"motion_recommendation_ids": [],
|
||||||
"workflow_id": 1,
|
"workflow_id": 1,
|
||||||
@ -523,9 +518,10 @@
|
|||||||
"show_state_extension_field": false,
|
"show_state_extension_field": false,
|
||||||
"merge_amendment_into_final": "undefined",
|
"merge_amendment_into_final": "undefined",
|
||||||
"show_recommendation_extension_field": false,
|
"show_recommendation_extension_field": false,
|
||||||
|
|
||||||
"next_state_ids": [],
|
"next_state_ids": [],
|
||||||
"previous_state_ids": [1],
|
"previous_state_ids": [
|
||||||
|
1
|
||||||
|
],
|
||||||
"motion_ids": [],
|
"motion_ids": [],
|
||||||
"motion_recommendation_ids": [],
|
"motion_recommendation_ids": [],
|
||||||
"workflow_id": 1,
|
"workflow_id": 1,
|
||||||
@ -545,9 +541,10 @@
|
|||||||
"show_state_extension_field": false,
|
"show_state_extension_field": false,
|
||||||
"merge_amendment_into_final": "undefined",
|
"merge_amendment_into_final": "undefined",
|
||||||
"show_recommendation_extension_field": false,
|
"show_recommendation_extension_field": false,
|
||||||
|
|
||||||
"next_state_ids": [],
|
"next_state_ids": [],
|
||||||
"previous_state_ids": [1],
|
"previous_state_ids": [
|
||||||
|
1
|
||||||
|
],
|
||||||
"motion_ids": [],
|
"motion_ids": [],
|
||||||
"motion_recommendation_ids": [],
|
"motion_recommendation_ids": [],
|
||||||
"workflow_id": 1,
|
"workflow_id": 1,
|
||||||
@ -555,26 +552,31 @@
|
|||||||
"meeting_id": 1
|
"meeting_id": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"motion_workflow": [
|
"motion_workflow": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Simple Workflow",
|
"name": "Simple Workflow",
|
||||||
|
"state_ids": [
|
||||||
"state_ids": [1, 2, 3, 4],
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
"first_state_id": 1,
|
"first_state_id": 1,
|
||||||
"default_workflow_meeting_id": 1,
|
"default_workflow_meeting_id": 1,
|
||||||
"default_amendment_workflow_meeting_id": 1,
|
"default_amendment_workflow_meeting_id": 1,
|
||||||
"default_statute_amendment_workflow_meeting_id": 1,
|
"default_statute_amendment_workflow_meeting_id": 1,
|
||||||
"meeting_id": 1
|
"meeting_id": 1
|
||||||
}],
|
}
|
||||||
"motion_statute_paragraph": [],
|
],
|
||||||
"poll": [],
|
"motion_statute_paragraph": [],
|
||||||
"option": [],
|
"poll": [],
|
||||||
"vote": [],
|
"option": [],
|
||||||
"assignment": [],
|
"vote": [],
|
||||||
"assignment_candidate": [],
|
"assignment": [],
|
||||||
"mediafile": [],
|
"assignment_candidate": [],
|
||||||
"projector": [
|
"mediafile": [],
|
||||||
|
"projector": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Default projector",
|
"name": "Default projector",
|
||||||
@ -594,12 +596,10 @@
|
|||||||
"show_title": true,
|
"show_title": true,
|
||||||
"show_logo": true,
|
"show_logo": true,
|
||||||
"show_clock": true,
|
"show_clock": true,
|
||||||
|
|
||||||
"current_projection_ids": [],
|
"current_projection_ids": [],
|
||||||
"preview_projection_ids": [],
|
"preview_projection_ids": [],
|
||||||
"history_projection_ids": [],
|
"history_projection_ids": [],
|
||||||
"used_as_reference_projector_meeting_id": 1,
|
"used_as_reference_projector_meeting_id": 1,
|
||||||
|
|
||||||
"used_as_default_$_in_meeting_id": [
|
"used_as_default_$_in_meeting_id": [
|
||||||
"agenda_all_items",
|
"agenda_all_items",
|
||||||
"topics",
|
"topics",
|
||||||
@ -632,12 +632,12 @@
|
|||||||
"used_as_default_$assignment_poll_in_meeting_id": 1,
|
"used_as_default_$assignment_poll_in_meeting_id": 1,
|
||||||
"used_as_default_$motion_poll_in_meeting_id": 1,
|
"used_as_default_$motion_poll_in_meeting_id": 1,
|
||||||
"used_as_default_$poll_in_meeting_id": 1,
|
"used_as_default_$poll_in_meeting_id": 1,
|
||||||
|
|
||||||
"meeting_id": 1
|
"meeting_id": 1
|
||||||
}],
|
}
|
||||||
"projection": [],
|
],
|
||||||
"projector_message": [],
|
"projection": [],
|
||||||
"projector_countdown": [
|
"projector_message": [],
|
||||||
|
"projector_countdown": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"title": "List of speaker countdown",
|
"title": "List of speaker countdown",
|
||||||
@ -645,7 +645,6 @@
|
|||||||
"default_time": 60,
|
"default_time": 60,
|
||||||
"countdown_time": 60,
|
"countdown_time": 60,
|
||||||
"running": false,
|
"running": false,
|
||||||
|
|
||||||
"projection_ids": [],
|
"projection_ids": [],
|
||||||
"used_as_list_of_speaker_countdown_meeting_id": 1,
|
"used_as_list_of_speaker_countdown_meeting_id": 1,
|
||||||
"used_as_poll_countdown_meeting_id": null,
|
"used_as_poll_countdown_meeting_id": null,
|
||||||
@ -658,11 +657,11 @@
|
|||||||
"default_time": 60,
|
"default_time": 60,
|
||||||
"countdown_time": 60,
|
"countdown_time": 60,
|
||||||
"running": false,
|
"running": false,
|
||||||
|
|
||||||
"projection_ids": [],
|
"projection_ids": [],
|
||||||
"used_as_list_of_speaker_countdown_meeting_id": null,
|
"used_as_list_of_speaker_countdown_meeting_id": null,
|
||||||
"used_as_poll_countdown_meeting_id": 1,
|
"used_as_poll_countdown_meeting_id": 1,
|
||||||
"meeting_id": 1
|
"meeting_id": 1
|
||||||
}],
|
}
|
||||||
"chat_group": []
|
],
|
||||||
|
"chat_group": []
|
||||||
}
|
}
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Create keys for auth, if they do not exist
|
|
||||||
if [ ! -f secrets/auth_token_key ]; then
|
|
||||||
tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64 > secrets/auth_token_key
|
|
||||||
fi
|
|
||||||
if [ ! -f secrets/auth_cookie_key ]; then
|
|
||||||
tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64 > secrets/auth_cookie_key
|
|
||||||
fi
|
|
||||||
|
|
||||||
( set -a; source .env; m4 docker-compose.yml.m4 ) > docker-compose.yml
|
|
||||||
( set -a; source .env; m4 docker-stack.yml.m4 ) > docker-stack.yml
|
|
Loading…
Reference in New Issue
Block a user