mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-10-10 10:48:10 +02:00
Add healthchecks for all Taiga services, fix RabbitMQ env var names, and define TAIGA_HOSTNAME
Details: - Implemented healthchecks for taiga, async, rabbitmq, front, events, protected, and gateway - Corrected RabbitMQ env variables (RABBITMQ_DEFAULT_USER/PASS/VHOST/ERLANG_COOKIE) - Added TAIGA_HOSTNAME for backend service See: https://chatgpt.com/share/68da9d6b-b164-800f-bcb7-410b40219a1e
This commit is contained in:
@@ -54,8 +54,8 @@ docker:
|
|||||||
backup:
|
backup:
|
||||||
no_stop_required: false
|
no_stop_required: false
|
||||||
turn_server:
|
turn_server:
|
||||||
onboard_enabled: true
|
onboard_enabled: true # Deactivated because standalone turnserver works with Big Blue Button, so I assume that the nextcloud internal turnserver has it's isssues
|
||||||
standalone_enabled: true
|
standalone_enabled: false
|
||||||
network_mode: host
|
network_mode: host
|
||||||
whiteboard:
|
whiteboard:
|
||||||
name: "nextcloud-whiteboard"
|
name: "nextcloud-whiteboard"
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
ipv4_address: 192.168.102.69
|
ipv4_address: 192.168.102.69
|
||||||
|
|
||||||
{% if NEXTCLOUD_TALK_TURN_ONBOARD_ENABLED | bool %}
|
{% if NEXTCLOUD_TALK_SIGNALING_ENABLED | bool %}
|
||||||
talk:
|
talk:
|
||||||
{% set container_port = NEXTCLOUD_TALK_SIGNALING_PORT %}
|
{% set container_port = NEXTCLOUD_TALK_SIGNALING_PORT %}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
container_name: {{ NEXTCLOUD_TALK_CONTAINER }}
|
container_name: {{ NEXTCLOUD_TALK_CONTAINER }}
|
||||||
init: true
|
init: true
|
||||||
network_mode: {{ NEXTCLOUD_TALK_NETWORK_MODE }}
|
network_mode: {{ NEXTCLOUD_TALK_NETWORK_MODE }}
|
||||||
{% if NEXTCLOUD_TALK_NETWORK_MODE == 'bridge' %}
|
{% if NEXTCLOUD_TALK_NETWORK_MODE == 'bridge' and NEXTCLOUD_TALK_TURN_ONBOARD_ENABLED | bool %}
|
||||||
ports:
|
ports:
|
||||||
- {{ networks.internet.ip4 }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}/tcp
|
- {{ networks.internet.ip4 }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}/tcp
|
||||||
- {{ networks.internet.ip4 }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}/udp
|
- {{ networks.internet.ip4 }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}:{{ NEXTCLOUD_TALK_TURN_ONBOARD_PORT }}/udp
|
||||||
|
@@ -192,18 +192,20 @@ http {
|
|||||||
proxy_read_timeout 3600;
|
proxy_read_timeout 3600;
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if NEXTCLOUD_TALK_TURN_ONBOARD_ENABLED | bool %}
|
{% if NEXTCLOUD_TALK_SIGNALING_ENABLED | bool %}
|
||||||
location {{ NEXTCLOUD_TALK_SIGNALING_LOCATION }} {
|
location {{ NEXTCLOUD_TALK_SIGNALING_LOCATION }} {
|
||||||
{% if NEXTCLOUD_TALK_NETWORK_MODE == 'host' %}
|
{% if NEXTCLOUD_TALK_NETWORK_MODE == 'host' %}
|
||||||
proxy_pass http://host.docker.internal:{{ NEXTCLOUD_TALK_SIGNALING_PORT }}/;
|
proxy_pass http://host.docker.internal:{{ NEXTCLOUD_TALK_SIGNALING_PORT }}/;
|
||||||
{% else %}
|
{% else %}
|
||||||
proxy_pass http://talk:{{ NEXTCLOUD_TALK_SIGNALING_PORT }}/;
|
proxy_pass http://talk:{{ NEXTCLOUD_TALK_SIGNALING_PORT }}/;
|
||||||
{% endif %}
|
{% endif %}
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
proxy_read_timeout 3600;
|
proxy_read_timeout 3600;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@@ -73,6 +73,7 @@ NEXTCLOUD_TALK_SIGNALING_SECRET: "{{ applications | get_app_conf(applicatio
|
|||||||
NEXTCLOUD_TALK_SIGNALING_LOCATION: "/standalone-signaling/"
|
NEXTCLOUD_TALK_SIGNALING_LOCATION: "/standalone-signaling/"
|
||||||
NEXTCLOUD_TALK_SIGNALING_PORT: "8081"
|
NEXTCLOUD_TALK_SIGNALING_PORT: "8081"
|
||||||
NEXTCLOUD_TALK_SIGNALING_URL: "{{ [ NEXTCLOUD_URL, NEXTCLOUD_TALK_SIGNALING_LOCATION ] | url_join }}"
|
NEXTCLOUD_TALK_SIGNALING_URL: "{{ [ NEXTCLOUD_URL, NEXTCLOUD_TALK_SIGNALING_LOCATION ] | url_join }}"
|
||||||
|
NEXTCLOUD_TALK_SIGNALING_ENABLED: "{{ NEXTCLOUD_TALK_PLUGIN_ENABLED }}"
|
||||||
|
|
||||||
#### Talk Turn (Onboard)
|
#### Talk Turn (Onboard)
|
||||||
NEXTCLOUD_TALK_TURN_ONBOARD_PORT: "{{ ports.public.stun_turn[application_id] }}"
|
NEXTCLOUD_TALK_TURN_ONBOARD_PORT: "{{ ports.public.stun_turn[application_id] }}"
|
||||||
|
@@ -3,7 +3,14 @@
|
|||||||
{% set service_name = TAIGA_SERVICE %}
|
{% set service_name = TAIGA_SERVICE %}
|
||||||
{{ service_name }}:
|
{{ service_name }}:
|
||||||
container_name: {{ TAIGA_CONTAINER }}
|
container_name: {{ TAIGA_CONTAINER }}
|
||||||
|
hostname: {{ TAIGA_HOSTNAME }}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "python", "-c", "import socket; socket.create_connection(('127.0.0.1',8000),5).close()"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 40s
|
||||||
image: "{{ TAIGA_DOCKER_IMAGE_BACKEND }}:{{ TAIGA_VERSION }}"
|
image: "{{ TAIGA_DOCKER_IMAGE_BACKEND }}:{{ TAIGA_VERSION }}"
|
||||||
volumes:
|
volumes:
|
||||||
# These volumens will be used by taiga-back and taiga-async.
|
# These volumens will be used by taiga-back and taiga-async.
|
||||||
@@ -31,6 +38,12 @@
|
|||||||
{{ service_name }}:
|
{{ service_name }}:
|
||||||
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "tr '\\0' ' ' </proc/1/cmdline | grep -qi celery"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
image: "{{ TAIGA_DOCKER_IMAGE_BACKEND }}:{{ TAIGA_VERSION }}"
|
image: "{{ TAIGA_DOCKER_IMAGE_BACKEND }}:{{ TAIGA_VERSION }}"
|
||||||
entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]
|
entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -65,6 +78,12 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- async-rabbitmq-data:/var/lib/rabbitmq
|
- async-rabbitmq-data:/var/lib/rabbitmq
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
|
|
||||||
@@ -73,6 +92,12 @@
|
|||||||
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
||||||
image: "{{TAIGA_DOCKER_IMAGE_FRONTEND}}:{{ TAIGA_VERSION }}"
|
image: "{{TAIGA_DOCKER_IMAGE_FRONTEND}}:{{ TAIGA_VERSION }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/ >/dev/null || curl -fsS http://127.0.0.1/ >/dev/null"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
# volumes:
|
# volumes:
|
||||||
@@ -83,6 +108,12 @@
|
|||||||
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
||||||
image: taigaio/taiga-events:latest
|
image: taigaio/taiga-events:latest
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "nc -z 127.0.0.1 8888"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -97,7 +128,12 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- events-rabbitmq-data:/var/lib/rabbitmq
|
- events-rabbitmq-data:/var/lib/rabbitmq
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
|
|
||||||
@@ -106,7 +142,12 @@
|
|||||||
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
container_name: {{ TAIGA_CONTAINER }}-{{ service_name }}
|
||||||
image: taigaio/taiga-protected:latest
|
image: taigaio/taiga-protected:latest
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "python", "-c", "import socket; socket.create_connection(('127.0.0.1',8003),5).close()"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
|
|
||||||
@@ -121,7 +162,12 @@
|
|||||||
- static-data:/taiga/static
|
- static-data:/taiga/static
|
||||||
- media-data:/taiga/media
|
- media-data:/taiga/media
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/ >/dev/null || curl -fsS http://127.0.0.1/ >/dev/null"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
taiga:
|
taiga:
|
||||||
depends_on:
|
depends_on:
|
||||||
|
@@ -33,10 +33,10 @@ RABBITMQ_PASS=taiga
|
|||||||
RABBITMQ_VHOST=taiga
|
RABBITMQ_VHOST=taiga
|
||||||
|
|
||||||
# Taiga's RabbitMQ settings - Variables to leave messages for the realtime and asynchronous events
|
# Taiga's RabbitMQ settings - Variables to leave messages for the realtime and asynchronous events
|
||||||
RABBITMQ_DEFAULT_RABBITMQ_USER = taiga # user to connect to RabbitMQ
|
RABBITMQ_DEFAULT_USER = taiga # user to connect to RabbitMQ
|
||||||
RABBITMQ_DEFAULT_RABBITMQ_PASS = taiga # RabbitMQ user's password
|
RABBITMQ_DEFAULT_PASS = taiga # RabbitMQ user's password
|
||||||
RABBITMQ_DEFAULT_RABBITMQ_VHOST = taiga # RabbitMQ container name
|
RABBITMQ_DEFAULT_VHOST = taiga # RabbitMQ container name
|
||||||
RABBITMQ_ERLANG_COOKIE = secret-erlang-cookie # unique value shared by any connected instance of RabbitMQ
|
RABBITMQ_ERLANG_COOKIE = secret-erlang-cookie # unique value shared by any connected instance of RabbitMQ
|
||||||
|
|
||||||
# Taiga's Attachments - Variable to define how long the attachments will be accesible
|
# Taiga's Attachments - Variable to define how long the attachments will be accesible
|
||||||
ATTACHMENTS_MAX_AG = 360 # token expiration date (in seconds)
|
ATTACHMENTS_MAX_AG = 360 # token expiration date (in seconds)
|
||||||
|
@@ -36,6 +36,7 @@ TAIGA_VERSION: "{{ applications | get_app_conf(application_id,
|
|||||||
|
|
||||||
### Backend
|
### Backend
|
||||||
TAIGA_SERVICE: "{{ entity_name }}"
|
TAIGA_SERVICE: "{{ entity_name }}"
|
||||||
|
TAIGA_HOSTNAME: "taiga-back"
|
||||||
TAIGA_CONTAINER: "{{ entity_name }}"
|
TAIGA_CONTAINER: "{{ entity_name }}"
|
||||||
TAIGA_VOLUME_MEDIA: "/taiga-back/media"
|
TAIGA_VOLUME_MEDIA: "/taiga-back/media"
|
||||||
TAIGA_VOLUME_STATIC: "/taiga-back/static"
|
TAIGA_VOLUME_STATIC: "/taiga-back/static"
|
||||||
|
@@ -53,7 +53,7 @@ docker:
|
|||||||
backup:
|
backup:
|
||||||
no_stop_required: true
|
no_stop_required: true
|
||||||
volumes:
|
volumes:
|
||||||
data: wordpress_data
|
data: wordpress_data
|
||||||
rbac:
|
rbac:
|
||||||
roles:
|
roles:
|
||||||
subscriber:
|
subscriber:
|
||||||
|
Reference in New Issue
Block a user