24 Commits

Author SHA1 Message Date
Didier a2ca914b62 correction d'une coquille dans le mail de fin 2026-06-20 11:36:24 +02:00
fab f3fa9a33e5 construire le mail à envoyer aux orgas lors de la création des services 2026-06-20 10:57:24 +02:00
fanch 6dd19e07a3 Merge branch 'master' of ssh://git.kaz.bzh:2202/KAZ/KazV2 2026-06-20 09:15:57 +02:00
fab c7c8d5be3c upgrade traefik en 3.7.5 2026-06-20 07:52:52 +02:00
fab d99bf81014 bug sur double volume: 2026-06-20 07:52:52 +02:00
fab 71ae93752a pouvoir créer le service webdav (sur un volume wp) 2026-06-20 07:52:52 +02:00
fab 95d468913d pas de bind avec admin mais avec l'utilisateur 2026-06-20 07:52:52 +02:00
fanch b1817e2c16 les users peuvent se trouver dans le ldap 2026-06-20 07:52:52 +02:00
fanch 573c087b4d ajout ldapconfvi 2026-06-20 07:52:52 +02:00
fab 0dbe6115ca permettre du webdav pour les orga 2026-06-20 07:52:52 +02:00
fab eafa62ffb9 oops, rajoute https avec l'url 2026-06-20 07:52:52 +02:00
fanch 33f49eb78a plus de smtp par défaut pour les orgas 2026-06-20 07:52:52 +02:00
fanch 421276dc83 paheko passe maintenant par smtp principal 2026-06-20 07:52:52 +02:00
fab f219b2d339 ajoute usage si 0 param fourni 2026-06-20 07:52:52 +02:00
nom 1d822f66c9 autoriser les url courtes pour les orga 2026-06-20 07:52:52 +02:00
nom ff07c8aee7 créé une entrée supplémentaire dans le DNS avec le nom court de l'orga 2026-06-20 07:52:52 +02:00
nom 598e215ed1 upgrade traefik en 3.7.1 2026-06-20 07:52:52 +02:00
nom ea9febcde0 test downgrade traefik 2026-06-20 07:52:52 +02:00
nom 51d57223c9 upgrade traefik 3.7.1 2026-06-20 07:52:52 +02:00
nom bb4fefcdda paheko upgrade plugin facturation 2026-06-20 07:52:52 +02:00
nom 47f708045e upgrade paheko 1.3.20 2026-06-20 07:52:52 +02:00
nom fdd94bc9a1 bug sur double volume: 2026-06-16 21:36:44 +02:00
nom 366c019c0e pouvoir créer le service webdav (sur un volume wp) 2026-06-16 19:54:34 +02:00
fab 7e0de9ee8b upgrade MM 11.6.1 2026-05-02 10:18:02 +02:00
7 changed files with 136 additions and 7 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ CONTAINERS_TYPES=
declare -A DockerServNames # le nom des containers correspondant declare -A DockerServNames # le nom des containers correspondant
DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" [spip]="${spipServName}" ) DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" [spip]="${spipServName}" [webdav]="${webdavServName}" )
declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container
FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" [spip]="spip") FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" [spip]="spip")
+1 -1
View File
@@ -41,7 +41,7 @@ CONTAINERS_TYPES=
declare -A DockerServNames # le nom des containers correspondant declare -A DockerServNames # le nom des containers correspondant
DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" [spip]="${spipServName}" ) DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" [spip]="${spipServName}" [webdav]="${webdavServName}")
declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container
FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" [spip]="spip") FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" [spip]="spip")
+3
View File
@@ -94,9 +94,11 @@ traefikHost=dashboard
vaultwardenHost=koffre vaultwardenHost=koffre
vigiloHost=vigilo vigiloHost=vigilo
webHost= webHost=
webdavHost=webdav
webmailHost=webmail webmailHost=webmail
wordpressHost=wp wordpressHost=wp
######################################## ########################################
# ports internes # ports internes
@@ -152,6 +154,7 @@ vaultwardenServName=vaultwardenServ
vaultwardenDBName=vaultwardenDB vaultwardenDBName=vaultwardenDB
vigiloServName=vigiloServ vigiloServName=vigiloServ
vigiloDBName=vigiloDB vigiloDBName=vigiloDB
webdavServName=webdavServ
webServName=webServ webServName=webServ
wordpressServName=wpServ wordpressServName=wpServ
wordpressDBName=wpDB wordpressDBName=wpDB
+20 -2
View File
@@ -229,8 +229,26 @@ services:
volumes: volumes:
- spip:/usr/src/spip - spip:/usr/src/spip
#}} #}}
#{{webdav
webdav:
image: httpd:2.4
container_name: ${orga}-${webdavServName}
restart: unless-stopped
networks:
- orgaNet
environment:
#surcharge dans compose.override.yml
- LDAP_USERS=
- DOMAIN=${domain}
- LDAP_ROOT=${ldap_root}
volumes:
- wordpress:/var/www/webdav
- ./webdav-conf/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro
- ./webdav-conf/httpd-webdav.conf:/usr/local/apache2/conf/extra/httpd-webdav.conf:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.${orga}-${webdavServName}.rule=Host(`${orga}-${webdavHost}.${domain}`)"
#}}
#{{services #{{services
+108 -1
View File
@@ -5,7 +5,8 @@
#KAN: ??? #KAN: ???
#MAJ le 04/06/2026 by fab: créer une entrée orga dans le dns pour simplifier les url (avec utilisation de compose-override.yml) #MAJ le 04/06/2026 by fab: créer une entrée orga dans le dns pour simplifier les url (avec utilisation de compose-override.yml)
#MAJ le 16/06/2026 by fab: ajouter le menu +/-webdav
#MAJ le 20/06/2026 by fab: générer le contenu du mail qui est à envoyer à l'orga après une création de service
# XXX pb arret des services retiré # XXX pb arret des services retiré
@@ -40,6 +41,7 @@ usage(){
echo " +/- matter*|agora : on/off agora" echo " +/- matter*|agora : on/off agora"
echo " +/- wiki : on/off wiki" echo " +/- wiki : on/off wiki"
echo " +/- wp|word* : on/off wp" echo " +/- wp|word* : on/off wp"
echo " +/- webdav : on/off webdav"
echo " +/- casto*|pod : on/off castopod" echo " +/- casto*|pod : on/off castopod"
echo " +/- spip : on/off spip" echo " +/- spip : on/off spip"
echo " x[GMk] : set quota" echo " x[GMk] : set quota"
@@ -149,6 +151,7 @@ export collabora=$(flagInCompose docker-compose.yml collabora: off)
export agora=$(flagInCompose docker-compose.yml agora: off) export agora=$(flagInCompose docker-compose.yml agora: off)
export wiki=$(flagInCompose docker-compose.yml dokuwiki: off) export wiki=$(flagInCompose docker-compose.yml dokuwiki: off)
export wp=$(flagInCompose docker-compose.yml wordpress: off) export wp=$(flagInCompose docker-compose.yml wordpress: off)
export webdav=$(flagInCompose docker-compose.yml webdav: off)
export castopod=$(flagInCompose docker-compose.yml castopod: off) export castopod=$(flagInCompose docker-compose.yml castopod: off)
export spip=$(flagInCompose docker-compose.yml spip: off) export spip=$(flagInCompose docker-compose.yml spip: off)
export db="off" export db="off"
@@ -202,6 +205,9 @@ for ARG in "$@"; do
'-wp' | '-word'* ) '-wp' | '-word'* )
wp="off" wp="off"
;; ;;
'-webdav' )
webdav="off"
;;
'-pod' | '-casto'* ) '-pod' | '-casto'* )
castopod="off" castopod="off"
;; ;;
@@ -233,6 +239,9 @@ for ARG in "$@"; do
DBaInitialiser="$DBaInitialiser wp" DBaInitialiser="$DBaInitialiser wp"
INITCMD2="$INITCMD2 -wp" INITCMD2="$INITCMD2 -wp"
;; ;;
'+webdav' )
webdav="on"
;;
'+pod' | '+casto'* ) '+pod' | '+casto'* )
castopod="on" castopod="on"
DBaInitialiser="$DBaInitialiser castopod" DBaInitialiser="$DBaInitialiser castopod"
@@ -316,6 +325,12 @@ if [[ "${wp}" = "on" ]]; then
else else
DEL_DOMAIN+="${ORGA}-${wordpressHost} " DEL_DOMAIN+="${ORGA}-${wordpressHost} "
fi fi
if [[ "${webdav}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${webdavServName}:${ORGA}-\${webdavHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${webdavHost} "
else
DEL_DOMAIN+="${ORGA}-${webdavHost} "
fi
if [[ "${castopod}" = "on" ]]; then if [[ "${castopod}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${castopodServName}:${ORGA}-\${castopodHost}.\${domain}\n" DOMAIN_AREA+=" - ${ORGA}-\${castopodServName}:${ORGA}-\${castopodHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${castopodHost} " ADD_DOMAIN+="${ORGA}-${castopodHost} "
@@ -431,6 +446,8 @@ if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
ln -sf ../../config/orgaTmpl/wiki-conf/ ln -sf ../../config/orgaTmpl/wiki-conf/
ln -sf ../../config/orgaTmpl/reload.sh ln -sf ../../config/orgaTmpl/reload.sh
ln -sf ../../config/orgaTmpl/init-db.sh ln -sf ../../config/orgaTmpl/init-db.sh
ln -sf ../../config/orgaTmpl/webdav-conf/
fi fi
if [ ! -d "${KAZ_KEY_DIR}/orgas/$ORGA/" ]; then if [ ! -d "${KAZ_KEY_DIR}/orgas/$ORGA/" ]; then
@@ -494,6 +511,9 @@ if [[ -n "${STAGE_DEFAULT}" ]]; then
wp) wp)
DockerServName="${ORGA}-${wordpressServName}" DockerServName="${ORGA}-${wordpressServName}"
;; ;;
webdav)
DockerServName="${ORGA}-${webdavServName}"
;;
esac esac
if checkDockerRunning "${DockerServName}" "${service}"; then if checkDockerRunning "${DockerServName}" "${service}"; then
printKazMsg " - stop ${service}" printKazMsg " - stop ${service}"
@@ -524,3 +544,90 @@ if [[ -n "${STAGE_DEFAULT}" ]]; then
# ########## update status web page # ########## update status web page
${KAZ_COMP_DIR}/web/web-gen.sh ${KAZ_COMP_DIR}/web/web-gen.sh
fi fi
##### DEBUT MAIL
#construction du mail qui peut être envoyé à l'orga en cas de création de services
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
GREEN='\e[32m'
RESET='\e[0m'
MAIL="Bonjour,
et hop ! voici les accès au(x) service(s) demandé(s):
"
if [[ "${wp}" = "on" ]]; then
MAIL_ADMIN=`grep WORDPRESS_ADMIN_USER /kaz/secret/orgas/${ORGA}/env-wpServ | cut -f2 -d=`
MAIL_ADMIN_PASS=`grep WORDPRESS_ADMIN_PASSWORD /kaz/secret/orgas/${ORGA}/env-wpServ | cut -f2 -d=`
MAIL="$MAIL
Site Web:
adresse: https://${ORGA}-wp.kaz.bzh
identifiant: ${MAIL_ADMIN}
mot de passe: ${MAIL_ADMIN_PASS}
doc: https://wiki.kaz.bzh/wordpress/start
La première chose à faire est de paramétrer ton site pour qu'il puisse envoyer des mails: https://wiki.kaz.bzh/wordpress/premiere_connexion
Si tu as envie d'avoir comme adresse de site , https://${ORGA}.kaz.bzh au lieu de https://${ORGA}-wp.kaz.bzh, fais nous signe !
"
fi
if [[ "${cloud}" = "on" ]]; then
MAIL_ADMIN=`grep NEXTCLOUD_ADMIN_USER /kaz/secret/orgas/${ORGA}/env-nextcloudServ | cut -f2 -d=`
MAIL_ADMIN_PASS=`grep NEXTCLOUD_ADMIN_PASSWORD /kaz/secret/orgas/${ORGA}/env-nextcloudServ | cut -f2 -d=`
MAIL="$MAIL
Cloud:
adresse: https://${ORGA}-cloud.kaz.bzh
identifiant: ${MAIL_ADMIN}
mot de passe: ${MAIL_ADMIN_PASS}
doc: https://wiki.kaz.bzh/nextcloud/start
La première chose à faire est de paramétrer ton cloud pour qu'il puisse envoyer des mails: https://wiki.kaz.bzh/nextcloud/administration/start#pour_parametrer_l_envoi_des_mails_de_notification_depuis_votre_cloud
"
fi
if [[ "${paheko}" = "on" ]]; then
MAIL_ADMIN_PASS=$(apg -n 1 -m 16 -M NCL)
MAIL="$MAIL
Paheko:
adresse: https://${ORGA}-paheko.kaz.bzh/admin/
identifiant: ${GREEN}--mettre ici le mail de l'orga--${RESET}
mot de passe: ${MAIL_ADMIN_PASS}
doc: https://wiki.kaz.bzh/paheko/start
"
fi
MAIL="$MAIL
Pour tes prochaines questions, nous t'invitons à les poser sur notre agora, dans le canal \"Un soucis, une question\" sur
https://agora.kaz.bzh/kaz/channels/une-question--un-soucis
Il faut te connecter avec ton compte kaz.
Ainsi, tout le monde pourra répondre mais aussi bénéficier des réponses apportées. On la joue collectif.
Bonne journée 😉
L'équipe Sysadmin, pour la collégiale de Kaz."
fi
echo -e "${GREEN}"
echo "*****************************************************"
echo "Voici le mail à copier/coller et à envoyer à l'orga :"
echo "*****************************************************"
echo -e "${RESET}"
echo -e "$MAIL"
echo -e "${GREEN}"
echo "MAIS AVANT D'ENVOYER CE MAIL, IL FAUT :
* completer la fiche paheko de l'orga en cochant les services crees"
if [[ "${paheko}" = "on" ]]; then
echo " * lancer /kaz/dockers/paheko/docker-compose-gen.sh, restart le docker puis finir d'installer paheko en allant sur https://${ORGA}-paheko.kaz.bzh/admin/"
fi
echo -e ${RESET}
##### FIN MAIL
+1
View File
@@ -54,6 +54,7 @@ OVERRIDE_FILE="compose.override.yml"
# sauvegarde si le fichier existe déjà # sauvegarde si le fichier existe déjà
if [ -f "$OVERRIDE_FILE" ]; then if [ -f "$OVERRIDE_FILE" ]; then
cp "$OVERRIDE_FILE" "${OVERRIDE_FILE}.$(date +%Y%m%d-%H%M%S).bak" cp "$OVERRIDE_FILE" "${OVERRIDE_FILE}.$(date +%Y%m%d-%H%M%S).bak"
echo "'tention, un $OVERRIDE_FILE existe déjà, il vient d'être sauvegardé !"
fi fi
#on récupère toutes les variables utiles #on récupère toutes les variables utiles
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
reverse-proxy: reverse-proxy:
image: traefik:v3.7.1 image: traefik:v3.7.5
container_name: ${traefikServName} container_name: ${traefikServName}
restart: ${restartPolicy} restart: ${restartPolicy}
# Enables the web UI and tells Traefik to listen to docker # Enables the web UI and tells Traefik to listen to docker