Compare commits

...

28 Commits

Author SHA1 Message Date
Reynir Björnsson 82aa6f67aa Add fedi.dk website 2023-02-18 21:09:49 +01:00
Sam A. 593dddd00e
Upgrade Passit database and temporarily pin Passit due to WebAuthn bug 2023-01-22 02:00:53 +01:00
Sam A. 16aec98808
HedgeDoc image version :1 doesn't exist, but Alpine doesn't have vulnerabilities 2023-01-21 21:49:27 +01:00
Sam A. a5d59b9336
Fix variable 2023-01-21 21:37:37 +01:00
Sam A. 388e0526ca
Set RUN_ON_STARTUP=false for Restic 2023-01-21 21:33:39 +01:00
valberg b445d7db17 Merge pull request 'Enable Watchtower for all services' (#123) from watchtower into main
Reviewed-on: data.coop/ansible#123
2023-01-21 17:17:55 +00:00
Sam A. 7ca168ae03
Merge branch 'main' into watchtower 2023-01-21 17:33:45 +01:00
Sam A. 209ccf9916 Merge pull request 'Collect even more version numbers in docker/defaults/main.yml' (#143) from unify_more_configurations into main
Reviewed-on: data.coop/ansible#143
2023-01-21 16:30:07 +00:00
Sam A. f81fab3d11
Quote numbers 2023-01-14 17:31:08 +01:00
Sam A. 9733794292
Revert "Make quotations consistent"
This reverts commit 231af48a40.
2023-01-14 17:24:53 +01:00
Sam A. 58f3df7ed0
Merge branch 'main' into watchtower 2023-01-06 14:53:59 +01:00
Sam A. 44eb59fb86
Merge branch 'main' into watchtower 2022-12-27 19:48:32 +01:00
Sam A. 2c9c501562
Remove label from Pinafore 2022-12-06 18:06:31 +01:00
Sam A. 0dcc0a6d75
Merge branch 'main' into watchtower 2022-12-06 18:05:15 +01:00
Sam A. 1356aa54c8
Merge branch 'main' into watchtower 2022-11-26 16:49:53 +01:00
Sam A. 44b5f91eef
Merge branch 'main' into watchtower 2022-11-25 22:12:47 +01:00
Sam A. 74dfcfb5e8
Keycloak: avoid very long lines :( 2022-11-23 21:09:05 +01:00
Sam A. 221ddd987f
Upgrade Postfix to 3.5.1 and use Alpine-based image 2022-11-23 21:05:01 +01:00
Sam A. 687bff35e9
Pin netdata to v1 2022-11-23 21:00:48 +01:00
Sam A. 9261cb1952
Pin Keycoak to 20.0 (minor version) 2022-11-23 20:34:43 +01:00
Sam A. 1f61909605
Pin HedgeDoc to major version 1
From https://docs.hedgedoc.org/setup/getting-started/#upgrading-hedgedoc

> HedgeDoc follows [Semantic Versioning](https://semver.org/).
> This means that minor and patch releases should not introduce
> user-facing backwards-incompatible changes.
2022-11-23 20:16:36 +01:00
Sam A. d9de1efc9a
Pin Gitea to 1.17 instead of 1.17.3
Gitea's "minor" version change seems to be the one that occasionally
introduces breaking changes, so let's not update that automatically.
Only keep the patch-releases automatically updated.
2022-11-23 20:02:30 +01:00
Sam A. 2fa5bf4982
Merge branch 'main' into watchtower 2022-11-23 19:51:58 +01:00
Sam A. c9ab9f0c66
Watchtower doesn't need external_services network 2022-11-19 18:20:10 +01:00
Sam A. e5dcfea003
Pin Watchtower version 2022-11-19 18:19:43 +01:00
Sam A. 27b918b46b
Remove labels 2022-11-18 21:07:12 +01:00
Sam A. 5d26e1cdea
Fix mount point for Watchtower
The auth file created by the registry login task doesn't need to be
stored in a non-default path.
2022-11-18 20:58:22 +01:00
Sam A. a4a06d8a58
Upgrade Watchtower and disable filter by enable label 2022-11-18 18:59:00 +01:00
16 changed files with 76 additions and 66 deletions

View File

@ -9,59 +9,59 @@ services:
file: postfix.yml file: postfix.yml
domain: "smtp.{{ base_domain }}" domain: "smtp.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/postfix" volume_folder: "{{ volume_root_folder }}/postfix"
version: v3.5.1-alpine version: "v3.5.1-alpine"
nginx_proxy: nginx_proxy:
file: nginx_proxy.yml file: nginx_proxy.yml
version: 1.0-alpine version: "1.0-alpine"
volume_folder: "{{ volume_root_folder }}/nginx" volume_folder: "{{ volume_root_folder }}/nginx"
nginx_acme_companion: nginx_acme_companion:
version: 2.2 version: "2.2"
openldap: openldap:
file: openldap.yml file: openldap.yml
domain: "ldap.{{ base_domain }}" domain: "ldap.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/openldap" volume_folder: "{{ volume_root_folder }}/openldap"
version: 1.5.0 version: "1.5.0"
phpldapadmin: phpldapadmin:
version: 0.9.0 version: "0.9.0"
netdata: netdata:
file: netdata.yml file: netdata.yml
domain: "netdata.{{ base_domain }}" domain: "netdata.{{ base_domain }}"
version: v1 version: "v1"
portainer: portainer:
file: portainer.yml file: portainer.yml
domain: "portainer.{{ base_domain }}" domain: "portainer.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/portainer" volume_folder: "{{ volume_root_folder }}/portainer"
version: 2.16.2 version: "2.16.2"
keycloak: keycloak:
file: keycloak.yml file: keycloak.yml
domain: sso.{{ base_domain }} domain: sso.{{ base_domain }}
volume_folder: "{{ volume_root_folder }}/keycloak" volume_folder: "{{ volume_root_folder }}/keycloak"
version: 20.0 version: "20.0"
postgres_version: 10 postgres_version: "10"
allowed_sender_domain: true allowed_sender_domain: true
restic: restic:
file: restic_backup.yml file: restic_backup.yml
user: datacoop user: "datacoop"
domain: restic.cannedtuna.org domain: "restic.cannedtuna.org"
repository: datacoop-hevonen repository: "datacoop-hevonen"
version: 1.6.0 version: "1.6.0"
disabled_in_vagrant: true disabled_in_vagrant: true
docker_registry: docker_registry:
file: docker_registry.yml file: docker_registry.yml
domain: "docker.{{ base_domain }}" domain: "docker.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/docker-registry" volume_folder: "{{ volume_root_folder }}/docker-registry"
username: docker username: "docker"
password: "{{ docker_password }}" password: "{{ docker_password }}"
version: 2 version: "2"
### External services ### ### External services ###
@ -70,7 +70,7 @@ services:
domain: "cloud.{{ base_domain }}" domain: "cloud.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/nextcloud" volume_folder: "{{ volume_root_folder }}/nextcloud"
version: 25-apache version: 25-apache
postgres_version: 10 postgres_version: "10"
redis_version: 7-alpine redis_version: 7-alpine
allowed_sender_domain: true allowed_sender_domain: true
@ -78,7 +78,7 @@ services:
file: gitea.yml file: gitea.yml
domain: "git.{{ base_domain }}" domain: "git.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/gitea" volume_folder: "{{ volume_root_folder }}/gitea"
version: 1.18.0 version: 1.18
allowed_sender_domain: true allowed_sender_domain: true
passit: passit:
@ -86,7 +86,7 @@ services:
domain: "passit.{{ base_domain }}" domain: "passit.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/passit" volume_folder: "{{ volume_root_folder }}/passit"
version: stable version: stable
postgres_version: 10 postgres_version: 15-alpine
allowed_sender_domain: true allowed_sender_domain: true
matrix: matrix:
@ -94,7 +94,7 @@ services:
domain: "matrix.{{ base_domain }}" domain: "matrix.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/matrix" volume_folder: "{{ volume_root_folder }}/matrix"
version: v1.63.1 version: v1.63.1
postgres_version: 10 postgres_version: "10"
allowed_sender_domain: true allowed_sender_domain: true
riot: riot:
@ -119,7 +119,7 @@ services:
file: hedgedoc.yml file: hedgedoc.yml
domain: "pad.{{ base_domain }}" domain: "pad.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/hedgedoc" volume_folder: "{{ volume_root_folder }}/hedgedoc"
version: 1.9.6 version: 1.9.6-alpine
postgres_version: 10-alpine postgres_version: 10-alpine
data_coop_website: data_coop_website:
@ -138,24 +138,29 @@ services:
domain: "2022.slides.{{ base_domain }}" domain: "2022.slides.{{ base_domain }}"
version: latest version: latest
fedi_dk_website:
file: websites/fedi.dk.yaml
domain: fedi.dk
version: latest
cryptohagen_website: cryptohagen_website:
file: websites/cryptohagen.dk.yml file: websites/cryptohagen.dk.yml
domains: domains:
- cryptohagen.dk - "cryptohagen.dk"
- www.cryptohagen.dk - "www.cryptohagen.dk"
ulovliglogning_website: ulovliglogning_website:
file: websites/ulovliglogning.dk.yml file: websites/ulovliglogning.dk.yml
domains: domains:
- ulovliglogning.dk - "ulovliglogning.dk"
- www.ulovliglogning.dk - "www.ulovliglogning.dk"
- ulovlig-logning.dk - "ulovlig-logning.dk"
cryptoaarhus_website: cryptoaarhus_website:
file: websites/cryptoaarhus.dk.yml file: websites/cryptoaarhus.dk.yml
domains: domains:
- cryptoaarhus.dk - "cryptoaarhus.dk"
- www.cryptoaarhus.dk - "www.cryptoaarhus.dk"
drone: drone:
file: drone.yml file: drone.yml
@ -184,12 +189,8 @@ services:
file: rallly.yml file: rallly.yml
domain: "when.{{ base_domain }}" domain: "when.{{ base_domain }}"
volume_folder: "{{ volume_root_folder }}/rallly" volume_folder: "{{ volume_root_folder }}/rallly"
<<<<<<< HEAD
version: ac55701890cd866ee946deb25e2b2839fb14900e
postgres_version: 14-alpine
=======
version: e4482a1edb2fb56292d07ee8811a24f2a0d6b114 version: e4482a1edb2fb56292d07ee8811a24f2a0d6b114
>>>>>>> main postgres_version: 14-alpine
allowed_sender_domain: true allowed_sender_domain: true
pinafore: pinafore:
@ -200,7 +201,7 @@ services:
membersystem: membersystem:
file: membersystem.yml file: membersystem.yml
domain: "member.{{ base_domain }}" domain: "member.{{ base_domain }}"
django_admins: Vidir:valberg@orn.li django_admins: "Vidir:valberg@orn.li"
version: latest version: latest
postgres_version: 13-alpine postgres_version: 13-alpine
allowed_sender_domain: true allowed_sender_domain: true

View File

@ -26,7 +26,16 @@
- "keycloak" - "keycloak"
- "postfix" - "postfix"
- "external_services" - "external_services"
command: "start --db=postgres --db-url=jdbc:postgresql://postgres:5432/keycloak --db-username=keycloak --db-password={{ postgres_passwords.keycloak }} --hostname={{ services.keycloak.domain }} --proxy=edge --https-port=8080 --http-relative-path=/auth" command:
- "start"
- "--db=postgres"
- "--db-url=jdbc:postgresql://postgres:5432/keycloak"
- "--db-username=keycloak"
- "--db-password={{ postgres_passwords.keycloak }}"
- "--hostname={{ services.keycloak.domain }}"
- "--proxy=edge"
- "--https-port=8080"
- "--http-relative-path=/auth"
environment: environment:
VIRTUAL_HOST: "{{ services.keycloak.domain }}" VIRTUAL_HOST: "{{ services.keycloak.domain }}"
VIRTUAL_PORT: "8080" VIRTUAL_PORT: "8080"

View File

@ -33,8 +33,6 @@
CSRF_TRUSTED_ORIGINS: "https://{{ services.membersystem.domain }}" CSRF_TRUSTED_ORIGINS: "https://{{ services.membersystem.domain }}"
DJANGO_ADMINS: "{{ services.membersystem.django_admins }}" DJANGO_ADMINS: "{{ services.membersystem.django_admins }}"
DEFAULT_FROM_EMAIL: "noreply@{{ services.membersystem.domain }}" DEFAULT_FROM_EMAIL: "noreply@{{ services.membersystem.domain }}"
labels:
com.centurylinklabs.watchtower.enable: "true"
postgres: postgres:
image: "postgres:{{ services.membersystem.postgres_version }}" image: "postgres:{{ services.membersystem.postgres_version }}"

View File

@ -21,7 +21,3 @@
LETSENCRYPT_HOST: "{{ services.netdata.domain }}" LETSENCRYPT_HOST: "{{ services.netdata.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
PGID: "999" PGID: "999"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -1,5 +1,12 @@
# vim: ft=yaml.ansible # vim: ft=yaml.ansible
--- ---
- name: Create directory for Passit data
file:
name: "{{ services.passit.volume_folder }}/data"
owner: '70'
group: root
state: directory
- name: setup passit containers - name: setup passit containers
docker_compose: docker_compose:
project_name: "passit" project_name: "passit"
@ -19,7 +26,7 @@
POSTGRES_PASSWORD: "{{ postgres_passwords.passit }}" POSTGRES_PASSWORD: "{{ postgres_passwords.passit }}"
passit_app: passit_app:
image: "passit/passit:{{ services.passit.version }}" image: "passit/passit@sha256:c4b96bc67222936f58f344d5dd1020227ad8e11ad5f82ed3cbf0bcfa8fe9b2e7" #:{{ services.passit.version }}"
command: "bin/start.sh" command: "bin/start.sh"
restart: "always" restart: "always"
networks: networks:

View File

@ -12,5 +12,3 @@
VIRTUAL_PORT: "4002" VIRTUAL_PORT: "4002"
LETSENCRYPT_HOST: "{{ services.pinafore.domain }}" LETSENCRYPT_HOST: "{{ services.pinafore.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -33,8 +33,6 @@
interval: 5s interval: 5s
timeout: 5s timeout: 5s
retries: 5 retries: 5
labels:
com.centurylinklabs.watchtower.enable: "true"
rallly: rallly:
image: "lukevella/rallly:{{ services.rallly.version }}" image: "lukevella/rallly:{{ services.rallly.version }}"
@ -53,8 +51,6 @@
VIRTUAL_PORT: "3000" VIRTUAL_PORT: "3000"
LETSENCRYPT_HOST: "{{ services.rallly.domain }}" LETSENCRYPT_HOST: "{{ services.rallly.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"
networks: networks:
rallly_internal: rallly_internal:

View File

@ -11,7 +11,7 @@
image: mazzolino/restic:{{ services.restic.version }} image: mazzolino/restic:{{ services.restic.version }}
restart: always restart: always
environment: environment:
RUN_ON_STARTUP: "true" RUN_ON_STARTUP: "false"
BACKUP_CRON: "0 30 3 * * *" BACKUP_CRON: "0 30 3 * * *"
RESTIC_REPOSITORY: "rest:https://{{ services.restic.user }}:{{ restic_secrets.user_password }}@{{ services.restic.domain }}/{{ services.restic.repository }}" RESTIC_REPOSITORY: "rest:https://{{ services.restic.user }}:{{ restic_secrets.user_password }}@{{ services.restic.domain }}/{{ services.restic.repository }}"
RESTIC_PASSWORD: "{{ restic_secrets.repository_password }}" RESTIC_PASSWORD: "{{ restic_secrets.repository_password }}"
@ -32,7 +32,7 @@
restic-prune: restic-prune:
image: "mazzolino/restic:{{ services.restic.version }}" image: "mazzolino/restic:{{ services.restic.version }}"
environment: environment:
RUN_ON_STARTUP: "true" RUN_ON_STARTUP: "false"
PRUNE_CRON: "0 0 4 * * *" PRUNE_CRON: "0 0 4 * * *"
RESTIC_REPOSITORY: "rest:https://{{ services.restic.user }}:{{ restic_secrets.user_password }}@{{ services.restic.domain }}/{{ services.restic.repository }}" RESTIC_REPOSITORY: "rest:https://{{ services.restic.user }}:{{ restic_secrets.user_password }}@{{ services.restic.domain }}/{{ services.restic.repository }}"
RESTIC_PASSWORD: "{{ restic_secrets.repository_password }}" RESTIC_PASSWORD: "{{ restic_secrets.repository_password }}"

View File

@ -7,9 +7,8 @@
restart_policy: unless-stopped restart_policy: unless-stopped
networks: networks:
- name: external_services - name: external_services
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "{{ services.docker_registry.volume_folder }}/auth/config.json:/config.json"
env: env:
WATCHTOWER_LABEL_ENABLE: "true"
WATCHTOWER_POLL_INTERVAL: "60" WATCHTOWER_POLL_INTERVAL: "60"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/root/.docker/config.json:/config.json:ro"

View File

@ -17,6 +17,3 @@
- NET_ADMIN - NET_ADMIN
devices: devices:
- "/dev/net/tun" - "/dev/net/tun"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -11,5 +11,3 @@
VIRTUAL_HOST : "{{ services.cryptoaarhus_website.domains|join(',') }}" VIRTUAL_HOST : "{{ services.cryptoaarhus_website.domains|join(',') }}"
LETSENCRYPT_HOST: "{{ services.cryptoaarhus_website.domains|join(',') }}" LETSENCRYPT_HOST: "{{ services.cryptoaarhus_website.domains|join(',') }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -11,5 +11,3 @@
VIRTUAL_HOST : "{{ services.cryptohagen_website.domains|join(',') }}" VIRTUAL_HOST : "{{ services.cryptohagen_website.domains|join(',') }}"
LETSENCRYPT_HOST: "{{ services.cryptohagen_website.domains|join(',') }}" LETSENCRYPT_HOST: "{{ services.cryptohagen_website.domains|join(',') }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -21,5 +21,3 @@
VIRTUAL_HOST : "{{ services.data_coop_website.domains|join(',') }}" VIRTUAL_HOST : "{{ services.data_coop_website.domains|join(',') }}"
LETSENCRYPT_HOST: "{{ services.data_coop_website.domains|join(',') }}" LETSENCRYPT_HOST: "{{ services.data_coop_website.domains|join(',') }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -0,0 +1,19 @@
# vim: ft=yaml.ansible
---
- name: setup fedi.dk website with unipi
docker_container:
name: fedi.dk_website
image: docker.data.coop/unipi:{{ services.fedi_dk_website.version }}
restart_policy: unless-stopped
purge_networks: yes
networks:
- name: external_services
env:
VIRTUAL_HOST: "{{ services.fedi_dk_website.domain }}"
LETSENCRYPT_HOST: "{{ services.fedi_dk_website.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
command: "--remote=https://git.data.coop/fedi.dk/website.git#main"
capabilities:
- NET_ADMIN
devices:
- "/dev/net/tun"

View File

@ -11,5 +11,3 @@
VIRTUAL_HOST : "{{ services.new_data_coop_website.domain }}" VIRTUAL_HOST : "{{ services.new_data_coop_website.domain }}"
LETSENCRYPT_HOST: "{{ services.new_data_coop_website.domain }}" LETSENCRYPT_HOST: "{{ services.new_data_coop_website.domain }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"

View File

@ -11,5 +11,3 @@
VIRTUAL_HOST: "{{ services.ulovliglogning_website.domains|join(',') }}" VIRTUAL_HOST: "{{ services.ulovliglogning_website.domains|join(',') }}"
LETSENCRYPT_HOST: "{{ services.ulovliglogning_website.domains|join(',') }}" LETSENCRYPT_HOST: "{{ services.ulovliglogning_website.domains|join(',') }}"
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}" LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
labels:
com.centurylinklabs.watchtower.enable: "true"