mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-10-31 10:19:09 +00:00 
			
		
		
		
	- Change Talk (HPB) network_mode from host → bridge and drop TURN relay range mapping - Remove obsolete nginx restart handler; rely on 'docker compose up' notify - Fix spreed task condition to use HPB standalone flag - docker-compose.yml.j2: parameterize service names, use NEXTCLOUD_*_SERVICE vars, align host-gateway condition with HPB, tidy ports/expose/network blocks - env.j2/nginx configs: rename TALK_* → HPB_* variables and locations; use templated NEXTCLOUD_SERVICE for php upstream - vars: introduce entity_name; centralize *SERVICE keys; rename all Talk vars to HPB; adjust whiteboard keys; compute URLs/JSON configs accordingly - spreed plugin vars: point to HPB signaling/STUN/TURN and internal secret Ref: https://chatgpt.com/share/68db9f41-16ec-800f-9cdf-7530862f89aa
		
			
				
	
	
		
			139 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| # General
 | |
| application_id:                     "web-app-nextcloud"
 | |
| container_port:                     80
 | |
| entity_name:                        "{{ application_id | get_entity_name }}"
 | |
| 
 | |
| # Database
 | |
| database_password:                  "{{ applications | get_app_conf(application_id, 'credentials.database_password') }}"
 | |
| database_type:                      "mariadb"                                                                                   # Database flavor
 | |
| 
 | |
| # Nextcloud 
 | |
| 
 | |
| ## General 
 | |
| NEXTCLOUD_DOMAIN:                   "{{ domains | get_domain(application_id) }}"
 | |
| NEXTCLOUD_PORT:                     "{{ ports.localhost.http[application_id] }}"
 | |
| NEXTCLOUD_URL:                      "{{ domains | get_url(application_id, WEB_PROTOCOL) }}"
 | |
| 
 | |
| ## Plugins
 | |
| NEXTCLOUD_PLUGIN_ITEMS:             "{{ applications | get_app_conf(application_id, 'plugins') | dict2items }}"
 | |
| NEXTCLOUD_PLUGINS_ENABLED:          "{{ applications | get_app_conf(application_id, 'plugins_enabled') }}"
 | |
| 
 | |
| ## Paths
 | |
| 
 | |
| ### Host
 | |
| NEXTCLOUD_HOST_CONF_ADD_PATH:       "{{ [ docker_compose.directories.volumes, 'infinito' ] | path_join }}"              # This folder is the path to which the additive configurations will be copied
 | |
| NEXTCLOUD_HOST_INCL_PATH:           "{{ [ docker_compose.directories.volumes, 'includes.php' ] | path_join }}"          # Path to the instruction file on the host. Responsible for loading the additional configurations
 | |
| NEXTCLOUD_HOST_NGINX_PATH:          "{{ [ NGINX.DIRECTORIES.HTTP.SERVERS, NEXTCLOUD_DOMAIN ~ '.conf' ] | path_join }}"  # Nginx path for proxy conf
 | |
| NEXTCLOUD_HOST_NGINX_SRC:           "{{ [ docker_compose.directories.volumes, 'nginx.conf' ] | path_join }}" 
 | |
| 
 | |
| ## Control Node
 | |
| NEXTCLOUD_CNODE_PLUGIN_VARS_PATH:   "{{ [role_path, 'vars/plugins/'] | path_join }}"                                 # Folder in which the files for the plugin configuration are stored
 | |
| NEXTCLOUD_CNODE_PLUGIN_TASKS_PATH:  "{{ [role_path, 'tasks/plugins/'] | path_join }}"                                # Folder which contains the files for extra plugin configuration tasks 
 | |
| 
 | |
| ## Internal Paths
 | |
| NEXTCLOUD_DOCKER_WORK_DIRECTORY:    "/var/www/html/"                                                      # Name of the workdir in which the application is stored
 | |
| NEXTCLOUD_DOCKER_CONF_DIRECTORY:    "{{ [ NEXTCLOUD_DOCKER_WORK_DIRECTORY, 'config/'] | path_join }}"     # Folder in which the Nextcloud configurations are stored     
 | |
| NEXTCLOUD_DOCKER_CONFIG_FILE:       "{{ [ NEXTCLOUD_DOCKER_CONF_DIRECTORY, 'config.php'] | path_join }}"  # Path to the Nextcloud configuration file
 | |
| NEXTCLOUD_DOCKER_CONF_ADD_PATH:     "{{ [ NEXTCLOUD_DOCKER_CONF_DIRECTORY, 'infinito/'] | path_join }}"   # Path to the folder which contains additional configurations
 | |
| NEXTCLOUD_DOCKER_INCL_PATH:         "/tmp/includes.php"                                                   # Path to the temporary file which will be included to the config.php to load the additional configurations
 | |
| 
 | |
| ## Administrator
 | |
| NEXTCLOUD_ADMINISTRATOR_PASSWORD:   "{{ applications | get_app_conf(application_id, 'credentials.administrator_password') }}"
 | |
| NEXTCLOUD_ADMINISTRATOR_USERNAME:   "{{ applications | get_app_conf(application_id, 'users.administrator.username') }}"
 | |
| 
 | |
| ## Docker
 | |
| 
 | |
| ### Base
 | |
| NEXTCLOUD_VOLUME:                   "{{ applications | get_app_conf(application_id, 'docker.volumes.data') }}"
 | |
| NEXTCLOUD_SERVICE:                  "{{ entity_name }}"
 | |
| NEXTCLOUD_VERSION:                  "{{ applications | get_app_conf(application_id, 'docker.services.'~ NEXTCLOUD_SERVICE ~'.version') }}"
 | |
| NEXTCLOUD_IMAGE:                    "{{ applications | get_app_conf(application_id, 'docker.services.'~ NEXTCLOUD_SERVICE ~'.image') }}"
 | |
| NEXTCLOUD_CONTAINER:                "{{ applications | get_app_conf(application_id, 'docker.services.'~ NEXTCLOUD_SERVICE ~'.name') }}"
 | |
| 
 | |
| ### Proxy
 | |
| NEXTCLOUD_PROXY_SERVICE:              "proxy"
 | |
| NEXTCLOUD_PROXY_CONTAINER:            "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_PROXY_SERVICE ~ '.name') }}"
 | |
| NEXTCLOUD_PROXY_IMAGE:                "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_PROXY_SERVICE ~ '.image') }}"
 | |
| NEXTCLOUD_PROXY_VERSION:              "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_PROXY_SERVICE ~ '.version') }}"
 | |
| 
 | |
| ### Cron
 | |
| NEXTCLOUD_CRON_SERVICE:               "cron"
 | |
| NEXTCLOUD_CRON_CONTAINER:             "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_CRON_SERVICE ~ '.name') }}"
 | |
| 
 | |
| ### High Performance Backend for Talk
 | |
| # https://github.com/nextcloud-snap/nextcloud-snap/wiki/How-to-configure-talk-HPB-with-Docker
 | |
| 
 | |
| #### General
 | |
| NEXTCLOUD_HPB_SERVICE:                      "talk"
 | |
| NEXTCLOUD_HPB_CONTAINER:                    "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_HPB_SERVICE ~ '.name') }}"
 | |
| NEXTCLOUD_HPB_IMAGE:                        "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_HPB_SERVICE ~ '.image') }}"
 | |
| NEXTCLOUD_HPB_VERSION:                      "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_HPB_SERVICE ~ '.version') }}"
 | |
| NEXTCLOUD_HPB_NETWORK_MODE:                 "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_HPB_SERVICE ~ '.network_mode') }}"
 | |
| NEXTCLOUD_HPB_PLUGIN_ENABLED:               "{{ applications | get_app_conf(application_id, 'plugins.spreed.enabled') }}"
 | |
| NEXTCLOUD_HPB_INTERNAL_SECRET:              "{{ applications | get_app_conf(application_id, 'credentials.talk_internal_secret') }}"
 | |
| NEXTCLOUD_HPB_DOMAIN:                       "{{ NEXTCLOUD_DOMAIN }}"
 | |
| 
 | |
| #### Signaling
 | |
| NEXTCLOUD_HPB_SIGNALING_SECRET:              "{{ applications | get_app_conf(application_id, 'credentials.talk_signaling_secret') }}"
 | |
| NEXTCLOUD_HPB_SIGNALING_LOCATION:            "/standalone-signaling/"
 | |
| NEXTCLOUD_HPB_SIGNALING_PORT:                "8081"
 | |
| NEXTCLOUD_HPB_SIGNALING_URL:                 "{{ [ NEXTCLOUD_URL, NEXTCLOUD_HPB_SIGNALING_LOCATION ] | url_join }}"
 | |
| NEXTCLOUD_HPB_SIGNALING_ENABLED:             "{{ NEXTCLOUD_HPB_PLUGIN_ENABLED }}"
 | |
| 
 | |
| #### Talk Turn (Onboard)
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_PORT:             "{{ ports.public.stun_turn[application_id] }}"
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_ENABLED:          "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_HPB_SERVICE ~ '.turn_server.onboard_enabled') if NEXTCLOUD_HPB_PLUGIN_ENABLED else false }}"
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_SECRET:           "{{ applications | get_app_conf(application_id, 'credentials.talk_turn_secret') }}"
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_RELAY_PORT_START: "{{ ports.public.relay_port_ranges[application_id ~ '_start'] }}"
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_RELAY_PORT_END:   "{{ ports.public.relay_port_ranges[application_id ~ '_end'  ] }}"
 | |
| NEXTCLOUD_HPB_STUN_ONBOARD_CONFIG:           "{{ NEXTCLOUD_HPB_DOMAIN }}:{{ NEXTCLOUD_HPB_TURN_ONBOARD_PORT }}"
 | |
| NEXTCLOUD_HPB_TURN_ONBOARD_CONFIG: >-
 | |
|   {{
 | |
|     {
 | |
|       'server':     NEXTCLOUD_HPB_DOMAIN ~ ':' ~ NEXTCLOUD_HPB_TURN_ONBOARD_PORT,
 | |
|       'secret':     NEXTCLOUD_HPB_TURN_ONBOARD_SECRET,
 | |
|       'ttl':        86400,
 | |
|       'protocols':  'udp,tcp'
 | |
|     }
 | |
|   }}
 | |
| 
 | |
| #### Coturn (Standalone)
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_ROLE:          'web-svc-coturn'
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_PORT:          "{{ ports.public.stun_turn[NEXTCLOUD_HPB_TURN_STANDALONE_ROLE] }}"
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_SECRET:        "{{ applications | get_app_conf(NEXTCLOUD_HPB_TURN_STANDALONE_ROLE, 'credentials.auth_secret') }}"
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_ENABLED:       "{{ applications | get_app_conf(application_id, 'docker.services.talk.turn_server.standalone_enabled') if NEXTCLOUD_HPB_PLUGIN_ENABLED else false }}"
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_DOMAIN:        "{{ domains | get_domain(NEXTCLOUD_HPB_TURN_STANDALONE_ROLE) }}"
 | |
| NEXTCLOUD_HPB_STUN_STANDALONE_CONFIG:        "{{ NEXTCLOUD_HPB_TURN_STANDALONE_DOMAIN }}:{{ NEXTCLOUD_HPB_TURN_STANDALONE_PORT }}"
 | |
| NEXTCLOUD_HPB_TURN_STANDALONE_CONFIG: >-
 | |
|   {{
 | |
|     {
 | |
|       'server':     NEXTCLOUD_HPB_TURN_STANDALONE_DOMAIN ~ ':' ~ NEXTCLOUD_HPB_TURN_STANDALONE_PORT,
 | |
|       'secret':     NEXTCLOUD_HPB_TURN_STANDALONE_SECRET,
 | |
|       'ttl':        86400,
 | |
|       'protocols':  'udp,tcp'
 | |
|     }
 | |
|   }}
 | |
| 
 | |
| ### Whiteboard
 | |
| NEXTCLOUD_WHITEBOARD_SERVICE:      "whiteboard"
 | |
| NEXTCLOUD_WHITEBOARD_CONTAINER:     "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_WHITEBOARD_SERVICE ~'.name') }}"
 | |
| NEXTCLOUD_WHITEBOARD_IMAGE:         "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_WHITEBOARD_SERVICE ~'.image') }}"
 | |
| NEXTCLOUD_WHITEBOARD_VERSION:       "{{ applications | get_app_conf(application_id, 'docker.services.' ~ NEXTCLOUD_WHITEBOARD_SERVICE ~'.version') }}"
 | |
| NEXTCLOUD_WHITEBOARD_ENABLED:       "{{ applications | get_app_conf(application_id, 'plugins.' ~ NEXTCLOUD_WHITEBOARD_SERVICE ~'.enabled') }}"
 | |
| NEXTCLOUD_WHITEBOARD_PORT_INTERNAL: "3002"
 | |
| NEXTCLOUD_WHITEBOARD_JWT:           "{{ applications | get_app_conf(application_id, 'credentials.' ~ NEXTCLOUD_WHITEBOARD_SERVICE ~'_jwt_secret') }}"
 | |
| NEXTCLOUD_WHITEBOARD_LOCATION:      "/whiteboard/"
 | |
| NEXTCLOUD_WHITEBOARD_URL:           "{{ [ NEXTCLOUD_URL, NEXTCLOUD_WHITEBOARD_LOCATION ] | url_join }}"
 | |
| 
 | |
| ### Collabora
 | |
| NEXTCLOUD_COLLABORA_URL:            "{{ domains | get_url('web-svc-collabora', WEB_PROTOCOL) }}"
 | |
| 
 | |
| ## User Configuration
 | |
| NEXTCLOUD_DOCKER_USER_id:           82                                                            # UID of the www-data user
 | |
| NEXTCLOUD_DOCKER_USER:              "www-data"                                                    # Name of the www-data user (Set here to easy change it in the future)
 | |
| 
 | |
| ## Execution
 | |
| NEXTCLOUD_INTERNAL_OCC_COMMAND:     "{{ [ NEXTCLOUD_DOCKER_WORK_DIRECTORY, 'occ'] | path_join }}"
 | |
| NEXTCLOUD_DOCKER_EXEC:              "docker exec -u {{ NEXTCLOUD_DOCKER_USER }} {{ NEXTCLOUD_CONTAINER }}"  # General execute composition
 | |
| NEXTCLOUD_DOCKER_EXEC_OCC:          "{{ NEXTCLOUD_DOCKER_EXEC }} {{ NEXTCLOUD_INTERNAL_OCC_COMMAND }}"      # Execute docker occ command |