mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-20 15:04:57 +02:00
Refactored CyMaIS basic features and optimized wordpress implementation
This commit is contained in:
parent
ec5beff22f
commit
f8c984d6c2
15
Makefile
Normal file
15
Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Makefile for j2render
|
||||||
|
|
||||||
|
TEMPLATE=./templates/vars/applications.yml.j2
|
||||||
|
OUTPUT=./group_vars/all/07_applications.yml
|
||||||
|
|
||||||
|
build:
|
||||||
|
@echo "🔧 Building rendered file from $(TEMPLATE)..."
|
||||||
|
@mkdir -p $(dir $(OUTPUT))
|
||||||
|
j2r $(TEMPLATE) $(OUTPUT)
|
||||||
|
@echo "✅ Output written to $(OUTPUT)"
|
||||||
|
|
||||||
|
install: build
|
||||||
|
|
||||||
|
test:
|
||||||
|
python -m unittest discover -s tests/unit
|
@ -17,10 +17,15 @@ defaults_applications:
|
|||||||
|
|
||||||
## My Service Configuration
|
## My Service Configuration
|
||||||
my_service:
|
my_service:
|
||||||
version: "latest" # Version of the service
|
version: "latest"
|
||||||
matomo_tracking_enabled: true # Enable Matomo tracking for analytics
|
features: # Version of the service
|
||||||
css_enabled: true # Enable or disable global CSS styling
|
matomo: true # Enable Matomo tracking for analytics
|
||||||
landingpage_iframe_enabled: false # Allow embedding the landing page in an iframe (if true)
|
css: true # Enable or disable global CSS styling
|
||||||
|
iframe: false # Allow embedding the landing page in an iframe (if true)
|
||||||
|
database: true # Enable central database integration
|
||||||
|
ldap: true # Enable ldap integration
|
||||||
|
oauth2: true # Enable oauth2 proxy
|
||||||
|
oidc: true # Enable oidc
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
def get_oauth22_enabled(applications, application_id):
|
def get_oauth2_enabled(applications, application_id):
|
||||||
# Retrieve the application dictionary based on the ID
|
# Retrieve the application dictionary based on the ID
|
||||||
app = applications.get(application_id, {})
|
app = applications.get(application_id, {})
|
||||||
# Retrieve the value for oauth2_proxy.enabled, default is False
|
# Retrieve the value for oauth2_proxy.enabled, default is False
|
||||||
enabled = app.get('oauth2_proxy', {}).get('enabled', False)
|
enabled = app.get('features', {}).get('oauth2', False)
|
||||||
return bool(enabled)
|
return bool(enabled)
|
||||||
|
|
||||||
def get_oidc_enabled(applications, application_id):
|
def get_oidc_enabled(applications, application_id):
|
||||||
# Retrieve the application dictionary based on the ID
|
# Retrieve the application dictionary based on the ID
|
||||||
app = applications.get(application_id, {})
|
app = applications.get(application_id, {})
|
||||||
# Retrieve the value for oidc.enabled, default is False
|
# Retrieve the value for oidc.enabled, default is False
|
||||||
enabled = app.get('oidc', {}).get('enabled', False)
|
enabled = app.get('features', {}).get('oidc', False)
|
||||||
return bool(enabled)
|
return bool(enabled)
|
||||||
|
|
||||||
def get_landingpage_iframe_enabled(applications, application_id):
|
def get_features_iframe(applications, application_id):
|
||||||
app = applications.get(application_id)
|
app = applications.get(application_id)
|
||||||
enabled = app.get('landingpage_iframe_enabled')
|
enabled = app.features.iframe
|
||||||
return bool(enabled)
|
return bool(enabled)
|
||||||
|
|
||||||
def get_database_central_storage(applications, application_id):
|
def get_database_central_storage(applications, application_id):
|
||||||
@ -24,14 +24,14 @@ def get_database_central_storage(applications, application_id):
|
|||||||
If not defined, None is returned.
|
If not defined, None is returned.
|
||||||
"""
|
"""
|
||||||
app = applications.get(application_id, {})
|
app = applications.get(application_id, {})
|
||||||
db_type = app.get('database', {}).get('central_storage', False)
|
db_type = app.get('features', {}).get('database', False)
|
||||||
return db_type
|
return db_type
|
||||||
|
|
||||||
class FilterModule(object):
|
class FilterModule(object):
|
||||||
def filters(self):
|
def filters(self):
|
||||||
return {
|
return {
|
||||||
'get_oidc_enabled': get_oidc_enabled,
|
'get_oidc_enabled': get_oidc_enabled,
|
||||||
'get_oauth2_enabled': get_oauth22_enabled,
|
'get_oauth2_enabled': get_oauth2_enabled,
|
||||||
'get_database_central_storage': get_database_central_storage,
|
'get_database_central_storage': get_database_central_storage,
|
||||||
'get_landingpage_iframe_enabled': get_landingpage_iframe_enabled,
|
'get_features_iframe': get_features_iframe,
|
||||||
}
|
}
|
1
group_vars/all/.gitignore
vendored
Normal file
1
group_vars/all/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*_applications.yml
|
@ -52,20 +52,3 @@ enable_wildcard_certificate: false
|
|||||||
# This enables debugging in ansible and in the apps
|
# This enables debugging in ansible and in the apps
|
||||||
# You SHOULD NOT enable this on production servers
|
# You SHOULD NOT enable this on production servers
|
||||||
enable_debug: false
|
enable_debug: false
|
||||||
|
|
||||||
#########################
|
|
||||||
## ENABLED DEFAULTS ##
|
|
||||||
#########################
|
|
||||||
|
|
||||||
# The following defaults are used for the default_applications
|
|
||||||
# It can be that in a default_applications the value for one application is overwritten.
|
|
||||||
# You can overwritte it in this case in the applications in your inventory
|
|
||||||
|
|
||||||
## Matomo Tracking
|
|
||||||
matomo_tracking_enabled_default: true # Enables\Disables Matomo tracking on all html pages by default.
|
|
||||||
|
|
||||||
## CSS
|
|
||||||
css_enabled_default: true # Enables\Disables Global CSS on all html pages by default.
|
|
||||||
|
|
||||||
## iframe for primary domain
|
|
||||||
landingpage_iframe_enabled_default: true # Enables\Disables the possibility to be embedded via iframe by default.
|
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
# Docker Applications
|
# Docker Applications
|
||||||
|
|
||||||
## Docker Role Specific Parameters
|
## Docker Role Specific Parameters
|
||||||
@ -11,9 +12,7 @@ docker_restart_policy: "unless-stopped"
|
|||||||
# If other applications depend on this variables, propably it makes sense to define it in e.g. IMA or other variable files.
|
# If other applications depend on this variables, propably it makes sense to define it in e.g. IMA or other variable files.
|
||||||
|
|
||||||
# helper
|
# helper
|
||||||
_applications_nextcloud_ldap_enabled: "{{ applications.nextcloud.ldap.enabled | default(true) }}"
|
_applications_nextcloud_oidc_flavor: "{{ applications.nextcloud.oidc.flavor | default('oidc_login' if applications.nextcloud.features.ldap | default(true) else 'sociallogin') }}"
|
||||||
_applications_nextcloud_oidc_enabled: "{{ applications.nextcloud.oidc.enabled | default(true) }}"
|
|
||||||
_applications_nextcloud_oidc_flavor: "{{ applications.nextcloud.oidc.flavor | default('oidc_login' if _applications_nextcloud_ldap_enabled else 'sociallogin') }}"
|
|
||||||
|
|
||||||
# applications
|
# applications
|
||||||
|
|
||||||
@ -25,48 +24,46 @@ defaults_applications:
|
|||||||
company_name: "{{primary_domain}}"
|
company_name: "{{primary_domain}}"
|
||||||
company_email: "{{users.administrator.email}}"
|
company_email: "{{users.administrator.email}}"
|
||||||
setup_admin_email: "{{users.administrator.email}}"
|
setup_admin_email: "{{users.administrator.email}}"
|
||||||
database:
|
features:
|
||||||
central_storage: True
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Assets Server
|
## Assets Server
|
||||||
assets_server:
|
assets_server:
|
||||||
source_directory: "{{ playbook_dir }}/assets" # Directory from which the assets will be copied
|
source_directory: "{{ playbook_dir }}/assets" # Directory from which the assets will be copied
|
||||||
url: "https://{{domains.file_server}}/assets" # Public address of the assets directory
|
url: "https://{{domains.file_server}}/assets" # Public address of the assets directory
|
||||||
|
|
||||||
## Attendize
|
## Attendize
|
||||||
attendize:
|
attendize:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Baserow
|
## Baserow
|
||||||
baserow:
|
baserow:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Big Blue Button
|
## Big Blue Button
|
||||||
bigbluebutton:
|
bigbluebutton:
|
||||||
enable_greenlight: "true"
|
enable_greenlight: "true"
|
||||||
setup: false # Set to true in inventory file for initial setup
|
setup: false # Set to true in inventory file for initial setup
|
||||||
oidc:
|
# @todo LDAP needs to get propper implemented and tested, just set values during refactoring
|
||||||
enabled: true # Activate OIDC
|
features:
|
||||||
database:
|
matomo: True # Enables Matomo tracking
|
||||||
central_storage: True
|
css: True # Enables custom CSS styling
|
||||||
ldap:
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
enabled: False # @todo LDAP needs to get propper implemented and tested, just set values during refactoring
|
ldap: False # Enables LDAP integration and networking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
database: True # Enables use of central database
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
credentials:
|
credentials:
|
||||||
# shared_secret: # Needs to be defined in inventory file
|
# shared_secret: # Needs to be defined in inventory file
|
||||||
# etherpad_api_key: # Needs to be defined in inventory file
|
# etherpad_api_key: # Needs to be defined in inventory file
|
||||||
@ -87,11 +84,11 @@ defaults_applications:
|
|||||||
#jwt_secret: # Needs to be defined in inventory file - Use: openssl rand -base64 64 | tr -d '\n'
|
#jwt_secret: # Needs to be defined in inventory file - Use: openssl rand -base64 64 | tr -d '\n'
|
||||||
#plc_rotation_key_k256_private_key_hex: # Needs to be defined in inventory file - Use: openssl rand -hex 32
|
#plc_rotation_key_k256_private_key_hex: # Needs to be defined in inventory file - Use: openssl rand -hex 32
|
||||||
#admin_password: # Needs to be defined in inventory file - Use: openssl rand -base64 16
|
#admin_password: # Needs to be defined in inventory file - Use: openssl rand -base64 16
|
||||||
database:
|
features:
|
||||||
central_storage: True
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
# Chromium Browser
|
# Chromium Browser
|
||||||
chromium:
|
chromium:
|
||||||
@ -110,20 +107,25 @@ defaults_applications:
|
|||||||
network: "discourse_default" # Name of the docker network
|
network: "discourse_default" # Name of the docker network
|
||||||
container: "discourse_application" # Name of the container application
|
container: "discourse_application" # Name of the container application
|
||||||
repository: "discourse_repository" # Name of the repository folder
|
repository: "discourse_repository" # Name of the repository folder
|
||||||
# database_password: # Needs to be defined in inventory file
|
credentials:
|
||||||
oidc:
|
|
||||||
enabled: true # Activate OIDC
|
|
||||||
database:
|
database:
|
||||||
central_storage: True # Activate Central Database Storage
|
# password: # Needs to be defined in inventory file
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
master_api:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
# key: # Needs to be defined in inventory file
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
username: "{{ users.administrator.username }}" # Username for the Master API
|
||||||
|
features:
|
||||||
|
matomo: True # Enables Matomo tracking
|
||||||
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## File Server
|
## File Server
|
||||||
file_server:
|
file_server:
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "true" # Landingpage should be embeded in portfolio
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
# Firefox Browser
|
# Firefox Browser
|
||||||
firefox:
|
firefox:
|
||||||
@ -134,47 +136,45 @@ defaults_applications:
|
|||||||
## Friendica
|
## Friendica
|
||||||
friendica:
|
friendica:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
oidc:
|
features:
|
||||||
enabled: true # Activate OIDC. Plugin is not working yet
|
matomo: True # Enables Matomo tracking
|
||||||
database:
|
css: True # Enables custom CSS styling
|
||||||
central_storage: True # Activate Central Database Storage
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
database: True # Enables use of central database
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
|
|
||||||
## Funkwhale
|
## Funkwhale
|
||||||
funkwhale:
|
funkwhale:
|
||||||
version: "1.4.0"
|
version: "1.4.0"
|
||||||
ldap:
|
features:
|
||||||
enabled: True # Enables LDAP by default @todo check implementation
|
matomo: True # Enables Matomo tracking
|
||||||
database:
|
css: True # Enables custom CSS styling
|
||||||
central_storage: True # Activate Central Database Storage
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
ldap: True # Enables LDAP integration and networking
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
database: True # Enables use of central database
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
|
|
||||||
## Gitea
|
## Gitea
|
||||||
gitea:
|
gitea:
|
||||||
version: "latest" # Use latest docker image
|
version: "latest" # Use latest docker image
|
||||||
database:
|
|
||||||
central_storage: True # Activate Central Database Storage
|
|
||||||
configuration:
|
configuration:
|
||||||
repository:
|
repository:
|
||||||
enable_push_create_user: True # Allow users to push local repositories to Gitea and have them automatically created for a user.
|
enable_push_create_user: True # Allow users to push local repositories to Gitea and have them automatically created for a user.
|
||||||
default_private: last # Default private when creating a new repository: last, private, public
|
default_private: last # Default private when creating a new repository: last, private, public
|
||||||
default_push_create_private: True # Default private when creating a new repository with push-to-create.
|
default_push_create_private: True # Default private when creating a new repository with push-to-create.
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Gitlab
|
## Gitlab
|
||||||
gitlab:
|
gitlab:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Gnome
|
## Gnome
|
||||||
gnome:
|
gnome:
|
||||||
@ -186,15 +186,17 @@ defaults_applications:
|
|||||||
## Joomla
|
## Joomla
|
||||||
joomla:
|
joomla:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
## HTML Server
|
## HTML Server
|
||||||
html_server:
|
html_server:
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "true" # Landingpage should be embeded in portfolio
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
## Keycloak
|
## Keycloak
|
||||||
keycloak:
|
keycloak:
|
||||||
@ -202,31 +204,31 @@ defaults_applications:
|
|||||||
users:
|
users:
|
||||||
administrator:
|
administrator:
|
||||||
username: "{{users.administrator.username}}" # Administrator Username for Keycloak
|
username: "{{users.administrator.username}}" # Administrator Username for Keycloak
|
||||||
ldap:
|
|
||||||
enabled: True # Enables LDAP by default
|
|
||||||
import_realm: True # If True realm will be imported. If false skip.
|
import_realm: True # If True realm will be imported. If false skip.
|
||||||
database:
|
|
||||||
central_storage: True # Activate Central Database Storage
|
|
||||||
# database_password: # Needs to be defined in inventory file
|
# database_password: # Needs to be defined in inventory file
|
||||||
# administrator_password: # Needs to be defined in inventory file
|
# administrator_password: # Needs to be defined in inventory file
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: false # Disabled by default, because it leads to authentification problems
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
# LDAP Account Manager
|
# LDAP Account Manager
|
||||||
lam:
|
lam:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
# administrator_password: "{{users.administrator.initial_password}}" # CHANGE for security reasons
|
# administrator_password: "{{users.administrator.initial_password}}" # CHANGE for security reasons
|
||||||
ldap:
|
|
||||||
enabled: True # Should have the same value as applications.ldap.network.local.
|
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true # Activate the OAuth2 Proxy for the LDAP Webinterface
|
|
||||||
application: application # Needs to be the same as webinterface
|
application: application # Needs to be the same as webinterface
|
||||||
port: 80 # application port
|
port: 80 # application port
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
oauth2: False # Enables OAuth2 proxy integration
|
||||||
|
database: False # Enables use of central database
|
||||||
|
|
||||||
## LDAP
|
## LDAP
|
||||||
ldap:
|
ldap:
|
||||||
@ -242,8 +244,8 @@ defaults_applications:
|
|||||||
# administrator_password: # CHANGE for security reasons in inventory file
|
# administrator_password: # CHANGE for security reasons in inventory file
|
||||||
# administrator_database_password: # CHANGE for security reasons in inventory file
|
# administrator_database_password: # CHANGE for security reasons in inventory file
|
||||||
force_import: False # Forces the import of the LDIF files
|
force_import: False # Forces the import of the LDIF files
|
||||||
ldap:
|
features:
|
||||||
enabled: True # Enables LDAP network by default
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
|
||||||
## Libre Office
|
## Libre Office
|
||||||
libreoffice:
|
libreoffice:
|
||||||
@ -257,31 +259,31 @@ defaults_applications:
|
|||||||
public_api_activated: False # Security hole. Can be used for spaming
|
public_api_activated: False # Security hole. Can be used for spaming
|
||||||
version: "latest" # Docker Image version
|
version: "latest" # Docker Image version
|
||||||
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
mailu:
|
mailu:
|
||||||
version: "2024.06" # Docker Image Version
|
version: "2024.06" # Docker Image Version
|
||||||
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
oidc:
|
oidc:
|
||||||
enabled: true # Activate OIDC for Mailu
|
|
||||||
email_by_username: true # If true, then the mail is set by the username. If wrong then the OIDC user email is used
|
email_by_username: true # If true, then the mail is set by the username. If wrong then the OIDC user email is used
|
||||||
enable_user_creation: true # Users will be created if not existing
|
enable_user_creation: true # Users will be created if not existing
|
||||||
domain: "{{primary_domain}}" # The main domain from which mails will be send \ email suffix behind @
|
domain: "{{primary_domain}}" # The main domain from which mails will be send \ email suffix behind @
|
||||||
# I don't know why the database deactivation is necessary
|
|
||||||
database:
|
|
||||||
central_storage: False # Deactivate central database for mailu
|
|
||||||
credentials:
|
credentials:
|
||||||
# secret_key: # Set to a randomly generated 16 bytes string
|
# secret_key: # Set to a randomly generated 16 bytes string
|
||||||
# database_password: # Needs to be set in inventory file
|
# database_password: # Needs to be set in inventory file
|
||||||
# api_token: # Configures the authentication token. The minimum length is 3 characters. This is a mandatory setting for using the RESTful API.
|
# api_token: # Configures the authentication token. The minimum length is 3 characters. This is a mandatory setting for using the RESTful API.
|
||||||
# initial_administrator_password: # Initial administrator password for setup
|
# initial_administrator_password: # Initial administrator password for setup
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: true # Default enabled because working well in iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: False # Enables use of central database
|
||||||
|
# Deactivate central database for mailu, I don't know why the database deactivation is necessary
|
||||||
|
|
||||||
## MariaDB
|
## MariaDB
|
||||||
mariadb:
|
mariadb:
|
||||||
@ -291,25 +293,21 @@ defaults_applications:
|
|||||||
matomo:
|
matomo:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: false # Deactivated atm. @todo implement
|
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
# database_password: Null # Needs to be set in inventory file
|
# database_password: Null # Needs to be set in inventory file
|
||||||
# auth_token: Null # Needs to be set in inventory file
|
# auth_token: Null # Needs to be set in inventory file
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: False # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: false # Activate in inventory file if you want to have the statistics, as soon as matomo is running
|
css: False # Enables custom CSS styling
|
||||||
css_enabled: false # Not optimized yet for matomo
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
oauth2: False # Enables OAuth2 proxy integration
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Mastodon
|
## Mastodon
|
||||||
mastodon:
|
mastodon:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
single_user_mode: false # Set true for initial setup
|
single_user_mode: false # Set true for initial setup
|
||||||
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
database:
|
|
||||||
central_storage: True # Activate Central Database Storage
|
|
||||||
oidc:
|
|
||||||
enabled: True # Activate OIDC for Mastodon
|
|
||||||
credentials:
|
credentials:
|
||||||
# Check out the README.md of the docker-mastodon role to get detailled instructions about how to setup the credentials
|
# Check out the README.md of the docker-mastodon role to get detailled instructions about how to setup the credentials
|
||||||
# database_password:
|
# database_password:
|
||||||
@ -322,9 +320,12 @@ defaults_applications:
|
|||||||
# deterministic_key:
|
# deterministic_key:
|
||||||
# key_derivation_salt:
|
# key_derivation_salt:
|
||||||
# primary_key:
|
# primary_key:
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Matrix
|
## Matrix
|
||||||
matrix:
|
matrix:
|
||||||
@ -339,13 +340,13 @@ defaults_applications:
|
|||||||
element:
|
element:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
oidc:
|
css: True # Enables custom CSS styling
|
||||||
enabled: False # Deactivated OIDC due to this issue https://github.com/matrix-org/synapse/issues/10492
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
oidc: False # Enables OpenID Connect (OIDC) authentication
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
database: True # Enables use of central database
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
# Deactivated OIDC due to this issue https://github.com/matrix-org/synapse/issues/10492
|
||||||
|
|
||||||
## Moodle
|
## Moodle
|
||||||
moodle:
|
moodle:
|
||||||
@ -355,20 +356,20 @@ defaults_applications:
|
|||||||
username: "{{users.administrator.username}}"
|
username: "{{users.administrator.username}}"
|
||||||
email: "{{users.administrator.email}}"
|
email: "{{users.administrator.email}}"
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## MyBB
|
## MyBB
|
||||||
mybb:
|
mybb:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Nextcloud
|
## Nextcloud
|
||||||
nextcloud:
|
nextcloud:
|
||||||
@ -376,17 +377,19 @@ defaults_applications:
|
|||||||
ldap:
|
ldap:
|
||||||
enabled: True # Enables LDAP by default
|
enabled: True # Enables LDAP by default
|
||||||
oidc:
|
oidc:
|
||||||
enabled: "{{ _applications_nextcloud_oidc_enabled }}" # Activate OIDC for Nextcloud
|
enabled: "{{ applications.nextcloud.features.oidc | default(true) }}" # Activate OIDC for Nextcloud
|
||||||
# floavor decides which OICD plugin should be used.
|
# floavor decides which OICD plugin should be used.
|
||||||
# Available options: oidc_login, sociallogin
|
# Available options: oidc_login, sociallogin
|
||||||
# @see https://apps.nextcloud.com/apps/oidc_login
|
# @see https://apps.nextcloud.com/apps/oidc_login
|
||||||
# @see https://apps.nextcloud.com/apps/sociallogin
|
# @see https://apps.nextcloud.com/apps/sociallogin
|
||||||
flavor: "oidc_login" # Keeping on sociallogin because the other option is not implemented yet
|
flavor: "oidc_login" # Keeping on sociallogin because the other option is not implemented yet
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
database:
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
central_storage: True # Activate Central Database Storage
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: True # Enables use of central database
|
||||||
credentials:
|
credentials:
|
||||||
# database_password: Null # Needs to be set in inventory file
|
# database_password: Null # Needs to be set in inventory file
|
||||||
users:
|
users:
|
||||||
@ -577,13 +580,13 @@ defaults_applications:
|
|||||||
# enabled: false
|
# enabled: false
|
||||||
twofactor_nextcloud_notification:
|
twofactor_nextcloud_notification:
|
||||||
# Nextcloud two-factor notification: sends notifications for two-factor authentication events (https://apps.nextcloud.com/apps/twofactor_nextcloud_notification)
|
# Nextcloud two-factor notification: sends notifications for two-factor authentication events (https://apps.nextcloud.com/apps/twofactor_nextcloud_notification)
|
||||||
enabled: "{{ (not _applications_nextcloud_oidc_enabled) | lower }}" # Deactivate 2FA if oidc is active
|
enabled: "{{ not applications.nextcloud.features.oidc | default(true) }}" # Deactivate 2FA if oidc is active
|
||||||
twofactor_totp:
|
twofactor_totp:
|
||||||
# Nextcloud two-factor TOTP: provides time-based one-time password authentication (https://apps.nextcloud.com/apps/twofactor_totp)
|
# Nextcloud two-factor TOTP: provides time-based one-time password authentication (https://apps.nextcloud.com/apps/twofactor_totp)
|
||||||
enabled: "{{ (not _applications_nextcloud_oidc_enabled) | lower }}" # Deactivate 2FA if oidc is active
|
enabled: "{{ not applications.nextcloud.features.oidc | default(true) }}" # Deactivate 2FA if oidc is active
|
||||||
user_ldap:
|
user_ldap:
|
||||||
# Nextcloud user LDAP: integrates LDAP for user management and authentication (https://apps.nextcloud.com/apps/user_ldap)
|
# Nextcloud user LDAP: integrates LDAP for user management and authentication (https://apps.nextcloud.com/apps/user_ldap)
|
||||||
enabled: "{{ _applications_nextcloud_ldap_enabled | lower }}"
|
enabled: "{{ applications.nextcloud.features.ldap | default(true) }}"
|
||||||
user_oidc:
|
user_oidc:
|
||||||
# Nextcloud User OIDC: integrates OpenID Connect for user authentication (https://apps.nextcloud.com/apps/user_oidc)
|
# Nextcloud User OIDC: integrates OpenID Connect for user authentication (https://apps.nextcloud.com/apps/user_oidc)
|
||||||
enabled: "{{ _applications_nextcloud_oidc_flavor=='user_oidc' | lower }}"
|
enabled: "{{ _applications_nextcloud_oidc_flavor=='user_oidc' | lower }}"
|
||||||
@ -600,37 +603,38 @@ defaults_applications:
|
|||||||
version: "latest" # Docker Image version
|
version: "latest" # Docker Image version
|
||||||
redirect_url: "https://{{domains.keycloak}}/auth/realms/{{primary_domain}}/protocol/openid-connect/auth" # The redirect URL for the OAuth2 flow. It should match the redirect URL configured in Keycloak.
|
redirect_url: "https://{{domains.keycloak}}/auth/realms/{{primary_domain}}/protocol/openid-connect/auth" # The redirect URL for the OAuth2 flow. It should match the redirect URL configured in Keycloak.
|
||||||
allowed_roles: admin # Restrict it default to admin role. Use the vars/main.yml to open the specific role for other groups
|
allowed_roles: admin # Restrict it default to admin role. Use the vars/main.yml to open the specific role for other groups
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
## Open Project
|
## Open Project
|
||||||
openproject:
|
openproject:
|
||||||
version: "13" # Update when available. Sadly no rolling release implemented
|
version: "13" # Update when available. Sadly no rolling release implemented
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true # OpenProject doesn't support OIDC, so this procy in combination with LDAP is needed
|
|
||||||
application: "proxy"
|
application: "proxy"
|
||||||
port: "80"
|
port: "80"
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
ldap:
|
ldap:
|
||||||
enabled: True # Enables LDAP by default
|
|
||||||
filters:
|
filters:
|
||||||
administrators: True # Set true to filter administrators
|
administrators: True # Set true to filter administrators
|
||||||
users: False # Set true to filter users
|
users: False # Set true to filter users
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
oauth2: True # Enables OAuth2 proxy integration
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Peertube
|
## Peertube
|
||||||
peertube:
|
peertube:
|
||||||
version: "bookworm"
|
version: "bookworm"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## PgAdmin
|
## PgAdmin
|
||||||
pgadmin:
|
pgadmin:
|
||||||
@ -642,56 +646,54 @@ defaults_applications:
|
|||||||
email: "{{ users.administrator.email }}" # Initial login email address
|
email: "{{ users.administrator.email }}" # Initial login email address
|
||||||
password: "{{ users.administrator.initial_password }}" # Initial login password – should be overridden in inventory for security
|
password: "{{ users.administrator.initial_password }}" # Initial login password – should be overridden in inventory for security
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true # Enable OAuth2 proxy for authentication
|
|
||||||
application: "application"
|
application: "application"
|
||||||
port: "80"
|
port: "80"
|
||||||
# cookie_secret: None # Set via: openssl rand -hex 16
|
# cookie_secret: None # Set via: openssl rand -hex 16
|
||||||
database:
|
features:
|
||||||
central_storage: True # Uses central PostgreSQL database
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{ matomo_tracking_enabled_default }}" # Enables/Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{ css_enabled_default }}" # Enables/Disables global CSS styling
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{ landingpage_iframe_enabled_default }}" # Enables/Disables embedding via iframe
|
oauth2: True # Enables OAuth2 proxy integration
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## phpLDAPadmin
|
## phpLDAPadmin
|
||||||
phpldapadmin:
|
phpldapadmin:
|
||||||
version: "2.0.0-dev" # @todo Attention: Change this as fast as released to latest
|
version: "2.0.0-dev" # @todo Attention: Change this as fast as released to latest
|
||||||
ldap:
|
|
||||||
enabled: True # Should have the same value as applications.ldap.network.local.
|
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true # Activate the OAuth2 Proxy for the LDAP Webinterface
|
|
||||||
application: application # Needs to be the same as webinterface
|
application: application # Needs to be the same as webinterface
|
||||||
port: 8080 # application port
|
port: 8080 # application port
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
ldap: True # Enables LDAP integration and networking
|
||||||
|
oauth2: True # Enables OAuth2 proxy integration
|
||||||
|
|
||||||
## PHPMyAdmin
|
## PHPMyAdmin
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
version: "latest" # Use the latest phpmyadmin version
|
version: "latest" # Use the latest phpmyadmin version
|
||||||
autologin: false # This is a high security risk. Just activate this option if you know what you're doing
|
autologin: false # This is a high security risk. Just activate this option if you know what you're doing
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true
|
|
||||||
port: "80"
|
port: "80"
|
||||||
application: "application"
|
application: "application"
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
css:
|
css: False # Enables custom CSS styling
|
||||||
enabled: False # The css needs more optimation for PHPMyAdmin
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
oauth2: True # Enables OAuth2 proxy integration
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
database: True # Enables use of central database
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
|
|
||||||
## Pixelfed
|
## Pixelfed
|
||||||
pixelfed:
|
pixelfed:
|
||||||
titel: "Pictures on {{primary_domain}}"
|
titel: "Pictures on {{primary_domain}}"
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Postgres
|
## Postgres
|
||||||
# Please set an version in your inventory file - Rolling release for postgres isn't recommended
|
# Please set an version in your inventory file - Rolling release for postgres isn't recommended
|
||||||
@ -699,50 +701,50 @@ defaults_applications:
|
|||||||
version: "latest"
|
version: "latest"
|
||||||
|
|
||||||
portfolio:
|
portfolio:
|
||||||
database:
|
features:
|
||||||
central_storage: False # Portfolio doesn't use any database
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: false # Doesn't make sense to load landingpage in landingpage
|
|
||||||
|
|
||||||
## Presentation
|
## Presentation
|
||||||
presentation:
|
presentation:
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: False # Would mess with the presentation layout
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: True # Makes sense to make the documentary allways in iframe available
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: True # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
# Snipe-IT
|
# Snipe-IT
|
||||||
snipe_it:
|
snipe_it:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## Sphinx
|
## Sphinx
|
||||||
sphinx:
|
sphinx:
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
features:
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
matomo: True # Enables Matomo tracking
|
||||||
landingpage_iframe_enabled: true # Makes sense to make the documentary allways in iframe available
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
|
||||||
## Taiga
|
## Taiga
|
||||||
taiga:
|
taiga:
|
||||||
version: "latest"
|
version: "latest"
|
||||||
database:
|
|
||||||
central_storage: True # Activate Central Database Storage
|
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
oidc:
|
oidc:
|
||||||
# Taiga doesn't have a functioning oidc support at the moment
|
# Taiga doesn't have a functioning oidc support at the moment
|
||||||
# See
|
# See
|
||||||
# - https://community.taiga.io/t/taiga-and-oidc-plugin/4866
|
# - https://community.taiga.io/t/taiga-and-oidc-plugin/4866
|
||||||
#
|
#
|
||||||
# Due to this reason this plutin is deactivated atm
|
# Due to this reason this plutin is deactivated atm
|
||||||
enabled: False # De\Activate OIDC for Taiga
|
|
||||||
flavor: 'taigaio' # Potential flavors: robrotheram, taigaio
|
flavor: 'taigaio' # Potential flavors: robrotheram, taigaio
|
||||||
|
features:
|
||||||
|
matomo: True # Enables Matomo tracking
|
||||||
|
css: True # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
oidc: False # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
## YOURLS
|
## YOURLS
|
||||||
yourls:
|
yourls:
|
||||||
@ -751,16 +753,16 @@ defaults_applications:
|
|||||||
username: "{{users.administrator.username}}"
|
username: "{{users.administrator.username}}"
|
||||||
version: "latest"
|
version: "latest"
|
||||||
oauth2_proxy:
|
oauth2_proxy:
|
||||||
enabled: true
|
|
||||||
application: "application"
|
application: "application"
|
||||||
port: "80"
|
port: "80"
|
||||||
location: "/admin/" # Protects the admin area
|
location: "/admin/" # Protects the admin area
|
||||||
# cookie_secret: None # Set via openssl rand -hex 16
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
database:
|
features:
|
||||||
central_storage: True # Activate Central Database Storage
|
matomo: True # Enables Matomo tracking
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
css: True # Enables custom CSS styling
|
||||||
css_enabled: "{{css_enabled_default}}" # Enables\Disables Global CSS Style
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
oauth2: True # Enables OAuth2 proxy integration
|
||||||
|
database: True # Enables use of central database
|
||||||
|
|
||||||
wordpress:
|
wordpress:
|
||||||
# Deactivate Global theming for wordpress role
|
# Deactivate Global theming for wordpress role
|
||||||
@ -769,16 +771,18 @@ defaults_applications:
|
|||||||
#
|
#
|
||||||
# May a solution could be to generate a template or css file dedicated
|
# May a solution could be to generate a template or css file dedicated
|
||||||
# for wordpress based on the theming values and import it.
|
# for wordpress based on the theming values and import it.
|
||||||
database:
|
title: "Blog" # Wordpress titel
|
||||||
central_storage: True # Activate Central Database Storage
|
credentials: # Credentials
|
||||||
matomo_tracking_enabled: "{{matomo_tracking_enabled_default}}" # Enables\Disables Matomo Tracking
|
administrator: # Wordpress administrator
|
||||||
css_enabled: false # CSS is hard to tweak for wordpress
|
|
||||||
landingpage_iframe_enabled: "{{landingpage_iframe_enabled_default}}" # Enables\Disables the possibility to embed this on landing page via iframe
|
|
||||||
oidc:
|
|
||||||
enabled: true # Activate OIDC
|
|
||||||
title: "Blog"
|
|
||||||
credentials:
|
|
||||||
administrator:
|
|
||||||
username: "{{users.administrator.username}}" # Username of the wordpress administrator
|
username: "{{users.administrator.username}}" # Username of the wordpress administrator
|
||||||
# password: # Password of the wordpress administrator
|
# password: # Password of the wordpress administrator
|
||||||
email: "{{users.administrator.email}}" # Email of the wordpress adminsitrator
|
email: "{{users.administrator.email}}" # Email of the wordpress adminsitrator
|
||||||
|
plugins:
|
||||||
|
discourse: false
|
||||||
|
oidc: true
|
||||||
|
features:
|
||||||
|
matomo: True # Enables Matomo tracking
|
||||||
|
css: False # Enables custom CSS styling
|
||||||
|
iframe: False # Allows embedding via iframe on landing page
|
||||||
|
oidc: True # Enables OpenID Connect (OIDC) authentication
|
||||||
|
database: True # Enables use of central database
|
2
main.py
2
main.py
@ -30,7 +30,7 @@ def run_ansible_playbook(inventory: str, playbook: str, modes: dict, limit: str
|
|||||||
if verbose:
|
if verbose:
|
||||||
# Append a single flag with multiple "v"s (e.g. -vvv)
|
# Append a single flag with multiple "v"s (e.g. -vvv)
|
||||||
cmd.append("-" + "v" * verbose)
|
cmd.append("-" + "v" * verbose)
|
||||||
|
subprocess.run(['make','build'], check=True)
|
||||||
subprocess.run(cmd, check=True)
|
subprocess.run(cmd, check=True)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -3,3 +3,5 @@ collections:
|
|||||||
pacman:
|
pacman:
|
||||||
- ansible
|
- ansible
|
||||||
- python-passlib
|
- python-passlib
|
||||||
|
pkgmgr:
|
||||||
|
- j2r
|
@ -161,7 +161,7 @@ OFFICE365_HD=
|
|||||||
# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy
|
# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy
|
||||||
OAUTH2_REDIRECT=
|
OAUTH2_REDIRECT=
|
||||||
|
|
||||||
{% if applications[application_id].ldap.enabled | bool %}
|
{% if applications[application_id].features.ldap | bool %}
|
||||||
# LDAP Login Provider (optional)
|
# LDAP Login Provider (optional)
|
||||||
#
|
#
|
||||||
# You can enable LDAP authentication by providing values for the variables below.
|
# You can enable LDAP authentication by providing values for the variables below.
|
||||||
@ -286,7 +286,7 @@ HELP_URL=https://docs.bigbluebutton.org/greenlight/gl-overview.html
|
|||||||
# approval - For approve/decline registration
|
# approval - For approve/decline registration
|
||||||
DEFAULT_REGISTRATION=invite
|
DEFAULT_REGISTRATION=invite
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
### EXTERNAL AUTHENTICATION METHODS
|
### EXTERNAL AUTHENTICATION METHODS
|
||||||
# @See https://docs.bigbluebutton.org/greenlight/v3/external-authentication/
|
# @See https://docs.bigbluebutton.org/greenlight/v3/external-authentication/
|
||||||
#
|
#
|
||||||
|
@ -16,12 +16,12 @@
|
|||||||
src: "env/{{database_type}}.env.j2"
|
src: "env/{{database_type}}.env.j2"
|
||||||
dest: "{{database_env}}"
|
dest: "{{database_env}}"
|
||||||
notify: docker compose project build and setup
|
notify: docker compose project build and setup
|
||||||
when: not applications[application_id].database.central_storage | bool
|
when: not applications[application_id].features.database | bool
|
||||||
|
|
||||||
- name: "Create central database"
|
- name: "Create central database"
|
||||||
include_role:
|
include_role:
|
||||||
name: "docker-{{database_type}}"
|
name: "docker-{{database_type}}"
|
||||||
when: applications[application_id].database.central_storage | bool
|
when: applications[application_id].features.database | bool
|
||||||
|
|
||||||
- name: "Add database to backup"
|
- name: "Add database to backup"
|
||||||
include_tasks: "{{ playbook_dir }}/roles/backup-docker-to-local/tasks/seed-database-to-backup.yml"
|
include_tasks: "{{ playbook_dir }}/roles/backup-docker-to-local/tasks/seed-database-to-backup.yml"
|
@ -1,5 +1,5 @@
|
|||||||
# This template needs to be included in docker-compose.yml, which depend on a mariadb database
|
# This template needs to be included in docker-compose.yml, which depend on a mariadb database
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
database:
|
database:
|
||||||
container_name: {{application_id}}-database
|
container_name: {{application_id}}-database
|
||||||
logging:
|
logging:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# This template needs to be included in docker-compose.yml, which depend on a postgres database
|
# This template needs to be included in docker-compose.yml, which depend on a postgres database
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
database:
|
database:
|
||||||
image: postgres:{{applications.postgres.version}}-alpine
|
image: postgres:{{applications.postgres.version}}-alpine
|
||||||
container_name: {{application_id}}-database
|
container_name: {{application_id}}-database
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
database_instance: "{{ 'central-' + database_type if applications[application_id].database.central_storage | bool else application_id }}"
|
database_instance: "{{ 'central-' + database_type if applications[application_id].features.database | bool else application_id }}"
|
||||||
database_host: "{{ 'central-' + database_type if applications[application_id].database.central_storage | bool else 'database' }}"
|
database_host: "{{ 'central-' + database_type if applications[application_id].features.database | bool else 'database' }}"
|
||||||
database_name: "{{ application_id }}"
|
database_name: "{{ application_id }}"
|
||||||
database_username: "{{ application_id }}"
|
database_username: "{{ application_id }}"
|
||||||
database_port: "{{ 3306 if database_type == 'mariadb' else 5432 }}"
|
database_port: "{{ 3306 if database_type == 'mariadb' else 5432 }}"
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
command:
|
command:
|
||||||
cmd: "docker network connect {{applications.discourse.network}} central-{{ database_type }}"
|
cmd: "docker network connect {{applications.discourse.network}} central-{{ database_type }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: applications[application_id].database.central_storage | bool
|
when: applications[application_id].features.database | bool
|
||||||
listen: recreate discourse
|
listen: recreate discourse
|
||||||
|
|
||||||
- name: rebuild discourse
|
- name: rebuild discourse
|
||||||
|
@ -68,10 +68,10 @@
|
|||||||
command:
|
command:
|
||||||
cmd: "docker network connect central_postgres {{applications.discourse.container}}"
|
cmd: "docker network connect central_postgres {{applications.discourse.container}}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: applications[application_id].database.central_storage | bool
|
when: applications[application_id].features.database | bool
|
||||||
|
|
||||||
- name: "remove central database from {{application_id}}_default"
|
- name: "remove central database from {{application_id}}_default"
|
||||||
command:
|
command:
|
||||||
cmd: "docker network disconnect {{applications.discourse.network}} central-{{ database_type }}"
|
cmd: "docker network disconnect {{applications.discourse.network}} central-{{ database_type }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: applications[application_id].database.central_storage | bool
|
when: applications[application_id].features.database | bool
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
templates:
|
templates:
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
- "templates/postgres.template.yml"
|
- "templates/postgres.template.yml"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
#- "templates/redis.template.yml"
|
#- "templates/redis.template.yml"
|
||||||
@ -112,7 +112,7 @@ run:
|
|||||||
## If you want to set the 'From' email address for your first registration, uncomment and change:
|
## If you want to set the 'From' email address for your first registration, uncomment and change:
|
||||||
## After getting the first signup email, re-comment the line. It only needs to run once.
|
## After getting the first signup email, re-comment the line. It only needs to run once.
|
||||||
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
|
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
# Deactivate Default Login
|
# Deactivate Default Login
|
||||||
- exec: rails r "SiteSetting.enable_local_logins = false"
|
- exec: rails r "SiteSetting.enable_local_logins = false"
|
||||||
- exec: rails r "SiteSetting.enable_passkeys = false" # https://meta.discourse.org/t/passwordless-login-using-passkeys/285589
|
- exec: rails r "SiteSetting.enable_passkeys = false" # https://meta.discourse.org/t/passwordless-login-using-passkeys/285589
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
application_id: "friendica"
|
application_id: "friendica"
|
||||||
database_password: "{{friendica_database_password}}"
|
database_password: "{{friendica_database_password}}"
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
no_validation: "{{applications[application_id].oidc.enabled}}" # Email validation is not neccessary if OIDC is active
|
no_validation: "{{applications[application_id].features.oidc}}" # Email validation is not neccessary if OIDC is active
|
@ -100,7 +100,7 @@ DJANGO_SETTINGS_MODULE=config.settings.production
|
|||||||
# Generate one using `openssl rand -base64 45`, for example
|
# Generate one using `openssl rand -base64 45`, for example
|
||||||
DJANGO_SECRET_KEY={{funkwhale_django_secret}}
|
DJANGO_SECRET_KEY={{funkwhale_django_secret}}
|
||||||
|
|
||||||
{% if applications[application_id].ldap.enabled | bool %}
|
{% if applications[application_id].features.ldap | bool %}
|
||||||
# LDAP settings
|
# LDAP settings
|
||||||
# Use the following options to allow authentication on your Funkwhale instance
|
# Use the following options to allow authentication on your Funkwhale instance
|
||||||
# using a LDAP directory.
|
# using a LDAP directory.
|
||||||
|
@ -151,14 +151,14 @@ API_TOKEN={{applications.mailu.credentials.api_token}}
|
|||||||
AUTH_REQUIRE_TOKENS=True
|
AUTH_REQUIRE_TOKENS=True
|
||||||
|
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
###################################
|
###################################
|
||||||
# OpenID Connect settings
|
# OpenID Connect settings
|
||||||
###################################
|
###################################
|
||||||
# @see https://github.com/heviat/Mailu-OIDC/tree/master
|
# @see https://github.com/heviat/Mailu-OIDC/tree/master
|
||||||
|
|
||||||
# Enable OpenID Connect. Possible values: True, False
|
# Enable OpenID Connect. Possible values: True, False
|
||||||
OIDC_ENABLED={{ applications[application_id].oidc.enabled | string | capitalize }}
|
OIDC_ENABLED={{ applications[application_id].features.oidc | string | capitalize }}
|
||||||
|
|
||||||
# OpenID Connect provider configuration URL
|
# OpenID Connect provider configuration URL
|
||||||
OIDC_PROVIDER_INFO_URL={{oidc.client.issuer_url}}
|
OIDC_PROVIDER_INFO_URL={{oidc.client.issuer_url}}
|
||||||
@ -182,7 +182,7 @@ OIDC_CHANGE_PASSWORD_REDIRECT_ENABLED=True
|
|||||||
# Redirect URL for password change. Defaults to provider issuer url appended by /.well-known/change-password
|
# Redirect URL for password change. Defaults to provider issuer url appended by /.well-known/change-password
|
||||||
OIDC_CHANGE_PASSWORD_REDIRECT_URL={{oidc.client.change_credentials}}
|
OIDC_CHANGE_PASSWORD_REDIRECT_URL={{oidc.client.change_credentials}}
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
|
|
||||||
# The OIDC claim used as the username. If the selected claim contains an email address, it will be used as is. If it is not an email (e.g., sub), the email address will be constructed as <OIDC_USERNAME_CLAIM>@<OIDC_USER_DOMAIN>. Defaults to email.
|
# The OIDC claim used as the username. If the selected claim contains an email address, it will be used as is. If it is not an email (e.g., sub), the email address will be constructed as <OIDC_USERNAME_CLAIM>@<OIDC_USER_DOMAIN>. Defaults to email.
|
||||||
OIDC_USERNAME_CLAIM={{oidc.attributes.username}}
|
OIDC_USERNAME_CLAIM={{oidc.attributes.username}}
|
||||||
|
@ -6,7 +6,7 @@ enable_wildcard_certificate: false
|
|||||||
|
|
||||||
# Use dedicated source for oidc if activated
|
# Use dedicated source for oidc if activated
|
||||||
# @see https://github.com/heviat/Mailu-OIDC/tree/2024.06
|
# @see https://github.com/heviat/Mailu-OIDC/tree/2024.06
|
||||||
docker_source: "{{ 'ghcr.io/heviat' if applications[application_id].oidc.enabled | bool else 'ghcr.io/mailu' }}"
|
docker_source: "{{ 'ghcr.io/heviat' if applications[application_id].features.oidc | bool else 'ghcr.io/mailu' }}"
|
||||||
|
|
||||||
domain: "{{ domains[application_id] }}"
|
domain: "{{ domains[application_id] }}"
|
||||||
http_port: "{{ ports.localhost.http[application_id] }}"
|
http_port: "{{ ports.localhost.http[application_id] }}"
|
@ -52,14 +52,14 @@ SMTP_OPENSSL_VERIFY_MODE=none
|
|||||||
SMTP_ENABLE_STARTTLS=auto
|
SMTP_ENABLE_STARTTLS=auto
|
||||||
SMTP_FROM_ADDRESS=Mastodon <{{system_email.from}}>
|
SMTP_FROM_ADDRESS=Mastodon <{{system_email.from}}>
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
###################################
|
###################################
|
||||||
# OpenID Connect settings
|
# OpenID Connect settings
|
||||||
###################################
|
###################################
|
||||||
# @see https://github.com/mastodon/mastodon/pull/16221
|
# @see https://github.com/mastodon/mastodon/pull/16221
|
||||||
# @see https://stackoverflow.com/questions/72081776/how-mastodon-configured-login-using-sso
|
# @see https://stackoverflow.com/questions/72081776/how-mastodon-configured-login-using-sso
|
||||||
|
|
||||||
OIDC_ENABLED={{ applications[application_id].oidc.enabled | string | lower }}
|
OIDC_ENABLED={{ applications[application_id].features.oidc | string | lower }}
|
||||||
OIDC_DISPLAY_NAME="{{oidc.button_text}}"
|
OIDC_DISPLAY_NAME="{{oidc.button_text}}"
|
||||||
OIDC_ISSUER={{oidc.client.issuer_url}}
|
OIDC_ISSUER={{oidc.client.issuer_url}}
|
||||||
OIDC_DISCOVERY=true
|
OIDC_DISCOVERY=true
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
- name: "create {{database_name}} database"
|
- name: "create {{database_name}} database"
|
||||||
include_role:
|
include_role:
|
||||||
name: docker-postgres
|
name: docker-postgres
|
||||||
when: applications[application_id].database.central_storage | bool
|
when: applications[application_id].features.database | bool
|
||||||
|
|
||||||
- name: "include seed-database-to-backup.yml"
|
- name: "include seed-database-to-backup.yml"
|
||||||
include_tasks: "{{ playbook_dir }}/roles/backup-docker-to-local/tasks/seed-database-to-backup.yml"
|
include_tasks: "{{ playbook_dir }}/roles/backup-docker-to-local/tasks/seed-database-to-backup.yml"
|
@ -45,7 +45,7 @@ email:
|
|||||||
client_base_url: "{{domains.matrix_synapse}}"
|
client_base_url: "{{domains.matrix_synapse}}"
|
||||||
validation_token_lifetime: 15m
|
validation_token_lifetime: 15m
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled | bool %}
|
{% if applications[application_id].features.oidc | bool %}
|
||||||
# @See https://matrix-org.github.io/synapse/latest/openid.html
|
# @See https://matrix-org.github.io/synapse/latest/openid.html
|
||||||
oidc_providers:
|
oidc_providers:
|
||||||
- idp_id: keycloak
|
- idp_id: keycloak
|
||||||
|
@ -146,7 +146,7 @@ return array (
|
|||||||
//
|
//
|
||||||
// The `id` attribute in `oidc_login_attributes` must return the
|
// The `id` attribute in `oidc_login_attributes` must return the
|
||||||
// "Internal Username" (see expert settings in LDAP integration)
|
// "Internal Username" (see expert settings in LDAP integration)
|
||||||
'oidc_login_proxy_ldap' => {{applications[application_id].ldap.enabled | string | lower}},
|
'oidc_login_proxy_ldap' => {{applications[application_id].features.ldap | string | lower}},
|
||||||
|
|
||||||
// Disable creation of users new to Nextcloud from OIDC login.
|
// Disable creation of users new to Nextcloud from OIDC login.
|
||||||
// A user may be known to the IdP but not (yet) known to Nextcloud.
|
// A user may be known to the IdP but not (yet) known to Nextcloud.
|
||||||
|
@ -59,4 +59,4 @@
|
|||||||
|
|
||||||
- name: Setup LDAP
|
- name: Setup LDAP
|
||||||
include_tasks: ldap.yml
|
include_tasks: ldap.yml
|
||||||
when: applications[application_id].ldap.enabled | bool
|
when: applications[application_id].features.ldap | bool
|
@ -1,6 +1,6 @@
|
|||||||
application_id: "pgadmin"
|
application_id: "pgadmin"
|
||||||
database_type: "postgres"
|
database_type: "postgres"
|
||||||
database_host: "{{ 'central-' + database_type if applications[application_id].database.central_storage }}"
|
database_host: "{{ 'central-' + database_type if applications[application_id].features.database }}"
|
||||||
database_var_file: "{{playbook_dir}}/roles/docker-central-database/vars/database.yml"
|
database_var_file: "{{playbook_dir}}/roles/docker-central-database/vars/database.yml"
|
||||||
pgadmin_user: 5050
|
pgadmin_user: 5050
|
||||||
pgadmin_group: "{{pgadmin_user}}"
|
pgadmin_group: "{{pgadmin_user}}"
|
@ -1,3 +1,3 @@
|
|||||||
application_id: "phpmyadmin"
|
application_id: "phpmyadmin"
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
database_host: "{{ 'central-' + database_type if applications[application_id].database.central_storage}}"
|
database_host: "{{ 'central-' + database_type if applications[application_id].features.database}}"
|
@ -22,7 +22,7 @@ class LookupModule(LookupBase):
|
|||||||
- Retrieves the icon class from galaxy_info.logo.class
|
- Retrieves the icon class from galaxy_info.logo.class
|
||||||
- Retrieves the tags from galaxy_info.galaxy_tags
|
- Retrieves the tags from galaxy_info.galaxy_tags
|
||||||
- Builds the URL using the 'domains' variable (e.g. domains[application_id])
|
- Builds the URL using the 'domains' variable (e.g. domains[application_id])
|
||||||
- Sets the iframe flag from applications[application_id].landingpage_iframe_enabled
|
- Sets the iframe flag from applications[application_id].features.iframe
|
||||||
|
|
||||||
Only cards whose application_id is included in the variable group_names are returned.
|
Only cards whose application_id is included in the variable group_names are returned.
|
||||||
"""
|
"""
|
||||||
@ -98,7 +98,7 @@ class LookupModule(LookupBase):
|
|||||||
url = "https://" + domain_url if domain_url else ""
|
url = "https://" + domain_url if domain_url else ""
|
||||||
|
|
||||||
app_data = applications.get(application_id, {})
|
app_data = applications.get(application_id, {})
|
||||||
iframe = app_data.get("landingpage_iframe_enabled", False)
|
iframe = app_data.get("features", {}).get("iframe", False)
|
||||||
|
|
||||||
# Build card dictionary
|
# Build card dictionary
|
||||||
card = {
|
card = {
|
||||||
|
@ -28,7 +28,7 @@ accounts:
|
|||||||
class: fa-brands fa-mastodon
|
class: fa-brands fa-mastodon
|
||||||
url: "https://{{ service_provider.contact.mastodon.split('@')[2] }}/@{{ service_provider.contact.mastodon.split('@')[1] }}"
|
url: "https://{{ service_provider.contact.mastodon.split('@')[2] }}/@{{ service_provider.contact.mastodon.split('@')[1] }}"
|
||||||
identifier: "{{service_provider.contact.mastodon}}"
|
identifier: "{{service_provider.contact.mastodon}}"
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('mastodon') }}
|
iframe: {{ applications | get_features_iframe('mastodon') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if service_provider.contact.bluesky is defined and service_provider.contact.bluesky != "" %}
|
{% if service_provider.contact.bluesky is defined and service_provider.contact.bluesky != "" %}
|
||||||
@ -52,7 +52,7 @@ accounts:
|
|||||||
class: fa-solid fa-camera
|
class: fa-solid fa-camera
|
||||||
identifier: "{{service_provider.contact.pixelfed}}"
|
identifier: "{{service_provider.contact.pixelfed}}"
|
||||||
url: "https://{{ service_provider.contact.pixelfed.split('@')[2] }}/@{{ service_provider.contact.pixelfed.split('@')[1] }}"
|
url: "https://{{ service_provider.contact.pixelfed.split('@')[2] }}/@{{ service_provider.contact.pixelfed.split('@')[1] }}"
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('pixelfed') }}
|
iframe: {{ applications | get_features_iframe('pixelfed') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if service_provider.contact.peertube is defined and service_provider.contact.peertube != "" %}
|
{% if service_provider.contact.peertube is defined and service_provider.contact.peertube != "" %}
|
||||||
@ -64,7 +64,7 @@ accounts:
|
|||||||
class: fa-solid fa-video
|
class: fa-solid fa-video
|
||||||
identifier: "{{service_provider.contact.peertube}}"
|
identifier: "{{service_provider.contact.peertube}}"
|
||||||
url: "https://{{ service_provider.contact.peertube.split('@')[2] }}/@{{ service_provider.contact.peertube.split('@')[1] }}"
|
url: "https://{{ service_provider.contact.peertube.split('@')[2] }}/@{{ service_provider.contact.peertube.split('@')[1] }}"
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('peertube') }}
|
iframe: {{ applications | get_features_iframe('peertube') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if service_provider.contact.wordpress is defined and service_provider.contact.wordpress != "" %}
|
{% if service_provider.contact.wordpress is defined and service_provider.contact.wordpress != "" %}
|
||||||
@ -76,7 +76,7 @@ accounts:
|
|||||||
class: fa-solid fa-blog
|
class: fa-solid fa-blog
|
||||||
identifier: "{{service_provider.contact.wordpress}}"
|
identifier: "{{service_provider.contact.wordpress}}"
|
||||||
url: "https://{{ service_provider.contact.wordpress.split('@')[2] }}/@{{ service_provider.contact.wordpress.split('@')[1] }}"
|
url: "https://{{ service_provider.contact.wordpress.split('@')[2] }}/@{{ service_provider.contact.wordpress.split('@')[1] }}"
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('wordpress') }}
|
iframe: {{ applications | get_features_iframe('wordpress') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if service_provider.contact.source_code is defined and service_provider.contact.source_code != "" %}
|
{% if service_provider.contact.source_code is defined and service_provider.contact.source_code != "" %}
|
||||||
@ -98,7 +98,7 @@ accounts:
|
|||||||
class: fas fa-network-wired
|
class: fas fa-network-wired
|
||||||
identifier: "{{service_provider.contact.friendica}}"
|
identifier: "{{service_provider.contact.friendica}}"
|
||||||
url: "https://{{ service_provider.contact.friendica.split('@')[2] }}/@{{ service_provider.contact.friendica.split('@')[1] }}"
|
url: "https://{{ service_provider.contact.friendica.split('@')[2] }}/@{{ service_provider.contact.friendica.split('@')[1] }}"
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('friendica') }}
|
iframe: {{ applications | get_features_iframe('friendica') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -37,13 +37,13 @@
|
|||||||
icon:
|
icon:
|
||||||
class: fa-solid fa-shield-halved
|
class: fa-solid fa-shield-halved
|
||||||
url: https://{{domains.keycloak}}/admin
|
url: https://{{domains.keycloak}}/admin
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
|
iframe: {{ applications | get_features_iframe('keycloak') }}
|
||||||
- name: Profile
|
- name: Profile
|
||||||
description: Update your personal admin settings
|
description: Update your personal admin settings
|
||||||
icon:
|
icon:
|
||||||
class: fa-solid fa-user-gear
|
class: fa-solid fa-user-gear
|
||||||
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/account
|
url: https://{{ domains.keycloak }}/realms/{{oidc.client.id}}/account
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('keycloak') }}
|
iframe: {{ applications | get_features_iframe('keycloak') }}
|
||||||
- name: Logout
|
- name: Logout
|
||||||
description: End your admin session securely
|
description: End your admin session securely
|
||||||
icon:
|
icon:
|
||||||
@ -113,7 +113,7 @@
|
|||||||
icon:
|
icon:
|
||||||
class: fas fa-book
|
class: fas fa-book
|
||||||
url: https://{{domains.sphinx}}
|
url: https://{{domains.sphinx}}
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('sphinx') }}
|
iframe: {{ applications | get_features_iframe('sphinx') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
@ -124,7 +124,7 @@
|
|||||||
icon:
|
icon:
|
||||||
class: "fas fa-chalkboard-teacher"
|
class: "fas fa-chalkboard-teacher"
|
||||||
url: https://{{domains.presentation}}
|
url: https://{{domains.presentation}}
|
||||||
iframe: {{ applications | get_landingpage_iframe_enabled('presentation') }}
|
iframe: {{ applications | get_features_iframe('presentation') }}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ DB_DATABASE={{database_name}}
|
|||||||
DB_USERNAME={{database_username}}
|
DB_USERNAME={{database_username}}
|
||||||
DB_PASSWORD={{database_password}}
|
DB_PASSWORD={{database_password}}
|
||||||
|
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
MYSQL_ROOT_PASSWORD={{database_password}}
|
MYSQL_ROOT_PASSWORD={{database_password}}
|
||||||
DB_PREFIX=null
|
DB_PREFIX=null
|
||||||
DB_DUMP_PATH='/usr/bin'
|
DB_DUMP_PATH='/usr/bin'
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: "taiga/{{item}}.py.j2"
|
src: "taiga/{{item}}.py.j2"
|
||||||
dest: "{{ docker_compose.directories.config }}taiga-{{item}}.py"
|
dest: "{{ docker_compose.directories.config }}taiga-{{item}}.py"
|
||||||
when: applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'taigaio'
|
when: applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio'
|
||||||
notify: docker compose project build and setup
|
notify: docker compose project build and setup
|
||||||
loop: "{{ settings_files }}"
|
loop: "{{ settings_files }}"
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ services:
|
|||||||
- media-data:/taiga-back/media
|
- media-data:/taiga-back/media
|
||||||
# - ./config.py:/taiga-back/settings/config.py
|
# - ./config.py:/taiga-back/settings/config.py
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio' %}
|
||||||
|
|
||||||
- {{ docker_compose.directories.config }}taiga-local.py:/taiga-back/settings/local.py:ro
|
- {{ docker_compose.directories.config }}taiga-local.py:/taiga-back/settings/local.py:ro
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ services:
|
|||||||
condition: service_started
|
condition: service_started
|
||||||
taiga-async-rabbitmq:
|
taiga-async-rabbitmq:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
{% if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio' %}
|
||||||
|
|
||||||
command: >
|
command: >
|
||||||
/bin/sh -c "
|
/bin/sh -c "
|
||||||
@ -42,7 +42,7 @@ services:
|
|||||||
- media-data:/taiga-back/media
|
- media-data:/taiga-back/media
|
||||||
# - ./config.py:/taiga-back/settings/config.py
|
# - ./config.py:/taiga-back/settings/config.py
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio' %}
|
||||||
|
|
||||||
{% for item in settings_files %}
|
{% for item in settings_files %}
|
||||||
- {{ docker_compose.directories.config }}taiga-{{ item }}.py:/taiga-back/settings/{{ item }}.py:ro
|
- {{ docker_compose.directories.config }}taiga-{{ item }}.py:/taiga-back/settings/{{ item }}.py:ro
|
||||||
@ -57,7 +57,7 @@ services:
|
|||||||
condition: service_started
|
condition: service_started
|
||||||
taiga-async-rabbitmq:
|
taiga-async-rabbitmq:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
{% if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio' %}
|
||||||
|
|
||||||
command: >
|
command: >
|
||||||
/bin/sh -c "
|
/bin/sh -c "
|
||||||
|
@ -47,7 +47,7 @@ MAX_AGE = 360
|
|||||||
# Taiga's Telemetry - Variable to enable or disable the anonymous telemetry
|
# Taiga's Telemetry - Variable to enable or disable the anonymous telemetry
|
||||||
ENABLE_TELEMETRY = True
|
ENABLE_TELEMETRY = True
|
||||||
|
|
||||||
{% if applications[application_id].oidc.enabled %}
|
{% if applications[application_id].features.oidc %}
|
||||||
|
|
||||||
{% if applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications[application_id].oidc.flavor == 'taigaio' %}
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ docker_repository_address: "https://github.com/taigaio/taiga-docker"
|
|||||||
email_backend: "smtp" ## use an SMTP server or display the emails in the console (either "smtp" or "console")
|
email_backend: "smtp" ## use an SMTP server or display the emails in the console (either "smtp" or "console")
|
||||||
docker_compose_init: "{{docker_compose.directories.instance}}docker-compose-inits.yml.j2"
|
docker_compose_init: "{{docker_compose.directories.instance}}docker-compose-inits.yml.j2"
|
||||||
taiga_image_backend: >-
|
taiga_image_backend: >-
|
||||||
{{ 'robrotheram/taiga-back-openid' if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'robrotheram'
|
{{ 'robrotheram/taiga-back-openid' if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'robrotheram'
|
||||||
else 'taigaio/taiga-back' }}
|
else 'taigaio/taiga-back' }}
|
||||||
taiga_image_frontend: >-
|
taiga_image_frontend: >-
|
||||||
{{ 'robrotheram/taiga-front-openid' if applications[application_id].oidc.enabled and applications[application_id].oidc.flavor == 'robrotheram'
|
{{ 'robrotheram/taiga-front-openid' if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'robrotheram'
|
||||||
else 'taigaio/taiga-front' }}
|
else 'taigaio/taiga-front' }}
|
||||||
taiga_frontend_conf_path: "{{docker_compose.directories.config}}conf.json"
|
taiga_frontend_conf_path: "{{docker_compose.directories.config}}conf.json"
|
||||||
|
|
||||||
|
@ -39,4 +39,8 @@
|
|||||||
|
|
||||||
- name: "Activating OIDC when enabled."
|
- name: "Activating OIDC when enabled."
|
||||||
include_tasks: oidc.yml
|
include_tasks: oidc.yml
|
||||||
when: applications[application_id].oidc.enabled | bool
|
when: applications[application_id].features.oidc | bool
|
||||||
|
|
||||||
|
#- name: "Activating WP Discourse when enabled"
|
||||||
|
# include_tasks: wp_discourse.yml
|
||||||
|
# when: applications[application_id].wp_discourse.enabled | bool
|
||||||
|
23
roles/docker-wordpress/tasks/setup-discourse-api-key.yml
Normal file
23
roles/docker-wordpress/tasks/setup-discourse-api-key.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: "Create Discourse API key for WordPress integration"
|
||||||
|
uri:
|
||||||
|
url: "https://{{ domains.discourse }}/admin/api/keys"
|
||||||
|
method: POST
|
||||||
|
headers:
|
||||||
|
Content-Type: "application/json"
|
||||||
|
Api-Key: "{{ applications.discourse.master_api_key }}"
|
||||||
|
Api-Username: "{{ applications.discourse.master_api_username | default('admin') }}"
|
||||||
|
body_format: json
|
||||||
|
body:
|
||||||
|
key:
|
||||||
|
description: "WP Discourse Integration"
|
||||||
|
username: "system"
|
||||||
|
return_content: true
|
||||||
|
status_code: 200
|
||||||
|
register: discourse_api_key_response
|
||||||
|
when: applications.discourse.master_api_key is defined
|
||||||
|
|
||||||
|
- name: "Set fact for vault_discourse_api_key"
|
||||||
|
set_fact:
|
||||||
|
vault_discourse_api_key: "{{ discourse_api_key_response.json.key.key }}"
|
||||||
|
when: discourse_api_key_response is defined and discourse_api_key_response.json.key is defined
|
17
roles/docker-wordpress/tasks/wp_discourse.yml
Normal file
17
roles/docker-wordpress/tasks/wp_discourse.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
- name: "Install WP Discourse plugin"
|
||||||
|
command: >
|
||||||
|
docker-compose exec -u www-data -T application
|
||||||
|
wp plugin install wp-discourse --activate
|
||||||
|
--path={{ wordpress_docker_html_path }}
|
||||||
|
args:
|
||||||
|
chdir: "{{ docker_compose.directories.instance }}"
|
||||||
|
|
||||||
|
- name: "Configure WP Discourse settings"
|
||||||
|
vars:
|
||||||
|
discourse_settings_json_b64: "{{ discourse_settings | to_json | b64encode }}"
|
||||||
|
command: >
|
||||||
|
docker-compose exec -u www-data -T application bash -lc
|
||||||
|
"wp eval \"update_option('wp_discourse_options', json_decode(base64_decode('{{ discourse_settings_json_b64 }}'), true));\" --path={{ wordpress_docker_html_path }}"
|
||||||
|
args:
|
||||||
|
chdir: "{{ docker_compose.directories.instance }}"
|
10
roles/docker-wordpress/vars/wp_discourse.yml
Normal file
10
roles/docker-wordpress/vars/wp_discourse.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Defines WP Discourse plugin settings
|
||||||
|
# @see https://github.com/discourse/wp-discourse
|
||||||
|
|
||||||
|
discourse_settings:
|
||||||
|
publish_discourse_posts: true
|
||||||
|
discourse_url: "https://{{ domains.discourse }}"
|
||||||
|
discourse_api_key: "{{ applications.discourse.api_key }}"
|
||||||
|
discourse_username: "system"
|
||||||
|
discourse_use_sso: false # You can change this depending on your integration style
|
||||||
|
discourse_sso_secret: "{{ applications.wordpress.credentials.discourse_sso_secret | default('') }}"
|
2
roles/health-nginx/TODO.md
Normal file
2
roles/health-nginx/TODO.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Todo
|
||||||
|
- Implement health check for oauth2-proxy
|
@ -1,4 +1,4 @@
|
|||||||
{% if landingpage_iframe_enabled | default(applications.get(application_id).get('landingpage_iframe_enabled')) | bool %}
|
{% if applications.get(application_id, {}).get('features', {}).get('iframe', False) %}
|
||||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||||
add_header Content-Security-Policy "frame-ancestors 'self' {{primary_domain}};" always;
|
add_header Content-Security-Policy "frame-ancestors 'self' {{primary_domain}};" always;
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
- name: "Activate Global CSS for {{domain}}"
|
- name: "Activate Global CSS for {{domain}}"
|
||||||
include_role:
|
include_role:
|
||||||
name: nginx-modifier-css
|
name: nginx-modifier-css
|
||||||
when: applications.get(application_id).get('css_enabled') | bool
|
when: applications.get(application_id).get('features').get('css') | bool
|
||||||
|
|
||||||
- name: "Activate Global Matomo Tracking for {{domain}}"
|
- name: "Activate Global Matomo Tracking for {{domain}}"
|
||||||
include_role:
|
include_role:
|
||||||
name: nginx-modifier-matomo
|
name: nginx-modifier-matomo
|
||||||
when: applications.get(application_id).get('matomo_tracking_enabled') | bool
|
when: applications.get(application_id).get('features').get('matomo') | bool
|
@ -2,20 +2,20 @@
|
|||||||
sub_filter_once off;
|
sub_filter_once off;
|
||||||
sub_filter_types text/html;
|
sub_filter_types text/html;
|
||||||
|
|
||||||
{% set css_enabled_final = applications.get(application_id).get('css_enabled') | bool %}
|
{% set features_css_final = applications.get(application_id).get('features').get('css') | bool %}
|
||||||
{% set matomo_tracking_enabled_final = applications.get(application_id).get('matomo_tracking_enabled') | bool %}
|
{% set features_matomo_final = applications.get(application_id).get('features').get('matomo') | bool %}
|
||||||
|
|
||||||
|
|
||||||
{% if matomo_tracking_enabled_final | bool %}
|
{% if features_matomo_final | bool %}
|
||||||
{# Include Global Matomo Tracking #}
|
{# Include Global Matomo Tracking #}
|
||||||
{% include 'roles/nginx-modifier-matomo/templates/matomo-tracking.conf.j2' %}
|
{% include 'roles/nginx-modifier-matomo/templates/matomo-tracking.conf.j2' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if css_enabled_final | bool or matomo_tracking_enabled_final | bool %}
|
{% if features_css_final | bool or features_matomo_final | bool %}
|
||||||
sub_filter '</head>' '{% if matomo_tracking_enabled_final | bool %}{% include 'roles/nginx-modifier-matomo/templates/script.j2' %}{% endif %}{% if css_enabled_final | bool %}{% include 'roles/nginx-modifier-css/templates/link.j2' %}{% endif %}</head>';
|
sub_filter '</head>' '{% if features_matomo_final | bool %}{% include 'roles/nginx-modifier-matomo/templates/script.j2' %}{% endif %}{% if features_css_final | bool %}{% include 'roles/nginx-modifier-css/templates/link.j2' %}{% endif %}</head>';
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if css_enabled_final | bool %}
|
{% if features_css_final | bool %}
|
||||||
{# Include Global CSS Location #}
|
{# Include Global CSS Location #}
|
||||||
{% include 'roles/nginx-modifier-css/templates/location.conf.j2' %}
|
{% include 'roles/nginx-modifier-css/templates/location.conf.j2' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
uri:
|
uri:
|
||||||
url: "https://{{ domains.matomo }}/index.php"
|
url: "https://{{ domains.matomo }}/index.php"
|
||||||
method: POST
|
method: POST
|
||||||
body: "module=API&method=SitesManager.addSite&siteName={{ base_domain }}&urls=https://{{ base_domain }}&token_auth={{ applications.matomo.auth_token }}&format=json"
|
body: "module=API&method=SitesManager.addSite&siteName={{ base_domain }}&urls=https://{{ base_domain }}&token_auth={{ applications.matomo.credentials.auth_token }}&format=json"
|
||||||
body_format: form-urlencoded
|
body_format: form-urlencoded
|
||||||
status_code: 200
|
status_code: 200
|
||||||
return_content: yes
|
return_content: yes
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
base_domain: "{{ domain | regex_replace('^(?:.*\\.)?(.+\\..+)$', '\\1') }}"
|
base_domain: "{{ domain | regex_replace('^(?:.*\\.)?(.+\\..+)$', '\\1') }}"
|
||||||
verification_url: "https://{{domains.matomo}}/index.php?module=API&method=SitesManager.getSitesIdFromSiteUrl&url=https://{{base_domain}}&format=json&token_auth={{applications.matomo.auth_token}}"
|
verification_url: "https://{{domains.matomo}}/index.php?module=API&method=SitesManager.getSitesIdFromSiteUrl&url=https://{{base_domain}}&format=json&token_auth={{applications.matomo.credentials.auth_token}}"
|
@ -32,6 +32,20 @@
|
|||||||
set_fact:
|
set_fact:
|
||||||
applications: "{{ defaults_applications | combine(applications | default({}, true), recursive=True) }}"
|
applications: "{{ defaults_applications | combine(applications | default({}, true), recursive=True) }}"
|
||||||
|
|
||||||
|
# @todo implement
|
||||||
|
# - name: Ensure features.integrated is set based on group membership
|
||||||
|
# set_fact:
|
||||||
|
# applications: "{{ applications | combine({ item.key: updated_app }, recursive=True) }}"
|
||||||
|
# vars:
|
||||||
|
# original_app: "{{ applications[item.key] | default({}) }}"
|
||||||
|
# original_features: "{{ original_app.features | default({}) }}"
|
||||||
|
# needs_integration: original_features.integrated is not defined
|
||||||
|
# updated_features: >-
|
||||||
|
# {{ original_features | combine({'integrated': (item.key in group_names)}) if needs_integration else original_features }}
|
||||||
|
# updated_app: >-
|
||||||
|
# {{ original_app | combine({'features': updated_features}) }}
|
||||||
|
# loop: "{{ applications | dict2items }}"
|
||||||
|
|
||||||
- name: Merge networks definitions
|
- name: Merge networks definitions
|
||||||
set_fact:
|
set_fact:
|
||||||
networks: "{{ defaults_networks | combine(networks | default({}, true), recursive=True) }}"
|
networks: "{{ defaults_networks | combine(networks | default({}, true), recursive=True) }}"
|
||||||
|
@ -4,7 +4,7 @@ networks:
|
|||||||
central_{{ database_type }}:
|
central_{{ database_type }}:
|
||||||
external: true
|
external: true
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if applications[application_id].get('ldap', {}).get('enabled', false) | bool and applications.ldap.network.local | bool %}
|
{% if applications[application_id].get('features', {}).get('ldap', false) | bool and applications.ldap.network.local | bool %}
|
||||||
central_ldap:
|
central_ldap:
|
||||||
external: true
|
external: true
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{# This needs to be included in docker-compose.yml which just contain a database volume #}
|
{# This needs to be included in docker-compose.yml which just contain a database volume #}
|
||||||
{% if not (applications[application_id].database.central_storage | default(false)) | bool %}
|
{% if not (applications[application_id].features.database | default(false)) | bool %}
|
||||||
volumes:
|
volumes:
|
||||||
database:
|
database:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{# This template needs to be included in docker-compose.yml which contain a database and additional volumes #}
|
{# This template needs to be included in docker-compose.yml which contain a database and additional volumes #}
|
||||||
volumes:
|
volumes:
|
||||||
{% if not (applications[application_id].database.central_storage | default(false)) | bool %}
|
{% if not (applications[application_id].features.database | default(false)) | bool %}
|
||||||
database:
|
database:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ "\n" }}
|
{{ "\n" }}
|
@ -1,6 +1,6 @@
|
|||||||
{# This template needs to be included in docker-compose.yml containers which depend on a database and additional containers #}
|
{# This template needs to be included in docker-compose.yml containers which depend on a database and additional containers #}
|
||||||
depends_on:
|
depends_on:
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
database:
|
database:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{# This template needs to be included in docker-compose.yml containers, which depend on a database, redis and optional additional volumes #}
|
{# This template needs to be included in docker-compose.yml containers, which depend on a database, redis and optional additional volumes #}
|
||||||
depends_on:
|
depends_on:
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
database:
|
database:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{# This template needs to be included in docker-compose.yml containers, which just depend on a database #}
|
{# This template needs to be included in docker-compose.yml containers, which just depend on a database #}
|
||||||
{% if not applications[application_id].database.central_storage | bool %}
|
{% if not applications[application_id].features.database | bool %}
|
||||||
depends_on:
|
depends_on:
|
||||||
database:
|
database:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{% if applications | get_database_central_storage(application_id) | bool and database_type is defined %}
|
{% if applications | get_database_central_storage(application_id) | bool and database_type is defined %}
|
||||||
central_{{ database_type }}:
|
central_{{ database_type }}:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if applications[application_id].get('ldap', {}).get('enabled', false)|bool and applications.ldap.network.local|bool %}
|
{% if applications[application_id].get('features', {}).get('ldap', false) | bool and applications.ldap.network.local|bool %}
|
||||||
central_ldap:
|
central_ldap:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
default:
|
default:
|
||||||
|
826
templates/vars/applications.yml.j2
Normal file
826
templates/vars/applications.yml.j2
Normal file
@ -0,0 +1,826 @@
|
|||||||
|
{% import "features.yml.j2" as features %}{% raw %}
|
||||||
|
# Docker Applications
|
||||||
|
|
||||||
|
## Docker Role Specific Parameters
|
||||||
|
docker_restart_policy: "unless-stopped"
|
||||||
|
|
||||||
|
##############################################
|
||||||
|
## Applications Configuration
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
# Keep in mind, that this configuration should in general just apply to the roles which set the applications up.
|
||||||
|
# If other applications depend on this variables, propably it makes sense to define it in e.g. IMA or other variable files.
|
||||||
|
|
||||||
|
# helper
|
||||||
|
_applications_nextcloud_oidc_flavor: "{{ applications.nextcloud.oidc.flavor | default('oidc_login' if applications.nextcloud.features.ldap | default(true) else 'sociallogin') }}"
|
||||||
|
|
||||||
|
# applications
|
||||||
|
|
||||||
|
defaults_applications:
|
||||||
|
|
||||||
|
## Akaunting
|
||||||
|
akaunting:
|
||||||
|
version: "latest"
|
||||||
|
company_name: "{{primary_domain}}"
|
||||||
|
company_email: "{{users.administrator.email}}"
|
||||||
|
setup_admin_email: "{{users.administrator.email}}"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Assets Server
|
||||||
|
assets_server:
|
||||||
|
source_directory: "{{ playbook_dir }}/assets" # Directory from which the assets will be copied
|
||||||
|
url: "https://{{domains.file_server}}/assets" # Public address of the assets directory
|
||||||
|
## Attendize
|
||||||
|
attendize:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Baserow
|
||||||
|
baserow:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Big Blue Button
|
||||||
|
bigbluebutton:
|
||||||
|
enable_greenlight: "true"
|
||||||
|
setup: false # Set to true in inventory file for initial setup
|
||||||
|
# @todo LDAP needs to get propper implemented and tested, just set values during refactoring
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'ldap': false,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
credentials:
|
||||||
|
# shared_secret: # Needs to be defined in inventory file
|
||||||
|
# etherpad_api_key: # Needs to be defined in inventory file
|
||||||
|
# rails_secret: # Needs to be defined in inventory file
|
||||||
|
# postgresql_secret: # Needs to be defined in inventory file
|
||||||
|
# fsesl_password: # Needs to be defined in inventory file
|
||||||
|
# turn_secret: # Needs to be defined in inventory file
|
||||||
|
urls:
|
||||||
|
api: "https://{{domains.bigbluebutton}}/bigbluebutton/" # API Address used by Nextcloud Integration
|
||||||
|
|
||||||
|
## Bluesky
|
||||||
|
bluesky:
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
email: "{{users.administrator.email}}"
|
||||||
|
pds:
|
||||||
|
version: "latest"
|
||||||
|
#jwt_secret: # Needs to be defined in inventory file - Use: openssl rand -base64 64 | tr -d '\n'
|
||||||
|
#plc_rotation_key_k256_private_key_hex: # Needs to be defined in inventory file - Use: openssl rand -hex 32
|
||||||
|
#admin_password: # Needs to be defined in inventory file - Use: openssl rand -base64 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
# Chromium Browser
|
||||||
|
chromium:
|
||||||
|
plugins: # Plugins to be installed in Chromium
|
||||||
|
- "cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx" # U-Block Origine Plugin
|
||||||
|
- "oboonakemofpalcgghocfoadofidjkkk;https://clients2.google.com/service/update2/crx" # KeepassXC Plugin
|
||||||
|
|
||||||
|
coturn: # @todo implement
|
||||||
|
credentials:
|
||||||
|
user: turnuser
|
||||||
|
# password: # Need to be defined in invetory file
|
||||||
|
# secret: # Need to be defined in invetory file
|
||||||
|
|
||||||
|
## Discourse:
|
||||||
|
discourse:
|
||||||
|
network: "discourse_default" # Name of the docker network
|
||||||
|
container: "discourse_application" # Name of the container application
|
||||||
|
repository: "discourse_repository" # Name of the repository folder
|
||||||
|
credentials:
|
||||||
|
database:
|
||||||
|
# password: # Needs to be defined in inventory file
|
||||||
|
master_api:
|
||||||
|
# key: # Needs to be defined in inventory file
|
||||||
|
username: "{{ users.administrator.username }}" # Username for the Master API
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## File Server
|
||||||
|
file_server:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
# Firefox Browser
|
||||||
|
firefox:
|
||||||
|
plugins: # Plugins to be installed in Firefox
|
||||||
|
- "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # U-Block Origine Plugin
|
||||||
|
- "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi" # KeepassXC Plugin
|
||||||
|
|
||||||
|
## Friendica
|
||||||
|
friendica:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Funkwhale
|
||||||
|
funkwhale:
|
||||||
|
version: "1.4.0"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'ldap': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Gitea
|
||||||
|
gitea:
|
||||||
|
version: "latest" # Use latest docker image
|
||||||
|
configuration:
|
||||||
|
repository:
|
||||||
|
enable_push_create_user: True # Allow users to push local repositories to Gitea and have them automatically created for a user.
|
||||||
|
default_private: last # Default private when creating a new repository: last, private, public
|
||||||
|
default_push_create_private: True # Default private when creating a new repository with push-to-create.
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Gitlab
|
||||||
|
gitlab:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Gnome
|
||||||
|
gnome:
|
||||||
|
plugins:
|
||||||
|
- [enable,nasa_apod@elinvention.ovh,https://github.com/Elinvention/gnome-shell-extension-nasa-apod.git]
|
||||||
|
- [disable,dash-to-dock@micxgx.gmail.com,'']
|
||||||
|
- [enable, dash-to-panel@jderose9.github.com,'']
|
||||||
|
|
||||||
|
## Joomla
|
||||||
|
joomla:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## HTML Server
|
||||||
|
html_server:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Keycloak
|
||||||
|
keycloak:
|
||||||
|
version: "latest"
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}" # Administrator Username for Keycloak
|
||||||
|
import_realm: True # If True realm will be imported. If false skip.
|
||||||
|
# database_password: # Needs to be defined in inventory file
|
||||||
|
# administrator_password: # Needs to be defined in inventory file
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'ldap': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
# LDAP Account Manager
|
||||||
|
lam:
|
||||||
|
version: "latest"
|
||||||
|
# administrator_password: "{{users.administrator.initial_password}}" # CHANGE for security reasons
|
||||||
|
oauth2_proxy:
|
||||||
|
application: application # Needs to be the same as webinterface
|
||||||
|
port: 80 # application port
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'ldap': true,
|
||||||
|
'database': false,
|
||||||
|
'oauth2': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## LDAP
|
||||||
|
ldap:
|
||||||
|
version: "latest"
|
||||||
|
network:
|
||||||
|
local: True # Activates local network to allow other docker containers to connect
|
||||||
|
public: False # Set to true in inventory file if you want to expose the LDAP port to the internet
|
||||||
|
hostname: "ldap" # Hostname of the LDAP Server in the central_ldap network
|
||||||
|
webinterface: "lam" # The webinterface which should be used. Possible: lam and phpldapadmin
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}" # Administrator username
|
||||||
|
# administrator_password: # CHANGE for security reasons in inventory file
|
||||||
|
# administrator_database_password: # CHANGE for security reasons in inventory file
|
||||||
|
force_import: False # Forces the import of the LDIF files
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'ldap': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Libre Office
|
||||||
|
libreoffice:
|
||||||
|
flavor: "fresh" # Libre Office flavor, fresh for new, still for stable
|
||||||
|
|
||||||
|
## Listmonk
|
||||||
|
listmonk:
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}" # Listmonk administrator account username
|
||||||
|
public_api_activated: False # Security hole. Can be used for spaming
|
||||||
|
version: "latest" # Docker Image version
|
||||||
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
mailu:
|
||||||
|
version: "2024.06" # Docker Image Version
|
||||||
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
|
oidc:
|
||||||
|
email_by_username: true # If true, then the mail is set by the username. If wrong then the OIDC user email is used
|
||||||
|
enable_user_creation: true # Users will be created if not existing
|
||||||
|
domain: "{{primary_domain}}" # The main domain from which mails will be send \ email suffix behind @
|
||||||
|
credentials:
|
||||||
|
# secret_key: # Set to a randomly generated 16 bytes string
|
||||||
|
# database_password: # Needs to be set in inventory file
|
||||||
|
# api_token: # Configures the authentication token. The minimum length is 3 characters. This is a mandatory setting for using the RESTful API.
|
||||||
|
# initial_administrator_password: # Initial administrator password for setup
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
'oidc': true,
|
||||||
|
'database': false
|
||||||
|
}) }}{% raw %}
|
||||||
|
# Deactivate central database for mailu, I don't know why the database deactivation is necessary
|
||||||
|
|
||||||
|
## MariaDB
|
||||||
|
mariadb:
|
||||||
|
version: "latest"
|
||||||
|
|
||||||
|
## Matomo
|
||||||
|
matomo:
|
||||||
|
version: "latest"
|
||||||
|
oauth2_proxy:
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
# database_password: Null # Needs to be set in inventory file
|
||||||
|
# auth_token: Null # Needs to be set in inventory file
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': false,
|
||||||
|
'css': false,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
'oauth2': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Mastodon
|
||||||
|
mastodon:
|
||||||
|
version: "latest"
|
||||||
|
single_user_mode: false # Set true for initial setup
|
||||||
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
|
credentials:
|
||||||
|
# Check out the README.md of the docker-mastodon role to get detailled instructions about how to setup the credentials
|
||||||
|
# database_password:
|
||||||
|
# secret_key_base:
|
||||||
|
# otp_secret:
|
||||||
|
# vapid:
|
||||||
|
# private_key:
|
||||||
|
# public_key:
|
||||||
|
# active_record_encryption:
|
||||||
|
# deterministic_key:
|
||||||
|
# key_derivation_salt:
|
||||||
|
# primary_key:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Matrix
|
||||||
|
matrix:
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}" # Accountname of the matrix admin
|
||||||
|
playbook_tags: "setup-all,start" # For the initial update use: install-all,ensure-matrix-users-created,start
|
||||||
|
role: "compose" # Role to setup Matrix. Valid values: ansible, compose
|
||||||
|
server_name: "{{primary_domain}}" # Adress for the account names etc.
|
||||||
|
synapse:
|
||||||
|
version: "latest"
|
||||||
|
element:
|
||||||
|
version: "latest"
|
||||||
|
setup: false # Set true in inventory file to execute the setup and initializing procedures
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'oidc': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
# Deactivated OIDC due to this issue https://github.com/matrix-org/synapse/issues/10492
|
||||||
|
|
||||||
|
## Moodle
|
||||||
|
moodle:
|
||||||
|
site_titel: "Global Learning Academy on {{primary_domain}}"
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}"
|
||||||
|
email: "{{users.administrator.email}}"
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## MyBB
|
||||||
|
mybb:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Nextcloud
|
||||||
|
nextcloud:
|
||||||
|
version: "production" # @see https://nextcloud.com/blog/nextcloud-release-channels-and-how-to-track-them/
|
||||||
|
ldap:
|
||||||
|
enabled: True # Enables LDAP by default
|
||||||
|
oidc:
|
||||||
|
enabled: "{{ applications.nextcloud.features.oidc | default(true) }}" # Activate OIDC for Nextcloud
|
||||||
|
# floavor decides which OICD plugin should be used.
|
||||||
|
# Available options: oidc_login, sociallogin
|
||||||
|
# @see https://apps.nextcloud.com/apps/oidc_login
|
||||||
|
# @see https://apps.nextcloud.com/apps/sociallogin
|
||||||
|
flavor: "oidc_login" # Keeping on sociallogin because the other option is not implemented yet
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'ldap': true,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
credentials:
|
||||||
|
# database_password: Null # Needs to be set in inventory file
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}"
|
||||||
|
initial_password: "{{users.administrator.initial_password}}" # Keep in mind to change the password fast after creation and activate 2FA
|
||||||
|
default_quota: '1000000000' # Quota to assign if no quota is specified in the OIDC response (bytes)
|
||||||
|
legacy_login_mask:
|
||||||
|
enabled: False # If true, then legacy login mask is shown. Otherwise just SSO
|
||||||
|
container:
|
||||||
|
application: "nextcloud-application" # Nextcloud application container name
|
||||||
|
proxy: "nextcloud-web" # Nextcloud Proxy Container Name
|
||||||
|
performance:
|
||||||
|
php:
|
||||||
|
memory_limit: "{{ ((ansible_memtotal_mb | int) / 30)|int }}M" # Dynamic set memory limit
|
||||||
|
upload_limit: "5G" # Set upload limit to 5GB for big media files
|
||||||
|
opcache_memory_consumption: "{{ ((ansible_memtotal_mb | int) / 30)|int }}M" # Dynamic set memory consumption
|
||||||
|
plugins:
|
||||||
|
# List for Nextcloud Plugin Routine
|
||||||
|
# Decides if plugins should be activated or deactivated
|
||||||
|
appointments:
|
||||||
|
# Nextcloud appointments: handles scheduling and appointment management (https://apps.nextcloud.com/apps/appointments)
|
||||||
|
enabled: true
|
||||||
|
bbb:
|
||||||
|
# Nextcloud BigBlueButton integration: enables video conferencing using BigBlueButton (https://apps.nextcloud.com/apps/bbb)
|
||||||
|
enabled: "{{ 'bigbluebutton' in group_names | lower }}"
|
||||||
|
#- bookmarks
|
||||||
|
# # Nextcloud Bookmarks: manage and share your bookmarks easily (https://apps.nextcloud.com/apps/bookmarks)
|
||||||
|
# enabled: false
|
||||||
|
calendar:
|
||||||
|
# Nextcloud calendar: manages calendar events and scheduling (https://apps.nextcloud.com/apps/calendar)
|
||||||
|
enabled: true
|
||||||
|
cfg_share_links:
|
||||||
|
# Nextcloud share links configuration: customizes sharing settings and link options (https://apps.nextcloud.com/apps/cfg_share_links)
|
||||||
|
enabled: true
|
||||||
|
collectives:
|
||||||
|
# Nextcloud collectives: supports collaborative group management and sharing (https://apps.nextcloud.com/apps/collectives)
|
||||||
|
enabled: true
|
||||||
|
contacts:
|
||||||
|
# Nextcloud contacts: manages address book and contact information (https://apps.nextcloud.com/apps/contacts)
|
||||||
|
enabled: true
|
||||||
|
cospend:
|
||||||
|
# Nextcloud cospend: manages shared expenses and spending tracking (https://apps.nextcloud.com/apps/cospend)
|
||||||
|
enabled: true
|
||||||
|
deck:
|
||||||
|
# Nextcloud Deck: organizes tasks and projects using Kanban boards (https://apps.nextcloud.com/apps/deck)
|
||||||
|
# When Taiga is activated, this plugin is deactivated, because Taiga is the prefered application.
|
||||||
|
enabled: "{{ 'taiga' not in group_names | lower }}"
|
||||||
|
drawio:
|
||||||
|
# Nextcloud draw.io: integrates diagram creation and editing tools (https://apps.nextcloud.com/apps/drawio)
|
||||||
|
enabled: true
|
||||||
|
duplicatefinder:
|
||||||
|
# Nextcloud duplicate finder: scans and identifies duplicate files (https://apps.nextcloud.com/apps/duplicatefinder)
|
||||||
|
enabled: true
|
||||||
|
emlviewer:
|
||||||
|
# Nextcloud EML Viewer: previews and manages EML email files (https://apps.nextcloud.com/apps/emlviewer)
|
||||||
|
enabled: true
|
||||||
|
event_update_notification:
|
||||||
|
# Nextcloud event update notification: sends alerts when events are updated (https://apps.nextcloud.com/apps/event_update_notification)
|
||||||
|
enabled: true
|
||||||
|
epubviewer:
|
||||||
|
# Nextcloud EPUB Viewer: enables reading and previewing EPUB e-books (https://apps.nextcloud.com/apps/epubviewer)
|
||||||
|
enabled: true
|
||||||
|
external:
|
||||||
|
# Nextcloud External: Adds links to external services (https://apps.nextcloud.com/apps/external)
|
||||||
|
enabled: true
|
||||||
|
#files_accesscontrol
|
||||||
|
# # Nextcloud Files Access Control: restricts file access based on defined rules (https://apps.nextcloud.com/apps/files_accesscontrol)
|
||||||
|
# enabled: false
|
||||||
|
#files_archive
|
||||||
|
# # Nextcloud Files Archive: compresses and archives files for efficient storage (https://apps.nextcloud.com/apps/files_archive)
|
||||||
|
# enabled: false
|
||||||
|
#files_automatedtagging
|
||||||
|
# # Nextcloud Files Automated Tagging: automatically tags files to improve organization (https://apps.nextcloud.com/apps/files_automatedtagging)
|
||||||
|
# enabled: false
|
||||||
|
files_bpm:
|
||||||
|
# Nextcloud Files BPM: integrates business process management for file workflows (https://apps.nextcloud.com/apps/files_bpm)
|
||||||
|
enabled: true
|
||||||
|
files_downloadactivity:
|
||||||
|
# Nextcloud Files Download Activity: tracks and logs file download events (https://apps.nextcloud.com/apps/files_downloadactivity)
|
||||||
|
enabled: true
|
||||||
|
files_linkeditor:
|
||||||
|
# Nextcloud files link editor: allows customization of shared file links (https://apps.nextcloud.com/apps/files_linkeditor)
|
||||||
|
enabled: true
|
||||||
|
files_mindmap:
|
||||||
|
# Nextcloud Files Mindmap: visualizes file relationships as mind maps (https://apps.nextcloud.com/apps/files_mindmap)
|
||||||
|
enabled: true
|
||||||
|
files_texteditor:
|
||||||
|
# Nextcloud Files Text Editor: provides an online editor for text files (https://apps.nextcloud.com/apps/files_texteditor)
|
||||||
|
# Not available for Nextcloud < 27
|
||||||
|
enabled: false
|
||||||
|
fileslibreofficeedit:
|
||||||
|
# Nextcloud LibreOffice integration: allows online editing of documents with LibreOffice (https://apps.nextcloud.com/apps/fileslibreofficeedit)
|
||||||
|
enabled: true
|
||||||
|
forms:
|
||||||
|
# Nextcloud forms: facilitates creation of forms and surveys (https://apps.nextcloud.com/apps/forms)
|
||||||
|
enabled: true
|
||||||
|
gestion:
|
||||||
|
# Nextcloud Gestion: manages administrative tasks and workflows (https://apps.nextcloud.com/apps/gestion)
|
||||||
|
enabled: true
|
||||||
|
groupfolders:
|
||||||
|
# Nextcloud Group Folders: centralizes shared folders for group collaboration (https://apps.nextcloud.com/apps/groupfolders)
|
||||||
|
enabled: true
|
||||||
|
gpxpod:
|
||||||
|
# Nextcloud GPX pod: visualizes GPS tracks and GPX data (https://apps.nextcloud.com/apps/gpxpod)
|
||||||
|
enabled: true
|
||||||
|
integration_discourse:
|
||||||
|
# Nextcloud Integration Discourse: connects Nextcloud with Discourse forums (https://apps.nextcloud.com/apps/integration_discourse)
|
||||||
|
enabled: false
|
||||||
|
integration_gitlab:
|
||||||
|
# Nextcloud Integration GitLab: connects Nextcloud with GitLab repositories (https://apps.nextcloud.com/apps/integration_gitlab)
|
||||||
|
enabled: "{{ 'gitlab' in group_names | lower }}"
|
||||||
|
integration_github:
|
||||||
|
# Nextcloud Integration GitHub: integrates GitHub repositories with Nextcloud (https://apps.nextcloud.com/apps/integration_github)
|
||||||
|
enabled: false
|
||||||
|
integration_google:
|
||||||
|
# Nextcloud Integration Google: connects Google services with Nextcloud (https://apps.nextcloud.com/apps/integration_google)
|
||||||
|
enabled: true
|
||||||
|
integration_mastodon:
|
||||||
|
# Nextcloud Integration Mastodon: connects Nextcloud with the Mastodon social network (https://apps.nextcloud.com/apps/integration_mastodon)
|
||||||
|
enabled: "{{ 'mastodon' in group_names | lower }}"
|
||||||
|
integration_openai:
|
||||||
|
# Nextcloud Integration OpenAI: brings OpenAI functionalities into Nextcloud (https://apps.nextcloud.com/apps/integration_openai)
|
||||||
|
enabled: false
|
||||||
|
integration_openproject:
|
||||||
|
# Nextcloud Integration OpenProject: integrates project management features from OpenProject (https://apps.nextcloud.com/apps/integration_openproject)
|
||||||
|
enabled: "{{ 'openproject' in group_names | lower }}"
|
||||||
|
integration_peertube:
|
||||||
|
# Nextcloud Integration PeerTube: connects to PeerTube for video sharing (https://apps.nextcloud.com/apps/integration_peertube)
|
||||||
|
enabled: "{{ 'peertube' in group_names | lower }}"
|
||||||
|
#keeweb
|
||||||
|
# # Nextcloud KeeWeb: integrates the KeeWeb password manager within Nextcloud (https://apps.nextcloud.com/apps/keeweb)
|
||||||
|
# # This isn't maintained anymore. The alternatives don't support keepass files
|
||||||
|
# enabled: false
|
||||||
|
keeporsweep:
|
||||||
|
# Nextcloud keep or sweep: helps manage and clean up files and data (https://apps.nextcloud.com/apps/keeporsweep)
|
||||||
|
enabled: true
|
||||||
|
mail:
|
||||||
|
# Nextcloud mail: integrated email client for managing mail accounts (https://apps.nextcloud.com/apps/mail)
|
||||||
|
enabled: true
|
||||||
|
maps:
|
||||||
|
# Nextcloud maps: provides mapping and location services integration (https://apps.nextcloud.com/apps/maps)
|
||||||
|
enabled: true
|
||||||
|
metadata:
|
||||||
|
# Nextcloud Metadata: manages and displays file metadata for enhanced organization (https://apps.nextcloud.com/apps/metadata)
|
||||||
|
enabled: true
|
||||||
|
news:
|
||||||
|
# Nextcloud News: aggregates and displays news feeds directly in Nextcloud (https://apps.nextcloud.com/apps/news)
|
||||||
|
enabled: true
|
||||||
|
oidc_login:
|
||||||
|
# Nextcloud User OIDC: integrates OpenID Connect for user authentication (https://apps.nextcloud.com/apps/oidc_login)
|
||||||
|
enabled: "{{ _applications_nextcloud_oidc_flavor=='oidc_login' | lower }}"
|
||||||
|
incompatible_plugins:
|
||||||
|
- user_oidc # Will be disabled
|
||||||
|
- sociallogin # Will be disabled
|
||||||
|
phonetrack:
|
||||||
|
# Nextcloud phone track: tracks and monitors mobile device usage (https://apps.nextcloud.com/apps/phonetrack)
|
||||||
|
enabled: true
|
||||||
|
polls:
|
||||||
|
# Nextcloud polls: facilitates creation and management of user polls (https://apps.nextcloud.com/apps/polls)
|
||||||
|
enabled: true
|
||||||
|
quota_warning:
|
||||||
|
# Nextcloud quota warning: notifies users when storage limits are reached (https://apps.nextcloud.com/apps/quota_warning)
|
||||||
|
enabled: true
|
||||||
|
recognize:
|
||||||
|
# Nextcloud recognize: performs image recognition tasks (https://apps.nextcloud.com/apps/recognize)
|
||||||
|
enabled: false # Deactivated because it let to bugs
|
||||||
|
richdocuments:
|
||||||
|
# Nextcloud Rich Documents: provides collaborative document editing capabilities (https://apps.nextcloud.com/apps/richdocuments)
|
||||||
|
enabled: false # @todo To set it default to true activate https://hub.docker.com/r/collabora/code before
|
||||||
|
sociallogin:
|
||||||
|
# Nextcloud social login: allows authentication using social networks (https://apps.nextcloud.com/apps/sociallogin)
|
||||||
|
enabled: "{{ _applications_nextcloud_oidc_flavor=='sociallogin' | lower }}"
|
||||||
|
incompatible_plugins:
|
||||||
|
- user_oidc # Will be disabled
|
||||||
|
- oidc_login # Will be disabled
|
||||||
|
spreed:
|
||||||
|
# Nextcloud Spreed: offers video conferencing and chat functionalities (https://apps.nextcloud.com/apps/spreed)
|
||||||
|
enabled: false # @todo to activate it first implement docker-coturn and activate it
|
||||||
|
tables:
|
||||||
|
# Nextcloud tables: allows creation and editing of tables within the interface (https://apps.nextcloud.com/apps/tables)
|
||||||
|
enabled: true
|
||||||
|
tasks:
|
||||||
|
# Nextcloud tasks: manages personal or group tasks and to-do lists (https://apps.nextcloud.com/apps/tasks)
|
||||||
|
enabled: true
|
||||||
|
#terms_of_service
|
||||||
|
# # Nextcloud Terms of Service: manages user acceptance of terms and conditions (https://apps.nextcloud.com/apps/terms_of_service)
|
||||||
|
# enabled: false
|
||||||
|
twofactor_nextcloud_notification:
|
||||||
|
# Nextcloud two-factor notification: sends notifications for two-factor authentication events (https://apps.nextcloud.com/apps/twofactor_nextcloud_notification)
|
||||||
|
enabled: "{{ not applications.nextcloud.features.oidc | default(true) }}" # Deactivate 2FA if oidc is active
|
||||||
|
twofactor_totp:
|
||||||
|
# Nextcloud two-factor TOTP: provides time-based one-time password authentication (https://apps.nextcloud.com/apps/twofactor_totp)
|
||||||
|
enabled: "{{ not applications.nextcloud.features.oidc | default(true) }}" # Deactivate 2FA if oidc is active
|
||||||
|
user_ldap:
|
||||||
|
# Nextcloud user LDAP: integrates LDAP for user management and authentication (https://apps.nextcloud.com/apps/user_ldap)
|
||||||
|
enabled: "{{ applications.nextcloud.features.ldap | default(true) }}"
|
||||||
|
user_oidc:
|
||||||
|
# Nextcloud User OIDC: integrates OpenID Connect for user authentication (https://apps.nextcloud.com/apps/user_oidc)
|
||||||
|
enabled: "{{ _applications_nextcloud_oidc_flavor=='user_oidc' | lower }}"
|
||||||
|
incompatible_plugins:
|
||||||
|
- oidc_login
|
||||||
|
- sociallogin
|
||||||
|
whiteboard:
|
||||||
|
# Nextcloud Whiteboard: provides a collaborative drawing and brainstorming tool (https://apps.nextcloud.com/apps/whiteboard)
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## OAuth2 Proxy
|
||||||
|
oauth2_proxy:
|
||||||
|
configuration_file: "oauth2-proxy-keycloak.cfg" # Needs to be set true in the roles which use it
|
||||||
|
version: "latest" # Docker Image version
|
||||||
|
redirect_url: "https://{{domains.keycloak}}/auth/realms/{{primary_domain}}/protocol/openid-connect/auth" # The redirect URL for the OAuth2 flow. It should match the redirect URL configured in Keycloak.
|
||||||
|
allowed_roles: admin # Restrict it default to admin role. Use the vars/main.yml to open the specific role for other groups
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Open Project
|
||||||
|
openproject:
|
||||||
|
version: "13" # Update when available. Sadly no rolling release implemented
|
||||||
|
oauth2_proxy:
|
||||||
|
application: "proxy"
|
||||||
|
port: "80"
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
ldap:
|
||||||
|
filters:
|
||||||
|
administrators: True # Set true to filter administrators
|
||||||
|
users: False # Set true to filter users
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'ldap': true,
|
||||||
|
'database': true,
|
||||||
|
'oauth2': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Peertube
|
||||||
|
peertube:
|
||||||
|
version: "bookworm"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## PgAdmin
|
||||||
|
pgadmin:
|
||||||
|
version: "latest"
|
||||||
|
server_mode: False # If true then the preconfigured database file is loaded. Recommended False. True is a security risk.
|
||||||
|
master_password_required: True # Master password is required. Recommended True. False is a security risk.
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
email: "{{ users.administrator.email }}" # Initial login email address
|
||||||
|
password: "{{ users.administrator.initial_password }}" # Initial login password – should be overridden in inventory for security
|
||||||
|
oauth2_proxy:
|
||||||
|
application: "application"
|
||||||
|
port: "80"
|
||||||
|
# cookie_secret: None # Set via: openssl rand -hex 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
'oauth2': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## phpLDAPadmin
|
||||||
|
phpldapadmin:
|
||||||
|
version: "2.0.0-dev" # @todo Attention: Change this as fast as released to latest
|
||||||
|
oauth2_proxy:
|
||||||
|
application: application # Needs to be the same as webinterface
|
||||||
|
port: 8080 # application port
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'ldap': true,
|
||||||
|
'oauth2': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## PHPMyAdmin
|
||||||
|
phpmyadmin:
|
||||||
|
version: "latest" # Use the latest phpmyadmin version
|
||||||
|
autologin: false # This is a high security risk. Just activate this option if you know what you're doing
|
||||||
|
oauth2_proxy:
|
||||||
|
port: "80"
|
||||||
|
application: "application"
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': false,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
'oauth2': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Pixelfed
|
||||||
|
pixelfed:
|
||||||
|
titel: "Pictures on {{primary_domain}}"
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Postgres
|
||||||
|
# Please set an version in your inventory file - Rolling release for postgres isn't recommended
|
||||||
|
postgres:
|
||||||
|
version: "latest"
|
||||||
|
|
||||||
|
portfolio:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Presentation
|
||||||
|
presentation:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
# Snipe-IT
|
||||||
|
snipe_it:
|
||||||
|
version: "latest"
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Sphinx
|
||||||
|
sphinx:
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## Taiga
|
||||||
|
taiga:
|
||||||
|
version: "latest"
|
||||||
|
oidc:
|
||||||
|
# Taiga doesn't have a functioning oidc support at the moment
|
||||||
|
# See
|
||||||
|
# - https://community.taiga.io/t/taiga-and-oidc-plugin/4866
|
||||||
|
#
|
||||||
|
# Due to this reason this plutin is deactivated atm
|
||||||
|
flavor: 'taigaio' # Potential flavors: robrotheram, taigaio
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'oidc': false,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
## YOURLS
|
||||||
|
yourls:
|
||||||
|
users:
|
||||||
|
administrator:
|
||||||
|
username: "{{users.administrator.username}}"
|
||||||
|
version: "latest"
|
||||||
|
oauth2_proxy:
|
||||||
|
application: "application"
|
||||||
|
port: "80"
|
||||||
|
location: "/admin/" # Protects the admin area
|
||||||
|
# cookie_secret: None # Set via openssl rand -hex 16
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': true,
|
||||||
|
'iframe': false,
|
||||||
|
'database': true,
|
||||||
|
'oauth2': true,
|
||||||
|
}) }}{% raw %}
|
||||||
|
|
||||||
|
wordpress:
|
||||||
|
# Deactivate Global theming for wordpress role
|
||||||
|
# due to the reason that wordpress has to much different themes
|
||||||
|
# and one styling for all is not possible.
|
||||||
|
#
|
||||||
|
# May a solution could be to generate a template or css file dedicated
|
||||||
|
# for wordpress based on the theming values and import it.
|
||||||
|
title: "Blog" # Wordpress titel
|
||||||
|
credentials: # Credentials
|
||||||
|
administrator: # Wordpress administrator
|
||||||
|
username: "{{users.administrator.username}}" # Username of the wordpress administrator
|
||||||
|
# password: # Password of the wordpress administrator
|
||||||
|
email: "{{users.administrator.email}}" # Email of the wordpress adminsitrator
|
||||||
|
plugins:
|
||||||
|
discourse: false
|
||||||
|
oidc: true
|
||||||
|
{% endraw %}{{ features.render_features({
|
||||||
|
'matomo': true,
|
||||||
|
'css': false,
|
||||||
|
'iframe': false,
|
||||||
|
'oidc': true,
|
||||||
|
'database': true,
|
||||||
|
}) }}{% raw %}
|
19
templates/vars/features.yml.j2
Normal file
19
templates/vars/features.yml.j2
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{% macro render_features(options) %}
|
||||||
|
features:
|
||||||
|
{%- set feature_map = {
|
||||||
|
'matomo': 'Enables Matomo tracking',
|
||||||
|
'css': 'Enables custom CSS styling',
|
||||||
|
'iframe': 'Allows embedding via iframe on landing page',
|
||||||
|
'ldap': 'Enables LDAP integration and networking',
|
||||||
|
'oidc': 'Enables OpenID Connect (OIDC) authentication',
|
||||||
|
'oauth2': 'Enables OAuth2 proxy integration',
|
||||||
|
'database': 'Enables use of central database'
|
||||||
|
} %}
|
||||||
|
{%- for key, comment in feature_map.items() %}
|
||||||
|
{%- if key in options %}
|
||||||
|
|
||||||
|
{{ key }}: {{ options[key] }} # {{ comment }}
|
||||||
|
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{% endmacro %}
|
@ -44,7 +44,13 @@ galaxy_info:
|
|||||||
# Define dummy variables including group_names that contain the application_id "portfolio".
|
# Define dummy variables including group_names that contain the application_id "portfolio".
|
||||||
fake_variables = {
|
fake_variables = {
|
||||||
"domains": {"portfolio": "myportfolio.com"},
|
"domains": {"portfolio": "myportfolio.com"},
|
||||||
"applications": {"portfolio": {"landingpage_iframe_enabled": True}},
|
"applications": {
|
||||||
|
"portfolio": {
|
||||||
|
"features": {
|
||||||
|
"iframe": True
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"group_names": ["portfolio"]
|
"group_names": ["portfolio"]
|
||||||
}
|
}
|
||||||
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
||||||
@ -71,7 +77,13 @@ galaxy_info:
|
|||||||
# Set fake variables with group_names that do NOT include the application_id "portfolio".
|
# Set fake variables with group_names that do NOT include the application_id "portfolio".
|
||||||
fake_variables = {
|
fake_variables = {
|
||||||
"domains": {"portfolio": "myportfolio.com"},
|
"domains": {"portfolio": "myportfolio.com"},
|
||||||
"applications": {"portfolio": {"landingpage_iframe_enabled": True}},
|
"applications": {
|
||||||
|
"portfolio": {
|
||||||
|
"features": {
|
||||||
|
"iframe": True
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"group_names": [] # Not including "portfolio"
|
"group_names": [] # Not including "portfolio"
|
||||||
}
|
}
|
||||||
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
result = lookup_module.run([self.test_roles_dir], variables=fake_variables)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user