Skip to content

Instantly share code, notes, and snippets.

@LambdaDigamma
Created April 5, 2025 19:13
Show Gist options
  • Select an option

  • Save LambdaDigamma/75f841d0e34eb51b644134d3cf0db122 to your computer and use it in GitHub Desktop.

Select an option

Save LambdaDigamma/75f841d0e34eb51b644134d3cf0db122 to your computer and use it in GitHub Desktop.
Openslides Docker Configuration
---
# Name of the generated YAML file.
filename: docker-compose.yml
# The OpenSlides proxy service listens on this address.
host: 0.0.0.0
port: 443
# General global options
disablePostgres: false
disableDependsOn: false
enableLocalHTTPS: false
enableAutoHTTPS: true
# Defaults for all OpenSlides services.
defaults:
containerRegistry: ghcr.io/openslides/openslides
tag: latest
# These environment variables are injected into every OpenSlides service
# via YAML merge type (https://yaml.org/type/merge.html).
defaultEnvironment:
ACTION_HOST: backendAction
ACTION_PORT: 9002
PRESENTER_HOST: backendPresenter
PRESENTER_PORT: 9003
DATASTORE_READER_HOST: datastoreReader
DATASTORE_READER_PORT: 9010
DATASTORE_WRITER_HOST: datastoreWriter
DATASTORE_WRITER_PORT: 9011
AUTOUPDATE_HOST: autoupdate
AUTOUPDATE_PORT: 9012
AUTH_HOST: auth
AUTH_PORT: 9004
SEARCH_HOST: search
SEARCH_PORT: 9050
RESTRICTER_URL: http://autoupdate:9012/internal/autoupdate
VOTE_HOST: vote
VOTE_PORT: 9013
CACHE_HOST: redis
CACHE_PORT: 6379
MESSAGE_BUS_HOST: redis
MESSAGE_BUS_PORT: 6379
MEDIA_HOST: media
MEDIA_PORT: 9006
ICC_HOST: icc
ICC_PORT: 9007
MANAGE_HOST: manage
MANAGE_PORT: 9008
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_NAME: openslides
DATABASE_USER: openslides
DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
MEDIA_DATABASE_HOST: postgres
MEDIA_DATABASE_PORT: 5432
MEDIA_DATABASE_NAME: openslides
MEDIA_DATABASE_USER: openslides
MEDIA_DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
VOTE_DATABASE_HOST: postgres
VOTE_DATABASE_PORT: 5432
VOTE_DATABASE_NAME: openslides
VOTE_DATABASE_USER: openslides
VOTE_DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
INTERNAL_AUTH_PASSWORD_FILE: /run/secrets/internal_auth_password
MANAGE_AUTH_PASSWORD_FILE: /run/secrets/manage_auth_password
AUTH_TOKEN_KEY_FILE: /run/secrets/auth_token_key
AUTH_COOKIE_KEY_FILE: /run/secrets/auth_cookie_key
SUPERADMIN_PASSWORD_FILE: /run/secrets/superadmin
OPENSLIDES_LOGLEVEL: info
OPENSLIDES_DEVELOPMENT: "false"
# You can extend or replace parts of the defaultEnvironment.
#
# Example:
#
# defaultEnvironment:
# SOME_ENV_VAR: my value
# You can customize single services using the services property.
services:
datastoreReader:
environment:
NUM_WORKERS: 8
backendManage:
environment:
OPENSLIDES_BACKEND_CREATE_INITIAL_DATA: 1
manage:
environment:
ACTION_HOST: backendManage
services:
proxy:
environment:
EXTERNAL_ADDRESS: openslides.moers.app
# Use letsencrypt staging environment for testing
# ACME_ENDPOINT: https://acme-staging-v02.api.letsencrypt.org/directory
# All properties from the "defaults" section are available here.
#
# Example:
#
# services:
# datastoreReader:
# tag: my-tag
# autoupdate:
# containerRegistry: example.com/my-registry
# You can also extend or replace parts of the environment.
#
# Example:
#
# services:
# datastoreReader:
# environment
# NUM_WORKERS: 8
# You can also define some additional content for all services. This will just
# add the object to the respective service blob.
#
# Example:
#
# services:
# autoupdate:
# additionalContent:
# deploy:
# replicas: 4
---
version: "3.4"
x-default-environment: &default-environment
ACTION_HOST: backendAction
ACTION_PORT: "9002"
AUTH_COOKIE_KEY_FILE: /run/secrets/auth_cookie_key
AUTH_HOST: auth
AUTH_PORT: "9004"
AUTH_TOKEN_KEY_FILE: /run/secrets/auth_token_key
AUTOUPDATE_HOST: autoupdate
AUTOUPDATE_PORT: "9012"
CACHE_HOST: redis
CACHE_PORT: "6379"
DATABASE_HOST: postgres
DATABASE_NAME: openslides
DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
DATABASE_PORT: "5432"
DATABASE_USER: openslides
DATASTORE_READER_HOST: datastoreReader
DATASTORE_READER_PORT: "9010"
DATASTORE_WRITER_HOST: datastoreWriter
DATASTORE_WRITER_PORT: "9011"
ICC_HOST: icc
ICC_PORT: "9007"
INTERNAL_AUTH_PASSWORD_FILE: /run/secrets/internal_auth_password
MANAGE_AUTH_PASSWORD_FILE: /run/secrets/manage_auth_password
MANAGE_HOST: manage
MANAGE_PORT: "9008"
MEDIA_DATABASE_HOST: postgres
MEDIA_DATABASE_NAME: openslides
MEDIA_DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
MEDIA_DATABASE_PORT: "5432"
MEDIA_DATABASE_USER: openslides
MEDIA_HOST: media
MEDIA_PORT: "9006"
MESSAGE_BUS_HOST: redis
MESSAGE_BUS_PORT: "6379"
OPENSLIDES_DEVELOPMENT: "false"
OPENSLIDES_LOGLEVEL: info
PRESENTER_HOST: backendPresenter
PRESENTER_PORT: "9003"
RESTRICTER_URL: http://autoupdate:9012/internal/autoupdate
SEARCH_HOST: search
SEARCH_PORT: "9050"
SUPERADMIN_PASSWORD_FILE: /run/secrets/superadmin
VOTE_DATABASE_HOST: postgres
VOTE_DATABASE_NAME: openslides
VOTE_DATABASE_PASSWORD_FILE: /run/secrets/postgres_password
VOTE_DATABASE_PORT: "5432"
VOTE_DATABASE_USER: openslides
VOTE_HOST: vote
VOTE_PORT: "9013"
services:
proxy:
image: ghcr.io/openslides/openslides/openslides-proxy:latest
depends_on:
- client
- backendAction
- backendPresenter
- autoupdate
- search
- auth
- media
- icc
- vote
environment:
<< : *default-environment
EXTERNAL_ADDRESS: openslides.moers.app
ENABLE_AUTO_HTTPS: 1
networks:
- uplink
- frontend
ports:
- 0.0.0.0:443:8000
- 0.0.0.0:80:8001
client:
image: ghcr.io/openslides/openslides/openslides-client:latest
depends_on:
- backendAction
- backendPresenter
- autoupdate
- search
- auth
- media
- icc
- vote
environment:
<< : *default-environment
networks:
- frontend
backendAction:
image: ghcr.io/openslides/openslides/openslides-backend:latest
depends_on:
- datastoreWriter
- auth
- media
- vote
- postgres
environment:
<< : *default-environment
OPENSLIDES_BACKEND_COMPONENT: action
networks:
- frontend
- data
- email
secrets:
- auth_token_key
- auth_cookie_key
- internal_auth_password
- postgres_password
backendPresenter:
image: ghcr.io/openslides/openslides/openslides-backend:latest
depends_on:
- auth
- postgres
environment:
<< : *default-environment
OPENSLIDES_BACKEND_COMPONENT: presenter
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
backendManage:
image: ghcr.io/openslides/openslides/openslides-backend:latest
depends_on:
- datastoreWriter
- postgres
environment:
<< : *default-environment
OPENSLIDES_BACKEND_CREATE_INITIAL_DATA: "1"
OPENSLIDES_BACKEND_COMPONENT: action
networks:
- data
- email
secrets:
- auth_token_key
- auth_cookie_key
- internal_auth_password
- postgres_password
- superadmin
datastoreReader:
image: ghcr.io/openslides/openslides/openslides-datastore-reader:latest
depends_on:
- postgres
environment:
<< : *default-environment
NUM_WORKERS: "8"
networks:
- data
secrets:
- postgres_password
datastoreWriter:
image: ghcr.io/openslides/openslides/openslides-datastore-writer:latest
depends_on:
- postgres
- redis
environment:
<< : *default-environment
networks:
- data
secrets:
- postgres_password
postgres:
image: postgres:15
environment:
<< : *default-environment
POSTGRES_DB: openslides
POSTGRES_USER: openslides
POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- data
secrets:
- postgres_password
autoupdate:
image: ghcr.io/openslides/openslides/openslides-autoupdate:latest
depends_on:
- datastoreReader
- redis
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
search:
image: ghcr.io/openslides/openslides/openslides-search:latest
depends_on:
- datastoreReader
- postgres
- autoupdate
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
auth:
image: ghcr.io/openslides/openslides/openslides-auth:latest
depends_on:
- datastoreReader
- redis
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- internal_auth_password
vote:
image: ghcr.io/openslides/openslides/openslides-vote:latest
depends_on:
- datastoreReader
- auth
- autoupdate
- redis
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
redis:
image: redis:alpine
command: redis-server --save ""
environment:
<< : *default-environment
networks:
- data
media:
image: ghcr.io/openslides/openslides/openslides-media:latest
depends_on:
- postgres
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
icc:
image: ghcr.io/openslides/openslides/openslides-icc:latest
depends_on:
- datastoreReader
- postgres
- redis
environment:
<< : *default-environment
networks:
- frontend
- data
secrets:
- auth_token_key
- auth_cookie_key
- postgres_password
manage:
image: ghcr.io/openslides/openslides/openslides-manage:latest
depends_on:
- datastoreReader
- backendManage
environment:
<< : *default-environment
ACTION_HOST: backendManage
networks:
- frontend
- data
secrets:
- superadmin
- manage_auth_password
- internal_auth_password
networks:
uplink:
internal: false
email:
internal: false
frontend:
internal: true
data:
internal: true
volumes:
postgres-data:
secrets:
auth_token_key:
file: ./secrets/auth_token_key
auth_cookie_key:
file: ./secrets/auth_cookie_key
superadmin:
file: ./secrets/superadmin
manage_auth_password:
file: ./secrets/manage_auth_password
internal_auth_password:
file: ./secrets/internal_auth_password
postgres_password:
file: ./secrets/postgres_password
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment