mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-11-04 04:08:15 +00:00 
			
		
		
		
	This prevents OCC repair failures caused by Redis still loading its dataset after container restarts. See context: https://chatgpt.com/share/690377ba-1520-800f-b8c1-bc93fbd9232f
		
			
				
	
	
		
			147 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			10 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_CUSTOM_IMAGE:        "nextcloud_whiteboard_custom"
 | 
						|
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 }}"
 | 
						|
NEXTCLOUD_WHITEBOARD_TMP_VOLUME:          "{{ applications | get_app_conf(application_id, 'docker.volumes.whiteboard_tmp') }}"
 | 
						|
NEXTCLOUD_WHITEBOARD_FRONTCACHE_VOLUME:   "{{ applications | get_app_conf(application_id, 'docker.volumes.whiteboard_fontcache') }}"
 | 
						|
NEXTCLOUD_WHITEBOARD_SERVICE_DIRECTORY:   "{{ [ docker_compose.directories.services, 'whiteboard' ] | path_join }}"
 | 
						|
NEXTCLOUD_WHITEBOARD_SERVICE_DOCKERFILE:  "{{ [ NEXTCLOUD_WHITEBOARD_SERVICE_DIRECTORY, 'Dockerfile' ] | path_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
 | 
						|
 | 
						|
## Redis
 | 
						|
NEXTCLOUD_REDIS_CONTAINER:                "{{ entity_name }}-redis" |