From efcd3891ba37daa11d4a45a8b0c395e552256697 Mon Sep 17 00:00:00 2001 From: Simon C Date: Fri, 15 Apr 2022 14:54:08 +0200 Subject: [PATCH] feat(Vikunja): Add new service --- README.md | 3 +- vikunja/.env | 86 +++++++++++++++++++++++++++ vikunja/README.md | 12 ++++ vikunja/docker-compose.local.yml | 11 ++++ vikunja/docker-compose.logs.yml | 17 ++++++ vikunja/docker-compose.postgres.yml | 19 ++++++ vikunja/docker-compose.prometheus.yml | 10 ++++ vikunja/docker-compose.redis.yml | 16 +++++ vikunja/docker-compose.smtp.yml | 18 ++++++ vikunja/docker-compose.traefik.yml | 21 +++++++ vikunja/docker-compose.yml | 42 +++++++++++++ 11 files changed, 254 insertions(+), 1 deletion(-) create mode 100644 vikunja/.env create mode 100644 vikunja/README.md create mode 100644 vikunja/docker-compose.local.yml create mode 100644 vikunja/docker-compose.logs.yml create mode 100644 vikunja/docker-compose.postgres.yml create mode 100644 vikunja/docker-compose.prometheus.yml create mode 100644 vikunja/docker-compose.redis.yml create mode 100644 vikunja/docker-compose.smtp.yml create mode 100644 vikunja/docker-compose.traefik.yml create mode 100644 vikunja/docker-compose.yml diff --git a/README.md b/README.md index 60e30a6..f3ee893 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ Vous trouverez dans ce dépôt l'ensemble des services Open Source que RésiLien - [HedgeDoc](./hedgedoc) : Prise de note en Markdown collaborative en temps réel - [Mobilizon](./mobilizon): Permet l'organisation d'évènements et de gestion de groupes - [Nextcloud](./nextcloud) : Site d'hébergement de fichiers et une plateforme de collaboration -- [Plausible](./plausible) : Plausible est une plateforme d'analyse Web légère et open source. +- [Plausible](./plausible) : Plausible est une plateforme d'analyse Web légère et open source +- [Vikunja](./vikunja) : L'application pour organiser sa vie ### Pour les devs / ops diff --git a/vikunja/.env b/vikunja/.env new file mode 100644 index 0000000..62a1d6f --- /dev/null +++ b/vikunja/.env @@ -0,0 +1,86 @@ +######## +# DOCKER + +#DOCKER_CONTEXT= +#DOCKER_HOST= +SERVICES_DIR=.. +COMPOSE_FILE=${SERVICES_DIR}/vikunja/docker-compose.yml:${SERVICES_DIR}/vikunja/docker-compose.local.yml:${SERVICES_DIR}/vikunja/docker-compose.postgres.yml:${SERVICES_DIR}/postgres/docker-compose.yml +#COMPOSE_PROJECT_NAME= + +## APP + +#VIKUNJA_API_IMAGE= +#VIKUNJA_FRONTEND_IMAGE= +VIKUNJA_CONTAINER_NAME=vikunja +VIKUNJA_VOLUME_NAME=vikunja + +VIKUNJA_DOMAIN=vikunja.example.org +VIKUNJA_SERVICE_FRONTENDURL=https://vikunja.example.org/ + +VIKUNJA_SERVICE_JWTSECRET=change-me +#VIKUNJA_SERVICE_JWTTTL=259200 +#VIKUNJA_SERVICE_JWTTTLLONG=2592000 +#VIKUNJA_SERVICE_MAXITEMSPERPAGE=50 +#VIKUNJA_SERVICE_ENABLECALDAV=true +#VIKUNJA_SERVICE_ENABLELINKSHARING=true +#VIKUNJA_SERVICE_ENABLEREGISTRATION=true +#VIKUNJA_SERVICE_ENABLETASKATTACHMENTS=true +#VIKUNJA_SERVICE_TIMEZONE=GMT +#VIKUNJA_SERVICE_ENABLETASKCOMMENTS=true +#VIKUNJA_SERVICE_ENABLETOTP=true +#VIKUNJA_SERVICE_ENABLEEMAILREMINDERS=true +#VIKUNJA_SERVICE_ENABLEUSERDELETION=true +#VIKUNJA_FILES_BASEPATH=./files +#VIKUNJA_FILES_MAXSIZE=20MB + +########## +# POSTGRES + +#POSTGRES_IMAGE= +POSTGRES_CONTAINER_NAME=vikunja-postgres-example +POSTGRES_DB=vikunja-postgres-database-example +POSTGRES_USER=vikunja-postgres-user-example +POSTGRES_PASSWORD=vikunja-postgres-password-example +POSTGRES_VOLUME_NAME=vikunja-postgres-example + +#VIKUNJA_DATABASE_TYPE=postgres +#VIKUNJA_DATABASE_MAXOPENCONNECTIONS=100 +#VIKUNJA_DATABASE_MAXIDLECONNECTIONS=50 +#VIKUNJA_DATABASE_MAXCONNECTIONLIFETIME=10000 +#VIKUNJA_DATABASE_SSLMODE=disable + +###### +# SMTP + +#VIKUNJA_MAILER_ENABLED=true +#VIKUNJA_MAILER_SKIPTLSVERIFY=false +#VIKUNJA_MAILER_QUEUELENGTH=100 +#VIKUNJA_MAILER_QUEUETIMEOUT=30 +#VIKUNJA_MAILER_FORCESSL=false + +VIKUNJA_MAILER_HOST= +#VIKUNJA_MAILER_PORT=465 +VIKUNJA_MAILER_USERNAME= +VIKUNJA_MAILER_PASSWORD= +VIKUNJA_MAILER_FROMEMAIL= + +############ +# PROMETHEUS + +#VIKUNJA_METRICS_ENABLED=false +#VIKUNJA_METRICS_USERNAME= +#VIKUNJA_METRICS_PASSWORD= + +####### +# REDIS + +#REDIS_IMAGE= +REDIS_CONTAINER_NAME=vikunja-redis +REDIS_VOLUME_NAME=vikunja-redis + +######### +# TRAEFIK + +#TRAEFIK_NETWORK_NAME=traefik +#TRAEFIK_ROUTER_NAME=vikunja +#TRAEFIK_ENTRYPOINTS=web diff --git a/vikunja/README.md b/vikunja/README.md new file mode 100644 index 0000000..708a150 --- /dev/null +++ b/vikunja/README.md @@ -0,0 +1,12 @@ +# Vikunja + +> Vikunja est une application auto-hébergeable (facilement installable avec Yunohost) de gestion de tâches, utilisable depuis son navigateur ou un client desktop. Bien que jeune, l'application offre déjà de nombreuses fonctionnalités. +> +> [Framalibre](https://framalibre.org/content/vikunja) + +## Liens + +- [Site officiel](https://vikunja.io/) +- [Code source](https://kolaente.dev/vikunja/) +- [Docker Hub](https://hub.docker.com/u/vikunja) +- [Forum](https://community.vikunja.io/) diff --git a/vikunja/docker-compose.local.yml b/vikunja/docker-compose.local.yml new file mode 100644 index 0000000..dbfbc28 --- /dev/null +++ b/vikunja/docker-compose.local.yml @@ -0,0 +1,11 @@ +version: "3.8" + +services: + vikunja_api: + ports: + - 3456:3456 + vikunja_frontend: + ports: + - ${LOCAL_PORT:-80}:80 + environment: + VIKUNJA_API_URL: http://localhost:3456/api/v1 \ No newline at end of file diff --git a/vikunja/docker-compose.logs.yml b/vikunja/docker-compose.logs.yml new file mode 100644 index 0000000..ec74292 --- /dev/null +++ b/vikunja/docker-compose.logs.yml @@ -0,0 +1,17 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options/#log + +services: + vikunja_api: + environment: + # VIKUNJA_LOG_PATH + VIKUNJA_LOG_ENABLED: ${VIKUNJA_LOG_ENABLED:-true} + VIKUNJA_LOG_STANDARD: ${VIKUNJA_LOG_STANDARD:-stdout} + VIKUNJA_LOG_LEVEL: ${VIKUNJA_LOG_LEVEL:-INFO} # Possible values (case-insensitive) are CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. + VIKUNJA_LOG_DATABASE: ${VIKUNJA_LOG_DATABASE:-off} # Possible values are stdout, stderr, file or off to disable database + VIKUNJA_LOG_DATABASELEVEL: ${VIKUNJA_LOG_DATABASELEVEL:-WARNING} # Possible values (case-insensitive) are CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG + VIKUNJA_LOG_HTTP: ${VIKUNJA_LOG_HTTP:-stdout} # Possible values are stdout, stderr, file or off to disable http logging. + VIKUNJA_LOG_ECHO: ${VIKUNJA_LOG_ECHO:-off} # Possible values are stdout, stderr, file or off to disable standard logging. + VIKUNJA_LOG_EVENTS: ${VIKUNJA_LOG_EVENTS:-stdout} # Possible values are stdout, stderr, file or off to disable events logging. + VIKUNJA_LOG_EVENTSLEVEL: ${VIKUNJA_LOG_EVENTSLEVEL:-INFO} # Possible values (case-insensitive) are ERROR, INFO, DEBUG. diff --git a/vikunja/docker-compose.postgres.yml b/vikunja/docker-compose.postgres.yml new file mode 100644 index 0000000..4193043 --- /dev/null +++ b/vikunja/docker-compose.postgres.yml @@ -0,0 +1,19 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options/#database + +services: + vikunja_api: + depends_on: + - postgres + environment: + VIKUNJA_DATABASE_TYPE: ${VIKUNJA_DATABASE_TYPE:-postgres} + VIKUNJA_DATABASE_MAXOPENCONNECTIONS: ${VIKUNJA_DATABASE_MAXOPENCONNECTIONS:-100} + VIKUNJA_DATABASE_MAXIDLECONNECTIONS: ${VIKUNJA_DATABASE_MAXIDLECONNECTIONS:-50} + VIKUNJA_DATABASE_MAXCONNECTIONLIFETIME: ${VIKUNJA_DATABASE_MAXCONNECTIONLIFETIME:-10000} + VIKUNJA_DATABASE_SSLMODE: ${VIKUNJA_DATABASE_SSLMODE:-disable} + + VIKUNJA_DATABASE_HOST: ${POSTGRES_CONTAINER_NAME:-postgres}:5432 # Default name is same as ../postgres/docker-compose.yml:8 + VIKUNJA_DATABASE_DATABASE: ${POSTGRES_DB:?err} + VIKUNJA_DATABASE_USER: ${POSTGRES_USER:?err} + VIKUNJA_DATABASE_PASSWORD: ${POSTGRES_PASSWORD:?err} diff --git a/vikunja/docker-compose.prometheus.yml b/vikunja/docker-compose.prometheus.yml new file mode 100644 index 0000000..219ce35 --- /dev/null +++ b/vikunja/docker-compose.prometheus.yml @@ -0,0 +1,10 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options/#metrics + +services: + vikunja_api: + environment: + VIKUNJA_METRICS_ENABLED: ${VIKUNJA_METRICS_ENABLED-:false} + VIKUNJA_METRICS_USERNAME: ${VIKUNJA_METRICS_USERNAME} + VIKUNJA_METRICS_PASSWORD: ${VIKUNJA_METRICS_PASSWORD} diff --git a/vikunja/docker-compose.redis.yml b/vikunja/docker-compose.redis.yml new file mode 100644 index 0000000..72289d6 --- /dev/null +++ b/vikunja/docker-compose.redis.yml @@ -0,0 +1,16 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options/#redis + +services: + vikunja_api: + depends_on: + - redis + environment: + VIKUNJA_CACHE_ENABLED: 'true' + VIKUNJA_CACHE_TYPE: redis + VIKUNJA_REDIS_ENABLED: 'true' + + VIKUNJA_REDIS_HOST: ${REDIS_CONTAINER_NAME:-redis}:6379 # It's default port because we don't have yet configuration for redis port + #VIKUNJA_REDIS_PASSWORD: ${VIKUNJA_REDIS_PASSWORD} # We don't have yet configuration for redis with password + VIKUNJA_REDIS_DB: 0 # It's default becouse we don't have yet configuration for redis database name diff --git a/vikunja/docker-compose.smtp.yml b/vikunja/docker-compose.smtp.yml new file mode 100644 index 0000000..c9f98c2 --- /dev/null +++ b/vikunja/docker-compose.smtp.yml @@ -0,0 +1,18 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options/#mailer + +services: + vikunja_api: + environment: + VIKUNJA_MAILER_ENABLED: ${VIKUNJA_MAILER_ENABLED:-true} + VIKUNJA_MAILER_SKIPTLSVERIFY: ${VIKUNJA_MAILER_SKIPTLSVERIFY:-false} + VIKUNJA_MAILER_QUEUELENGTH: ${VIKUNJA_MAILER_QUEUELENGTH:-100} + VIKUNJA_MAILER_QUEUETIMEOUT: ${VIKUNJA_MAILER_QUEUETIMEOUT:-30} + VIKUNJA_MAILER_FORCESSL: ${VIKUNJA_MAILER_FORCESSL:-false} + + VIKUNJA_MAILER_HOST: ${VIKUNJA_MAILER_HOST:?err} + VIKUNJA_MAILER_PORT: ${VIKUNJA_MAILER_PORT:-587} + VIKUNJA_MAILER_USERNAME: ${VIKUNJA_MAILER_USERNAME:?err} + VIKUNJA_MAILER_PASSWORD: ${VIKUNJA_MAILER_PASSWORD:?err} + VIKUNJA_MAILER_FROMEMAIL: ${VIKUNJA_MAILER_FROMEMAIL:?err} diff --git a/vikunja/docker-compose.traefik.yml b/vikunja/docker-compose.traefik.yml new file mode 100644 index 0000000..eabf6d1 --- /dev/null +++ b/vikunja/docker-compose.traefik.yml @@ -0,0 +1,21 @@ +version: "3.8" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME:-traefik} + +# https://vikunja.io/docs/full-docker-example/#example-with-traefik-2 + +services: + vikunja_api: + labels: + - traefik.enable=true + - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vikunja}-api.rule=Host(`${VIKUNJA_DOMAIN:?err}`) && PathPrefix(`/api/v1`, `/dav/`, `/.well-known/`) + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vikunja}-api.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} + vikunja_frontend: + labels: + - traefik.enable=true + - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vikunja}-frontend.rule=Host(`${VIKUNJA_DOMAIN:?err}`) + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vikunja}-frontend.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/vikunja/docker-compose.yml b/vikunja/docker-compose.yml new file mode 100644 index 0000000..db11ae4 --- /dev/null +++ b/vikunja/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.8" + +# https://vikunja.io/docs/config-options +# https://vikunja.io/docs/full-docker-example/ + +volumes: + vikunja: + name: ${VIKUNJA_VOLUME_NAME:-vikunja} + +services: + vikunja_api: + container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_api + image: ${VIKUNJA_API_IMAGE:-vikunja/api:0.18.1} + restart: always + environment: + VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET} + VIKUNJA_SERVICE_JWTTTL: ${VIKUNJA_SERVICE_JWTTTL:-259200} + VIKUNJA_SERVICE_JWTTTLLONG: ${VIKUNJA_SERVICE_JWTTTLLONG:-2592000} + + VIKUNJA_SERVICE_FRONTENDURL: ${VIKUNJA_SERVICE_FRONTENDURL:?err} + VIKUNJA_SERVICE_MAXITEMSPERPAGE: ${VIKUNJA_SERVICE_MAXITEMSPERPAGE:-50} + VIKUNJA_SERVICE_ENABLECALDAV: ${VIKUNJA_SERVICE_ENABLECALDAV:-true} + VIKUNJA_SERVICE_ENABLELINKSHARING: ${VIKUNJA_SERVICE_ENABLELINKSHARING:-true} + VIKUNJA_SERVICE_ENABLEREGISTRATION: ${VIKUNJA_SERVICE_ENABLEREGISTRATION:-true} + VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: ${VIKUNJA_SERVICE_ENABLETASKATTACHMENTS:-true} + VIKUNJA_SERVICE_TIMEZONE: ${VIKUNJA_SERVICE_TIMEZONE:-GMT} + VIKUNJA_SERVICE_ENABLETASKCOMMENTS: ${VIKUNJA_SERVICE_ENABLETASKCOMMENTS:-true} + VIKUNJA_SERVICE_ENABLETOTP: ${VIKUNJA_SERVICE_ENABLETOTP:-true} + VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: ${VIKUNJA_SERVICE_ENABLEEMAILREMINDERS:-true} + VIKUNJA_SERVICE_ENABLEUSERDELETION: ${VIKUNJA_SERVICE_ENABLEUSERDELETION:-true} + + VIKUNJA_FILES_BASEPATH: ${VIKUNJA_FILES_BASEPATH:-./files} + VIKUNJA_FILES_MAXSIZE: ${VIKUNJA_FILES_MAXSIZE:-20MB} + PUID: ${VIKUNJA_PUID:-1000} + PGID: ${VIKUNJA_PGID:-1000} + volumes: + - vikunja:/app/vikunja/files + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + vikunja_frontend: + container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_frontend + image: ${VIKUNJA_FRONTEND_IMAGE:-vikunja/frontend:0.18.2}