mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-01-22 07:03:21 +01:00
Merge branch 'master' of github.com:kevinveenbirkenbach/cymais
This commit is contained in:
commit
02ae02634b
@ -5,8 +5,8 @@ ip4_address: "127.0.0.1" # Change thie in inventory to the ip address
|
|||||||
backups_folder_path: "/Backups/" # Path to the backups folder
|
backups_folder_path: "/Backups/" # Path to the backups folder
|
||||||
|
|
||||||
# Administrator
|
# Administrator
|
||||||
administrator_username: "administrator" # Username of the administrator
|
administrator_username: "administrator" # Username of the administrator
|
||||||
administrator_email: "{{administrator_username}}@{{top_domain}}" # Email of the administrator
|
administrator_email: "{{administrator_username}}@{{top_domain}}" # Email of the administrator
|
||||||
|
|
||||||
# Email Configuration
|
# Email Configuration
|
||||||
system_email_local: no-reply
|
system_email_local: no-reply
|
||||||
@ -148,6 +148,7 @@ domain_funkwhale: "music.{{top_domain}}"
|
|||||||
domain_gitea: "git.{{top_domain}}"
|
domain_gitea: "git.{{top_domain}}"
|
||||||
domain_gitlab: "gitlab.{{top_domain}}"
|
domain_gitlab: "gitlab.{{top_domain}}"
|
||||||
domain_portfolio: "{{top_domain}}"
|
domain_portfolio: "{{top_domain}}"
|
||||||
|
domain_keycloak: "auth.{{top_domain}}"
|
||||||
domain_listmonk: "newsletter.{{top_domain}}"
|
domain_listmonk: "newsletter.{{top_domain}}"
|
||||||
domain_mailu: "{{system_email_host}}"
|
domain_mailu: "{{system_email_host}}"
|
||||||
domain_mastodon: "microblog.{{top_domain}}"
|
domain_mastodon: "microblog.{{top_domain}}"
|
||||||
@ -174,6 +175,7 @@ redirect_domain_mappings:
|
|||||||
- { source: "discourse.{{top_domain}}", target: "{{domain_discourse}}" }
|
- { source: "discourse.{{top_domain}}", target: "{{domain_discourse}}" }
|
||||||
- { source: "funkwhale.{{top_domain}}", target: "{{domain_funkwhale}}" }
|
- { source: "funkwhale.{{top_domain}}", target: "{{domain_funkwhale}}" }
|
||||||
- { source: "gitea.{{top_domain}}", target: "{{domain_gitea}}" }
|
- { source: "gitea.{{top_domain}}", target: "{{domain_gitea}}" }
|
||||||
|
- { source: "keycloak.{{top_domain}}", target: "{{domain_keycloak}}" }
|
||||||
- { source: "listmonk.{{top_domain}}", target: "{{domain_listmonk}}" }
|
- { source: "listmonk.{{top_domain}}", target: "{{domain_listmonk}}" }
|
||||||
- { source: "moodle.{{top_domain}}", target: "{{domain_moodle}}" }
|
- { source: "moodle.{{top_domain}}", target: "{{domain_moodle}}" }
|
||||||
- { source: "nextcloud.{{top_domain}}", target: "{{domain_nextcloud}}" }
|
- { source: "nextcloud.{{top_domain}}", target: "{{domain_nextcloud}}" }
|
||||||
@ -185,6 +187,7 @@ redirect_domain_mappings:
|
|||||||
- { source: "taiga.{{top_domain}}", target: "{{domain_taiga}}" }
|
- { source: "taiga.{{top_domain}}", target: "{{domain_taiga}}" }
|
||||||
- { source: "videos.{{top_domain}}", target: "{{domain_peertube}}" }
|
- { source: "videos.{{top_domain}}", target: "{{domain_peertube}}" }
|
||||||
|
|
||||||
|
|
||||||
## Docker Applications
|
## Docker Applications
|
||||||
|
|
||||||
### Enable Central MariaDB
|
### Enable Central MariaDB
|
||||||
@ -194,9 +197,6 @@ enable_central_database_mailu: "{{enable_central_database}}"
|
|||||||
### Enable Storage Optimizer for Docker Volumes
|
### Enable Storage Optimizer for Docker Volumes
|
||||||
enable_system_storage_optimizer: true
|
enable_system_storage_optimizer: true
|
||||||
|
|
||||||
### Common Configurations
|
|
||||||
postgres_default_version: "16"
|
|
||||||
|
|
||||||
### Docker Role Specific Parameters
|
### Docker Role Specific Parameters
|
||||||
docker_restart_policy: "unless-stopped"
|
docker_restart_policy: "unless-stopped"
|
||||||
|
|
||||||
@ -206,22 +206,57 @@ akaunting_company_name: "{{top_domain}}"
|
|||||||
akaunting_company_email: "{{administrator_email}}"
|
akaunting_company_email: "{{administrator_email}}"
|
||||||
akaunting_setup_admin_email: "{{administrator_email}}"
|
akaunting_setup_admin_email: "{{administrator_email}}"
|
||||||
|
|
||||||
|
#### Attendize
|
||||||
|
attendize_version: "latest"
|
||||||
|
|
||||||
|
#### Baserow
|
||||||
|
baserow_version: "latest"
|
||||||
|
|
||||||
#### Big Blue Button
|
#### Big Blue Button
|
||||||
bigbluebutton_enable_greenlight: "true"
|
bigbluebutton_enable_greenlight: "true"
|
||||||
|
|
||||||
|
#### Bluesky
|
||||||
|
bluesky_administrator_email: "{{administrator_email}}"
|
||||||
|
bluesky_pds_version: "latest"
|
||||||
|
|
||||||
|
#### Friendica
|
||||||
|
friendica_version: "latest"
|
||||||
|
|
||||||
|
#### Gitea
|
||||||
|
gitea_version: "latest"
|
||||||
|
|
||||||
|
#### Gitlab
|
||||||
|
gitlab_version: "latest"
|
||||||
|
|
||||||
|
#### Joomla
|
||||||
|
joomla_version: "latest"
|
||||||
|
|
||||||
|
#### Keycloak
|
||||||
|
keycloak_version: "latest"
|
||||||
|
keycloak_administrator_username: "{{administrator_username}}"
|
||||||
|
|
||||||
#### Listmonk
|
#### Listmonk
|
||||||
listmonk_admin_username: "admin"
|
listmonk_admin_username: "admin"
|
||||||
listmonk_public_api_activated: False # Security hole. Can be used for spaming
|
listmonk_public_api_activated: False # Security hole. Can be used for spaming
|
||||||
|
listmonk_version: "latest"
|
||||||
|
|
||||||
|
#### MariaDB
|
||||||
|
mariadb_version: "latest"
|
||||||
|
|
||||||
|
#### Matomo
|
||||||
|
matomo_version: "latest"
|
||||||
|
|
||||||
#### Mastodon
|
#### Mastodon
|
||||||
mastodon_version: "latest"
|
mastodon_version: "latest"
|
||||||
mastodon_single_user_mode: false
|
mastodon_single_user_mode: false
|
||||||
|
|
||||||
#### Matrix
|
#### Matrix
|
||||||
matrix_admin_name: "{{administrator_username}}" # Accountname of the matrix admin
|
matrix_administrator_username: "{{administrator_username}}" # Accountname of the matrix admin
|
||||||
matrix_playbook_tags: "setup-all,start" # For the initial update use: install-all,ensure-matrix-users-created,start
|
matrix_playbook_tags: "setup-all,start" # For the initial update use: install-all,ensure-matrix-users-created,start
|
||||||
matrix_role: "compose" # Role to setup Matrix. Valid values: ansible, compose
|
matrix_role: "compose" # Role to setup Matrix. Valid values: ansible, compose
|
||||||
matrix_server_name: "{{top_domain}}" # Adress for the account names etc.
|
matrix_server_name: "{{top_domain}}" # Adress for the account names etc.
|
||||||
|
matrix_synapse_version: "latest"
|
||||||
|
matrix_element_version: "latest"
|
||||||
|
|
||||||
#### Mailu
|
#### Mailu
|
||||||
mailu_version: "2024.06"
|
mailu_version: "2024.06"
|
||||||
@ -229,9 +264,13 @@ mailu_domain: "{{top_domain}}"
|
|||||||
mailu_subnet: "192.168.203.0/24"
|
mailu_subnet: "192.168.203.0/24"
|
||||||
|
|
||||||
#### Moodle
|
#### Moodle
|
||||||
moodle_site_name: "Global Learning Academy on {{top_domain}}"
|
moodle_site_name: "Global Learning Academy on {{top_domain}}"
|
||||||
moodle_user_name: "{{administrator_username}}"
|
moodle_administrator_name: "{{administrator_username}}"
|
||||||
moodle_user_email: "{{administrator_email}}"
|
moodle_administrator_email: "{{administrator_email}}"
|
||||||
|
moodle_version: "latest"
|
||||||
|
|
||||||
|
#### MyBB
|
||||||
|
mybb_version: "latest"
|
||||||
|
|
||||||
#### Nextcloud
|
#### Nextcloud
|
||||||
nextcloud_version: "production" # @see https://nextcloud.com/blog/nextcloud-release-channels-and-how-to-track-them/
|
nextcloud_version: "production" # @see https://nextcloud.com/blog/nextcloud-release-channels-and-how-to-track-them/
|
||||||
@ -241,6 +280,15 @@ peertube_version: "bookworm"
|
|||||||
|
|
||||||
#### Pixelfed
|
#### Pixelfed
|
||||||
pixelfed_app_name: "Pictures on {{top_domain}}"
|
pixelfed_app_name: "Pictures on {{top_domain}}"
|
||||||
|
pixelfed_version: "latest"
|
||||||
|
|
||||||
|
#### Postgres
|
||||||
|
# Please set an version in your inventory file - Rolling release for postgres isn't recommended
|
||||||
|
postgres_database_version: "latest"
|
||||||
|
|
||||||
|
#### Taiga
|
||||||
|
taiga_version: "latest"
|
||||||
|
|
||||||
#### YOURLS
|
#### YOURLS
|
||||||
yourls_user: "{{administrator_username}}"
|
yourls_administrator_username: "{{administrator_username}}"
|
||||||
|
yourls_version: "latest"
|
@ -45,7 +45,7 @@ pixelfed_database_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
|||||||
pixelfed_app_key: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
pixelfed_app_key: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
||||||
wordpress_database_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
wordpress_database_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
||||||
yourls_database_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
yourls_database_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
||||||
yourls_user_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
yourls_administrator_username_password: "I_NEED_TO_CHANGE_THIS_UNSECURE_PASSWORD"
|
||||||
|
|
||||||
path_mass_storage: "/mnt/hdd/"
|
path_mass_storage: "/mnt/hdd/"
|
||||||
path_rapid_storage: "/mnt/ssd/"
|
path_rapid_storage: "/mnt/ssd/"
|
@ -297,6 +297,15 @@
|
|||||||
http_port_api: 8030
|
http_port_api: 8030
|
||||||
http_port_web: 8031
|
http_port_web: 8031
|
||||||
|
|
||||||
|
- name: setup keycloak
|
||||||
|
hosts: keycloak
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: docker-keycloak
|
||||||
|
vars:
|
||||||
|
domain: "{{domain_keycloak}}"
|
||||||
|
http_port: 8032
|
||||||
|
|
||||||
# Native Webserver Roles
|
# Native Webserver Roles
|
||||||
- name: setup nginx-static-repositorys
|
- name: setup nginx-static-repositorys
|
||||||
hosts: nginx-static-repositorys
|
hosts: nginx-static-repositorys
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: attendize_web:latest
|
image: "attendize_web:{{attendize_version}}"
|
||||||
ports:
|
ports:
|
||||||
- "{{http_port}}:80"
|
- "{{http_port}}:80"
|
||||||
volumes:
|
volumes:
|
||||||
@ -19,7 +19,7 @@ services:
|
|||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
image: attendize_worker:latest
|
image: "attendize_worker:{{attendize_version}}"
|
||||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||||
maildev:
|
maildev:
|
||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: baserow/baserow:1.19.1
|
image: "baserow/baserow:{{baserow_version}}"
|
||||||
container_name: baserow-application
|
container_name: baserow-application
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
@ -16,11 +16,6 @@ services:
|
|||||||
- data:/baserow/data
|
- data:/baserow/data
|
||||||
ports:
|
ports:
|
||||||
- "{{http_port}}:80"
|
- "{{http_port}}:80"
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:80/"]
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
pds:
|
pds:
|
||||||
image: ghcr.io/bluesky-social/pds:latest
|
image: "ghcr.io/bluesky-social/pds:{{bluesky_pds_version}}"
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
volumes:
|
volumes:
|
||||||
- pds_data:/pds
|
- pds_data:/pds
|
||||||
@ -8,7 +8,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
# Geben Sie hier Ihre Domain und Konfigurationsdetails an
|
# Geben Sie hier Ihre Domain und Konfigurationsdetails an
|
||||||
PDS_HOSTNAME: "{{domain_api}}"
|
PDS_HOSTNAME: "{{domain_api}}"
|
||||||
PDS_ADMIN_EMAIL: "{{administrator_email}}"
|
PDS_ADMIN_EMAIL: "{{bluesky_administrator_email}}"
|
||||||
PDS_SERVICE_DID: "did:web:{{domain_api}}"
|
PDS_SERVICE_DID: "did:web:{{domain_api}}"
|
||||||
# See https://mattdyson.org/blog/2024/11/self-hosting-bluesky-pds/
|
# See https://mattdyson.org/blog/2024/11/self-hosting-bluesky-pds/
|
||||||
PDS_SERVICE_HANDLE_DOMAINS: ".{{top_domain}}"
|
PDS_SERVICE_HANDLE_DOMAINS: ".{{top_domain}}"
|
||||||
|
@ -3,7 +3,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: friendica
|
image: "friendica:{{friendica_version}}"
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
@ -6,7 +6,7 @@ services:
|
|||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
image: gitea/gitea:latest
|
image: "gitea/gitea:{{gitea_version}}"
|
||||||
environment:
|
environment:
|
||||||
- USER_UID=1000
|
- USER_UID=1000
|
||||||
- USER_GID=1000
|
- USER_GID=1000
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: 'gitlab/gitlab-ee:latest'
|
image: "gitlab/gitlab-ee:{{gitlab_version}}"
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
hostname: '{{domain}}'
|
hostname: '{{domain}}'
|
||||||
environment:
|
environment:
|
||||||
|
@ -3,7 +3,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: joomla
|
image: "joomla:{{joomla_version}}"
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
environment:
|
environment:
|
||||||
|
@ -1,6 +1,94 @@
|
|||||||
# docker-keycloak
|
# docker-keycloak
|
||||||
|
|
||||||
## More Information
|
## Description 🌟
|
||||||
- https://www.keycloak.org/
|
|
||||||
- https://github.com/keycloak/keycloak
|
This role automates the setup and configuration of Keycloak in a Docker environment.
|
||||||
- https://en.wikipedia.org/wiki/Keycloak
|
Keycloak is an open-source identity and access management solution.
|
||||||
|
The role integrates Keycloak with PostgreSQL as a database and supports operation behind a reverse proxy like NGINX.
|
||||||
|
|
||||||
|
## Features ✨
|
||||||
|
- Set up Keycloak as a Docker container.
|
||||||
|
- Use PostgreSQL as the database.
|
||||||
|
- Customizable configuration of Keycloak environment variables.
|
||||||
|
- Support for running behind a reverse proxy (e.g., NGINX).
|
||||||
|
- Automatic creation and management of Docker Compose files.
|
||||||
|
|
||||||
|
## Requirements 📋
|
||||||
|
- Docker and Docker Compose must be installed on the target system.
|
||||||
|
- A working NGINX proxy for forwarding requests to Keycloak (optional).
|
||||||
|
|
||||||
|
## Variables ⚙️
|
||||||
|
|
||||||
|
### Main Variables
|
||||||
|
|
||||||
|
Defined in `vars/main.yml`:
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|---------------------------------|------------------------------------------------------------------|
|
||||||
|
| `docker_compose_project_name` | Name of the Docker Compose project. Default: `keycloak`. |
|
||||||
|
| `database_type` | Type of the database. Default: `postgres`. |
|
||||||
|
| `database_password` | Password for the PostgreSQL database user. |
|
||||||
|
|
||||||
|
### Additional Variables (Templates)
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
|---------------------------------|------------------------------------------------------------------|
|
||||||
|
| `keycloak_version` | Version of the Keycloak image. |
|
||||||
|
| `domain` | Domain where Keycloak will be accessible. |
|
||||||
|
| `keycloak_administrator_username` | Admin username for Keycloak. |
|
||||||
|
| `keycloak_administrator_password` | Admin password for Keycloak. |
|
||||||
|
| `database_host` | Host of the PostgreSQL database. |
|
||||||
|
| `database_name` | Name of the PostgreSQL database. |
|
||||||
|
| `database_username` | Username for the PostgreSQL database. |
|
||||||
|
| `http_port` | Port where Keycloak will be accessible (default: `8080`). |
|
||||||
|
| `docker_restart_policy` | Docker restart policy (e.g., `always`, `unless-stopped`). |
|
||||||
|
|
||||||
|
## Tasks 🛠️
|
||||||
|
|
||||||
|
The role performs the following main tasks:
|
||||||
|
|
||||||
|
1. **Include database and proxy configuration files:**
|
||||||
|
- Integration of a PostgreSQL database.
|
||||||
|
- Setup of a reverse proxy for the domain.
|
||||||
|
|
||||||
|
2. **Generate `docker-compose.yml`:**
|
||||||
|
- Automatically generate the Docker Compose file based on templates and variables.
|
||||||
|
|
||||||
|
3. **Start Docker containers:**
|
||||||
|
- The role launches the Keycloak project using Docker Compose.
|
||||||
|
|
||||||
|
## Example: Usage 🚀
|
||||||
|
|
||||||
|
Here is an example of how to use this role in a playbook:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Setup Keycloak with Docker
|
||||||
|
hosts: all
|
||||||
|
vars:
|
||||||
|
domain: "auth.example.com"
|
||||||
|
keycloak_version: "21.1.0"
|
||||||
|
keycloak_administrator_username: "admin"
|
||||||
|
keycloak_administrator_password: "securepassword"
|
||||||
|
database_host: "db.example.com"
|
||||||
|
database_name: "keycloak_db"
|
||||||
|
database_username: "keycloak_user"
|
||||||
|
database_password: "securedbpassword"
|
||||||
|
http_port: 8080
|
||||||
|
docker_restart_policy: "unless-stopped"
|
||||||
|
roles:
|
||||||
|
- docker-keycloak
|
||||||
|
```
|
||||||
|
|
||||||
|
## More Information 📚
|
||||||
|
|
||||||
|
For more details about Keycloak, check out:
|
||||||
|
- [Official Keycloak Documentation](https://www.keycloak.org/)
|
||||||
|
- [GitHub Repository](https://github.com/keycloak/keycloak)
|
||||||
|
- [Setting up Keycloak behind a Reverse Proxy](https://www.keycloak.org/server/reverseproxy)
|
||||||
|
- [Wikipedia](https://en.wikipedia.org/wiki/Keycloak)
|
||||||
|
- [Youtube Tutorial](https://www.youtube.com/watch?v=fvxQ8bW0vO8)
|
||||||
|
---
|
||||||
|
|
||||||
|
### Author ✍️
|
||||||
|
**Kevin Veen-Birkenbach**
|
||||||
|
[veen.world](https://www.veen.world/)
|
10
roles/docker-keycloak/tasks/main.yml
Normal file
10
roles/docker-keycloak/tasks/main.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: "include docker/compose/database.yml"
|
||||||
|
include_tasks: docker/compose/database.yml
|
||||||
|
|
||||||
|
- name: "include tasks nginx-docker-proxy-domain.yml"
|
||||||
|
include_tasks: nginx-docker-proxy-domain.yml
|
||||||
|
|
||||||
|
- name: add docker-compose.yml
|
||||||
|
template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml
|
||||||
|
notify: docker compose project setup
|
@ -1,32 +1,24 @@
|
|||||||
version: '3.7'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
# include database container
|
|
||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
keycloak:
|
application:
|
||||||
image: quay.io/keycloak/keycloak:23.0.6
|
image: quay.io/keycloak/keycloak:{{keycloak_version}}
|
||||||
command: start
|
command: start
|
||||||
environment:
|
environment:
|
||||||
KC_HOSTNAME: {{domain}}
|
KC_HOSTNAME: https://{{domain}}
|
||||||
KC_HOSTNAME_PORT: {{http_port}}
|
KC_HTTP_ENABLED: true
|
||||||
KC_HOSTNAME_STRICT_BACKCHANNEL: false
|
KC_HEALTH_ENABLED: true
|
||||||
KC_HTTP_ENABLED: true
|
KEYCLOAK_ADMIN: "{{keycloak_administrator_username}}"
|
||||||
KC_HOSTNAME_STRICT_HTTPS: false
|
KEYCLOAK_ADMIN_PASSWORD: "{{keycloak_administrator_password}}"
|
||||||
KC_HEALTH_ENABLED: true
|
KC_DB: postgres
|
||||||
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN}
|
KC_DB_URL: jdbc:postgresql://{{database_host}}/{{database_name}}
|
||||||
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
|
KC_DB_USERNAME: {{database_username}}
|
||||||
KC_DB: postgres
|
KC_DB_PASSWORD: {{database_password}}
|
||||||
KC_DB_URL: jdbc:postgresql://postgres/${POSTGRES_DB}
|
|
||||||
KC_DB_USERNAME: ${POSTGRES_USER}
|
|
||||||
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
|
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{http_port}}:8080"
|
- "127.0.0.1:{{http_port}}:8080"
|
||||||
restart: always
|
restart: {{docker_restart_policy}}
|
||||||
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-just-database.yml.j2' %}
|
||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
|
|
||||||
{% include 'templates/docker/compose/volumes.yml.j2' %}
|
|
||||||
|
|
||||||
{% include 'templates/docker/compose/networks.yml.j2' %}
|
{% include 'templates/docker/compose/networks.yml.j2' %}
|
3
roles/docker-keycloak/vars/main.yml
Normal file
3
roles/docker-keycloak/vars/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
docker_compose_project_name: "keycloak"
|
||||||
|
database_type: "postgres"
|
||||||
|
database_password: "{{keycloak_database_password}}"
|
@ -4,3 +4,4 @@ Draft role for an LDAP implementation with sso.
|
|||||||
- [ChatGPT Conversation](https://chat.openai.com/share/77919994-5d44-4a64-877d-b572d67483d4)
|
- [ChatGPT Conversation](https://chat.openai.com/share/77919994-5d44-4a64-877d-b572d67483d4)
|
||||||
- [Discouse Documentation](https://forum.veen.world/t/cymais-ldap-implementierung-documentation/49)
|
- [Discouse Documentation](https://forum.veen.world/t/cymais-ldap-implementierung-documentation/49)
|
||||||
- [Setup Guide](https://goneuland.de/ldap-nextcloud-und-mailserver-in-docker/)
|
- [Setup Guide](https://goneuland.de/ldap-nextcloud-und-mailserver-in-docker/)
|
||||||
|
- https://hub.docker.com/r/bitnami/openldap
|
@ -1,24 +1,36 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
my-network:
|
||||||
|
driver: bridge
|
||||||
services:
|
services:
|
||||||
openldap:
|
openldap:
|
||||||
image: osixia/openldap:1.2.4
|
image: bitnami/openldap:2
|
||||||
environment:
|
|
||||||
- LDAP_ORGANISATION=MeineFirma
|
|
||||||
- LDAP_DOMAIN=meinefirma.de
|
|
||||||
- LDAP_ADMIN_PASSWORD=admin
|
|
||||||
ports:
|
ports:
|
||||||
- "389:389"
|
- '389:1389'
|
||||||
- "636:636"
|
- '636:1636'
|
||||||
volumes:
|
environment:
|
||||||
- ./ldap:/var/lib/ldap
|
- LDAP_ADMIN_USERNAME=admin
|
||||||
- ./ldap-slapd:/etc/ldap/slapd.d
|
- LDAP_ADMIN_PASSWORD=adminpassword
|
||||||
|
- LDAP_USERS=user01,user02 # Comma separated list of LDAP users to create in the default LDAP tree. Default: user01,user02
|
||||||
|
- LDAP_PASSWORDS=password1,password2 #Comma separated list of passwords to use for LDAP users. Default: bitnami1,bitnami2
|
||||||
|
|
||||||
|
- LDAP_ROOT=dc=example,dc=org
|
||||||
|
- LDAP_ADMIN_DN=cn=admin,dc=example,dc=org
|
||||||
|
|
||||||
keycloak:
|
- MARIADB_ROOT_PASSWORD=root-password
|
||||||
image: jboss/keycloak:latest
|
- MARIADB_GALERA_MARIABACKUP_PASSWORD=backup-password
|
||||||
environment:
|
- MARIADB_USER=customuser
|
||||||
- KEYCLOAK_USER=admin
|
- MARIADB_DATABASE=customdatabase
|
||||||
- KEYCLOAK_PASSWORD=admin
|
- MARIADB_ENABLE_LDAP=yes
|
||||||
- DB_VENDOR=h2
|
networks:
|
||||||
ports:
|
- my-network
|
||||||
- "8080:8080"
|
volumes:
|
||||||
depends_on:
|
- 'openldap_data:/bitnami/openldap'
|
||||||
- openldap
|
myapp:
|
||||||
|
image: 'YOUR_APPLICATION_IMAGE'
|
||||||
|
networks:
|
||||||
|
- my-network
|
||||||
|
volumes:
|
||||||
|
openldap_data:
|
||||||
|
driver: local
|
||||||
|
@ -4,7 +4,7 @@ services:
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
image: listmonk/listmonk:latest
|
image: listmonk/listmonk:{{listmonk_version}}
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{http_port}}:9000"
|
- "127.0.0.1:{{http_port}}:9000"
|
||||||
environment:
|
environment:
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
- name: install MariaDB
|
- name: install MariaDB
|
||||||
docker_container:
|
docker_container:
|
||||||
name: central-mariadb
|
name: central-mariadb
|
||||||
image: mariadb:latest #could lead to problems with nextcloud
|
image: "mariadb:{{mariadb_version}}" #could lead to problems with nextcloud
|
||||||
detach: yes
|
detach: yes
|
||||||
env:
|
env:
|
||||||
MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}"
|
MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}"
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
application:
|
application:
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
image: matomo
|
image: matomo:{{matomo_version}}
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{http_port}}:80"
|
- "127.0.0.1:{{http_port}}:80"
|
||||||
|
@ -131,7 +131,7 @@
|
|||||||
|
|
||||||
- name: create admin account
|
- name: create admin account
|
||||||
command:
|
command:
|
||||||
cmd: docker compose exec -it synapse register_new_matrix_user -u {{matrix_admin_name}} -p {{matrix_admin_password}} -a -c /data/homeserver.yaml http://localhost:8008
|
cmd: docker compose exec -it synapse register_new_matrix_user -u {{matrix_administrator_username}} -p {{matrix_admin_password}} -a -c /data/homeserver.yaml http://localhost:8008
|
||||||
chdir: "{{ docker_compose_instance_directory }}"
|
chdir: "{{ docker_compose_instance_directory }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: mode_setup | bool
|
when: mode_setup | bool
|
||||||
|
@ -3,7 +3,7 @@ services:
|
|||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
|
|
||||||
synapse:
|
synapse:
|
||||||
image: matrixdotorg/synapse:latest
|
image: matrixdotorg/synapse:{{matrix_synapse_version}}
|
||||||
container_name: matrix-synapse
|
container_name: matrix-synapse
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
@ -33,7 +33,7 @@ services:
|
|||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
|
|
||||||
element:
|
element:
|
||||||
image: vectorim/element-web:latest
|
image: vectorim/element-web:{{matrix_element_version}}
|
||||||
container_name: matrix-element
|
container_name: matrix-element
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -381,7 +381,7 @@ bridge:
|
|||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{matrix_server_name}}": user
|
"{{matrix_server_name}}": user
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": admin
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": admin
|
||||||
|
|
||||||
relay:
|
relay:
|
||||||
# Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any
|
# Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any
|
||||||
|
@ -360,7 +360,7 @@ bridge:
|
|||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{matrix_server_name}}": user
|
"{{matrix_server_name}}": user
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": admin
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": admin
|
||||||
|
|
||||||
relay:
|
relay:
|
||||||
# Whether relay mode should be allowed. If allowed, `!ig set-relay` can be used to turn any
|
# Whether relay mode should be allowed. If allowed, `!ig set-relay` can be used to turn any
|
||||||
|
@ -275,7 +275,7 @@ bridge:
|
|||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{matrix_server_name}}": user
|
"{{matrix_server_name}}": user
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": admin
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": admin
|
||||||
|
|
||||||
# Settings for relay mode
|
# Settings for relay mode
|
||||||
relay:
|
relay:
|
||||||
|
@ -279,7 +279,7 @@ bridge:
|
|||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{matrix_server_name}}": user
|
"{{matrix_server_name}}": user
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": admin
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": admin
|
||||||
|
|
||||||
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
||||||
logging:
|
logging:
|
||||||
|
@ -532,7 +532,7 @@ bridge:
|
|||||||
"*": "relaybot"
|
"*": "relaybot"
|
||||||
"public.{{matrix_server_name}}": "user"
|
"public.{{matrix_server_name}}": "user"
|
||||||
"{{matrix_server_name}}": "full"
|
"{{matrix_server_name}}": "full"
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": "admin"
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": "admin"
|
||||||
|
|
||||||
# Options related to the message relay Telegram bot.
|
# Options related to the message relay Telegram bot.
|
||||||
relaybot:
|
relaybot:
|
||||||
|
@ -435,7 +435,7 @@ bridge:
|
|||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{matrix_server_name}}": user
|
"{{matrix_server_name}}": user
|
||||||
"@{{matrix_admin_name}}:{{matrix_server_name}}": admin
|
"@{{matrix_administrator_username}}:{{matrix_server_name}}": admin
|
||||||
|
|
||||||
# Settings for relay mode
|
# Settings for relay mode
|
||||||
relay:
|
relay:
|
||||||
|
@ -5,7 +5,6 @@ server {
|
|||||||
# For the federation port
|
# For the federation port
|
||||||
listen 8448 ssl default_server;
|
listen 8448 ssl default_server;
|
||||||
listen [::]:8448 ssl default_server;
|
listen [::]:8448 ssl default_server;
|
||||||
http2 on;
|
|
||||||
|
|
||||||
{% if nginx_matomo_tracking | bool %}
|
{% if nginx_matomo_tracking | bool %}
|
||||||
{% include 'roles/nginx-matomo-tracking/templates/matomo-tracking.conf.j2' %}
|
{% include 'roles/nginx-matomo-tracking/templates/matomo-tracking.conf.j2' %}
|
||||||
|
@ -2,6 +2,7 @@ services:
|
|||||||
|
|
||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
application:
|
application:
|
||||||
|
# Seems like image tag got lost. @todo Check and implement if necessary
|
||||||
log_driver: journald
|
log_driver: journald
|
||||||
restart: "{{docker_restart_policy}}"
|
restart: "{{docker_restart_policy}}"
|
||||||
depends_on:
|
depends_on:
|
||||||
|
@ -2,7 +2,7 @@ services:
|
|||||||
|
|
||||||
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
|
||||||
moodle:
|
moodle:
|
||||||
image: docker.io/bitnami/moodle:latest
|
image: docker.io/bitnami/moodle:{{moodle_version}}
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:{{http_port}}:8080
|
- 127.0.0.1:{{http_port}}:8080
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
@ -18,9 +18,9 @@ services:
|
|||||||
- MOODLE_SITE_NAME="{{moodle_site_name}}"
|
- MOODLE_SITE_NAME="{{moodle_site_name}}"
|
||||||
- MOODLE_SSLPROXY=yes
|
- MOODLE_SSLPROXY=yes
|
||||||
- MOODLE_REVERSE_PROXY=yes
|
- MOODLE_REVERSE_PROXY=yes
|
||||||
- MOODLE_USERNAME={{moodle_user_name}}
|
- MOODLE_USERNAME={{moodle_administrator_name}}
|
||||||
- MOODLE_PASSWORD={{moodle_user_password}}
|
- MOODLE_PASSWORD={{moodle_user_password}}
|
||||||
- MOODLE_EMAIL={{moodle_user_email}}
|
- MOODLE_EMAIL={{moodle_administrator_email}}
|
||||||
- BITNAMI_DEBUG={% if mode_debug | bool %}true{% else %}false{% endif %}
|
- BITNAMI_DEBUG={% if mode_debug | bool %}true{% else %}false{% endif %}
|
||||||
volumes:
|
volumes:
|
||||||
- 'moodle:/bitnami/moodle'
|
- 'moodle:/bitnami/moodle'
|
||||||
|
@ -7,7 +7,7 @@ services:
|
|||||||
driver: journald
|
driver: journald
|
||||||
options:
|
options:
|
||||||
tag: "mybb_application"
|
tag: "mybb_application"
|
||||||
image: mybb/mybb:latest
|
image: mybb/mybb:{{mybb_version}}
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
{% include 'templates/docker/services/redis.yml.j2' %}
|
{% include 'templates/docker/services/redis.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: zknt/pixelfed
|
image: zknt/pixelfed:{{pixelfed_version}}
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
@ -19,7 +19,7 @@ services:
|
|||||||
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
|
||||||
{% include 'templates/docker/container/networks.yml.j2' %}
|
{% include 'templates/docker/container/networks.yml.j2' %}
|
||||||
worker:
|
worker:
|
||||||
image: zknt/pixelfed
|
image: zknt/pixelfed:{{pixelfed_version}}
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
- name: Install PostgreSQL
|
- name: Install PostgreSQL
|
||||||
docker_container:
|
docker_container:
|
||||||
name: central-postgres
|
name: central-postgres
|
||||||
image: "postgres:{{database_version}}"
|
image: "postgres:{{postgres_database_version}}"
|
||||||
detach: yes
|
detach: yes
|
||||||
env:
|
env:
|
||||||
POSTGRES_PASSWORD: "{{ central_postgres_password }}"
|
POSTGRES_PASSWORD: "{{ central_postgres_password }}"
|
||||||
|
@ -41,7 +41,7 @@ services:
|
|||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
image: taigaio/taiga-back:latest
|
image: taigaio/taiga-back:{{taiga_version}}
|
||||||
environment: *default-back-environment
|
environment: *default-back-environment
|
||||||
volumes: *default-back-volumes
|
volumes: *default-back-volumes
|
||||||
|
|
||||||
|
@ -5,18 +5,18 @@ services:
|
|||||||
application:
|
application:
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
image: yourls
|
image: yourls:{{yourls_version}}
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{http_port}}:80"
|
- "127.0.0.1:{{http_port}}:80"
|
||||||
environment:
|
environment:
|
||||||
YOURLS_DB_HOST: "{{database_host}}"
|
YOURLS_DB_HOST: "{{database_host}}"
|
||||||
YOURLS_DB_USER: "{{database_username}}"
|
YOURLS_DB_USER: "{{database_username}}"
|
||||||
YOURLS_DB_PASS: "{{database_password}}"
|
YOURLS_DB_PASS: "{{database_password}}"
|
||||||
YOURLS_DB_NAME: "{{database_name}}"
|
YOURLS_DB_NAME: "{{database_name}}"
|
||||||
YOURLS_SITE: "https://{{domain}}"
|
YOURLS_SITE: "https://{{domain}}"
|
||||||
YOURLS_USER: "{{yourls_user}}"
|
yourls_administrator_username: "{{yourls_administrator_username}}"
|
||||||
YOURLS_PASS: "{{yourls_user_password}}"
|
YOURLS_PASS: "{{yourls_administrator_username_password}}"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1/admin/"]
|
test: ["CMD", "curl", "-f", "http://127.0.0.1/admin/"]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
|
@ -111,7 +111,7 @@ def upgrade_listmonk():
|
|||||||
Runs the upgrade for Listmonk
|
Runs the upgrade for Listmonk
|
||||||
"""
|
"""
|
||||||
print("Starting Listmonk upgrade.")
|
print("Starting Listmonk upgrade.")
|
||||||
run_command("docker compose run application ./listmonk --upgrade")
|
run_command('echo "y" | docker compose run -T application ./listmonk --upgrade')
|
||||||
print("Upgrade complete.")
|
print("Upgrade complete.")
|
||||||
|
|
||||||
def update_nextcloud():
|
def update_nextcloud():
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# 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 enable_central_database | bool %}
|
{% if not enable_central_database | bool %}
|
||||||
database:
|
database:
|
||||||
image: postgres:{{database_version}}-alpine
|
image: postgres:{{postgres_database_version}}-alpine
|
||||||
container_name: {{docker_compose_project_name}}-database
|
container_name: {{docker_compose_project_name}}-database
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD={{database_password}}
|
- POSTGRES_PASSWORD={{database_password}}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
database_instance: "{{ 'central-' + database_type if enable_central_database | bool else docker_compose_project_name }}"
|
database_instance: "{{ 'central-' + database_type if enable_central_database | bool else docker_compose_project_name }}"
|
||||||
database_host: "{{ 'central-' + database_type if enable_central_database | bool else 'database' }}"
|
database_host: "{{ 'central-' + database_type if enable_central_database | bool else 'database' }}"
|
||||||
database_name: "{{ docker_compose_project_name }}"
|
database_name: "{{ docker_compose_project_name }}"
|
||||||
database_username: "{{ docker_compose_project_name }}"
|
database_username: "{{ docker_compose_project_name }}"
|
||||||
database_version: "{{ postgres_default_version }}"
|
|
Loading…
x
Reference in New Issue
Block a user