50 Commits

Author SHA1 Message Date
f323ee23ad feat(snikket): Add Snikket service 2024-06-12 23:58:45 +02:00
b770dfd525 Merge pull request 'feat(Nextcloud): Update default value of SMTP' (#76) from fix_nextcloud_smtp into main
Reviewed-on: #76
2024-03-29 17:38:54 +01:00
ec039c4474 feat(Nextcloud): Update default value of SMTP 2024-03-29 17:38:38 +01:00
16a583e326 Merge pull request 'feat(Docker Compose): Remove obsolete version variable' (#75) from docker_compose_version into main
Reviewed-on: #75
2024-03-25 14:36:04 +01:00
4f3c112404 feat(Docker Compose): Remove obsolete version variable
see: https://github.com/docker/compose/issues/11628
2024-03-25 14:35:05 +01:00
bbd45d8f3f Merge pull request 'feat(Drone Server): Add external parameter for network' (#74) from drone into main
Reviewed-on: #74
2024-03-25 14:19:52 +01:00
68820ec859 feat(Drone Server): Add external parameter for network 2024-03-25 14:19:17 +01:00
9b8591caee Merge pull request 'nextcloud' (#73) from nextcloud into main
Reviewed-on: #73
2024-02-05 14:28:41 +01:00
4c2ebac4e7 chore(Nextcloud): Upgrade nginx 2024-02-05 14:27:45 +01:00
b516600e50 feat(Nextcloud): Update nginx template
https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
2024-02-05 14:27:45 +01:00
c579565849 Merge pull request 'feat(Nextcloud): Split redis & postgres configuration' (#72) from nextcloud into main
Reviewed-on: #72
2023-10-05 14:13:47 +02:00
a26e291396 feat(Nextcloud): Split redis & postgres configuration 2023-10-03 22:22:02 +02:00
6441551318 Merge pull request 'feat(Vikunja): Add all default variables' (#71) from vikunja into main
Reviewed-on: #71
2023-10-03 14:54:12 +02:00
d88b1829f1 feat(Vikunja): Add all default variables 2023-10-03 14:53:59 +02:00
6047ad6050 Merge pull request 'vikunja' (#70) from vikunja into main
## Détails

- Mise à jour de la valeur par défaut du langage sinon ça ne fonctionne pas
- Séparation des variables légales dans un fichier

Reviewed-on: #70
2023-10-03 14:19:16 +02:00
11f89a1c8c feat(Vikunja): Split configuration 2023-10-03 14:17:35 +02:00
847bc2b014 fix(Vikunja): Fix default language 2023-10-03 14:17:35 +02:00
2111829feb Merge pull request 'fix(Vikunja): Add default values' (#69) from vikunja into main
Reviewed-on: #69
2023-10-03 10:50:09 +02:00
06d35b9c9a fix(Vikunja): Add default values 2023-10-03 10:49:56 +02:00
2ceca1c76a Merge pull request 'vikunja' (#68) from vikunja into main
## Détails

- Mise à jour de vikunja
- Ajout de variable de configuration

Reviewed-on: #68
2023-10-03 10:12:55 +02:00
225015a5c9 feat(Vikunja): Add more configuration 2023-10-03 10:11:55 +02:00
ab822795ad chore(Vikunja): Upgrade to 0.21.0
https://vikunja.io/blog/2023/07/whats-new-in-vikunja-0.21.0/
2023-10-03 10:11:55 +02:00
f944ef4fe3 Merge pull request 'gitea' (#67) from gitea into main
## Détails

- Crétion d'un fichier spécifique pour la configuration de Postgres pour la configuration du projet Gitea
- Mise à jour de la version de Gitea

## Pourquoi

- Pour permettre d'initialiser un projet Gitea sans base de données et en utilisant SQLite

Reviewed-on: #67
2023-09-28 12:02:13 +02:00
b047319556 chore(Gitea): Upgrade default version to 1.20.4 2023-09-28 12:00:00 +02:00
9078d9d04f feat(Gitea): Split Postgres configuration 2023-09-28 11:59:08 +02:00
0a99b3402c Merge pull request 'feat(Traefik): Upgrade and disable dashboard ad' (#66) from traefik into main
Voir [la nouvelle version ](https://github.com/traefik/traefik/releases/tag/v2.10.4)et surtout [ce _commit_](https://github.com/traefik/traefik/pull/10008).

Reviewed-on: #66
2023-09-27 15:19:18 +02:00
6d5884343e feat(Traefik): Upgrade and disable dashboard ad 2023-09-27 15:17:40 +02:00
8162c6a81a Merge pull request 'feat(Directus): Add DIRECTUS_ prefix like others variables' (#65) from directus_cors into main
## Détails

- Ajout du préfixe `DIRECTUS_`

## Pourquoi

- Pour garder une cohérence dans le nommage des variables

Reviewed-on: #65
2023-07-18 16:34:06 +02:00
b803eedf8c feat(Directus): Add DIRECTUS_ prefix like others variables 2023-07-18 16:32:30 +02:00
61680c6e6e Merge pull request 'feat(Directus): Add CORS_ORIGIN variable' (#64) from directus_cors into main
## Détails

- Ajout de la variable `CORS_ORIGIN`

## Pourquoi

- Pour permettre de spécifier les URLs

Reviewed-on: #64
2023-07-18 16:29:14 +02:00
353c1bd812 feat(Directus): Add CORS_ORIGIN variable 2023-07-18 16:27:39 +02:00
c5d761d229 Merge pull request 'feat(Directus): Add CORS_ENABLED variable' (#63) from directus_cors into main
## Détails

- Ajout de la variable pour configurer les [CORS](https://developer.mozilla.org/fr/docs/Web/http/CORS) de Directus

## Pourquoi

- Pour permettre à un site WEB d’interroger directement l'API de Directus

Reviewed-on: #63
2023-07-18 16:21:36 +02:00
72621b893d feat(Directus): Add CORS_ENABLED variable 2023-07-18 16:17:40 +02:00
fe0d4d6224 Merge pull request 'fix(lldap): variables name' (#62) from fix_lldap into main
## Détails

- Changement de nom de variables

## Pourquoi

- Pour être plus cohérent

Reviewed-on: #62
2023-07-17 17:57:38 +02:00
b5ea07c70a fix(lldap): variables name 2023-07-17 17:56:24 +02:00
0b41480815 Merge pull request 'fix(Docker): Network should be external with docker compose 2.20.0' (#61) from fix_networks into main
## Détails

- Ajout du paramètre permettant d'expliciter que le réseau Docker est externe

## Pourquoi

Pour être compatible avec la dernière version de Docker Compose

Reviewed-on: #61
2023-07-17 12:34:44 +02:00
0e06b651e8 fix(Docker): Network should be external with docker compose 2.20.0 2023-07-17 12:33:30 +02:00
d7206c92de Merge pull request 'feat(LLDAP): Add new service' (#60) from lldap into main
## Détails

- Ajout du service [LLDAP](https://github.com/lldap/lldap)

## Pourquoi

- Pour permettre une gestion simplifiée des utilisateurs des services de RésiLien

Reviewed-on: #60
2023-07-05 15:57:31 +02:00
06f1e2910f feat(LLDAP): Add new service 2023-07-05 15:56:32 +02:00
2667aa22dd Merge pull request 'signaturepdf' (#59) from signaturepdf into main
## Détails

- Ajout de l'image par défaut
- Ajout du paramètre _`restart`_

## Pourquoi

- Pour être transparent sur notre image
- Pour que le serveur redémarre automatique lors d'une coupure

Reviewed-on: #59
2023-06-12 16:57:57 +02:00
b7862e8fe5 feat(Signaturepdf): Add restart parameter 2023-06-12 16:54:08 +02:00
980ced43c4 feat(Signaturepdf): Add default image 2023-06-12 16:53:38 +02:00
45c731e31e Merge pull request 'feat(Signaturepdf): Add new service' (#58) from signaturepdf into main
## Détails

- Ajout du service de manipulation de fichier PDF

## Pourquoi

- C'est un service qui m’intéresse pour signer les documents de mes associations

Reviewed-on: #58
2023-06-05 10:32:31 +02:00
573cd5a462 feat(Signaturepdf): Add new service 2023-06-05 10:31:11 +02:00
47d0a7eaa2 Merge pull request 'docs' (#57) from docs into main
## Détails

- Ajout de documentation

## Pourquoi

- Pour garder des traces de mes recherches

Reviewed-on: #57
2023-06-05 10:09:16 +02:00
692a26ddff docs(Redis): Add documentation 2023-06-05 10:06:49 +02:00
e2d0a53db4 docs(Drone): Add documentation 2023-06-05 10:06:49 +02:00
53ebc3f591 Merge pull request 'fix(Nextcloud): Trusted proxies is for fpm not web container' (#56) from nextcloud into main
## Détails

- Fix le problème de configuration des reverses proxies

## Pourquoi

C'était une configuration que nous devions faire à la main alors que la configuration devait fonctionner. En recherchant un peu je me suis rendu compte que nous donnions le nom du reverse proxie au mauvais contenaire.

Reviewed-on: #56
2023-05-23 11:59:19 +02:00
982c1322bc fix(Nextcloud): Trusted proxies is for fpm not web container 2023-05-23 11:56:12 +02:00
0483e4325e Merge pull request 'fix(Nextcloud): Add variable to configure SMTP' (#55) from gitea into main
## Détails

- Ajout de variable d'environnement pour configurer le SMTP des Nextcloud

## Pourquoi

- La configuration ne fonctionnait plus depuis [ce commit](b3dce58f7b).

Reviewed-on: #55
2023-05-10 22:03:07 +02:00
97 changed files with 631 additions and 228 deletions

View File

@ -11,6 +11,7 @@ Vous trouverez dans ce dépôt l'ensemble des services Open Source que RésiLien
- [listmonk](./listmonk) : Gestionnaire de listes de diffusion et de newsletter - [listmonk](./listmonk) : Gestionnaire de listes de diffusion et de newsletter
- [Mobilizon](./mobilizon): Permet l'organisation d'évènements et de gestion de groupes - [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 - [Nextcloud](./nextcloud) : Site d'hébergement de fichiers et une plateforme de collaboration
- [signaturepdf](./signaturepdf) : Logiciel WEB libre permettant de modifier un fichier PDF facilement
- [Plausible](./plausible) : Plausible est une plateforme d'analyse Web légère et open source - [Plausible](./plausible) : Plausible est une plateforme d'analyse Web légère et open source
- [Vaultwarden](./vaultwarden) : Gestionnaire de mot de passe compatible avec Bitwarden - [Vaultwarden](./vaultwarden) : Gestionnaire de mot de passe compatible avec Bitwarden
- [Vikunja](./vikunja) : L'application pour organiser sa vie - [Vikunja](./vikunja) : L'application pour organiser sa vie
@ -22,6 +23,7 @@ Vous trouverez dans ce dépôt l'ensemble des services Open Source que RésiLien
- [GeoIP Update](./geoipupdate) : Permet de télécharger la base de données GeoIP2 permettant de localiser les IPs - [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. - [Gitea](./gitea) : Un service Git très simple à installer et à utiliser. Il est similaire à GitHub, Bitbucket ou Gitlab.
- [Grafana](./grafana) : Un outil de supervision simple et élégant - [Grafana](./grafana) : Un outil de supervision simple et élégant
- [LLDAP](./lldap): Implémentation légère de LDAP pour l'authentification
- [PostgreSQL](./postgres) : PostgreSQL est un système de gestion de base de données relationnelle et objet. - [PostgreSQL](./postgres) : PostgreSQL est un système de gestion de base de données relationnelle et objet.
- [Prometheus](./prometheus) : Un logiciel de surveillance informatique - [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 - [Redis](./redis) : Système de gestion de base de données clé-valeur extensible, très hautes performances

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
clickhouse: clickhouse:

View File

@ -6,6 +6,8 @@
[De nombreuses variables d'environnement][documentation] peuvent être précisé pour configurer Directus. [De nombreuses variables d'environnement][documentation] peuvent être précisé pour configurer Directus.
- `CORS_ORIGIN` à comme valeur par défaut `false` et peut prendre `true` pour accepter toutes les connexions, mais il est préférable de spécifier directement les sites comme ceci `array:https://example.com,https://staging.example.com`.
## Liens ## Liens
- [Site officiel][website] - [Site officiel][website]

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
directus: directus:
environment: environment:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
directus: directus:
environment: environment:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
directus: directus:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
directus: directus:
name: ${DIRECTUS_VOLUME_NAME:-directus} name: ${DIRECTUS_VOLUME_NAME:-directus}
@ -24,6 +22,8 @@ services:
ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL:?err} ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL:?err}
ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD:?err} ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD:?err}
PUBLIC_URL: ${DIRECTUS_PUBLIC_URL:?err} PUBLIC_URL: ${DIRECTUS_PUBLIC_URL:?err}
CORS_ENABLED: ${DIRECTUS_CORS_ENABLED:-false}
CORS_ORIGIN: ${DIRECTUS_CORS_ORIGIN:-false}
DB_CLIENT: 'pg' 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} # Default name is same as ../postgres/docker-compose.yml:8

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/runner/docker/configuration/dashboard/ # https://docs.drone.io/runner/docker/configuration/dashboard/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
drone-runner: drone-runner:
ports: ports:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/runner/docker/configuration/logging/ # https://docs.drone.io/runner/docker/configuration/logging/
services: services:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME} name: ${TRAEFIK_NETWORK_NAME}
external: true
services: services:
drone-runner: drone-runner:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/runner/docker/installation/linux/ # https://docs.drone.io/runner/docker/installation/linux/
services: services:

View File

@ -33,9 +33,10 @@ Il faut ajouter les utilisateurs non admin :
``` ```
drone user add kosssi drone user add kosssi
drone user add killian drone user add killian
export PROMETHEUS_TOKEN=`openssl rand -hex 16`
drone user add prometheus --machine --token=${PROMETHEUS_TOKEN} 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}` 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/) [Documentation officielle](https://docs.drone.io/server/user/machine/#create-accounts) [cli](https://docs.drone.io/cli/user/drone-user-add/)

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/cookie/ # https://docs.drone.io/server/cookie/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/provider/gitea/ # https://docs.drone.io/server/provider/gitea/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/headers/ # https://docs.drone.io/server/headers/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
drone-server: drone-server:
ports: ports:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/logging/ # https://docs.drone.io/server/logging/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/storage/database/ # https://docs.drone.io/server/storage/database/
# https://docs.drone.io/server/storage/encryption/ # https://docs.drone.io/server/storage/encryption/

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME} name: ${TRAEFIK_NETWORK_NAME}
external: true
services: services:
drone-server: drone-server:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
# https://docs.drone.io/server/user/registration/ # https://docs.drone.io/server/user/registration/
services: services:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
drone-server: drone-server:
name: ${DRONE_SERVER_VOLUME_NAME:-drone-server} name: ${DRONE_SERVER_VOLUME_NAME:-drone-server}

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
geoip: geoip:
name: ${GEOIP_VOLUME_NAME:-geoip} name: ${GEOIP_VOLUME_NAME:-geoip}

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
geoipupdate: geoipupdate:
name: ${GEOIPUPDATE_VOLUME_NAME:-geoipupdate} name: ${GEOIPUPDATE_VOLUME_NAME:-geoipupdate}

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
gitea: gitea:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
gitea: gitea:

View File

@ -0,0 +1,12 @@
---
services:
gitea:
environment:
- 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}
depends_on:
- postgres

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
gitea: gitea:

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
gitea: gitea:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
gitea: gitea:
@ -7,17 +7,11 @@ volumes:
services: services:
gitea: gitea:
container_name: ${GITEA_CONTAINER_NAME:-gitea} container_name: ${GITEA_CONTAINER_NAME:-gitea}
image: ${GITEA_IMAGE:-gitea/gitea:1.18.4} image: ${GITEA_IMAGE:-gitea/gitea:1.20.4}
restart: always restart: always
environment: environment:
- USER_UID=${GITEA_UID:-1000} - USER_UID=${GITEA_UID:-1000}
- USER_GID=${GITEA_GID:-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 # Security
# docker run -it --rm gitea/gitea:1 gitea generate secret SECRET_KEY # docker run -it --rm gitea/gitea:1 gitea generate secret SECRET_KEY
- GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY} - GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY}
@ -27,5 +21,3 @@ services:
- gitea:/data - gitea:/data
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
depends_on:
- postgres

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
grafana: grafana:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
grafana: grafana:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
grafana: grafana:

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
grafana: grafana:

View File

@ -1,5 +1,4 @@
--- ---
version: "3.8"
volumes: volumes:
grafana: grafana:

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
hedgedoc: hedgedoc:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
hedgedoc: hedgedoc:

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
volumes: volumes:
listmonk: listmonk:

50
lldap/.env Normal file
View File

@ -0,0 +1,50 @@
########
# DOCKER
SERVICES_DIR=..
COMPOSE_FILE=${SERVICES_DIR}/lldap/docker-compose.yml:${SERVICES_DIR}/lldap/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml
#COMPOSE_PROJECT_NAME=
#######
# LLDAP
LLDAP_DOMAIN=lldap.cool.life
LLDAP_VOLUME_NAME=lldap_cool_life
LLDAP_CONTAINER_NAME=lldap_cool_life
LLDAP_IMAGE=nitnelave/lldap:v0.4.3
LLDAP_JWT_SECRET="6IeP8UUbEkQXrkUNbnu1sGpcZOu29wUTWh3uiEgMorI="
LLDAP_VERBOSE=true
LLDAP_LDAP_BASE_DN="dc=cool,dc=life"
LLDAP_LDAP_USER_DN="myuser"
LLDAP_LDAP_USER_EMAIL="admin@cool.life"
LLDAP_LDAP_USER_PASS="mon-mot-de-passe"
# LLDAP_TEST_EMAIL_TO=
# LLDAP_SMTP_OPTIONS__ENABLE_PASSWORD_RESET=
# LLDAP_SMTP_OPTIONS__SERVER=
# LLDAP_SMTP_OPTIONS__PORT=
# LLDAP_SMTP_OPTIONS__SMTP_ENCRYPTION=
# LLDAP_SMTP_OPTIONS__USER=
# LLDAP_SMTP_OPTIONS__PASSWORD=
# LLDAP_SMTP_OPTIONS__FROM=
# LLDAP_SMTP_OPTIONS__REPLY_TO=
##########
# POSTGRES
POSTGRES_USER=user-example
POSTGRES_PASSWORD=password-example
POSTGRES_DB=postgres-database-name-example
POSTGRES_CONTAINER_NAME=lldap-postgres
POSTGRES_VOLUME_NAME=lldap-postgres
#POSTGRES_IMAGE=
#########
# TRAEFIK
#TRAEFIK_NETWORK_NAME=
#TRAEFIK_ROUTER_NAME= # Don't use char '.'
#TRAEFIK_ENTRYPOINTS=

27
lldap/README.md Normal file
View File

@ -0,0 +1,27 @@
# LLDAP
> Implémentation légère de LDAP pour l'authentification :
> Ce projet est un serveur d'authentification léger (écrit en rust) qui fournit une interface LDAP simplifiée pour l'authentification. Il s'intègre avec de nombreux backends, de KeyCloak à [Authelia](https://github.com/lldap/lldap/blob/main/example_configs/authelia_config.yml) en passant par Nextcloud et plus encore !
## Documentation
- Le fichier [`lldap_config.docker_template.toml`](https://github.com/lldap/lldap/blob/main/lldap_config.docker_template.toml) contient toute la configuration possible de l'outil.
- De base le projet utilise SQLite, mais on peut utiliser Postgres voir le fichier [`docker-compose.postgres.yml`](./docker-compose.postgres.yml)
- Le projet n'est pas [traduit](https://github.com/lldap/lldap/issues/20) actuellement
- Lors du lancement du service une clé est généré aléatoirement dans le fichier `private_key` du dossier `/data` du container, ce fichier est important il faut donc le sauvegarder puisque les mots de passe sont chiffrés en base avec.
## Configuration
La configuration a été séparée en 5 fichiers :
- [`docker-compose.yml`](./docker-compose.yml) contient la configuration de base
- [`docker-compose.local.yml`](./docker-compose.local.yml) permettant de tester le service sans Traefik
- [`docker-compose.smtp.yml`](./docker-compose.smtp.yml) correspondant à la configuration du service SMTP
- [`docker-compose.postgres.yml`](./docker-compose.postgres.yml) pour configurer le service Postgres
- [`docker-compose.traefik.yml`](./docker-compose.traefik.yml) pour configurer automatiquement Traefik
## Liens
- [Code source](https://github.com/lldap/lldap)
- [Docker Hub](https://hub.docker.com/r/nitnelave/lldap)
- [Documentation](https://github.com/lldap/lldap/blob/main/lldap_config.docker_template.toml)

View File

@ -0,0 +1,11 @@
---
services:
lldap:
ports:
# For LDAP
- "3890:3890"
# For LDAPS (LDAP Over SSL), enable port if LLDAP_LDAPS_OPTIONS__ENABLED set true, look env below
- "6360:6360"
# For the web front-end
- "17170:17170"

View File

@ -0,0 +1,6 @@
---
services:
lldap:
environment:
- LLDAP_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_CONTAINER_NAME}/${POSTGRES_DB}

View File

@ -0,0 +1,14 @@
---
services:
lldap:
environment:
- LLDAP_TEST_EMAIL_TO=${LLDAP_TEST_EMAIL_TO}
- LLDAP_SMTP_OPTIONS__ENABLE_PASSWORD_RESET=${LLDAP_SMTP_OPTIONS__ENABLE_PASSWORD_RESET}
- LLDAP_SMTP_OPTIONS__SERVER=${LLDAP_SMTP_OPTIONS__SERVER}
- LLDAP_SMTP_OPTIONS__PORT=${LLDAP_SMTP_OPTIONS__PORT}
- LLDAP_SMTP_OPTIONS__SMTP_ENCRYPTION=${LLDAP_SMTP_OPTIONS__SMTP_ENCRYPTION}
- LLDAP_SMTP_OPTIONS__USER=${LLDAP_SMTP_OPTIONS__USER}
- LLDAP_SMTP_OPTIONS__PASSWORD=${LLDAP_SMTP_OPTIONS__PASSWORD}
- LLDAP_SMTP_OPTIONS__FROM=${LLDAP_SMTP_OPTIONS__FROM}
- LLDAP_SMTP_OPTIONS__REPLY_TO=${LLDAP_SMTP_OPTIONS__REPLY_TO}

View File

@ -0,0 +1,22 @@
---
networks:
default:
name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services:
lldap:
labels:
- traefik.enable=true
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-lldap}.rule=Host(`${LLDAP_DOMAIN:?err}`)
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-lldap}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web}
# - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-lldap}.tls.certResolver=letsencrypt
- traefik.http.services.${TRAEFIK_ROUTER_NAME:-lldap}.loadbalancer.server.port=17170
- traefik.http.services.${TRAEFIK_ROUTER_NAME:-lldap}.loadbalancer.server.scheme=http
# https://github.com/lldap/lldap/issues/247#issuecomment-1489962511
# - traefik.tcp.routers.${TRAEFIK_ROUTER_NAME:-lldap}.rule=HostSNI(`${LLDAP_DOMAIN:?err}`)
# - traefik.tcp.routers.${TRAEFIK_ROUTER_NAME:-lldap}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web}
# - traefik.tcp.services.${TRAEFIK_ROUTER_NAME:-lldap}.loadbalancer.server.port=3890

24
lldap/docker-compose.yml Normal file
View File

@ -0,0 +1,24 @@
---
volumes:
lldap:
name: ${LLDAP_VOLUME_NAME:-lldap}
services:
lldap:
container_name: ${LLDAP_CONTAINER_NAME:-lldap}
image: ${LLDAP_IMAGE:-nitnelave/lldap:v0.4.3}
restart: always
volumes:
- "lldap:/data"
environment:
- TZ=${TIMEZONE:-Europe/Paris}
- LLDAP_VERBOSE=${LLDAP_VERBOSE:-false}
- LLDAP_JWT_SECRET=${LLDAP_JWT_SECRET:?err}
- LLDAP_HTTP_URL=https://${LLDAP_DOMAIN:?err}
- LLDAP_LDAP_BASE_DN=${LLDAP_LDAP_BASE_DN:?err}
- LLDAP_LDAP_USER_DN=${LLDAP_LDAP_USER_DN:?err}
- LLDAP_LDAP_USER_EMAIL=${LLDAP_LDAP_USER_EMAIL:?err}
- LLDAP_LDAP_USER_PASS=${LLDAP_LDAP_USER_PASS:?err}

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
mobilizon: mobilizon:
ports: ports:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
mobilizon: mobilizon:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
mobilizon: mobilizon:
name: ${MOBILIZON_VOLUME_NAME:-mobilizon} name: ${MOBILIZON_VOLUME_NAME:-mobilizon}

View File

@ -1,5 +1,4 @@
--- ---
version: "3.8"
services: services:
nextcloud-fpm: nextcloud-fpm:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
nextcloud-web: nextcloud-web:

View File

@ -0,0 +1,16 @@
---
services:
nextcloud-fpm:
depends_on:
- postgres
environment:
&postgres-configuration
POSTGRES_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default name is same as ../postgres/docker-compose.yml:8
POSTGRES_USER: ${POSTGRES_USER:?err}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?err}
POSTGRES_DB: ${POSTGRES_DB:?err}
nextcloud-cron:
environment:
<<: *postgres-configuration

View File

@ -0,0 +1,13 @@
---
services:
nextcloud-fpm:
depends_on:
- redis
environment:
&redis-configuration
REDIS_HOST: ${REDIS_CONTAINER_NAME:-redis} # Default name is same as ../redis/docker-compose.yml:4
nextcloud-cron:
environment:
<<: *redis-configuration

View File

@ -1,12 +1,12 @@
version: "3.8" ---
services: services:
nextcloud-fpm: nextcloud-fpm:
environment: environment:
&smtp-configuration &smtp-configuration
SMTP_HOST: ${SMTP_HOST:?err} SMTP_HOST: ${SMTP_HOST:?err}
SMTP_SECURE: ${SMTP_SECURE:-ssl} SMTP_SECURE: ${SMTP_SECURE:-}
SMTP_PORT: ${SMTP_PORT:-465} SMTP_PORT: ${SMTP_PORT:-587}
SMTP_AUTHTYPE: ${SMTP_AUTHTYPE:-LOGIN} SMTP_AUTHTYPE: ${SMTP_AUTHTYPE:-LOGIN}
SMTP_NAME: ${SMTP_NAME:?err} SMTP_NAME: ${SMTP_NAME:?err}
SMTP_PASSWORD: ${SMTP_PASSWORD:?err} SMTP_PASSWORD: ${SMTP_PASSWORD:?err}

View File

@ -1,13 +1,15 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
nextcloud-web: nextcloud-fpm:
environment: environment:
TRUSTED_PROXIES: ${TRAEFIK_NETWORK_NAME:-traefik} TRUSTED_PROXIES: ${TRAEFIK_NETWORK_NAME:-traefik}
nextcloud-web:
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
nextcloud: nextcloud:
@ -9,9 +9,6 @@ services:
container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm container_name: ${NEXTCLOUD_CONTAINER_NAME:-nextcloud}-fpm
image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine} image: ${NEXTCLOUD_IMAGE:-nextcloud:25.0.2-fpm-alpine}
restart: always restart: always
depends_on:
- postgres
- redis
volumes: volumes:
- nextcloud:/var/www/html - nextcloud:/var/www/html
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
@ -23,11 +20,6 @@ services:
NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?err} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD?err}
OVERWRITEPROTOCOL: ${OVERWRITEPROTOCOL:-https} OVERWRITEPROTOCOL: ${OVERWRITEPROTOCOL:-https}
PHP_UPLOAD_LIMIT: ${PHP_UPLOAD_LIMIT:-512M} PHP_UPLOAD_LIMIT: ${PHP_UPLOAD_LIMIT:-512M}
POSTGRES_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} # Default 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
PUID: ${NEXTCLOUD_PUID:-1000} PUID: ${NEXTCLOUD_PUID:-1000}
PGID: ${NEXTCLOUD_PGID:-1000} PGID: ${NEXTCLOUD_PGID:-1000}

View File

@ -1,3 +1,3 @@
FROM nginx:1.23.3-alpine FROM nginx:1.25.3-alpine
COPY nextcloud.conf.template /etc/nginx/templates/default.conf.template COPY nextcloud.conf.template /etc/nginx/templates/default.conf.template

View File

@ -2,64 +2,32 @@ upstream php-handler {
server ${NEXTCLOUD_FPM_CONTAINER_NAME}:9000; server ${NEXTCLOUD_FPM_CONTAINER_NAME}:9000;
} }
# Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable {
"" "";
default "immutable";
}
server { server {
listen 80; listen 80;
# Add headers to serve security related headers # Path to the root of your installation
# Before enabling Strict-Transport-Security headers please read into this root /var/www/html;
# topic first.
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; # Prevent nginx HTTP Server Detection
# server_tokens off;
# HSTS settings
# WARNING: Only add the preload option once you read about # WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option # the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped # will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list # in all major browsers and getting removed from this list
# could take several months. # could take several months.
add_header Referrer-Policy "no-referrer" always; #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" 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 # set max upload size and increase upload timeout:
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; client_max_body_size 10G;
client_body_timeout 300s;
fastcgi_buffers 64 4K; fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers # Enable gzip but do not remove ETag headers
@ -68,78 +36,137 @@ server {
gzip_comp_level 4; gzip_comp_level 4;
gzip_min_length 256; gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; 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; gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm 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 # Pagespeed is not supported by Nextcloud, so if your server is built
# This module is currently not supported. # with the `ngx_pagespeed` module, uncomment this line to disable it.
#pagespeed off; #pagespeed off;
location / { # The settings allows you to optimize the HTTP2 bandwidth.
rewrite ^ /index.php; # See https://blog.cloudflare.com/delivering-http-2-upload-speed-improvements/
} # for tuning hints
client_body_buffer_size 512k;
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { # HTTP response headers borrowed from Nextcloud `.htaccess`
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 Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always; add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always; add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always; add_header X-XSS-Protection "1; mode=block" always;
# Optional: Don't log access to assets # Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Add .mjs as a file extension for javascript
# Either include it in the default mime.types list
# or include you can include that list explicitly and add the file extension
# only for Nextcloud like below:
include mime.types;
types {
text/javascript js mjs;
}
# Specify how to handle directories -- specifying `/index.php$request_uri`
# here as the fallback means that Nginx always exhibits the desired behaviour
# when a client requests a path that corresponds to a directory that exists
# on the server. In particular, if that directory contains an index.php file,
# that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /index.php$request_uri`
# always provides the desired behaviour.
index index.php index.html /index.php$request_uri;
# Rule borrowed from `.htaccess` to handle Microsoft DAV clients
location = / {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /remote.php/webdav/$is_args$args;
}
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off; access_log off;
} }
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ { # Make a regex exception for `/.well-known` so that clients can still
# access it despite the existence of the regex rule
# `location ~ /(\.|autotest|...)` which would otherwise handle requests
# for `/.well-known`.
location ^~ /.well-known {
# The rules in this block are an adaptation of the rules
# in `.htaccess` that concern `/.well-known`.
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location /.well-known/acme-challenge { try_files $uri $uri/ =404; }
location /.well-known/pki-validation { try_files $uri $uri/ =404; }
# Let Nextcloud's API for `/.well-known` URIs handle all other
# requests by passing them to the front-end controller.
return 301 /index.php$request_uri;
}
# Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first,
# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`
# to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) {
# Required for legacy support
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;
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;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_max_temp_file_size 0;
}
# Serve static files
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri; try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets add_header Cache-Control "public, max-age=15778463, $asset_immutable";
access_log off; access_log off; # Optional: Don't log access to assets
location ~ \.wasm$ {
default_type application/wasm;
}
}
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
# Rule borrowed from `.htaccess`
location /remote {
return 301 /remote.php$request_uri;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
} }
} }

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
clickhouse: clickhouse:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
plausible: plausible:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
plausible: plausible:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
plausible: plausible:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
plausible: plausible:

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
plausible: plausible:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
plausible: plausible:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
postgres: postgres:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
prometheus: prometheus:

6
redis/README.md Normal file
View File

@ -0,0 +1,6 @@
# Redis
## Information
- Port par défaut : 6379
- La configuration de mot de passe : https://github.com/docker-library/redis/issues/46

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
redis: redis:

View File

@ -3,6 +3,7 @@ version: '3.8'
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME} name: ${TRAEFIK_NETWORK_NAME}
external: true
services: services:
registry: registry:

30
signaturepdf/.env Normal file
View File

@ -0,0 +1,30 @@
########
# DOCKER
#DOCKER_CONTEXT=
#DOCKER_HOST=
SERVICES_DIR=..
COMPOSE_FILE=${SERVICES_DIR}/signaturepdf/docker-compose.yml:${SERVICES_DIR}/signaturepdf/docker-compose.traefik.yml
#COMPOSE_PROJECT_NAME=
#SIGNATUREPDF_VOLUME_NAME=
#SIGNATUREPDF_CONTAINER_NAME=
#SIGNATUREPDF_IMAGE=
##############
# SIGNATUREPDF
SIGNATUREPDF_DOMAIN=pdf.cool.life
UPLOAD_MAX_FILESIZE=24M
POST_MAX_SIZE=24M
MAX_FILE_UPLOADS=201
PDF_STORAGE_PATH=/data
DISABLE_ORGANIZATION=false
PDF_DEMO_LINK=true
#########
# TRAEFIK
#TRAEFIK_NETWORK_NAME=
#TRAEFIK_ROUTER_NAME=
#TRAEFIK_ENTRYPOINTS=

19
signaturepdf/README.md Normal file
View File

@ -0,0 +1,19 @@
# Signature de PDF
Logiciel WEB libre permettant de modifier un fichier PDF facilement.
## Information
Le service n'a pas d'image Docker officiel. Actuellement l'image a été construite et poussé sur Hub de Docker par Simon :
```
git clone git@github.com:24eme/signaturepdf.git
cd signaturepdf
docker build -t simonc/signaturepdf:latest .
docker push simonc/signaturepdf:latest
```
## 🔗 Liens
- [Github](https://github.com/24eme/signaturepdf)
- [L'image Docker sur Docker Hub](https://hub.docker.com/r/simonc/signaturepdf)

View File

@ -0,0 +1,14 @@
---
networks:
default:
name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services:
signaturepdf:
labels:
- traefik.enable=true
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-signaturepdf}.rule=Host(`${SIGNATUREPDF_DOMAIN:?err}`)
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-signaturepdf}.entrypoints=web

View File

@ -0,0 +1,21 @@
---
volumes:
signaturepdf:
name: ${SIGNATUREPDF_VOLUME_NAME:-signaturepdf}
services:
signaturepdf:
container_name: ${SIGNATUREPDF_CONTAINER_NAME:-signaturepdf}
image: ${SIGNATUREPDF_IMAGE:-simonc/signaturepdf:latest}
volumes:
- signaturepdf:/data
restart: always
environment:
SERVERNAME: ${SIGNATUREPDF_DOMAIN}
UPLOAD_MAX_FILESIZE: ${UPLOAD_MAX_FILESIZE}
POST_MAX_SIZE: ${POST_MAX_SIZE}
MAX_FILE_UPLOADS: ${MAX_FILE_UPLOADS}
PDF_STORAGE_PATH: ${PDF_STORAGE_PATH}
DISABLE_ORGANIZATION: ${DISABLE_ORGANIZATION}
PDF_DEMO_LINK: ${PDF_DEMO_LINK}

24
snikket/.env Normal file
View File

@ -0,0 +1,24 @@
########
# DOCKER
SERVICES_DIR=".."
COMPOSE_FILE=${SERVICES_DIR}/snikket/docker-compose.yml:${SERVICES_DIR}/snikket/docker-compose.local.yml
# COMPOSE_PROJECT_NAME=
## APP
# SNIKKET_DOMAIN={{ SNIKKET_DOMAIN }}
SNIKKET_CONTAINER_NAME=snikket
SNIKKET_DATA_VOLUME_NAME=snikket_data
SNIKKET_ACME_CHALLENGES_VOLUME_NAME=acme_challenges
# SNIKKET_SERVER_IMAGE=
# SNIKKET_WEB_PORTAL_IMAGE=
# SNIKKET_CERT_MANAGER_IMAGE
# SNIKKET_WEB_PROXY_IMAGE
#########
# TRAEFIK
# TRAEFIK_NETWORK_NAME=
# TRAEFIK_ROUTER_NAME=
# TRAEFIK_ENTRYPOINTS=

22
snikket/README.md Normal file
View File

@ -0,0 +1,22 @@
# Snikket
> Snikket est un service de messagerie instantanée basée sur le protocole XMPP destiné à être utilisé d'abord sur téléphone.
## Clients
Pour utiliser Snikket sur un téléphone Android, vous pouvez télécharger l'application sur F-droid (recommandé) ou sur le Google Play Store.
Sur Linux, nous recommandons le client Dino (d'abord créer son compte Snikket via le téléphone).
Sur iPhone, vous pouvez aussi télécharger l'application Snikket qui sera cependant moins complète que sur Android.
## Liens
- [Site Officiel][site]
- [Documentation][documentation]
- [Code source][source]
- [Docker Hub][dockerhub]
[site]: https://snikket.org
[source]: https://github.com/snikket-im/snikket-selfhosted
[documentation]: https://snikket.org/service/quickstart/
[dockerhub]: https://hub.docker.com/r/snikket/snikket-server

View File

@ -0,0 +1,13 @@
---
version: "3.8"
services:
snikket_proxy:
network_mode: host
snikket_certs:
network_mode: host
snikket_portal:
network_mode: host
snikket_server:
network_mode: host

View File

@ -0,0 +1,15 @@
---
version: "3.8"
networks:
default:
name: ${TRAEFIK_NETWORK_NAME:-traefik}
services:
snikket_proxy:
labels:
- traefik.enable=true
- traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-snikket}.rule=Host(`${SNIKKET_DOMAIN:?err}`)
- traefik.http.routers.${TRAEFIK_ROUTER_NAME:-snikket}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web}

View File

@ -0,0 +1,48 @@
---
version: "3.3"
services:
snikket_proxy:
container_name: ${SNIKKET_CONTAINER_NAME:-snikket}_proxy
image: ${SNIKKET_WEB_PROXY_IMAGE:-snikket/snikket-web-proxy:beta}
environment:
- SNIKKET_DOMAIN: ${SNIKKET_DOMAIN:?err}
- SNIKKET_ADMIN_EMAIL: ${SNIKKET_ADMIN_EMAIL:?err}
volumes:
- snikket_data:/snikket
- acme_challenges:/var/www/html/.well-known/acme-challenge
restart: "unless-stopped"
snikket_certs:
container_name: ${SNIKKET_CONTAINER_NAME:-snikket}-certs
image: ${SNIKKET_CERT_MANAGER_IMAGE:-snikket/snikket-cert-manager:beta}
environment:
- SNIKKET_DOMAIN: ${SNIKKET_DOMAIN:?err}
- SNIKKET_ADMIN_EMAIL: ${SNIKKET_ADMIN_EMAIL:?err}
volumes:
- snikket_data:/snikket
- acme_challenges:/var/www/.well-known/acme-challenge
restart: "unless-stopped"
snikket_portal:
container_name: ${SNIKKET_CONTAINER_NAME:-snikket}-portal
image: ${SNIKKET_WEB_PORTAL_IMAGE:-snikket/snikket-web-portal:beta}
environment:
- SNIKKET_DOMAIN: ${SNIKKET_DOMAIN:?err}
- SNIKKET_ADMIN_EMAIL: ${SNIKKET_ADMIN_EMAIL:?err}
restart: "unless-stopped"
snikket_server:
container_name: ${SNIKKET_CONTAINER_NAME:-snikket}
image: ${SNIKKET_SERVER_IMAGE:-snikket/snikket-server:beta}
volumes:
- snikket_data:/snikket
environment:
- SNIKKET_DOMAIN: ${SNIKKET_DOMAIN:?err}
- SNIKKET_ADMIN_EMAIL: ${SNIKKET_ADMIN_EMAIL:?err}
restart: "unless-stopped"
volumes:
acme_challenges:
name: ${SNIKKET_ACME_CHALLENGES_VOLUME_NAME:-acme_challenges}
snikket_data:
name: ${SNIKKET_DATA_VOLUME_NAME:-snikket_data}

View File

@ -1,4 +1,4 @@
version: "3.8" ---
networks: networks:
default: default:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
traefik: traefik:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
traefik: traefik:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
networks: networks:
default: default:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
volumes: volumes:
traefik: traefik:
@ -11,7 +11,7 @@ networks:
services: services:
traefik: traefik:
container_name: ${TRAEFIK_CONTAINER_NAME:-traefik} container_name: ${TRAEFIK_CONTAINER_NAME:-traefik}
image: ${TRAEFIK_IMAGE:-traefik:v2.6.3} image: ${TRAEFIK_IMAGE:-traefik:v2.10.4}
restart: always restart: always
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
@ -27,6 +27,7 @@ services:
- traefik - traefik
command: command:
- --api.insecure=${TRAEFIK_API_INSECURE:-true} - --api.insecure=${TRAEFIK_API_INSECURE:-true}
- --api.disabledashboardad=${TRAEFIK_API_DISABLEDASHBOARDAD:-true}
- --log.level=${TRAEFIK_LOG_LEVEL:-INFO} - --log.level=${TRAEFIK_LOG_LEVEL:-INFO}
- --global.sendanonymoususage=${TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE:-false} - --global.sendanonymoususage=${TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE:-false}
- --global.checknewversion=${TRAEFIK_GLOBAL_CHECKNEWVERSION:-false} - --global.checknewversion=${TRAEFIK_GLOBAL_CHECKNEWVERSION:-false}

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
uptimekuma: uptimekuma:
ports: ports:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
uptimekuma: uptimekuma:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
uptimekuma: uptimekuma:
name: ${UPTIMEKUMA_VOLUME_NAME:-uptimekuma} name: ${UPTIMEKUMA_VOLUME_NAME:-uptimekuma}

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
vaultwarden: vaultwarden:
depends_on: depends_on:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
services: services:
vaultwarden: vaultwarden:
environment: environment:

View File

@ -1,10 +1,9 @@
--- ---
version: "3.8"
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
services: services:
vaultwarden: vaultwarden:

View File

@ -1,7 +1,5 @@
--- ---
version: "3.8"
volumes: volumes:
vaultwarden: vaultwarden:
name: ${VAULTWARDEN_VOLUME_NAME:-vaultwarden} name: ${VAULTWARDEN_VOLUME_NAME:-vaultwarden}

View File

@ -0,0 +1,9 @@
---
version: "3.8"
services:
vikunja_api:
environment:
VIKUNJA_LEGAL_IMPRINTURL: ${VIKUNJA_LEGAL_IMPRINTURL}
VIKUNJA_LEGAL_PRIVACYURL: ${VIKUNJA_LEGAL_PRIVACYURL}

View File

@ -1,4 +1,4 @@
version: "3.8" ---
services: services:
vikunja_api: vikunja_api:

View File

@ -1,4 +1,4 @@
version: "3.8" ---
# https://vikunja.io/docs/config-options/#metrics # https://vikunja.io/docs/config-options/#metrics

View File

@ -1,4 +1,4 @@
version: "3.8" ---
# https://vikunja.io/docs/config-options/#redis # https://vikunja.io/docs/config-options/#redis

View File

@ -1,4 +1,4 @@
version: "3.8" ---
# https://vikunja.io/docs/config-options/#mailer # https://vikunja.io/docs/config-options/#mailer

View File

@ -1,8 +1,9 @@
version: "3.8" ---
networks: networks:
default: default:
name: ${TRAEFIK_NETWORK_NAME:-traefik} name: ${TRAEFIK_NETWORK_NAME:-traefik}
external: true
# https://vikunja.io/docs/full-docker-example/#example-with-traefik-2 # https://vikunja.io/docs/full-docker-example/#example-with-traefik-2

View File

@ -1,4 +1,4 @@
version: "3.8" ---
# https://vikunja.io/docs/config-options # https://vikunja.io/docs/config-options
# https://vikunja.io/docs/full-docker-example/ # https://vikunja.io/docs/full-docker-example/
@ -10,13 +10,30 @@ volumes:
services: services:
vikunja_api: vikunja_api:
container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_api container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_api
image: ${VIKUNJA_API_IMAGE:-vikunja/api:0.18.1} image: ${VIKUNJA_API_IMAGE:-vikunja/api:0.21.0}
restart: always restart: always
environment: environment:
VIKUNJA_DATABASE_PATH: ${VIKUNJA_DATABASE_PATH:-./vikunja.db}
VIKUNJA_DEFAULTSETTINGS_AVATAR_PROVIDER: ${VIKUNJA_DEFAULTSETTINGS_AVATAR_PROVIDER:-initials}
VIKUNJA_DEFAULTSETTINGS_AVATAR_FILE_ID: ${VIKUNJA_DEFAULTSETTINGS_AVATAR_FILE_ID:-0}
VIKUNJA_DEFAULTSETTINGS_EMAIL_REMINDERS_ENABLED: ${VIKUNJA_DEFAULTSETTINGS_EMAIL_REMINDERS_ENABLED:-false}
VIKUNJA_DEFAULTSETTINGS_DISCOVERABLE_BY_NAME: ${VIKUNJA_DEFAULTSETTINGS_DISCOVERABLE_BY_NAME:-true}
VIKUNJA_DEFAULTSETTINGS_DISCOVERABLE_BY_EMAIL: ${VIKUNJA_DEFAULTSETTINGS_DISCOVERABLE_BY_EMAIL:-true}
VIKUNJA_DEFAULTSETTINGS_OVERDUE_TASKS_REMINDERS_ENABLED: ${VIKUNJA_DEFAULTSETTINGS_OVERDUE_TASKS_REMINDERS_ENABLED:-false}
VIKUNJA_DEFAULTSETTINGS_OVERDUE_TASKS_REMINDERS_TIME: ${VIKUNJA_DEFAULTSETTINGS_OVERDUE_TASKS_REMINDERS_TIME:-9:00}
VIKUNJA_DEFAULTSETTINGS_DEFAULT_PROJECT_ID: ${VIKUNJA_DEFAULTSETTINGS_DEFAULT_PROJECT_ID:-0}
VIKUNJA_DEFAULTSETTINGS_WEEK_START: ${VIKUNJA_DEFAULTSETTINGS_WEEK_START:-1}
VIKUNJA_DEFAULTSETTINGS_LANGUAGE: ${VIKUNJA_DEFAULTSETTINGS_LANGUAGE:-fr-FR}
VIKUNJA_DEFAULTSETTINGS_TIMEZONE: ${VIKUNJA_DEFAULTSETTINGS_TIMEZONE:-Europe/Paris}
VIKUNJA_FILES_BASEPATH: ${VIKUNJA_FILES_BASEPATH:-./files}
VIKUNJA_FILES_MAXSIZE: ${VIKUNJA_FILES_MAXSIZE:-20MB}
VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET} VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET}
VIKUNJA_SERVICE_JWTTTL: ${VIKUNJA_SERVICE_JWTTTL:-259200} VIKUNJA_SERVICE_JWTTTL: ${VIKUNJA_SERVICE_JWTTTL:-259200}
VIKUNJA_SERVICE_JWTTTLLONG: ${VIKUNJA_SERVICE_JWTTTLLONG:-2592000} VIKUNJA_SERVICE_JWTTTLLONG: ${VIKUNJA_SERVICE_JWTTTLLONG:-2592000}
VIKUNJA_SERVICE_FRONTENDURL: ${VIKUNJA_SERVICE_FRONTENDURL:?err} VIKUNJA_SERVICE_FRONTENDURL: ${VIKUNJA_SERVICE_FRONTENDURL:?err}
VIKUNJA_SERVICE_MAXITEMSPERPAGE: ${VIKUNJA_SERVICE_MAXITEMSPERPAGE:-50} VIKUNJA_SERVICE_MAXITEMSPERPAGE: ${VIKUNJA_SERVICE_MAXITEMSPERPAGE:-50}
VIKUNJA_SERVICE_ENABLECALDAV: ${VIKUNJA_SERVICE_ENABLECALDAV:-true} VIKUNJA_SERVICE_ENABLECALDAV: ${VIKUNJA_SERVICE_ENABLECALDAV:-true}
@ -28,18 +45,17 @@ services:
VIKUNJA_SERVICE_ENABLETOTP: ${VIKUNJA_SERVICE_ENABLETOTP:-true} VIKUNJA_SERVICE_ENABLETOTP: ${VIKUNJA_SERVICE_ENABLETOTP:-true}
VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: ${VIKUNJA_SERVICE_ENABLEEMAILREMINDERS:-true} VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: ${VIKUNJA_SERVICE_ENABLEEMAILREMINDERS:-true}
VIKUNJA_SERVICE_ENABLEUSERDELETION: ${VIKUNJA_SERVICE_ENABLEUSERDELETION:-true} VIKUNJA_SERVICE_ENABLEUSERDELETION: ${VIKUNJA_SERVICE_ENABLEUSERDELETION:-true}
VIKUNJA_SERVICE_ROOTPATH: ${VIKUNJA_SERVICE_ROOTPATH:-/app/vikunja/}
VIKUNJA_FILES_BASEPATH: ${VIKUNJA_FILES_BASEPATH:-./files}
VIKUNJA_FILES_MAXSIZE: ${VIKUNJA_FILES_MAXSIZE:-20MB}
PUID: ${VIKUNJA_PUID:-1000} PUID: ${VIKUNJA_PUID:-1000}
PGID: ${VIKUNJA_PGID:-1000} PGID: ${VIKUNJA_PGID:-1000}
volumes: volumes:
- vikunja:/app/vikunja/files - vikunja:${VIKUNJA_VOLUME_PATH:-/app/vikunja/files}
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
vikunja_frontend: vikunja_frontend:
container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_frontend container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}_frontend
image: ${VIKUNJA_FRONTEND_IMAGE:-vikunja/frontend:0.18.2} image: ${VIKUNJA_FRONTEND_IMAGE:-vikunja/frontend:0.21.0}
restart: always restart: always
depends_on: depends_on:
- vikunja_api - vikunja_api