diff --git a/README.md b/README.md index 065f41f..716004e 100644 --- a/README.md +++ b/README.md @@ -6,28 +6,19 @@ Vous trouverez dans ce dépôt l'ensemble des services Open Source que RésiLien ### Pour les utilisateurs -- [Directus](./directus) : Permet d'administrer une base de données - [HedgeDoc](./hedgedoc) : Prise de note en Markdown collaborative en temps réel -- [listmonk](./listmonk) : Gestionnaire de listes de diffusion et de newsletter -- [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 -- [Vaultwarden](./vaultwarden) : Gestionnaire de mot de passe compatible avec Bitwarden -- [Vikunja](./vikunja) : L'application pour organiser sa vie +- [Directus](./directus) : Permet d'administrer une base de données ### Pour les devs / ops -- [ClickHouse](./clickhouse) : Un logiciel libre de base de données orientée colonnes pour le traitement analytique en ligne -- [Drone](./drone) : Un service d'intégration continue -- [GeoIP Update](./geoipupdate) : Permet de télécharger la base de données GeoIP2 permettant de localiser les IPs -- [Gitea](./gitea) : Un service Git très simple à installer et à utiliser. Il est similaire à GitHub, Bitbucket ou Gitlab. +- [Drone](./drone) ⏸️ `en pause` : Un service d'intégration continue +- [Gitea](./gitea) : Un service Git auto-hébergé très simple à installer et à utiliser. Il est similaire à GitHub, Bitbucket ou Gitlab. - [Grafana](./grafana) : Un outil de supervision simple et élégant - [PostgreSQL](./postgres) : PostgreSQL est un système de gestion de base de données relationnelle et objet. - [Prometheus](./prometheus) : Un logiciel de surveillance informatique -- [Redis](./redis) : Système de gestion de base de données clé-valeur extensible, très hautes performances -- [Registry Docker](./registry) : Une application qui permet de distribuer des images Docker +- [Docker Registry](./registry) : Une application qui permet de distribuer des images Docker - [Traefik](./traefik) : Traefik, un reverse-proxy pour vos conteneurs -- [Uptime Kuma](./uptimekuma) : outil de surveillance de site ou service WEB - [Watchtower](./watchtower) : Automatiser la mise à jour d'image docker ## Comment ça marche ? diff --git a/clickhouse/.env b/clickhouse/.env deleted file mode 100644 index f3216ca..0000000 --- a/clickhouse/.env +++ /dev/null @@ -1,3 +0,0 @@ -#CLICKHOUSE_VOLUME_NAME= -#CLICKHOUSE_CONTAINER_NAME= -#CLICKHOUSE_IMAGE= diff --git a/clickhouse/README.md b/clickhouse/README.md deleted file mode 100644 index 54182f5..0000000 --- a/clickhouse/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# ClickHouse - -> ClickHouse est un logiciel libre de base de données orientée colonnes (DBMS) pour le traitement analytique en ligne (OLAP). -> -> [Wikipédia][wikipedia] - -## Liens - -- [Site Officiel][site] -- [Code source][source] -- [Docker Hub][dockerhub] - -[wikipedia]: https://fr.wikipedia.org/wiki/ClickHouse -[site]: https://clickhouse.com/ -[source]: https://github.com/ClickHouse/ClickHouse -[dockerhub]: https://hub.docker.com/r/clickhouse/clickhouse-server diff --git a/clickhouse/docker-compose.yml b/clickhouse/docker-compose.yml deleted file mode 100644 index f22b192..0000000 --- a/clickhouse/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: "3.8" - -volumes: - clickhouse: - name: ${CLICKHOUSE_VOLUME_NAME:-clickhouse} - -services: - clickhouse: - container_name: ${CLICKHOUSE_CONTAINER_NAME:-clickhouse} - image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:22.2.2.1-alpine} - restart: always - volumes: - - clickhouse:/var/lib/clickhouse - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - ulimits: - nofile: - soft: 262144 - hard: 262144 diff --git a/directus/.env b/directus/.env index b97bdd4..b9c3c90 100644 --- a/directus/.env +++ b/directus/.env @@ -4,7 +4,7 @@ #DOCKER_CONTEXT= #DOCKER_HOST= SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/directus/docker-compose.yml:${SERVICES_DIR}/directus/docker-compose.traefik.yml:${SERVICES_DIR}/directus/docker-compose.smtp.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml +COMPOSE_FILE=./docker-compose.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml:${SERVICES_DIR}/traefik/docker-compose.network.yml #COMPOSE_PROJECT_NAME= ########## @@ -12,22 +12,11 @@ COMPOSE_FILE=${SERVICES_DIR}/directus/docker-compose.yml:${SERVICES_DIR}/directu # # see https://github.com/directus/directus/blob/main/api/example.env -DIRECTUS_CONTAINER_NAME=directus_cool_life DIRECTUS_DOMAIN=directus.cool.life -DIRECTUS_PUBLIC_URL=https://${DIRECTUS_DOMAIN} DIRECTUS_KEY=255d861b-5ea1-5996-9aa3-922530ec40b1 DIRECTUS_SECRET=6116487b-cda1-52c2-b5b5-c8022c45e263 DIRECTUS_ADMIN_EMAIL=admin@example.com DIRECTUS_ADMIN_PASSWORD=d1r3ctu5 - -EMAIL_FROM=no-reply@${DIRECTUS_DOMAIN} -EMAIL_SMTP_HOST=mail.example.org -#EMAIL_SMTP_PORT= -EMAIL_SMTP_USER=user -EMAIL_SMTP_PASSWORD=password -#EMAIL_SMTP_SECURE= -#EMAIL_SMTP_IGNORE_TLS= - # DIRECTUS_PUID= # DIRECTUS_PGID= @@ -39,18 +28,3 @@ POSTGRES_PASSWORD=password-example POSTGRES_DB=postgres-database-name-example POSTGRES_CONTAINER_NAME=directus-postgres POSTGRES_VOLUME_NAME=directus-postgres -#POSTGRES_IMAGE= - -####### -# REDIS - -#REDIS_IMAGE= -#REDIS_CONTAINER_NAME= -#REDIS_VOLUME_NAME= - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= # Don't use char '.' -#TRAEFIK_ENTRYPOINTS= diff --git a/directus/docker-compose.redis.yml b/directus/docker-compose.redis.yml deleted file mode 100644 index f71501e..0000000 --- a/directus/docker-compose.redis.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- - -version: "3.8" - -services: - directus: - environment: - CACHE_ENABLED: 'true' - CACHE_STORE: 'redis' - CACHE_REDIS: 'redis://${REDIS_CONTAINER_NAME:-redis}:6379' diff --git a/directus/docker-compose.smtp.yml b/directus/docker-compose.smtp.yml deleted file mode 100644 index 825e198..0000000 --- a/directus/docker-compose.smtp.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -services: - directus: - environment: - EMAIL_TRANSPORT: smtp - EMAIL_FROM: ${EMAIL_FROM:?err} - EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST} - EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT:-465} - EMAIL_SMTP_USER: ${EMAIL_SMTP_USER:?err} - EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD:?err} - EMAIL_SMTP_SECURE: ${EMAIL_SMTP_SECURE:-true} - EMAIL_SMTP_IGNORE_TLS: ${EMAIL_SMTP_IGNORE_TLS:-false} diff --git a/directus/docker-compose.traefik.yml b/directus/docker-compose.traefik.yml deleted file mode 100644 index c199f12..0000000 --- a/directus/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - directus: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-directus}.rule=Host(`${DIRECTUS_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-directus}.entrypoints=web diff --git a/directus/docker-compose.yml b/directus/docker-compose.yml index 1422d1d..8da67b2 100644 --- a/directus/docker-compose.yml +++ b/directus/docker-compose.yml @@ -1,5 +1,4 @@ --- - version: "3.8" volumes: @@ -9,10 +8,12 @@ volumes: services: directus: container_name: ${DIRECTUS_CONTAINER_NAME:-directus} - image: ${DIRECTUS_IMAGE:-directus/directus:9.8.0} + image: ${DIRECTUS_IMAGE:-directus/directus:9.0.0-rc.95} restart: always volumes: - directus:/directus/uploads + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro depends_on: - postgres - redis @@ -26,13 +27,20 @@ services: PUBLIC_URL: ${DIRECTUS_PUBLIC_URL:?err} DB_CLIENT: 'pg' - DB_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default name is same as ../postgres/docker-compose.yml:8 + DB_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} DB_PORT: '5432' DB_DATABASE: ${POSTGRES_DB:?err} DB_USER: ${POSTGRES_USER:?err} DB_PASSWORD: ${POSTGRES_PASSWORD:?err} - TZ: ${TZ:-Europe/Paris} + CACHE_ENABLED: 'true' + CACHE_STORE: 'redis' + CACHE_REDIS: 'redis://${REDIS_CONTAINER_NAME:-redis}:6379' PUID: ${DIRECTUS_PUID:-1000} PGID: ${DIRECTUS_PGID:-1000} + labels: + - traefik.enable=true + - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-directus}.rule=Host(`${DIRECTUS_DOMAIN:?err}`) + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-directus}.entrypoints=web diff --git a/drone/.env b/drone/.env new file mode 100644 index 0000000..a698659 --- /dev/null +++ b/drone/.env @@ -0,0 +1,37 @@ +## DOCKER + +COMPOSE_FILE=./docker-compose.yml:./docker-compose.gitea.yml:./docker-compose.traefik.yml +TRAEFIK_NETWORK_NAME=kifeart + + +## DRONE SERVER + +# https://hub.docker.com/r/drone/drone/tags +DRONE_SERVER_IMAGE=drone/drone:1.7.0 + +DRONE_SERVER_VOLUME_NAME=drone-server +DRONE_SERVER_CONTAINER_NAME=drone-server + +# https://docs.drone.io/server/reference/ +DRONE_GIT_ALWAYS_AUTH=true +DRONE_RPC_SECRET=9VjG2Dj34Kdo2JYvn5iVxd7JjT5 +DRONE_SERVER_HOST=ci.cool.life +DRONE_SERVER_PROTO=https + +# https://docs.drone.io/server/provider/gitea/ +DRONE_GITEA_SERVER=gitea.cool.life +DRONE_GITEA_CLIENT_ID=UI76T78G-HDZ8-7CSD-6SDZ-YUIDG8Z7DSQ8 +DRONE_GITEA_CLIENT_SECRET=y9ruXnEqluXjKUcfs5yIFlH83yb1OpP32NCf0h5YJwg= + + + +## DRONE RUNNER + +# https://hub.docker.com/r/drone/drone-runner-docker/tags +DRONE_RUNNER_IMAGE=drone/drone-runner-docker:1.3.0 +DRONE_RUNNER_CONTAINER_NAME=drone-runner +DRONE_RUNNER_CAPACITY=2 +DRONE_RUNNER_HOST=ci-runner.cool.life +DRONE_RUNNER_NAME=ci-runner.cool.life +DRONE_RUNNER_UI_USERNAME=kosssi +DRONE_RUNNER_UI_PASSWORD=$not$a$password diff --git a/drone/README.md b/drone/README.md index b1f2662..6b84604 100644 --- a/drone/README.md +++ b/drone/README.md @@ -4,22 +4,6 @@ > > [Codeflow][article] -## Documentation - -Drone est un logiciel d'intégration continue léger. Il est utilisé comme plate-forme de test et/ou de livraison automatisée. - -Le service est basé sur 2 briques : -- le coté serveur qui prend en compte les demande de l'extérieur avec une interface (_[server](./server)_) -- le coté exécution des tâches (_[runner](./runner)_). - -### Génération de clé - -Dans la documentation officielle, il est conseillé de générer les clés avec la commande : - -``` -openssl rand -hex 16 -``` - ## Liens - [Site internet][site] diff --git a/drone/docker-compose.gitea.yml b/drone/docker-compose.gitea.yml new file mode 100644 index 0000000..4c4a925 --- /dev/null +++ b/drone/docker-compose.gitea.yml @@ -0,0 +1,10 @@ +version: "3.8" + +# https://docs.drone.io/server/provider/gitea/ + +services: + drone-server: + environment: + DRONE_GITEA_SERVER: ${DRONE_GITEA_SERVER} + DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID} + DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET} diff --git a/drone/docker-compose.traefik.yml b/drone/docker-compose.traefik.yml new file mode 100644 index 0000000..5a03918 --- /dev/null +++ b/drone/docker-compose.traefik.yml @@ -0,0 +1,22 @@ +version: "3.8" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME} + +services: + drone-server: + labels: + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME} + + traefik.http.routers.drone-server.rule: 'Host(`${DRONE_SERVER_HOST}`)' + traefik.http.routers.drone-server.entrypoints: 'web' + + drone-runner: + labels: + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME} + + traefik.http.routers.drone-runner.rule: 'Host(`${DRONE_RUNNER_HOST}`)' + traefik.http.routers.drone-runner.entrypoints: 'web' diff --git a/drone/docker-compose.yml b/drone/docker-compose.yml new file mode 100644 index 0000000..78bd9b6 --- /dev/null +++ b/drone/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.8" + +volumes: + drone-server: + name: ${DRONE_SERVER_VOLUME_NAME} + +services: + drone-server: + container_name: ${DRONE_SERVER_CONTAINER_NAME} + image: ${DRONE_SERVER_IMAGE} + restart: always + environment: + DRONE_GIT_ALWAYS_AUTH: ${DRONE_GIT_ALWAYS_AUTH} + DRONE_RPC_SECRET: ${DRONE_RPC_SECRET} + DRONE_SERVER_HOST: ${DRONE_SERVER_HOST} + DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO} + DRONE_LOGS_DEBUG: 'true' + volumes: + - drone-server:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + + drone-runner: + container_name: ${DRONE_RUNNER_CONTAINER_NAME} + image: ${DRONE_RUNNER_IMAGE} + restart: always + depends_on: + - drone-server + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + environment: + DRONE_RPC_PROTO: http + DRONE_RPC_HOST: ${DRONE_SERVER_CONTAINER_NAME} + DRONE_RPC_SECRET: ${DRONE_RPC_SECRET} + DRONE_RUNNER_CAPACITY: ${DRONE_RUNNER_CAPACITY} + DRONE_RUNNER_NAME: ${DRONE_RUNNER_NAME} + DRONE_UI_USERNAME: ${DRONE_RUNNER_UI_USERNAME} + DRONE_UI_PASSWORD: ${DRONE_RUNNER_UI_PASSWORD} + DRONE_DEBUG: 'true' diff --git a/drone/runner/.env b/drone/runner/.env deleted file mode 100644 index 5d5dbf0..0000000 --- a/drone/runner/.env +++ /dev/null @@ -1,36 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=../.. -COMPOSE_FILE=${SERVICES_DIR}/drone/runner/docker-compose.yml:${SERVICES_DIR}/drone/runner/docker-compose.traefik.yml:${SERVICES_DIR}/drone/runner/docker-compose.dashboard.yml -#COMPOSE_PROJECT_NAME= - - -## DRONE RUNNER -#https://docs.drone.io/runner/docker/configuration/reference/ - -### Docker -# https://hub.docker.com/r/drone/drone-runner-docker/tags -DRONE_RUNNER_IMAGE=drone/drone-runner-docker:1.8.0 -DRONE_RUNNER_CONTAINER_NAME=drone-server - -### Drone -# https://docs.drone.io/runner/docker/installation/linux/ -DRONE_RPC_HOST=drone.cool.life -DRONE_RPC_PROTO=https -DRONE_RPC_SECRET=change-me -DRONE_RUNNER_HOST=ci-runner.cool.life -DRONE_RUNNER_CAPACITY=2 -DRONE_RUNNER_NAME=drone-runner -DRONE_UI_USERNAME=resilien -DRONE_UI_PASSWORD=change-me -DRONE_UI_DISABLE=false - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= # Don't use char '.' -#TRAEFIK_ENTRYPOINTS= diff --git a/drone/runner/README.md b/drone/runner/README.md deleted file mode 100644 index 6f41ef4..0000000 --- a/drone/runner/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Drone CI Runner - -Il existe plusieurs _runner_ nous parlerons ici que du _runner_ Docker. - -## Installation - -L'installation de la partie _runner_ a été coupée en plusieurs fichiers dont les noms sont assez explicites. De nombreux liens vers la documentation officielle ont été mis dans les fichiers _Docker Compose_. - -Il est possible de mettre en place une interface utilisateur pour visualiser les logs, les tâches exécutées. C'est pratique pour débugger. - -Le coté multiplatforme permet d'avoir plusieurs _runner_ sur des architectures différentes selon là où on les déploie. diff --git a/drone/runner/docker-compose.dashboard.yml b/drone/runner/docker-compose.dashboard.yml deleted file mode 100644 index 4448db6..0000000 --- a/drone/runner/docker-compose.dashboard.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/runner/docker/configuration/dashboard/ - -services: - drone-runner: - environment: - # https://docs.drone.io/runner/docker/configuration/reference/drone-ui-username/ - DRONE_UI_USERNAME: ${DRONE_UI_USERNAME:?err} - # https://docs.drone.io/runner/docker/configuration/reference/drone-ui-password/ - DRONE_UI_PASSWORD: ${DRONE_UI_PASSWORD:?err} - # https://docs.drone.io/runner/docker/configuration/reference/drone-ui-disable/ - DRONE_UI_DISABLE: ${DRONE_UI_DISABLE:-false} diff --git a/drone/runner/docker-compose.local.yml b/drone/runner/docker-compose.local.yml deleted file mode 100644 index 59c143a..0000000 --- a/drone/runner/docker-compose.local.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -version: "3.8" - -services: - drone-runner: - ports: - - "3000:3000" diff --git a/drone/runner/docker-compose.logging.yml b/drone/runner/docker-compose.logging.yml deleted file mode 100644 index 0d717ae..0000000 --- a/drone/runner/docker-compose.logging.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/runner/docker/configuration/logging/ - -services: - drone-runner: - environment: - # https://docs.drone.io/runner/docker/configuration/reference/drone-debug/ - DRONE_DEBUG: ${DRONE_DEBUG:-false} - # https://docs.drone.io/runner/docker/configuration/reference/drone-rpc-dump-http/ - DRONE_RPC_DUMP_HTTP: ${DRONE_RPC_DUMP_HTTP:-false} - # https://docs.drone.io/runner/docker/configuration/reference/drone-rpc-dump-http-body/ - DRONE_RPC_DUMP_HTTP_BODY: ${DRONE_RPC_DUMP_HTTP_BODY-:false} diff --git a/drone/runner/docker-compose.traefik.yml b/drone/runner/docker-compose.traefik.yml deleted file mode 100644 index 175112c..0000000 --- a/drone/runner/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME} - -services: - drone-runner: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-drone-runner}.rule=Host(`${DRONE_RUNNER_HOST:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-drone-runner}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/drone/runner/docker-compose.yml b/drone/runner/docker-compose.yml deleted file mode 100644 index fcfd73b..0000000 --- a/drone/runner/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/runner/docker/installation/linux/ - -services: - drone-runner: - container_name: ${DRONE_RUNNER_CONTAINER_NAME} - image: ${DRONE_RUNNER_IMAGE:-drone/drone-runner-docker:1.8.0} - restart: always - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - environment: - # https://docs.drone.io/runner/docker/configuration/reference/drone-rpc-host/ - DRONE_RPC_HOST: ${DRONE_RPC_HOST:?err} - # https://docs.drone.io/runner/docker/configuration/reference/drone-rpc-proto/ - DRONE_RPC_PROTO: ${DRONE_RPC_PROTO:-https} - # https://docs.drone.io/runner/docker/configuration/reference/drone-rpc-secret/ - DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?err} - # https://docs.drone.io/runner/docker/configuration/reference/drone-runner-capacity/ - DRONE_RUNNER_CAPACITY: ${DRONE_RUNNER_CAPACITY:-2} - # https://docs.drone.io/runner/docker/configuration/reference/drone-runner-name/ - DRONE_RUNNER_NAME: ${DRONE_RUNNER_NAME} diff --git a/drone/server/.env b/drone/server/.env deleted file mode 100644 index bd84bb6..0000000 --- a/drone/server/.env +++ /dev/null @@ -1,65 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=../.. -COMPOSE_FILE=${SERVICES_DIR}/drone/server/docker-compose.yml:${SERVICES_DIR}/drone/server/docker-compose.user.yml:${SERVICES_DIR}/drone/server/docker-compose.traefik.yml:${SERVICES_DIR}/drone/server/docker-compose.postgres.yml:${SERVICES_DIR}/drone/server/docker-compose.header.yml:${SERVICES_DIR}/drone/server/docker-compose.gitea.yml:${SERVICES_DIR}/drone/server/docker-compose.cookie.yml:${SERVICES_DIR}/postgres/docker-compose.yml -#COMPOSE_PROJECT_NAME= - - -## DRONE SERVER -# https://docs.drone.io/server/reference/ - -### Docker -# https://hub.docker.com/r/drone/drone/tags -DRONE_SERVER_IMAGE=drone/drone:2.8.0 -DRONE_SERVER_VOLUME_NAME=drone-server -DRONE_SERVER_CONTAINER_NAME=drone-server - -### Drone - -DRONE_RPC_SECRET=change-me -DRONE_SERVER_HOST=ci.cool.life -DRONE_SERVER_PROTO=https - -### User -DRONE_ADMIN_USER=resilien -DRONE_ADMIN_TOKEN=change-me -DRONE_USER_FILTER=resilien -DRONE_REGISTRATION_CLOSED=true - -### Gitea -# https://docs.drone.io/server/provider/gitea/ -#DRONE_GIT_ALWAYS_AUTH= -DRONE_GITEA_SERVER=gitea.cool.life -DRONE_GITEA_CLIENT_ID=UI76T78G-HDZ8-7CSD-6SDZ-YUIDG8Z7DSQ8 -DRONE_GITEA_CLIENT_SECRET=change-me - -## Header -# https://docs.drone.io/server/headers/ -#DRONE_HTTP_SSL_REDIRECT= -#DRONE_HTTP_SSL_TEMPORARY_REDIRECT= -#DRONE_HTTP_SSL_HOST= -#DRONE_HTTP_STS_SECONDS= - -### Cookie -# https://docs.drone.io/server/cookie/ -DRONE_COOKIE_SECRET=change-me -#DRONE_COOKIE_TIMEOUT=720h - -### POSTGRES -# https://docs.drone.io/server/storage/encryption/ -DRONE_DATABASE_SECRET=change-me -POSTGRES_USER=user -POSTGRES_PASSWORD=password -POSTGRES_VOLUME_NAME=postgres -POSTGRES_CONTAINER_NAME=postgres -POSTGRES_DB=drone - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= # Don't use char '.' -#TRAEFIK_ENTRYPOINTS= diff --git a/drone/server/README.md b/drone/server/README.md deleted file mode 100644 index fc748b6..0000000 --- a/drone/server/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Drone CI Server - -## Installation - -L'installation de la partie serveur a été coupée en plusieurs fichiers dont les noms sont assez explicites. De nombreux liens vers la documentation officielle ont été mis dans les fichiers _Docker Compose_. - -## Configuration - -Une fois un Drone installé il faut le configurer avec l'utilisation du CLI. - -### Installation du CLI - -Voir la [documentation officielle](https://docs.drone.io/cli/install/#install-on-linux). - -### Configuration du CLI en local - -Il faut : -- l'url de l'instance (`DRONE_SERVER_HOST`) -- le protocol de l'instance (`DRONE_SERVER_PROTO`) -- le token de l'administrateur (`DRONE_ADMIN_TOKEN`) - -``` -export DRONE_SERVER=${DRONE_SERVER_PROTO}://${DRONE_SERVER_HOST} -export DRONE_TOKEN=${DRONE_ADMIN_TOKEN} -``` - -[Documentation officielle](https://docs.drone.io/cli/configure/) - -### Les utilisateurs - -Il faut ajouter les utilisateurs non admin : - -``` -drone user add kosssi -drone user add killian -drone user add prometheus --machine --token=${PROMETHEUS_TOKEN} -``` - -En n'oubliant pas au moment de l'installation d'identifier précisément les utilisateurs ayant le droit d'exécuter Drone avec la variable `DRONE_USER_FILTER=kosssi,killian,prometheus,${DRONE_ADMIN_USER}` - -[Documentation officielle](https://docs.drone.io/cli/user/drone-user-add/) diff --git a/drone/server/docker-compose.cookie.yml b/drone/server/docker-compose.cookie.yml deleted file mode 100644 index 99736ba..0000000 --- a/drone/server/docker-compose.cookie.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/cookie/ - -services: - drone-server: - environment: - # https://docs.drone.io/server/reference/drone-cookie-secret/ - DRONE_COOKIE_SECRET: ${DRONE_COOKIE_SECRET:?err} - # https://docs.drone.io/server/reference/drone-cookie-timeout/ - DRONE_COOKIE_TIMEOUT: ${DRONE_COOKIE_TIMEOUT:-720h} # Default value 30 days diff --git a/drone/server/docker-compose.gitea.yml b/drone/server/docker-compose.gitea.yml deleted file mode 100644 index 9ca4760..0000000 --- a/drone/server/docker-compose.gitea.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/provider/gitea/ - -services: - drone-server: - environment: - # https://docs.drone.io/server/reference/drone-git-always-auth/ - DRONE_GIT_ALWAYS_AUTH: ${DRONE_GIT_ALWAYS_AUTH:-true} - # https://docs.drone.io/server/reference/drone-gitea-server/ - DRONE_GITEA_SERVER: ${DRONE_GITEA_SERVER:?err} - # https://docs.drone.io/server/reference/drone-gitea-client-id/ - DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID:?err} - # https://docs.drone.io/server/reference/drone-gitea-client-secret/ - DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET:?err} diff --git a/drone/server/docker-compose.header.yml b/drone/server/docker-compose.header.yml deleted file mode 100644 index 3607c71..0000000 --- a/drone/server/docker-compose.header.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/headers/ - -services: - drone-server: - environment: - DRONE_HTTP_SSL_REDIRECT: ${DRONE_HTTP_SSL_REDIRECT:-true} - DRONE_HTTP_SSL_TEMPORARY_REDIRECT: ${DRONE_HTTP_SSL_TEMPORARY_REDIRECT:-true} - DRONE_HTTP_SSL_HOST: ${DRONE_SERVER_HOST} - DRONE_HTTP_STS_SECONDS: ${DRONE_HTTP_STS_SECONDS:-315360000} diff --git a/drone/server/docker-compose.local.yml b/drone/server/docker-compose.local.yml deleted file mode 100644 index 06436db..0000000 --- a/drone/server/docker-compose.local.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -version: "3.8" - -services: - drone-server: - ports: - - "3000:3000" diff --git a/drone/server/docker-compose.logging.yml b/drone/server/docker-compose.logging.yml deleted file mode 100644 index 62cc675..0000000 --- a/drone/server/docker-compose.logging.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/logging/ - -services: - drone-server: - environment: - # https://docs.drone.io/server/reference/drone-logs-debug/ - DRONE_LOGS_DEBUG: ${DRONE_LOGS_DEBUG:-true} - # https://docs.drone.io/server/reference/drone-logs-text/ - DRONE_LOGS_TEXT: ${DRONE_LOGS_TEXT:-true} - # https://docs.drone.io/server/reference/drone-logs-pretty/ - DRONE_LOGS_PRETTY: ${DRONE_LOGS_PRETTY:-true} - # https://docs.drone.io/server/reference/drone-logs-color/ - DRONE_LOGS_COLOR: ${DRONE_LOGS_COLOR:-true} - # https://docs.drone.io/server/reference/drone-logs-trace/ - DRONE_LOGS_TRACE: ${DRONE_LOGS_TRACE:-false} diff --git a/drone/server/docker-compose.postgres.yml b/drone/server/docker-compose.postgres.yml deleted file mode 100644 index c7e2be2..0000000 --- a/drone/server/docker-compose.postgres.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/storage/database/ -# https://docs.drone.io/server/storage/encryption/ - -services: - drone-server: - environment: - # https://docs.drone.io/server/reference/drone-database-secret/ - DRONE_DATABASE_SECRET: ${DRONE_DATABASE_SECRET} - # https://docs.drone.io/server/reference/drone-database-driver/ - DRONE_DATABASE_DRIVER: postgres - # https://docs.drone.io/server/reference/drone-database-datasource/ - DRONE_DATABASE_DATASOURCE: postgres://${POSTGRES_USER:?err}:${POSTGRES_PASSWORD:?err}@${POSTGRES_CONTAINER_NAME:-postgres}:5432/${POSTGRES_DB:?err}?sslmode=disable diff --git a/drone/server/docker-compose.traefik.yml b/drone/server/docker-compose.traefik.yml deleted file mode 100644 index 47dc794..0000000 --- a/drone/server/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME} - -services: - drone-server: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-drone-server}.rule=Host(`${DRONE_SERVER_HOST:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-drone-server}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/drone/server/docker-compose.user.yml b/drone/server/docker-compose.user.yml deleted file mode 100644 index c4244e2..0000000 --- a/drone/server/docker-compose.user.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -# https://docs.drone.io/server/user/registration/ - -services: - drone-server: - environment: - # https://docs.drone.io/server/reference/drone-user-create/ - DRONE_USER_CREATE: username:${DRONE_ADMIN_USER:?err},machine:false,admin:true,token:${DRONE_ADMIN_TOKEN:?err} - # https://docs.drone.io/server/reference/drone-user-filter/ - DRONE_USER_FILTER: ${DRONE_USER_FILTER:?err} - # https://docs.drone.io/server/reference/drone-registration-closed/ - DRONE_REGISTRATION_CLOSED: ${DRONE_REGISTRATION_CLOSED:-true} diff --git a/drone/server/docker-compose.yml b/drone/server/docker-compose.yml deleted file mode 100644 index ae49725..0000000 --- a/drone/server/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- - -version: "3.8" - -volumes: - drone-server: - name: ${DRONE_SERVER_VOLUME_NAME:-drone-server} - -services: - drone-server: - container_name: ${DRONE_SERVER_CONTAINER_NAME:-drone-server} - image: ${DRONE_SERVER_IMAGE:-drone/drone:2.11.1} - restart: always - environment: - # https://docs.drone.io/server/reference/drone-rpc-secret/ - DRONE_RPC_SECRET: ${DRONE_RPC_SECRET} - # https://docs.drone.io/server/reference/drone-server-host/ - DRONE_SERVER_HOST: ${DRONE_SERVER_HOST} - # https://docs.drone.io/server/reference/drone-server-proto/ - DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO:-https} - volumes: - - drone-server:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro diff --git a/examples/README.md b/examples/README.md index 4853c00..6979a90 100644 --- a/examples/README.md +++ b/examples/README.md @@ -14,4 +14,4 @@ Si nous allons dans le dossier `traefik.cool.life` par example, il est possible Si vous gérez des serveurs à distance, il est possible d'utiliser la variable `DOCKER_HOST` dans votre fichier `.env` pour expliquer que le service doit s’exécuter sur ce serveur. -> RésiLien utilise maintenant ce système avec une génération automatique des fichiers .env à l'aide d'Ansible, nous permettant de facilement déployer un nouveau service, de le déplacer de serveur +> Résilien utilise maintenant ce système avec une génération automatique des fichiers .env à l'aide d'Ansible, nous permettant de facilement déployer un nouveau service, de le déplacer de serveur diff --git a/geoip/.env b/geoip/.env deleted file mode 100644 index 608b262..0000000 --- a/geoip/.env +++ /dev/null @@ -1,9 +0,0 @@ -#GEOIP_VOLUME_NAME= -#GEOIP_IMAGE= -#GEOIP_CONTAINER_NAME= - -#GEOIP_EDITION_IDS= -GEOIP_LICENSE_KEY=blablabla -#GEOIP_DOWNLOAD_PATH= -#GEOIP_SCHEDULE= -#GEOIP_LOG_LEVEL= diff --git a/geoip/docker-compose.yml b/geoip/docker-compose.yml deleted file mode 100644 index a9b25bb..0000000 --- a/geoip/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- - -version: "3.8" - -volumes: - geoip: - name: ${GEOIP_VOLUME_NAME:-geoip} - -services: - geoip: - image: ${GEOIP_IMAGE:-crazymax/geoip-updater:latest} - container_name: ${GEOIP_CONTAINER_NAME:-geoip-updater} - restart: always - volumes: - - geoip:${GEOIP_DOWNLOAD_PATH:-/data} - environment: - EDITION_IDS: ${GEOIP_EDITION_IDS:-GeoLite2-City} - LICENSE_KEY: ${GEOIP_LICENSE_KEY:-err} - DOWNLOAD_PATH: ${GEOIP_DOWNLOAD_PATH:-/data} - SCHEDULE: ${GEOIP_SCHEDULE:-0 0 * * 0} # Every Sunday - LOG_LEVEL: ${GEOIP_LOG_LEVEL:-info} - LOG_JSON: ${GEOIP_LOG_JSON:-false} diff --git a/geoipupdate/.env b/geoipupdate/.env deleted file mode 100644 index 78546bd..0000000 --- a/geoipupdate/.env +++ /dev/null @@ -1,10 +0,0 @@ -#GEOIPUPDATE_VOLUME_NAME= -#GEOIPUPDATE_IMAGE= -#GEOIPUPDATE_CONTAINER_NAME= - -GEOIPUPDATE_ACCOUNT_ID= -GEOIPUPDATE_LICENSE_KEY= -#GEOIPUPDATE_EDITION_IDS= -#GEOIPUPDATE_FREQUENCY= -#GEOIPUPDATE_VERBOSE= -#GEOIPUPDATE_DB_DIR= diff --git a/geoipupdate/README.md b/geoipupdate/README.md deleted file mode 100644 index 7efc7fc..0000000 --- a/geoipupdate/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# HedgeDoc - -> Permet de télécharger la base de données GeoIP2 permettant de localiser les IPs - -## Liens - -- [Site officiel][website] -- [Github][github] -- [L'image Docker de LinuxServer][docker] - -[website]: https://www.maxmind.com/en/home -[docker]: https://hub.docker.com/r/maxmindinc/geoipupdate -[github]: https://github.com/maxmind/geoipupdate -[documentation]: https://dev.maxmind.com/geoip/updating-databases diff --git a/geoipupdate/docker-compose.yml b/geoipupdate/docker-compose.yml deleted file mode 100644 index 9e83d1e..0000000 --- a/geoipupdate/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- - -version: "3.8" - -volumes: - geoipupdate: - name: ${GEOIPUPDATE_VOLUME_NAME:-geoipupdate} - -services: - geoipupdate: - image: ${GEOIPUPDATE_IMAGE:-maxmindinc/geoipupdate:v4.9.0} - container_name: ${GEOIPUPDATE_CONTAINER_NAME:-geoip-updater} - restart: always - volumes: - - geoipupdate:${GEOIPUPDATE_DB_DIR:-/usr/share/GeoIP} - environment: - GEOIPUPDATE_ACCOUNT_ID: ${GEOIPUPDATE_ACCOUNT_ID:?err} - GEOIPUPDATE_LICENSE_KEY: ${GEOIPUPDATE_LICENSE_KEY:?err} - GEOIPUPDATE_EDITION_IDS: ${GEOIPUPDATE_EDITION_IDS:-GeoLite2-City} - GEOIPUPDATE_FREQUENCY: ${GEOIPUPDATE_FREQUENCY:-72} - GEOIPUPDATE_VERBOSE: ${GEOIPUPDATE_VERBOSE:-false} - GEOIPUPDATE_DB_DIR: ${GEOIPUPDATE_DB_DIR:-/usr/share/GeoIP} diff --git a/gitea/.env b/gitea/.env index 2b34046..3db8400 100644 --- a/gitea/.env +++ b/gitea/.env @@ -1,34 +1,26 @@ -######## -# DOCKER +COMPOSE_FILE=../postgres/docker-compose.yml:./docker-compose.yml:./docker-compose.override.yml -SERVICES_DIR=".." -COMPOSE_FILE=${SERVICES_DIR}/gitea/docker-compose.yml:${SERVICES_DIR}/gitea/docker-compose.traefik.yml:${SERVICES_DIR}/gitea/docker-compose.smtp.yml:${SERVICES_DIR}/gitea/docker-compose.metrics.yml:${SERVICES_DIR}/postgres/docker-compose.yml -COMPOSE_PROJECT_NAME=$GITEA_DOMAIN +# APP -####### -# GITEA +GITEA_VOLUME_NAME=gitea +GITEA_PROTOCOL=http +GITEA_DOMAIN=gitea.lan + +# APP CONFIG # https://docs.gitea.io/en-us/install-with-docker/#environments-variables -GITEA_DOMAIN=gitea.lan -GITEA_VOLUME_NAME=gitea -GITEA_IMAGE=gitea/gitea:1.18.4 -GITEA_PROTOCOL=http -GITEA_SECRET_KEY=kt5UdK0m9lI9MDyhVOFEB5jk7VwFynDyaxcUjEJUpWJBrC6FyH4dkUDKLYEa7hGn -GITEA_INTERNAL_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2NzY5NzkxMzZ9.Iopu6DBUhglmNPzEyYylfmTmEUpYLHYEsNrm50GoBkU - -# SMTP - -GITEA__mailer__FROM='"Name" ' -GITEA__mailer__SMTP_ADDR=smtp.gitea.lan -GITEA__mailer__SMTP_PORT=465 -GITEA__mailer__USER=gitea.lan -GITEA__mailer__PASSWD=gitea.lan +DISABLE_SSH=true +RUN_MODE=prod +ROOT_URL=${GITEA_PROTOCOL}://${GITEA_DOMAIN} +DISABLE_REGISTRATION=true +DISABLE_GRAVATAR=true +#INSTALL_LOCK=true # DATABASE +# Voir la description ../postgres/README.md POSTGRES_USER=user-example POSTGRES_PASSWORD=password-example POSTGRES_DB=postgres-database-name-example POSTGRES_CONTAINER_NAME=gitea-postgres POSTGRES_VOLUME_NAME=gitea-postgres -POSTGRES_IMAGE=postgres:15.2-alpine diff --git a/gitea/README.md b/gitea/README.md index 18021d5..3d33e51 100644 --- a/gitea/README.md +++ b/gitea/README.md @@ -4,7 +4,7 @@ > > [Documentation][documentation] -Il est possible de configurer l'intégralité du service à l'aide de variable d'environnement voir [la documentation officielle](https://docs.gitea.io/en-us/install-with-docker/#managing-deployments-with-environment-variables). +Il est possible de configurer l'intégralité du service à l'aide de variable d'environnement voir [la documentation officiel](https://docs.gitea.io/en-us/install-with-docker/#managing-deployments-with-environment-variables). ## Commandes diff --git a/gitea/docker-compose.smtp.yml b/gitea/docker-compose.smtp.yml index af25854..fa37a1a 100644 --- a/gitea/docker-compose.smtp.yml +++ b/gitea/docker-compose.smtp.yml @@ -4,11 +4,9 @@ services: gitea: environment: - GITEA__mailer__ENABLED=true - - GITEA__mailer__PROTOCOL=${GITEA__mailer__PROTOCOL:-smtp} - - GITEA__mailer__SMTP_ADDR=${GITEA__mailer__SMTP_ADDR:?GITEA__mailer__SMTP_ADDR not set} - - GITEA__mailer__SMTP_PORT=${GITEA__mailer__SMTP_PORT:?GITEA__mailer__SMTP_PORT not set} - + - GITEA__mailer__FROM=${GITEA__mailer__FROM:?GITEA__mailer__FROM not set} + - GITEA__mailer__MAILER_TYPE=smtp + - GITEA__mailer__HOST=${GITEA__mailer__HOST:?GITEA__mailer__HOST not set} + - GITEA__mailer__IS_TLS_ENABLED=true - GITEA__mailer__USER=${GITEA__mailer__USER:?GITEA__mailer__USER not set} - GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}""" - - - GITEA__mailer__FROM=${GITEA__mailer__FROM:?GITEA__mailer__FROM not set} diff --git a/gitea/docker-compose.traefik.yml b/gitea/docker-compose.traefik.yml index f3a5562..b4b8447 100644 --- a/gitea/docker-compose.traefik.yml +++ b/gitea/docker-compose.traefik.yml @@ -7,8 +7,10 @@ networks: services: gitea: labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-gitea}.rule=Host(`${GITEA_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-gitea}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} - - traefik.http.services.${TRAEFIK_ROUTER_NAME:-gitea}.loadbalancer.server.port=3000 + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME:-traefik} + + traefik.http.routers.gitea.rule: 'Host(`${GITEA_DOMAIN:?err}`)' + traefik.http.routers.gitea.entrypoints: 'web' + + traefik.http.services.gitea.loadbalancer.server.port: '3000' diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml index f30608b..255d520 100644 --- a/gitea/docker-compose.yml +++ b/gitea/docker-compose.yml @@ -7,22 +7,16 @@ volumes: services: gitea: container_name: ${GITEA_CONTAINER_NAME:-gitea} - image: ${GITEA_IMAGE:-gitea/gitea:1.18.4} + image: ${GITEA_IMAGE:-gitea/gitea:1.15.5} restart: always environment: - - USER_UID=${GITEA_UID:-1000} - - USER_GID=${GITEA_GID:-1000} - # Database - - GITEA__database__DB_TYPE=postgres - - GITEA__database__HOST=${POSTGRES_CONTAINER_NAME:-postgres}:5432 - - GITEA__database__NAME=${POSTGRES_DB} - - GITEA__database__USER=${POSTGRES_USER} - - GITEA__database__PASSWD=${POSTGRES_PASSWORD} - # Security - # docker run -it --rm gitea/gitea:1 gitea generate secret SECRET_KEY - - GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY} - # docker run -it --rm gitea/gitea:1 gitea generate secret INTERNAL_TOKEN - - GITEA__security__INTERNAL_TOKEN=${GITEA_INTERNAL_TOKEN} + # - USER_UID=1000 + # - USER_GID=1000 + DB_TYPE: postgres + DB_HOST: postgres:5432 + DB_NAME: ${POSTGRES_DB} + DB_USER: ${POSTGRES_USER} + DB_PASSWD: ${POSTGRES_PASSWORD} volumes: - gitea:/data - /etc/timezone:/etc/timezone:ro diff --git a/grafana/.env b/grafana/.env index 866aef5..3630f33 100644 --- a/grafana/.env +++ b/grafana/.env @@ -1,48 +1,3 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/grafana/docker-compose.yml:${SERVICES_DIR}/grafana/docker-compose.traefik.yml -#COMPOSE_PROJECT_NAME= - -######### -# GRAFANA - GRAFANA_DOMAIN=grafana.cool.life -#GRAFANA_VOLUME_NAME= -#GRAFANA_CONTAINER_NAME= -#GRAFANA_IMAGE= - GF_SECURITY_ADMIN_USER=admin -GF_SECURITY_ADMIN_PASSWORD=password -#GF_SECURITY_DISABLE_GRAVATAR= -#GF_SECURITY_COOKIE_SECURE= -#GF_USERS_ALLOW_SIGN_UP= -GF_INSTALL_PLUGINS=grafana-piechart-panel - -###### -# SMTP - -#GF_SMTP_HOST= -#GF_SMTP_USER= -#GF_SMTP_PASSWORD= -#GF_SMTP_FROM_ADDRESS= -#GF_SMTP_FROM_NAME= - -####### -# REDIS - -#REDIS_IMAGE= -#REDIS_CONTAINER_NAME= -#REDIS_VOLUME_NAME= - -#GF_REMOTE_CACHE_CONNSTR= - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= # Don't use char '.' -#TRAEFIK_ENTRYPOINTS= +GF_SECURITY_ADMIN_PASSWORD=admin diff --git a/grafana/README.md b/grafana/README.md deleted file mode 100644 index 8692bac..0000000 --- a/grafana/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Grafana - -> Grafana est un logiciel libre sous licence GNU Affero General Public License Version 32 (anciennement sous licence Apache 2.0 avant avril 2021) qui permet la visualisation de données. Il permet de réaliser des tableaux de bord et des graphiques depuis plusieurs sources dont des bases de données temporelles comme Graphite (en), InfluxDB et OpenTSDB3. -> -> -- [Wikipédia](https://fr.wikipedia.org/wiki/Grafana) - -## 🔧 Configuration - -La configuration du service ce base sur la documentation officielle, plusieurs pages sont intéressantes à lire : -- [Lancer l'image Docker de Grafana](https://grafana.com/docs/grafana/latest/installation/docker/) -- [Configuration l'image Docker Grafana](https://grafana.com/docs/grafana/latest/administration/configure-docker/) -- [Surcharger la configuration à l'aide des variables d'environment](https://grafana.com/docs/grafana/latest/administration/configuration/#override-configuration-with-environment-variables) - -## 🔗 Liens - -- [Site officiel](https://grafana.com) -- [La documentation](https://grafana.com/docs) -- [Github](https://github.com/grafana/grafana) -- [L'image Docker sur Docker Hub](https://hub.docker.com/r/grafana/grafana) diff --git a/grafana/docker-compose.postgres.yml b/grafana/docker-compose.postgres.yml deleted file mode 100644 index 2958291..0000000 --- a/grafana/docker-compose.postgres.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: "3.8" - -services: - grafana: - environment: - # https://grafana.com/docs/grafana/latest/administration/configuration/#database - GF_DATABASE_TYPE: postgres - GF_DATABASE_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default name is same as ../postgres/docker-compose.yml:8 - GF_DATABASE_NAME: ${POSTGRES_DB:?err} - GF_DATABASE_USER: ${POSTGRES_USER:?err} - GF_DATABASE_PASSWORD: ${POSTGRES_PASSWORD:?err} diff --git a/grafana/docker-compose.redis.yml b/grafana/docker-compose.redis.yml deleted file mode 100644 index 1e0d881..0000000 --- a/grafana/docker-compose.redis.yml +++ /dev/null @@ -1,8 +0,0 @@ -version: "3.8" - -services: - grafana: - environment: - # https://grafana.com/docs/grafana/latest/administration/configuration/#remote_cache - GF_REMOTE_CACHE_TYPE: redis - GF_REMOTE_CACHE_CONNSTR: ${GF_REMOTE_CACHE_CONNSTR:-addr=redis:6379,ssl=false} diff --git a/grafana/docker-compose.smtp.yml b/grafana/docker-compose.smtp.yml deleted file mode 100644 index 5648c3e..0000000 --- a/grafana/docker-compose.smtp.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: "3.8" - -services: - grafana: - environment: - # https://grafana.com/docs/grafana/latest/administration/configuration/#smtp - GF_SMTP_ENABLED: true - GF_SMTP_HOST: ${GF_SMTP_HOST:?err} # with port - GF_SMTP_USER: ${GF_SMTP_USER:?err} - GF_SMTP_PASSWORD: ${GF_SMTP_PASSWORD:?err} - GF_SMTP_FROM_ADDRESS: ${GF_SMTP_FROM_ADDRESS:?err} - GF_SMTP_FROM_NAME: ${GF_SMTP_FROM_NAME:?err} diff --git a/grafana/docker-compose.traefik.yml b/grafana/docker-compose.traefik.yml deleted file mode 100644 index 35b694e..0000000 --- a/grafana/docker-compose.traefik.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - grafana: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-grafana}.rule=Host(`${GRAFANA_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-grafana}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/grafana/docker-compose.yml b/grafana/docker-compose.yml index 88aa1f9..4e16751 100644 --- a/grafana/docker-compose.yml +++ b/grafana/docker-compose.yml @@ -1,5 +1,9 @@ --- -version: "3.8" +version: "3" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME:-traefik} volumes: grafana: @@ -8,17 +12,17 @@ volumes: services: grafana: container_name: ${GRAFANA_CONTAINER_NAME:-grafana} - image: ${GRAFANA_IMAGE:-grafana/grafana:8.4.6} + image: ${GRAFANA_IMAGE:-grafana/grafana:8.2.2} restart: always volumes: - grafana:/var/lib/grafana environment: - GF_ANALYTICS_CHECK_FOR_UPDATES: ${GF_ANALYTICS_CHECK_FOR_UPDATES:-false} - GF_ANALYTICS_REPORTING_ENABLED: ${GF_ANALYTICS_REPORTING_ENABLED:-false} - GF_INSTALL_PLUGINS: ${GF_INSTALL_PLUGINS} GF_SECURITY_ADMIN_USER: ${GF_SECURITY_ADMIN_USER:?err} GF_SECURITY_ADMIN_PASSWORD: ${GF_SECURITY_ADMIN_PASSWORD:?err} - GF_SECURITY_DISABLE_GRAVATAR: ${GF_SECURITY_DISABLE_GRAVATAR:-true} - GF_SECURITY_COOKIE_SECURE: ${GF_SECURITY_COOKIE_SECURE:-true} - GF_SERVER_PROTOCOL: ${GF_SERVER_PROTOCOL:-http} GF_USERS_ALLOW_SIGN_UP: ${GF_USERS_ALLOW_SIGN_UP:-false} + GF_INSTALL_PLUGINS: ${GF_INSTALL_PLUGINS} + labels: + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME:-traefik} + traefik.http.routers.grafana.rule: 'Host(`${GRAFANA_DOMAIN:?err}`)' + traefik.http.routers.grafana.entrypoints: 'web' diff --git a/hedgedoc/README.md b/hedgedoc/README.md index d89e9b1..16c7803 100644 --- a/hedgedoc/README.md +++ b/hedgedoc/README.md @@ -21,23 +21,6 @@ Lancer le service : docker-compose up -d ``` -## Debug - -### Se connecter à la base de données - -```shell -. .env -docker exec -it $POSTGRES_CONTAINER_NAME psql $POSTGRES_DB -U $POSTGRES_USER -``` - -### Traitement des notes vides - -``` -SELECT count(*) FROM public."Notes" WHERE content = ''; -SELECT * FROM public."Notes" WHERE content = ''; -DELETE FROM public."Notes" WHERE content = ''; -``` - ## Liens - [Site officiel][website] diff --git a/hedgedoc/docker-compose.yml b/hedgedoc/docker-compose.yml index 204d0a2..d92a571 100644 --- a/hedgedoc/docker-compose.yml +++ b/hedgedoc/docker-compose.yml @@ -7,17 +7,17 @@ volumes: services: hedgedoc: container_name: ${HEDGEDOC_CONTAINER_NAME:-hedgedoc} - image: ${HEDGEDOC_IMAGE:-linuxserver/hedgedoc:1.9.3-ls53} + image: ${HEDGEDOC_IMAGE:-linuxserver/hedgedoc:1.9.0-ls31} restart: always depends_on: - postgres volumes: - - hedgedoc:/config/uploads + - hedgedoc:/opt/hedgedoc/public/uploads - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: # https://docs.hedgedoc.org/configuration/ - CMD_DB_URL: postgres://${POSTGRES_USER:?err}:${POSTGRES_PASSWORD:?err}@${POSTGRES_CONTAINER_NAME:-postgres}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:?err} + CMD_DB_URL: postgres://${POSTGRES_USER:?err}:${POSTGRES_PASSWORD:?err}@${POSTGRES_CONTAINER_NAME}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:?err} CMD_DOMAIN: ${HEDGEDOC_DOMAIN:?err} CMD_SESSION_SECRET: ${CMD_SESSION_SECRET:?err} NODE_ENV: ${NODE_ENV:-development} # `production` or `development` diff --git a/listmonk/.env b/listmonk/.env deleted file mode 100644 index 0dea747..0000000 --- a/listmonk/.env +++ /dev/null @@ -1,26 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/listmonk/docker-compose.yml:${SERVICES_DIR}/postgres/docker-compose.yml -#COMPOSE_PROJECT_NAME= - -## APP - -LISTMONK_DOMAIN=localhost -LISTMONK_ADMIN_USERNAME= -LISTMONK_ADMIN_PASSWORD= -#LISTMONK_CONTAINER_NAME=listmonk -#LISTMONK_VOLUME_NAME=listmonk -#LISTMONK_IMAGE=listmonk/listmonk:v2.3.0 - -## POSTGRES - -#POSTGRES_VOLUME_NAME= -#POSTGRES_CONTAINER_NAME= -#POSTGRES_IMAGE= -POSTGRES_USER=listmonk -POSTGRES_PASSWORD=listmonk -POSTGRES_DB=listmonk diff --git a/listmonk/README.md b/listmonk/README.md deleted file mode 100644 index 50c403a..0000000 --- a/listmonk/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# listmonk - -> Gestionnaire de listes de diffusion et de newsletter - -## Documentation - -listmonk ne gère actuellement pas le multicompte. - -Pour utiliser avec une configuration avec les variables d'environnements il faut la commande suivante : - -``` -command: [sh, -c, "./listmonk --config ''"] -``` - -Pour l'installation il faut lancer la commande suivante pour initialiser la base de donnée : - -``` -command: [sh, -c, "yes | ./listmonk --install --config '' && ./listmonk --config ''"] -``` - -Pour faire les mise à jour et ainsi migrer la base de donnée : - -``` -command: [sh, -c, "yes | ./listmonk --upgrade --config '' && ./listmonk --config ''"] -``` - -## Liens - -- [Site Officiel][site] -- [Documentation][documentation] -- [Code source][source] -- [Docker Hub][dockerhub] - -[site]: https://listmonk.app/ -[source]: https://github.com/knadh/listmonk -[documentation]: https://listmonk.app/docs/ -[dockerhub]: https://hub.docker.com/r/listmonk/listmonk diff --git a/listmonk/docker-compose.yml b/listmonk/docker-compose.yml deleted file mode 100644 index 9732d9a..0000000 --- a/listmonk/docker-compose.yml +++ /dev/null @@ -1,40 +0,0 @@ -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -volumes: - listmonk: - name: ${LISTMONK_VOLUME_NAME:-listmonk} - -services: - listmonk: - container_name: ${LISTMONK_CONTAINER_NAME:-listmonk} - image: ${LISTMONK_IMAGE:-listmonk/listmonk:v2.3.0} - restart: always - #command: [sh, -c, "yes | ./listmonk --install --config '' && ./listmonk --config ''"] - #command: [sh, -c, "yes | ./listmonk --upgrade --config '' && ./listmonk --config ''"] - command: [sh, -c, "./listmonk --config ''"] - depends_on: - - postgres - environment: - LISTMONK_app__address: 0.0.0.0:9000 - LISTMONK_app__admin_username: ${LISTMONK_ADMIN_USERNAME:?err} - LISTMONK_app__admin_password: ${LISTMONK_ADMIN_PASSWORD:?err} - LISTMONK_db__host: ${POSTGRES_CONTAINER_NAME:?err} - LISTMONK_db__port: 5432 - LISTMONK_db__user: ${POSTGRES_USER:?err} - LISTMONK_db__password: ${POSTGRES_PASSWORD:?err} - LISTMONK_db__database: ${POSTGRES_DB:?err} - LISTMONK_db__ssl_mode: disable - TZ: Europe/Paris - volumes: - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - - listmonk:/listmonk/uploads - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-listmonk}.rule=Host(`${LISTMONK_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-listmonk}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/mobilizon/.env b/mobilizon/.env deleted file mode 100644 index fadbbf9..0000000 --- a/mobilizon/.env +++ /dev/null @@ -1,63 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/mobilizon/docker-compose.yml:${SERVICES_DIR}/mobilizon/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/geoip/docker-compose.yml -#COMPOSE_PROJECT_NAME= - -############ -## MOBILIZON - -MOBILIZON_INSTANCE_NAME="RésiLien - Mobilizon" -MOBILIZON_DOMAIN=mobilizon.lan -#MOBILIZON_INSTANCE_PORT=4000 -MOBILIZON_INSTANCE_EMAIL=no-reply@mobilizon.lan - -MOBILIZON_REPLY_EMAIL=contact@mobilizon.lan -MOBILIZON_ADMIN_EMAIL=admin@mobilizon.lan -MOBILIZON_INSTANCE_REGISTRATIONS_OPEN=true - -MOBILIZON_INSTANCE_SECRET_KEY_BASE=changethis -MOBILIZON_INSTANCE_SECRET_KEY=changethis - -MOBILIZON_SMTP_SERVER=localhost -MOBILIZON_SMTP_HOSTNAME=localhost -MOBILIZON_SMTP_PORT=25 -MOBILIZON_SMTP_SSL=false -MOBILIZON_SMTP_USERNAME=noreply@mobilizon.lan -MOBILIZON_SMTP_PASSWORD=password - -#MOBILIZON_PUID= -#MOBILIZON_PGID= - -####### -# GEOIP - -#GEOIP_VOLUME_NAME= -#GEOIP_IMAGE= -#GEOIP_CONTAINER_NAME= - -#GEOIP_EDITION_IDS= -GEOIP_LICENSE_KEY= -#GEOIP_DOWNLOAD_PATH= -#GEOIP_SCHEDULE= -#GEOIP_LOG_LEVEL= - -########## -# POSTGRES - -POSTGRES_USER=mobilizon_user -POSTGRES_PASSWORD=mobilizon_password -POSTGRES_DB=mobilizon_db -#POSTGRES_CONTAINER_NAME=mobilizon_postgres -#POSTGRES_VOLUME_NAME=mobilizon_postgres -POSTGRES_IMAGE=kartoza/postgis:14-3.1 - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= # Don't use char '.' -#TRAEFIK_ENTRYPOINTS= diff --git a/mobilizon/README.md b/mobilizon/README.md deleted file mode 100644 index 9614c9a..0000000 --- a/mobilizon/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Mobilizon - -> Mobilizon est un logiciel libre d'organisation d'évènements et de gestion de groupes (Meet-up) lancé en octobre 2020 par Framasoft pour proposer une alternative libre aux plateformes des GAFAM (Facebook, Meetup.com, EventBrite). -> -> -- [Wikipedia](https://fr.wikipedia.org/wiki/Mobilizon) - -On peut retrouver la documentation sur le [site officiel](https://docs.joinmobilizon.org/fr/). - -## Configuration - -Mobilizon utilise de la géolocalisation pour les évènements et du coup il faut : -- une base de données spécifique _[PostGIS](https://fr.wikipedia.org/wiki/PostGIS)_ qui se base sur _Postgres_. Actuellement la configuration de l'image Docker Postgres est compatible il faut donc juste changer le nom de l'image et utiliser [kartoza/postgis](https://hub.docker.com/r/kartoza/postgis) à la place. -- un fichier GeoLite2 et pour cela il faut créer une clé pour accéder au service en ligne de [maxmind](https://www.maxmind.com), on utilise ensuite l'image docker [geoip-updater](https://crazymax.dev/geoip-updater/install/docker/) de crazymax pour automatiser le téléchargement et la mise à jour du fichier. - -## Liens - -- 🌐 [Site website](https://joinmobilizon.org) -- 🔢 [voir les instances](https://instances.joinmobilizon.org/instances) -- 💻 Source officiel : - - [le logiciel](https://framagit.org/framasoft/mobilizon) - - [l'image _Docker_](https://framagit.org/framasoft/joinmobilizon/docker) -- 📜 [Documentation](https://docs.joinmobilizon.org) -- 🐳 [Docker Hub](https://hub.docker.com/r/framasoft/mobilizon) diff --git a/mobilizon/docker-compose.local.yml b/mobilizon/docker-compose.local.yml deleted file mode 100644 index 4cd53ce..0000000 --- a/mobilizon/docker-compose.local.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -version: "3.8" - -services: - mobilizon: - ports: - - "${MOBILIZON_INSTANCE_PORT:-4000}:${MOBILIZON_PORT:-4000}" diff --git a/mobilizon/docker-compose.traefik.yml b/mobilizon/docker-compose.traefik.yml deleted file mode 100644 index a37a013..0000000 --- a/mobilizon/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - mobilizon: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-mobilizon}.rule=Host(`${MOBILIZON_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-mobilizon}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/mobilizon/docker-compose.yml b/mobilizon/docker-compose.yml deleted file mode 100644 index 7a29ec5..0000000 --- a/mobilizon/docker-compose.yml +++ /dev/null @@ -1,47 +0,0 @@ ---- - -version: "3.8" - -volumes: - mobilizon: - name: ${MOBILIZON_VOLUME_NAME:-mobilizon} - -services: - mobilizon: - container_name: ${MOBILIZON_CONTAINER_NAME:-mobilizon} - image: ${MOBILIZON_IMAGE:-framasoft/mobilizon:2.0.2} - restart: always - depends_on: - - postgres - - geoip - volumes: - - mobilizon:/var/lib/mobilizon/uploads - # - ${PWD}/config.exs:/etc/mobilizon/config.exs:ro - - geoip:/var/lib/mobilizon/geo_db - environment: - MOBILIZON_INSTANCE_NAME: ${MOBILIZON_INSTANCE_NAME} - MOBILIZON_INSTANCE_HOST: ${MOBILIZON_DOMAIN} - MOBILIZON_INSTANCE_PORT: ${MOBILIZON_INSTANCE_PORT:-4000} - MOBILIZON_INSTANCE_EMAIL: ${MOBILIZON_INSTANCE_EMAIL} - - MOBILIZON_REPLY_EMAIL: ${MOBILIZON_REPLY_EMAIL} - MOBILIZON_ADMIN_EMAIL: ${MOBILIZON_ADMIN_EMAIL} - MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: ${MOBILIZON_INSTANCE_REGISTRATIONS_OPEN:-false} - - MOBILIZON_DATABASE_USERNAME: ${POSTGRES_USER} - MOBILIZON_DATABASE_PASSWORD: ${POSTGRES_PASSWORD} - MOBILIZON_DATABASE_DBNAME: ${POSTGRES_DB} - MOBILIZON_DATABASE_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default name is same as ../postgres/docker-compose.yml:8 - - MOBILIZON_INSTANCE_SECRET_KEY_BASE: ${MOBILIZON_INSTANCE_SECRET_KEY_BASE:?err} - MOBILIZON_INSTANCE_SECRET_KEY: ${MOBILIZON_INSTANCE_SECRET_KEY:?err} - - MOBILIZON_SMTP_SERVER: ${MOBILIZON_SMTP_SERVER:?err} - MOBILIZON_SMTP_HOSTNAME: ${MOBILIZON_SMTP_HOSTNAME:?err} - MOBILIZON_SMTP_PORT: ${MOBILIZON_SMTP_PORT:?err} - MOBILIZON_SMTP_SSL: ${MOBILIZON_SMTP_SSL:?err} - MOBILIZON_SMTP_USERNAME: ${MOBILIZON_SMTP_USERNAME:?err} - MOBILIZON_SMTP_PASSWORD: ${MOBILIZON_SMTP_PASSWORD:?err} - - PUID: ${MOBILIZON_PUID:-1000} - PGID: ${MOBILIZON_PGID:-1000} diff --git a/nextcloud/.env b/nextcloud/.env index 15a8d09..fd8e2e1 100644 --- a/nextcloud/.env +++ b/nextcloud/.env @@ -4,7 +4,7 @@ #DOCKER_CONTEXT= #DOCKER_HOST= SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/nextcloud/docker-compose.yml:${SERVICES_DIR}/nextcloud/docker-compose.config.yml:${SERVICES_DIR}/nextcloud/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml +COMPOSE_FILE=${SERVICES_DIR}/nextcloud/docker-compose.yml:${SERVICES_DIR}/nextcloud/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/redis/docker-compose.yml #COMPOSE_PROJECT_NAME= ## APP @@ -39,9 +39,7 @@ POSTGRES_VOLUME_NAME=nextcloud-postgres ####### # REDIS -#REDIS_IMAGE= REDIS_CONTAINER_NAME=nextcloud-redis -#REDIS_VOLUME_NAME= ######### # TRAEFIK diff --git a/nextcloud/README.md b/nextcloud/README.md index 0aca8d8..2f04a15 100644 --- a/nextcloud/README.md +++ b/nextcloud/README.md @@ -14,78 +14,45 @@ On peut trouver [la documentation ici][documentation] en anglais ou ici pour la ## Aide -Commande pour se connecter à un serveur : +Exemple de commande : ```sh -. .env -docker exec --user www-data -it ${NEXTCLOUD_CONTAINER_NAME}-fpm ash -``` +docker exec --user www-data -it nextcloud bash -Pour mettre un site en maintenance : - -```sh -. .env -docker exec --user www-data -it ${NEXTCLOUD_CONTAINER_NAME}-fpm php occ maintenance:mode --on +docker-compose exec --user www-data nextcloud php occ db:add-missing-primary-keys ``` ## Configuration -Il est possible de configurer certaines parties avec des variables d'environnement : -- Soit les variables sont spécifique à l'image Docker -- soit avec des variables du type `NC_` + clé (exemple : NC_default_phone_region=FR) +Il est possible de configurer certaines parties avec des variables d'environnement, mais ce n'est pas le cas de l'ensemble de la configuration. -### Création d'un groupe +Voici les modifications que j'effectue : ``` -export NC_GROUP=com-en-aubrac -php occ group:add $NC_GROUP +docker-compose exec --user www-data nextcloud-fpm ash +vi config/config.php +``` +Ajout de la configuration suivante : +``` + 'default_language' => 'fr', + 'default_locale' => 'fr_FR', + 'default_phone_region' => 'FR', + 'defaultapp' => 'files', + 'preview_max_x' => 2048, + 'preview_max_y' => 2048, + 'jpeg_quality' => 60, ``` -### Création d'un utilisateur - +Ajout de imagemagick : ``` -# La variable OC_PASS est spécifique pour l'utilisation de --password-from-env -export OC_PASS=unmotdepasse! - -export NC_USER=simon -export NC_NAME=Simon -export NC_MAIL=simon@example.org -export NC_QUOTA="180 GB" - -php occ user:add --password-from-env --display-name=$NC_NAME --group="$NC_GROUP" $NC_USER -php occ user:setting $NC_USER settings email $NC_MAIL +docker-compose exec nextcloud-fpm apk add --no-cache imagemagick ``` -### Quota - -Pour bien comprendre les quotas dans Nextcloud : https://docs.nextcloud.com/server/latest/user_manual/en/files/quota.html +ou ``` -export NC_USER=simon -export NC_QUOTA="10 GB" -php occ user:setting $NC_USER files quota "$NC_QUOTA" -``` - -### imagemagick - -> Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer. - -Pour résoudre ce problème il faut ajouter le paquet `imagemagick` - -``` -. .env -docker exec -it ${NEXTCLOUD_CONTAINER_NAME}-fpm apk add --no-cache imagemagick -``` - -## Application - -Suppression d'application : - -``` -php occ app:disable dashboard -php occ app:disable photos -php occ app:disable weather_status -php occ app:disable user_status +ssh +docker exec nextcloud-fpm apk add --no-cache imagemagick ``` ## PHP-FPM: remédier à server reached pm.max_children diff --git a/nextcloud/docker-compose.config.yml b/nextcloud/docker-compose.config.yml deleted file mode 100644 index f7491ce..0000000 --- a/nextcloud/docker-compose.config.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -version: "3.8" - -services: - nextcloud-fpm: - environment: - &nextcloud-configuration - NC_trashbin_retention_obligation: ${NC_trashbin_retention_obligation:-auto, 30} - NC_force_language: ${NC_force_language:-fr} - NC_default_locale: ${NC_default_locale:-fr_FR} - NC_force_locale: ${NC_force_locale:-fr_FR} - NC_default_language: ${NC_default_language:-fr} - NC_default_phone_region: ${NC_default_phone_region:-FR} - NC_defaultapp: ${NC_defaultapp:-files} - NC_preview_max_x: ${NC_preview_max_x:-2048} - NC_preview_max_y: ${NC_preview_max_y:-2048} - NC_jpeg_quality: ${NC_jpeg_quality:-60} - - nextcloud-cron: - environment: - <<: *nextcloud-configuration diff --git a/nextcloud/docker-compose.smtp.yml b/nextcloud/docker-compose.smtp.yml index 60136d8..b8a880f 100644 --- a/nextcloud/docker-compose.smtp.yml +++ b/nextcloud/docker-compose.smtp.yml @@ -3,16 +3,11 @@ version: "3.8" services: nextcloud-fpm: environment: - &smtp-configuration - NC_mail_smtphost: ${NC_mail_smtphost:?err} # The hostname of the SMTP server. - NC_mail_smtpsecure: ${NC_mail_smtpsecure:-ssl} # Set to ssl to use SSL, or tls to use STARTTLS. - NC_mail_smtpport: ${NC_mail_smtpport:-465} - NC_mail_smtpauthtype: ${NC_mail_smtpauthtype:-LOGIN} - NC_mail_smtpname: ${NC_mail_smtpname:?err} - NC_mail_smtppassword: ${NC_mail_smtppassword:?err} - NC_mail_from_address: ${NC_mail_from_address:?err} - NC_mail_domain: ${NC_mail_domain:?err} - - nextcloud-cron: - environment: - <<: *smtp-configuration + SMTP_HOST: ${SMTP_HOST?err} # The hostname of the SMTP server. + SMTP_SECURE: ${SMTP_SECURE:-ssl} # Set to ssl to use SSL, or tls to use STARTTLS. + SMTP_PORT: ${SMTP_PORT:-465} + SMTP_AUTHTYPE: ${SMTP_AUTHTYPE:-LOGIN} + SMTP_NAME: ${SMTP_NAME?err} + SMTP_PASSWORD: ${SMTP_PASSWORD?err} + MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS} + MAIL_DOMAIN: ${MAIL_DOMAIN} diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index 351eb38..5b87ade 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -7,7 +7,7 @@ volumes: services: nextcloud-fpm: container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm - image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine} + image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.3-fpm-alpine} restart: always depends_on: - postgres @@ -17,26 +17,24 @@ services: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - &fpm-configuration NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_TRUSTED_DOMAINS?err} NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER?err} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?err} OVERWRITEPROTOCOL: ${OVERWRITEPROTOCOL:-https} PHP_UPLOAD_LIMIT: ${PHP_UPLOAD_LIMIT:-512M} - POSTGRES_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default name is same as ../postgres/docker-compose.yml:8 + POSTGRES_HOST: postgres # Name is same as ../postgres/docker-compose.yml:8 POSTGRES_USER: ${POSTGRES_USER:?err} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?err} POSTGRES_DB: ${POSTGRES_DB:?err} - REDIS_HOST: ${REDIS_CONTAINER_NAME:-redis} # Default name is same as ../redis/docker-compose.yml:4 + REDIS_HOST: redis # Name is same as ../redis/docker-compose.yml:4 PUID: ${NEXTCLOUD_PUID:-1000} PGID: ${NEXTCLOUD_PGID:-1000} nextcloud-web: container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-web - build: ${SERVICES_DIR}/nextcloud/web + build: web restart: always environment: - NEXTCLOUD_FPM_CONTAINER_NAME: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm PUID: ${NEXTCLOUD_PUID:-1000} PGID: ${NEXTCLOUD_PGID:-1000} depends_on: @@ -47,14 +45,15 @@ services: - /etc/localtime:/etc/localtime:ro nextcloud-cron: - image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine} + image: ${NEXTCLOUD_IMAGE:-nextcloud:22.2.3-fpm-alpine} container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-cron restart: always depends_on: - nextcloud-web entrypoint: /cron.sh environment: - <<: *fpm-configuration + PUID: ${NEXTCLOUD_PUID:-1000} + PGID: ${NEXTCLOUD_PGID:-1000} volumes: - nextcloud:/var/www/html - /etc/timezone:/etc/timezone:ro diff --git a/nextcloud/run b/nextcloud/run new file mode 100755 index 0000000..a98ccba --- /dev/null +++ b/nextcloud/run @@ -0,0 +1,49 @@ +#!/bin/bash + +set -eu + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +. $DIR/../help.sh +. $DIR/../postgres/run --only-source + +nextcloud_help() { + echo "./run backup : Lancement de la sauvegarde de Nextcloud" + echo "./run restore : Restauration de la sauvegarde de Nextcloud" +} + +nextcloud_backup() { + script_env + BACKUP_DATE_DEFAULT=`date +%Y%m%d_%H%M%S` + BACKUP_DATE=${BACKUP_DATE:-$BACKUP_DATE_DEFAULT} + backup_folder_create + + POSTGRES_BACKUP_FILE=backups/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_postgres.sql + docker-compose exec --user www-data nextcloud php occ maintenance:mode --on + postgres_backup + + docker run -it --rm -v $HOME/backups/${NEXTCLOUD_DOMAIN}:/backup --volumes-from nextcloud alpine:3.12.3 ash -c "cd /var/www/html && tar cvf /backup/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_files.tar ." + docker-compose exec --user www-data nextcloud php occ maintenance:mode --off +} + +nextcloud_restore() { + script_env + + postgres_restore + docker run -it --rm -v $HOME/backups/${NEXTCLOUD_DOMAIN}:/backup -v nextcloud:/var/www/html alpine:3.12.3 ash -c "cd /var/www/html && tar xvf /backup/${BACKUP_DATE}_${NEXTCLOUD_DOMAIN}_files.tar --strip 1" +} + +if [ $# -ge 1 ]; then + if [ "${1}" == "backup" ]; then + script_start + nextcloud_backup + script_end + elif [ "${1}" == "restore" ]; then + script_start + nextcloud_restore + script_end + elif [ "${1}" != "--only-source" ]; then + nextcloud_help + fi +else + nextcloud_help +fi diff --git a/nextcloud/web/Dockerfile b/nextcloud/web/Dockerfile index 345321a..64dc53c 100644 --- a/nextcloud/web/Dockerfile +++ b/nextcloud/web/Dockerfile @@ -1,3 +1,3 @@ -FROM nginx:1.23.3-alpine +FROM nginx:1.21.4-alpine -COPY nextcloud.conf.template /etc/nginx/templates/default.conf.template +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/nextcloud/web/nextcloud.conf.template b/nextcloud/web/nextcloud.conf.template deleted file mode 100644 index ca15645..0000000 --- a/nextcloud/web/nextcloud.conf.template +++ /dev/null @@ -1,145 +0,0 @@ -upstream php-handler { - server ${NEXTCLOUD_FPM_CONTAINER_NAME}:9000; -} - -server { - listen 80; - - # Add headers to serve security related headers - # Before enabling Strict-Transport-Security headers please read into this - # topic first. - #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; - # - # WARNING: Only add the preload option once you read about - # the consequences in https://hstspreload.org/. This option - # will add the domain to a hardcoded list that is shipped - # in all major browsers and getting removed from this list - # could take several months. - add_header Referrer-Policy "no-referrer" always; - add_header X-Content-Type-Options "nosniff" always; - add_header X-Download-Options "noopen" always; - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Permitted-Cross-Domain-Policies "none" always; - add_header X-Robots-Tag "none" always; - add_header X-XSS-Protection "1; mode=block" always; - - # Remove X-Powered-By, which is an information leak - fastcgi_hide_header X-Powered-By; - - # Path to the root of your installation - root /var/www/html; - - location = /robots.txt { - allow all; - log_not_found off; - access_log off; - } - - # The following 2 rules are only needed for the user_webfinger app. - # Uncomment it if you're planning to use this app. - #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; - #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; - - # The following rule is only needed for the Social app. - # Uncomment it if you're planning to use this app. - #rewrite ^/.well-known/webfinger /public.php?service=webfinger last; - - location = /.well-known/carddav { - return 301 $scheme://$host:$server_port/remote.php/dav; - } - - location = /.well-known/caldav { - return 301 $scheme://$host:$server_port/remote.php/dav; - } - - # location /nginx_status { - # stub_status; - # allow 192.168.1.0/24; #only allow requests from local network - # deny all; #deny all other hosts - # } - - # set max upload size - client_max_body_size 10G; - fastcgi_buffers 64 4K; - - # Enable gzip but do not remove ETag headers - gzip on; - gzip_vary on; - gzip_comp_level 4; - gzip_min_length 256; - gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; - gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; - - # Uncomment if your server is build with the ngx_pagespeed module - # This module is currently not supported. - #pagespeed off; - - location / { - rewrite ^ /index.php; - } - - location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { - deny all; - } - location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { - deny all; - } - - location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) { - fastcgi_split_path_info ^(.+?\.php)(\/.*|)$; - set $path_info $fastcgi_path_info; - try_files $fastcgi_script_name =404; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $path_info; - # fastcgi_param HTTPS on; - - # Avoid sending the security headers twice - fastcgi_param modHeadersAvailable true; - - # Enable pretty urls - fastcgi_param front_controller_active true; - fastcgi_pass php-handler; - fastcgi_intercept_errors on; - fastcgi_request_buffering off; - } - - location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { - try_files $uri/ =404; - index index.php; - } - - # Adding the cache control header for js, css and map files - # Make sure it is BELOW the PHP block - location ~ \.(?:css|js|woff2?|svg|gif|map)$ { - try_files $uri /index.php$request_uri; - add_header Cache-Control "public, max-age=15778463"; - # Add headers to serve security related headers (It is intended to - # have those duplicated to the ones above) - # Before enabling Strict-Transport-Security headers please read into - # this topic first. - #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; - # - # WARNING: Only add the preload option once you read about - # the consequences in https://hstspreload.org/. This option - # will add the domain to a hardcoded list that is shipped - # in all major browsers and getting removed from this list - # could take several months. - add_header Referrer-Policy "no-referrer" always; - add_header X-Content-Type-Options "nosniff" always; - add_header X-Download-Options "noopen" always; - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Permitted-Cross-Domain-Policies "none" always; - add_header X-Robots-Tag "none" always; - add_header X-XSS-Protection "1; mode=block" always; - - # Optional: Don't log access to assets - access_log off; - } - - location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ { - try_files $uri /index.php$request_uri; - # Optional: Don't log access to other assets - access_log off; - } -} diff --git a/nextcloud/web/nginx.conf b/nextcloud/web/nginx.conf new file mode 100644 index 0000000..b076ed2 --- /dev/null +++ b/nextcloud/web/nginx.conf @@ -0,0 +1,174 @@ +worker_processes auto; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server nextcloud-fpm:9000; + } + + server { + listen 80; + + # Add headers to serve security related headers + # Before enabling Strict-Transport-Security headers please read into this + # topic first. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + # + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "none" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root /var/www/html; + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # The following 2 rules are only needed for the user_webfinger app. + # Uncomment it if you're planning to use this app. + #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; + #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; + + # The following rule is only needed for the Social app. + # Uncomment it if you're planning to use this app. + #rewrite ^/.well-known/webfinger /public.php?service=webfinger last; + + location = /.well-known/carddav { + return 301 $scheme://$host:$server_port/remote.php/dav; + } + + location = /.well-known/caldav { + return 301 $scheme://$host:$server_port/remote.php/dav; + } + + # location /nginx_status { + # stub_status; + # allow 192.168.1.0/24; #only allow requests from local network + # deny all; #deny all other hosts + # } + + # set max upload size + client_max_body_size 10G; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Uncomment if your server is build with the ngx_pagespeed module + # This module is currently not supported. + #pagespeed off; + + location / { + rewrite ^ /index.php; + } + + location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { + deny all; + } + location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { + deny all; + } + + location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) { + fastcgi_split_path_info ^(.+?\.php)(\/.*|)$; + set $path_info $fastcgi_path_info; + try_files $fastcgi_script_name =404; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + # fastcgi_param HTTPS on; + + # Avoid sending the security headers twice + fastcgi_param modHeadersAvailable true; + + # Enable pretty urls + fastcgi_param front_controller_active true; + fastcgi_pass php-handler; + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + } + + location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { + try_files $uri/ =404; + index index.php; + } + + # Adding the cache control header for js, css and map files + # Make sure it is BELOW the PHP block + location ~ \.(?:css|js|woff2?|svg|gif|map)$ { + try_files $uri /index.php$request_uri; + add_header Cache-Control "public, max-age=15778463"; + # Add headers to serve security related headers (It is intended to + # have those duplicated to the ones above) + # Before enabling Strict-Transport-Security headers please read into + # this topic first. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + # + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "none" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Optional: Don't log access to assets + access_log off; + } + + location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ { + try_files $uri /index.php$request_uri; + # Optional: Don't log access to other assets + access_log off; + } + } +} diff --git a/plausible/.env b/plausible/.env deleted file mode 100644 index 80eebb8..0000000 --- a/plausible/.env +++ /dev/null @@ -1,71 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/plausible/docker-compose.yml:${SERVICES_DIR}/plausible/docker-compose.clickhouse.yml:${SERVICES_DIR}/plausible/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/clickhouse/docker-compose.yml -#COMPOSE_PROJECT_NAME= - -## APP - -PLAUSIBLE_DOMAIN=localhost -BASE_URL=http://${PLAUSIBLE_DOMAIN}:8000 -#PLAUSIBLE_CONTAINER_NAME=plausible -#PLAUSIBLE_VOLUME_NAME=plausible -#PLAUSIBLE_IMAGE=plausible/analytics:v1.4.4 - -ADMIN_USER_NAME=example -ADMIN_USER_EMAIL=email@example.org -ADMIN_USER_PWD=change-me -SECRET_KEY_BASE=AFnMQwN54ovHIqCQQGFZX5gUFpgpxasCEnzQwQsyfZLPRbiwzDYAqYDJQlQM8SbmicVJr97axXaSCfXD9zSEQQ== -#DISABLE_AUTH= -#DISABLE_REGISTRATION= - -## POSTGRES - -#POSTGRES_VOLUME_NAME= -#POSTGRES_CONTAINER_NAME= -#POSTGRES_IMAGE= -POSTGRES_USER=user-example -POSTGRES_PASSWORD=password-example -POSTGRES_DB=plausible_dev - -## CLICKHOUSE - -#CLICKHOUSE_VOLUME_NAME= -#CLICKHOUSE_CONTAINER_NAME= -#CLICKHOUSE_IMAGE= - -## SMTP - -#MAILER_EMAIL= -#SMTP_HOST_ADDR= -#SMTP_HOST_PORT= -#SMTP_USER_NAME= -#SMTP_USER_PWD= -#SMTP_HOST_SSL_ENABLED= -#SMTP_RETRIES= - -## GOOGLE SEARCH CONSOLE - -#GOOGLE_CLIENT_ID= -#GOOGLE_CLIENT_SECRET= - -## GEOIPUPDATE - -#GEOIPUPDATE_VOLUME_NAME= -#GEOIPUPDATE_IMAGE= -#GEOIPUPDATE_CONTAINER_NAME= -#GEOIPUPDATE_ACCOUNT_ID= -#GEOIPUPDATE_LICENSE_KEY= -#GEOIPUPDATE_EDITION_IDS=GeoLite2-Country -#GEOIPUPDATE_FREQUENCY= -#GEOIPUPDATE_VERBOSE= -#GEOIPUPDATE_DB_DIR= - -## TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= -#TRAEFIK_ENTRYPOINTS= diff --git a/plausible/README.md b/plausible/README.md deleted file mode 100644 index 30e97e1..0000000 --- a/plausible/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Plausible - -> Plausible est une plateforme d'analyse Web légère et open source. - -## Liens - -- [Site Officiel][site] -- [Documentation][documentation] -- [Code source][source] -- [Docker Hub][dockerhub] - -[site]: https://plausible.io/ -[source]: https://github.com/plausible/analytics -[documentation]: https://plausible.io/docs -[dockerhub]: https://hub.docker.com/r/plausible/analytics diff --git a/plausible/clickhouse-config.xml b/plausible/clickhouse-config.xml deleted file mode 100644 index ddd5f1c..0000000 --- a/plausible/clickhouse-config.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - warning - true - - - - - - - - - - diff --git a/plausible/clickhouse-user-config.xml b/plausible/clickhouse-user-config.xml deleted file mode 100644 index f795286..0000000 --- a/plausible/clickhouse-user-config.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - 0 - 0 - - - diff --git a/plausible/docker-compose.clickhouse.yml b/plausible/docker-compose.clickhouse.yml deleted file mode 100644 index 443d044..0000000 --- a/plausible/docker-compose.clickhouse.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3.8" - -services: - clickhouse: - volumes: - - ./clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro - - ./clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro diff --git a/plausible/docker-compose.geoip.yml b/plausible/docker-compose.geoip.yml deleted file mode 100644 index 6c9fe71..0000000 --- a/plausible/docker-compose.geoip.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: "3.8" - -services: - plausible: - depends_on: - - geoipupdate - environment: - - GEOLITE2_COUNTRY_DB=/geoip/GeoLite2-Country.mmdb - volumes: - - geoipupdate:/geoip:ro diff --git a/plausible/docker-compose.google.yml b/plausible/docker-compose.google.yml deleted file mode 100644 index dfb4c6c..0000000 --- a/plausible/docker-compose.google.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3.8" - -services: - plausible: - environment: - GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:?err} - GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:?err} diff --git a/plausible/docker-compose.local.yml b/plausible/docker-compose.local.yml deleted file mode 100644 index f1ceb7f..0000000 --- a/plausible/docker-compose.local.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: "3.8" - -services: - plausible: - ports: - - ${LOCAL_PORT:-8000}:8000 diff --git a/plausible/docker-compose.smtp.yml b/plausible/docker-compose.smtp.yml deleted file mode 100644 index fc0dea5..0000000 --- a/plausible/docker-compose.smtp.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: "3.8" - -services: - plausible: - environment: - MAILER_EMAIL: ${MAILER_EMAIL:-hello@plausible.local} - SMTP_HOST_ADDR: ${SMTP_HOST_ADDR:-localhost} - SMTP_HOST_PORT: ${SMTP_HOST_PORT:-25} - SMTP_USER_NAME: ${SMTP_USER_NAME} - SMTP_USER_PWD: ${SMTP_USER_PWD} - SMTP_HOST_SSL_ENABLED: ${SMTP_HOST_SSL_ENABLED:-false} - SMTP_RETRIES: ${SMTP_RETRIES:-2} diff --git a/plausible/docker-compose.traefik.yml b/plausible/docker-compose.traefik.yml deleted file mode 100644 index 04cd7b6..0000000 --- a/plausible/docker-compose.traefik.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - plausible: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-plausible}.rule=Host(`${PLAUSIBLE_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-plausible}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/plausible/docker-compose.yml b/plausible/docker-compose.yml deleted file mode 100644 index 1834df3..0000000 --- a/plausible/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: "3.8" - -volumes: - plausible: - name: ${PLAUSIBLE_VOLUME_NAME:-plausible} - -services: - plausible: - container_name: ${PLAUSIBLE_CONTAINER_NAME:-plausible} - image: ${PLAUSIBLE_IMAGE:-plausible/analytics:v1.4.4} - restart: always - command: ${PLAUSIBLE_DOCKER_COMMAND:-sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"} - depends_on: - - clickhouse - - postgres - environment: - ADMIN_USER_NAME: ${ADMIN_USER_NAME:?err} - ADMIN_USER_EMAIL: ${ADMIN_USER_EMAIL:?err} - ADMIN_USER_PWD: ${ADMIN_USER_PWD:?err} - BASE_URL: ${BASE_URL} - SECRET_KEY_BASE: ${SECRET_KEY_BASE:?err} - DISABLE_AUTH: ${DISABLE_AUTH:-false} - DISABLE_REGISTRATION: ${DISABLE_REGISTRATION:-false} - DATABASE_URL: postgres://${POSTGRES_USER:?err}:${POSTGRES_PASSWORD:?err}@${POSTGRES_CONTAINER_NAME:-postgres}:5432/${POSTGRES_DB:?err} - CLICKHOUSE_DATABASE_URL: http://${CLICKHOUSE_CONTAINER_NAME:-clickhouse}:8123/${CLICKHOUSE_CONTAINER_NAME:-clickhouse} - SITE_LIMIT: ${SITE_LIMIT:-3} - SELFHOST: ${SELFHOST:-true} - LOG_LEVEL: ${LOG_LEVEL:-warn} - volumes: - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro diff --git a/postgres/.env b/postgres/.env index 1b5f33e..74b5f0e 100644 --- a/postgres/.env +++ b/postgres/.env @@ -1,7 +1,3 @@ -#POSTGRES_VOLUME_NAME= -#POSTGRES_CONTAINER_NAME= -#POSTGRES_IMAGE= - POSTGRES_USER=user-example POSTGRES_PASSWORD=password-example POSTGRES_DB=postgres-database-name-example diff --git a/postgres/docker-compose.yml b/postgres/docker-compose.yml index 44e7d0a..95f5c69 100644 --- a/postgres/docker-compose.yml +++ b/postgres/docker-compose.yml @@ -7,7 +7,7 @@ volumes: services: postgres: container_name: ${POSTGRES_CONTAINER_NAME:-postgres} - image: ${POSTGRES_IMAGE:-postgres:14.2-alpine} + image: ${POSTGRES_IMAGE:-postgres:14.1-alpine} restart: always environment: POSTGRES_USER: ${POSTGRES_USER:?err} diff --git a/prometheus/.env b/prometheus/.env deleted file mode 100644 index 803d12c..0000000 --- a/prometheus/.env +++ /dev/null @@ -1,21 +0,0 @@ -######## -# DOCKER - -#DOCKER_CONTEXT= -#DOCKER_HOST= -SERVICES_DIR=.. -COMPOSE_FILE=${SERVICES_DIR}/prometheus/docker-compose.yml:${SERVICES_DIR}/prometheus/docker-compose.traefik.yml -#COMPOSE_PROJECT_NAME= - -############ -# PROMETHEUS - -#PROMETHEUS_IMAGE= -PROMETHEUS_DOMAIN=prometheus.cool.life - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= -#TRAEFIK_ENTRYPOINTS= diff --git a/prometheus/Dockerfile b/prometheus/Dockerfile deleted file mode 100644 index 159f2ac..0000000 --- a/prometheus/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -ARG PROMETHEUS_IMAGE -FROM $PROMETHEUS_IMAGE -ADD prometheus.yml /etc/prometheus/ diff --git a/prometheus/README.md b/prometheus/README.md deleted file mode 100644 index caca743..0000000 --- a/prometheus/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Prometheus - -> Prometheus est un logiciel libre de surveillance informatique et générateur d'alertes. Il enregistre des métriques en temps réel dans une base de données de séries temporelles (avec une capacité d'acquisition élevée) en se basant sur le contenu de point d'entrée exposé à l'aide du protocole HTTP. -> -> -- [Wikipédia](https://fr.wikipedia.org/wiki/Prometheus_(logiciel)) - -## 🔧 Configuration - -Pour configurer le service il faut ajouter un fichier prometheus.yml décrivant votre configuration. Vous retrouverz toutes les informations sur la page de [documentation officielle](https://prometheus.io/docs/prometheus/latest/configuration/configuration/). - -## 🔗 Liens - -- [Site officiel](https://prometheus.io/) -- [La documentation](https://prometheus.io/docs/) -- [Github](https://github.com/prometheus/prometheus) -- [L'image Docker sur Docker Hub](https://hub.docker.com/r/prom/prometheus) diff --git a/prometheus/docker-compose.traefik.yml b/prometheus/docker-compose.traefik.yml deleted file mode 100644 index 5f3fe21..0000000 --- a/prometheus/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - prometheus: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-prometheus}.rule=Host(`${PROMETHEUS_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-prometheus}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/prometheus/docker-compose.yml b/prometheus/docker-compose.yml deleted file mode 100644 index b97b1e3..0000000 --- a/prometheus/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- - -version: '3.8' - -volumes: - prometheus: - name: ${PROMETHEUS_VOLUME_NAME:-prometheus} - -services: - prometheus: - container_name: ${PROMETHEUS_CONTAINER_NAME:-prometheus} - build: - context: . - args: - PROMETHEUS_IMAGE: ${PROMETHEUS_IMAGE:-prom/prometheus:v2.34.0} - volumes: - - prometheus:/prometheus - restart: always diff --git a/prometheus/node-exporter/docker-compose.yml b/prometheus/node-exporter/docker-compose.yml new file mode 100644 index 0000000..9a2b46e --- /dev/null +++ b/prometheus/node-exporter/docker-compose.yml @@ -0,0 +1,16 @@ +--- +version: '3.8' + +services: + node_exporter: + image: ${NODE_EXPORTER_IMAGE:-quay.io/prometheus/node-exporter:v1.2.0} + container_name: node_exporter + command: + - '--path.rootfs=/host --collector.textfile.directory=/host/var/lib/node_exporter/textfile_collector' + network_mode: host + pid: host + restart: unless-stopped + expose: + - 9100 + volumes: + - '/:/host:ro,rslave' diff --git a/redis/docker-compose.yml b/redis/docker-compose.yml index cb0bd58..35755cd 100644 --- a/redis/docker-compose.yml +++ b/redis/docker-compose.yml @@ -1,9 +1,5 @@ version: "3.8" -volumes: - redis: - name: ${REDIS_VOLUME_NAME:-redis} - services: redis: image: ${REDIS_IMAGE:-redis:6.2.6-alpine} @@ -13,6 +9,5 @@ services: PUID: ${REDIS_PUID:-1000} PGID: ${REDIS_PGID:-1000} volumes: - - redis:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro diff --git a/registry/.env b/registry/.env index 6771d73..ac4869e 100644 --- a/registry/.env +++ b/registry/.env @@ -5,7 +5,7 @@ TRAEFIK_NETWORK_NAME=kifeart ## REGISTRY -#REGISTRY_IMAGE= +REGISTRY_IMAGE=registry:2.7.1 REGISTRY_CUSTOM_IMAGE=custom/registry REGISTRY_DOMAIN=registry.cool.life REGISTRY_VOLUME_NAME=registry diff --git a/registry/README.md b/registry/README.md index 56deffa..a644b38 100644 --- a/registry/README.md +++ b/registry/README.md @@ -36,12 +36,6 @@ Pour se connecter : docker login https://$REGISTRY_DOMAIN ``` -## Nettoyer le registre - -```sh -docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml --delete-untagged=true -``` - ## Aide Pour connaître les images du registry : diff --git a/registry/docker-compose.yml b/registry/docker-compose.yml index fd228a9..c987491 100644 --- a/registry/docker-compose.yml +++ b/registry/docker-compose.yml @@ -7,7 +7,7 @@ volumes: services: registry: container_name: ${REGISTRY_CONTAINER_NAME} - image: ${REGISTRY_IMAGE:-registry:2.8.1} + image: ${REGISTRY_IMAGE} restart: always environment: REGISTRY_AUTH: htpasswd diff --git a/traefik/docker-compose.secure.yml b/traefik/docker-compose.secure.yml index 2c46a2f..bdaff66 100644 --- a/traefik/docker-compose.secure.yml +++ b/traefik/docker-compose.secure.yml @@ -5,22 +5,21 @@ networks: driver: bridge services: - traefik: - ports: - - target: 443 - published: 443 - protocol: tcp - mode: host - command: - - --providers.file.filename=/traefik/dynamic_conf.toml + ports: + - target: 443 + published: 443 + protocol: tcp + mode: host + command: + - --providers.file.filename=/traefik/dynamic_conf.toml - - --entrypoints.websecure.address=:443 + - --entrypoints.websecure.address=:443 - - --certificatesresolvers.letsencrypt.acme.httpchallenge=true - - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web - - --certificatesresolvers.letsencrypt.acme.email=${TRAEFIK_EMAIL} - - --certificatesresolvers.letsencrypt.acme.storage=/traefik/acme.json - labels: - traefik.http.routers.traefik.entrypoints: 'websecure' - traefik.http.routers.traefik.tls.certResolver: 'letsencrypt' - traefik.http.routers.traefik.priority: '2000' + - --certificatesresolvers.letsencrypt.acme.httpchallenge=true + - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web + - --certificatesresolvers.letsencrypt.acme.email=${TRAEFIK_EMAIL} + - --certificatesresolvers.letsencrypt.acme.storage=/traefik/acme.json + labels: + traefik.http.routers.traefik.entrypoints: 'websecure' + traefik.http.routers.traefik.tls.certResolver: 'letsencrypt' + traefik.http.routers.traefik.priority: '2000' diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml index f030402..ad8c22c 100644 --- a/traefik/docker-compose.yml +++ b/traefik/docker-compose.yml @@ -11,7 +11,7 @@ networks: services: traefik: container_name: ${TRAEFIK_CONTAINER_NAME:-traefik} - image: ${TRAEFIK_IMAGE:-traefik:v2.6.3} + image: ${TRAEFIK_IMAGE:-traefik:v2.5.4} restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock @@ -30,6 +30,7 @@ services: - --log.level=${TRAEFIK_LOG_LEVEL:-INFO} - --global.sendanonymoususage=${TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE:-false} - --global.checknewversion=${TRAEFIK_GLOBAL_CHECKNEWVERSION:-false} + - --pilot.dashboard=${TRAEFIK_PILOT_DASHBOARD:-false} - --metrics.prometheus=${TRAEFIK_METRICS_PROMETHEUS:-true} - --accesslog=${TRAEFIK_ACCESSLOG:-false} diff --git a/uptimekuma/.env b/uptimekuma/.env deleted file mode 100644 index a67d401..0000000 --- a/uptimekuma/.env +++ /dev/null @@ -1,20 +0,0 @@ -######## -# DOCKER - -SERVICES_DIR=".." -COMPOSE_FILE=${SERVICES_DIR}/uptimekuma/docker-compose.yml:${SERVICES_DIR}/uptimekuma/docker-compose.local.yml -# COMPOSE_PROJECT_NAME= - -## APP - -# UPTIMEKUMA_DOMAIN={{ UPTIMEKUMA_DOMAIN }} -UPTIMEKUMA_CONTAINER_NAME=uptimekuma -UPTIMEKUMA_VOLUME_NAME=uptimekuma -# UPTIMEKUMA_IMAGE= - -######### -# TRAEFIK - -# TRAEFIK_NETWORK_NAME= -# TRAEFIK_ROUTER_NAME= -# TRAEFIK_ENTRYPOINTS= diff --git a/uptimekuma/README.md b/uptimekuma/README.md deleted file mode 100644 index 0505ee5..0000000 --- a/uptimekuma/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Uptime Kuma - -> Uptime Kuma est un service pour surveiller des applications et services auto-hébergés. Il surveille le fonctionnement de services à travers des sondes HTTP(S), TCP, Ping, enregistrement DNS… sans limites. - -## Information - -- L'ensemble des variables d'environnement se trouve [ici](https://github.com/louislam/uptime-kuma/wiki/Environment-Variables) -- Actuellement Uptime Kuma support seulement sqlite3, [une PR](https://github.com/louislam/uptime-kuma/pull/1139) est en court pour le support de MySQL à suivre. -- Il y aurait des problèmes de DNS avec l'image Docker Alpine et [le support ne sera plus la dans la v2](https://github.com/louislam/uptime-kuma/pull/2085) donc on prend la version debian un peu plus lourde. -- Pour l'instant [il n'est pas possible d'avoir plusieurs comptes](https://github.com/louislam/uptime-kuma/issues/128) - -## Liens - -- [Site Officiel][site] -- [Documentation][documentation] -- [Code source][source] -- [Docker Hub][dockerhub] - -[site]: https://uptime.kuma.pet/ -[source]: https://github.com/louislam/uptime-kuma -[documentation]: https://github.com/louislam/uptime-kuma/wiki -[dockerhub]: https://hub.docker.com/r/louislam/uptime-kuma/ \ No newline at end of file diff --git a/uptimekuma/docker-compose.local.yml b/uptimekuma/docker-compose.local.yml deleted file mode 100644 index 7a90473..0000000 --- a/uptimekuma/docker-compose.local.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -version: "3.8" - -services: - uptimekuma: - ports: - - 3001:3001 diff --git a/uptimekuma/docker-compose.traefik.yml b/uptimekuma/docker-compose.traefik.yml deleted file mode 100644 index ff7d31c..0000000 --- a/uptimekuma/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - uptimekuma: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-uptimekuma}.rule=Host(`${UPTIMEKUMA_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-uptimekuma}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/uptimekuma/docker-compose.yml b/uptimekuma/docker-compose.yml deleted file mode 100644 index 8a087de..0000000 --- a/uptimekuma/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -version: "3.8" - -volumes: - uptimekuma: - name: ${UPTIMEKUMA_VOLUME_NAME:-uptimekuma} - -services: - uptimekuma: - container_name: ${UPTIMEKUMA_CONTAINER_NAME:-uptimekuma} - image: ${UPTIMEKUMA_IMAGE:-louislam/uptime-kuma:1.18.5} - restart: always - volumes: - - uptimekuma:/app/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro diff --git a/vaultwarden/.env b/vaultwarden/.env deleted file mode 100644 index 0c01add..0000000 --- a/vaultwarden/.env +++ /dev/null @@ -1,46 +0,0 @@ -######## -# DOCKER - -SERVICES_DIR=".." -COMPOSE_FILE=${SERVICES_DIR}/vaultwarden/docker-compose.yml -#COMPOSE_PROJECT_NAME= - -## APP - -#VAULTWARDEN_IMAGE= -#VAULTWARDEN_VOLUME_NAME= -VAULTWARDEN_DOMAIN=vaultwarden.local - -#VAULTWARDEN_LOG_LEVEL= -#VAULTWARDEN_SIGNUPS_ALLOWED=false -VAULTWARDEN_ADMIN_TOKEN="mytoken" -#VAULTWARDEN_INVITATION_ORG_NAME="RésiLien" - -########## -# POSTGRES - -#POSTGRES_IMAGE= -#POSTGRES_CONTAINER_NAME= -#POSTGRES_DB= -#POSTGRES_USER= -#POSTGRES_PASSWORD= -#POSTGRES_VOLUME_NAME= - -###### -# SMTP - -#VAULTWARDEN_SMTP_HOST= -#VAULTWARDEN_SMTP_FROM= -#VAULTWARDEN_SMTP_FROM_NAME= -#VAULTWARDEN_SMTP_SECURITY= -#VAULTWARDEN_SMTP_PORT= -#VAULTWARDEN_SMTP_USERNAME= -#VAULTWARDEN_SMTP_PASSWORD= -#VAULTWARDEN_SMTP_AUTH_MECHANISM= - -######### -# TRAEFIK - -#TRAEFIK_NETWORK_NAME= -#TRAEFIK_ROUTER_NAME= -#TRAEFIK_ENTRYPOINTS= diff --git a/vaultwarden/README.md b/vaultwarden/README.md deleted file mode 100644 index b799a9d..0000000 --- a/vaultwarden/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Vaultwarden - -> Gestionnaire de mot de passe compatible avec Bitwarden mais écrit en Rust pour être plus sobre en ressource système. - -## Configuration - -Toutes les variables de configuration du service sont disponibles à [cette adresse](https://github.com/dani-garcia/vaultwarden/blob/main/.env.template). - -## Clients - -[Les clients de Bitwarden](https://bitwarden.com/#download) sont compatibles avec le serveur. - -## Liens - -- [Documentation][documentation] -- [Code source][source] -- [Docker Hub][dockerhub] - -[source]: https://github.com/dani-garcia/vaultwarden -[documentation]: https://github.com/dani-garcia/vaultwarden/wiki -[dockerhub]: https://hub.docker.com/r/vaultwarden/server \ No newline at end of file diff --git a/vaultwarden/docker-compose.postgres.yml b/vaultwarden/docker-compose.postgres.yml deleted file mode 100644 index 58e2bf7..0000000 --- a/vaultwarden/docker-compose.postgres.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- - -version: "3.8" - -services: - vaultwarden: - depends_on: - - postgres - environment: - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_CONTAINER_NAME}:5432/${POSTGRES_DB} diff --git a/vaultwarden/docker-compose.smtp.yml b/vaultwarden/docker-compose.smtp.yml deleted file mode 100644 index 21ca579..0000000 --- a/vaultwarden/docker-compose.smtp.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -services: - vaultwarden: - environment: - SMTP_HOST: ${VAULTWARDEN_SMTP_HOST:?err} - SMTP_FROM: ${VAULTWARDEN_SMTP_FROM:?err} - SMTP_FROM_NAME: ${VAULTWARDEN_SMTP_FROM_NAME:?err} - SMTP_SECURITY: ${VAULTWARDEN_SMTP_SECURITY:?err} - SMTP_PORT: ${VAULTWARDEN_SMTP_PORT:?err} - SMTP_USERNAME: ${VAULTWARDEN_SMTP_USERNAME:?err} - SMTP_PASSWORD: ${VAULTWARDEN_SMTP_PASSWORD:?err} - SMTP_AUTH_MECHANISM: ${VAULTWARDEN_SMTP_AUTH_MECHANISM:?err} diff --git a/vaultwarden/docker-compose.traefik.yml b/vaultwarden/docker-compose.traefik.yml deleted file mode 100644 index e191542..0000000 --- a/vaultwarden/docker-compose.traefik.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -version: "3.8" - -networks: - default: - name: ${TRAEFIK_NETWORK_NAME:-traefik} - -services: - vaultwarden: - labels: - - traefik.enable=true - - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vaultwarden}.rule=Host(`${VAULTWARDEN_DOMAIN:?err}`) - - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-vaultwarden}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} \ No newline at end of file diff --git a/vaultwarden/docker-compose.yml b/vaultwarden/docker-compose.yml deleted file mode 100644 index 97553ca..0000000 --- a/vaultwarden/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- - -version: "3.8" - -volumes: - vaultwarden: - name: ${VAULTWARDEN_VOLUME_NAME:-vaultwarden} - -services: - vaultwarden: - image: ${VAULTWARDEN_IMAGE:-vaultwarden/server:1.27.0-alpine} - container_name: ${VAULTWARDEN_CONTAINER_NAME:-vaultwarden} - restart: always - environment: - ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN:?err} - DOMAIN: https://${VAULTWARDEN_DOMAIN:?err} - INVITATION_ORG_NAME: ${VAULTWARDEN_INVITATION_ORG_NAME:-Vaultwarden} - LOG_LEVEL: ${VAULTWARDEN_LOG_LEVEL:-Info} - SIGNUPS_ALLOWED: ${VAULTWARDEN_SIGNUPS_ALLOWED:-true} - volumes: - - vaultwarden:/data - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro diff --git a/vikunja/.env b/vikunja/.env deleted file mode 100644 index 62a1d6f..0000000 --- a/vikunja/.env +++ /dev/null @@ -1,86 +0,0 @@ -######## -# 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 deleted file mode 100644 index 708a150..0000000 --- a/vikunja/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# 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 deleted file mode 100644 index dbfbc28..0000000 --- a/vikunja/docker-compose.local.yml +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index ec74292..0000000 --- a/vikunja/docker-compose.logs.yml +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 4193043..0000000 --- a/vikunja/docker-compose.postgres.yml +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index 219ce35..0000000 --- a/vikunja/docker-compose.prometheus.yml +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 72289d6..0000000 --- a/vikunja/docker-compose.redis.yml +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index c9f98c2..0000000 --- a/vikunja/docker-compose.smtp.yml +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index eabf6d1..0000000 --- a/vikunja/docker-compose.traefik.yml +++ /dev/null @@ -1,21 +0,0 @@ -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 deleted file mode 100644 index ac99c02..0000000 --- a/vikunja/docker-compose.yml +++ /dev/null @@ -1,45 +0,0 @@ -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} - restart: always - depends_on: - - vikunja_api diff --git a/watchtower/.env b/watchtower/.env index 722e5d5..a00e64d 100644 --- a/watchtower/.env +++ b/watchtower/.env @@ -1,5 +1,5 @@ WATCHTOWER_CONTAINER_NAME=watchtower -#WATCHTOWER_IMAGE= +WATCHTOWER_IMAGE=containrrr/watchtower:1.0.3 REGISTRY_DOMAIN=registry.cool.life REGISTRY_USER=kosssi REGISTRY_PASSWORD=z91PjNYpswd4ai5YoMCw58VoygJSZev7qNJ0cAlPmPBD5pVz9O diff --git a/watchtower/docker-compose.yml b/watchtower/docker-compose.yml index ed51860..52ee210 100644 --- a/watchtower/docker-compose.yml +++ b/watchtower/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.8' services: watchtower: container_name: ${WATCHTOWER_CONTAINER_NAME} - image: ${WATCHTOWER_IMAGE:-containrrr/watchtower:1.4.0} + image: ${WATCHTOWER_IMAGE} restart: always command: -i 60 --label-enable --cleanup --debug # --debug