Compare commits
71 Commits
c55e984918
...
gestionSec
Author | SHA1 | Date | |
---|---|---|---|
d10fb08f71 | |||
b9e605a359 | |||
a3f448b457 | |||
77a3819beb | |||
ec16cdfe92 | |||
6877a5f872 | |||
3a8bd9ec1a | |||
1f9ccff5b6 | |||
ff69724f86 | |||
99779a70ff | |||
400775bf41 | |||
8baf9fc492 | |||
8d26a57b6b | |||
5fbc804edd | |||
44ff3980f9 | |||
bce3b9eff5 | |||
d506f000a3 | |||
|
8906974a83 | ||
|
c12cafc277 | ||
|
f268f5f5f4 | ||
|
d8bc48ec3a | ||
3940c3801d | |||
00f9e3ee5f | |||
|
1bacfd307c | ||
|
8f6913565c | ||
|
62b34e4ac0 | ||
|
70c32de959 | ||
|
3eedd4293b | ||
|
a2f737eb46 | ||
|
82a3440d5a | ||
a3e86ac6ac | |||
556471d321 | |||
9d666afab5 | |||
5eb4ccb58e | |||
|
84849b71b1 | ||
|
316206140a | ||
|
7cc7df6ac1 | ||
|
0d1c13d125 | ||
|
cb9a449882 | ||
|
678388afaa | ||
016b47774b | |||
|
6db4d1a5a8 | ||
f54de7a26c | |||
|
75678ca093 | ||
|
554d7a5ddc | ||
62e75a42f2 | |||
|
4a6b575ce0 | ||
8d83a2716b | |||
|
4807624dbc | ||
|
b5aa7e9945 | ||
|
8d0caad3c7 | ||
|
87b007d4b9 | ||
7852e82e74 | |||
9b92276fc1 | |||
|
e39ce5518c | ||
|
ea6e48886d | ||
4187f4b772 | |||
|
b00916ceba | ||
|
f95b959bf2 | ||
|
609b5c1d62 | ||
|
a6a20e0dea | ||
|
821335e1ca | ||
|
e31c75d8b1 | ||
|
c041bac532 | ||
8eb33813d6 | |||
faf2e2bc8e | |||
adc0528c81 | |||
1259857474 | |||
db684d4ebd | |||
df657bb035 | |||
5d8634c8df |
@@ -16,7 +16,6 @@ KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
setKazVars
|
||||
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
usage () {
|
||||
echo $(basename "$0") " [-h] [-help] [-timestamp] template dst"
|
||||
@@ -64,8 +63,8 @@ done
|
||||
-e "s|__DOKUWIKI_HOST__|${dokuwikiHost}|g"\
|
||||
-e "s|__DOMAIN__|${domain}|g"\
|
||||
-e "s|__FILE_HOST__|${fileHost}|g"\
|
||||
-e "s|__PAHEKO_API_PASSWORD__|${paheko_API_PASSWORD}|g"\
|
||||
-e "s|__PAHEKO_API_USER__|${paheko_API_USER}|g"\
|
||||
# -e "s|__PAHEKO_API_PASSWORD__|${paheko_API_PASSWORD}|g"\
|
||||
# -e "s|__PAHEKO_API_USER__|${paheko_API_USER}|g"\
|
||||
-e "s|__PAHEKO_HOST__|${pahekoHost}|g"\
|
||||
-e "s|__GIT_HOST__|${gitHost}|g"\
|
||||
-e "s|__GRAV_HOST__|${gravHost}|g"\
|
||||
@@ -79,12 +78,13 @@ done
|
||||
-e "s|__SMTP_HOST__|${smtpHost}|g"\
|
||||
-e "s|__SYMPADB__|${sympaDBName}|g"\
|
||||
-e "s|__SYMPA_HOST__|${sympaHost}|g"\
|
||||
-e "s|__SYMPA_MYSQL_DATABASE__|${sympa_MYSQL_DATABASE}|g"\
|
||||
-e "s|__SYMPA_MYSQL_PASSWORD__|${sympa_MYSQL_PASSWORD}|g"\
|
||||
-e "s|__SYMPA_MYSQL_USER__|${sympa_MYSQL_USER}|g"\
|
||||
# -e "s|__SYMPA_MYSQL_DATABASE__|${sympa_MYSQL_DATABASE}|g"\
|
||||
# -e "s|__SYMPA_MYSQL_PASSWORD__|${sympa_MYSQL_PASSWORD}|g"\
|
||||
# -e "s|__SYMPA_MYSQL_USER__|${sympa_MYSQL_USER}|g"\
|
||||
-e "s|__VIGILO_HOST__|${vigiloHost}|g"\
|
||||
-e "s|__WEBMAIL_HOST__|${webmailHost}|g"\
|
||||
-e "s|__CASTOPOD_HOST__|${castopodHost}|g"\
|
||||
-e "s|__SPIP_HOST__|${spipHost}|g"\
|
||||
-e "s|__IMAPSYNC_HOST__|${imapsyncHost}|g"\
|
||||
-e "s|__YAKFORMS_HOST__|${yakformsHost}|g"\
|
||||
-e "s|__WORDPRESS_HOST__|${wordpressHost}|g"\
|
||||
|
25
bin/certbot-dns-alwaysdata.sh
Executable file
25
bin/certbot-dns-alwaysdata.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#/bin/bash
|
||||
|
||||
# certbot certonly --manual --preferred-challenges=dns --manual-auth-hook certbot-dns-alwaysdata.sh --manual-cleanup-hook certbot-dns-alwaysdata.sh -d "*.kaz.bzh" -d "kaz.bzh"
|
||||
|
||||
export KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. $KAZ_KEY_DIR/env-alwaysdata
|
||||
|
||||
DOMAIN_ID=$(curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" ${ALWAYSDATA_API}/domain/?name=${CERTBOT_DOMAIN} | jq '.[0].id')
|
||||
|
||||
add_record(){
|
||||
RECORD_ID=$(curl -s -X POST -d "{\"domain\":\"${DOMAIN_ID}\", \"type\":\"TXT\", \"name\":\"_acme-challenge\", \"value\":\"${CERTBOT_VALIDATION}\"}" --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/")
|
||||
}
|
||||
|
||||
del_record(){
|
||||
RECORD_ID=$(curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/?name=_acme-challenge&type=TXT&domain=${DOMAIN_ID}" | jq ".[0].id")
|
||||
curl -s -X DELETE --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/${RECORD_ID}/"
|
||||
}
|
||||
|
||||
if [ -z ${CERTBOT_AUTH_OUTPUT} ]; then
|
||||
add_record
|
||||
else
|
||||
del_record
|
||||
fi
|
@@ -6,8 +6,6 @@ setKazVars
|
||||
|
||||
RUN_PASS_DIR="secret"
|
||||
TMPL_PASS_DIR="secret.tmpl"
|
||||
RUN_PASS_FILE="${RUN_PASS_DIR}/SetAllPass.sh"
|
||||
TMPL_PASS_FILE="${TMPL_PASS_DIR}/SetAllPass.sh"
|
||||
NEED_GEN=
|
||||
|
||||
########################################
|
||||
@@ -48,7 +46,12 @@ getVars () {
|
||||
# get lvalues in script
|
||||
getSettedVars () {
|
||||
# $1 : filename
|
||||
grep "^[^#]*=..*" $1 | grep -v '^[^#]*=".*--clean_val--.*"' | grep -v '^[^#]*="${' | sort -u
|
||||
grep -E "^[^=#]*(USER|PASS|TOKEN|DATABASE|ACCOUNT|LOGIN|KEY)[^#]*=..*" ./* | grep -vE '^[^#=]*=.*@@(user|pass|db|token|gv|cv)@@.*' | sort -u
|
||||
}
|
||||
|
||||
getUnsettedVars () {
|
||||
# $1 : filename
|
||||
grep -vE '^[^#=]*=.*@@(user|pass|db|token|gv|cv)@@.*' ./* | sort -u
|
||||
}
|
||||
|
||||
getVarFormVal () {
|
||||
@@ -57,60 +60,6 @@ getVarFormVal () {
|
||||
grep "^[^#]*=$1" $2 | sed 's/\s*\([^=]*\).*/\1/'
|
||||
}
|
||||
|
||||
########################################
|
||||
# synchronized SetAllPass.sh (find missing lvalues)
|
||||
updatePassFile () {
|
||||
# $1 : ref filename
|
||||
# $2 : target filename
|
||||
|
||||
REF_FILE="$1"
|
||||
TARGET_FILE="$2"
|
||||
NEED_UPDATE=
|
||||
while : ; do
|
||||
declare -a listRef listTarget missing
|
||||
listRef=($(getVars "${REF_FILE}"))
|
||||
listTarget=($(getVars "${TARGET_FILE}"))
|
||||
missing=($(comm -23 <(printf "%s\n" ${listRef[@]}) <(printf "%s\n" ${listTarget[@]})))
|
||||
if [ -n "${missing}" ]; then
|
||||
echo "missing vars in ${YELLOW}${BOLD}${TARGET_FILE}${NC}:${RED}${BOLD}" ${missing[@]} "${NC}"
|
||||
read -p "Do you want to add them? [y/n]: " yn
|
||||
case $yn in
|
||||
""|[Yy]*)
|
||||
emacs "${REF_FILE}" "${TARGET_FILE}"
|
||||
NEED_UPDATE=true
|
||||
break
|
||||
;;
|
||||
[Nn]*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
updatePassFile "${TMPL_PASS_FILE}" "${RUN_PASS_FILE}"
|
||||
[ -n "${NEED_UPDATE}" ] && NEED_GEN=true
|
||||
updatePassFile "${RUN_PASS_FILE}" "${TMPL_PASS_FILE}"
|
||||
|
||||
########################################
|
||||
# check empty pass in TMPL_PASS_FILE
|
||||
declare -a settedVars
|
||||
settedVars=($(getSettedVars "${TMPL_PASS_FILE}"))
|
||||
if [ -n "${settedVars}" ]; then
|
||||
echo "unclear password in ${YELLOW}${BOLD}${TMPL_PASS_FILE}${NC}:${BLUE}${BOLD}"
|
||||
for var in ${settedVars[@]}; do
|
||||
echo -e "\t${var}"
|
||||
done
|
||||
echo "${NC}"
|
||||
read -p "Do you want to clear them? [y/n]: " yn
|
||||
case $yn in
|
||||
""|[Yy]*)
|
||||
emacs "${TMPL_PASS_FILE}"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
########################################
|
||||
# check new files env-*
|
||||
@@ -146,7 +95,7 @@ createMissingEnv "${TMPL_PASS_DIR}" "${RUN_PASS_DIR}"
|
||||
declare -a listTmpl listRun listCommonFiles
|
||||
listTmplFiles=($(cd "${TMPL_PASS_DIR}"; ls -1 env-* | grep -v '~$'))
|
||||
listRunFiles=($(cd "${RUN_PASS_DIR}"; ls -1 env-* | grep -v '~$'))
|
||||
listCommonFiles=($(comm -3 <(printf "%s\n" ${listTmplFiles[@]}) <(printf "%s\n" ${listRunFiles[@]})))
|
||||
listCommonFiles=($(comm -12 <(printf "%s\n" ${listTmplFiles[@]}) <(printf "%s\n" ${listRunFiles[@]})))
|
||||
for envFile in ${listCommonFiles[@]}; do
|
||||
while : ; do
|
||||
TMPL_FILE="${TMPL_PASS_DIR}/${envFile}"
|
||||
@@ -224,21 +173,19 @@ if [ -n "${missing}" ]; then
|
||||
fi
|
||||
|
||||
########################################
|
||||
# check env-* in updateDockerPassword.sh
|
||||
missing=($(for DIR in "${RUN_PASS_DIR}" "${TMPL_PASS_DIR}"; do
|
||||
# check extention in dockers.env
|
||||
declare -a missing
|
||||
unsetted=($(for DIR in "${RUN_PASS_DIR}"; do
|
||||
for envFile in $(ls -1 "${DIR}/"env-* | grep -v '~$'); do
|
||||
val="${envFile#*env-}"
|
||||
varName=$(getVarFormVal "${val}" "${DOCKERS_ENV}")
|
||||
[ -z "${varName}" ] && continue
|
||||
prefixe=$(grep "^\s*updateEnv.*${varName}" "${KAZ_BIN_DIR}/updateDockerPassword.sh" |
|
||||
sed 's/\s*updateEnv[^"]*"\([^"]*\)".*/\1/' | sort -u)
|
||||
if [ -z "${prefixe}" ]; then
|
||||
echo "${envFile#*/}_(\${KAZ_KEY_DIR}/env-\${"${varName}"})"
|
||||
if [ -z "${varName}" ]; then
|
||||
echo "${val}"
|
||||
fi
|
||||
done
|
||||
done | sort -u))
|
||||
if [ -n "${missing}" ]; then
|
||||
echo "missing update in ${GREEN}${BOLD}${KAZ_BIN_DIR}/updateDockerPassword.sh${NC}:${BLUE}${BOLD}"
|
||||
echo "missing def in ${GREEN}${BOLD}${DOCKERS_ENV}${NC}:${BLUE}${BOLD}"
|
||||
for var in ${missing[@]}; do
|
||||
echo -e "\t${var}"
|
||||
done
|
||||
@@ -246,53 +193,17 @@ if [ -n "${missing}" ]; then
|
||||
read -p "Do you want to add them? [y/n]: " yn
|
||||
case $yn in
|
||||
""|[Yy]*)
|
||||
emacs "${KAZ_BIN_DIR}/updateDockerPassword.sh"
|
||||
emacs "${DOCKERS_ENV}"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
########################################
|
||||
# synchronized SetAllPass.sh and env-*
|
||||
updateEnvFiles () {
|
||||
# $1 secret dir
|
||||
DIR=$1
|
||||
listRef=($(getVars "${DIR}/SetAllPass.sh"))
|
||||
missing=($(for envFile in $(ls -1 "${DIR}/"env-* | grep -v '~$'); do
|
||||
val="${envFile#*env-}"
|
||||
varName=$(getVarFormVal "${val}" "${DOCKERS_ENV}")
|
||||
[ -z "${varName}" ] && continue
|
||||
prefixe=$(grep "^\s*updateEnv.*${varName}" "${KAZ_BIN_DIR}/updateDockerPassword.sh" |
|
||||
sed 's/\s*updateEnv[^"]*"\([^"]*\)".*/\1/' | sort -u)
|
||||
[ -z "${prefixe}" ] && continue
|
||||
listVarsInEnv=($(getVars "${envFile}"))
|
||||
for var in ${listVarsInEnv[@]}; do
|
||||
[[ ! " ${listRef[@]} " =~ " ${prefixe}_${var} " ]] && echo "${prefixe}_${var}"
|
||||
done
|
||||
# XXX doit exister dans SetAllPass.sh avec le prefixe
|
||||
done))
|
||||
if [ -n "${missing}" ]; then
|
||||
echo "missing update in ${GREEN}${BOLD}${DIR}/SetAllPass.sh${NC}:${BLUE}${BOLD}"
|
||||
for var in ${missing[@]}; do
|
||||
echo -e "\t${var}"
|
||||
done
|
||||
echo "${NC}"
|
||||
read -p "Do you want to add them? [y/n]: " yn
|
||||
case $yn in
|
||||
""|[Yy]*)
|
||||
emacs "${DIR}/SetAllPass.sh"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
updateEnvFiles "${RUN_PASS_DIR}"
|
||||
updateEnvFiles "${TMPL_PASS_DIR}"
|
||||
|
||||
# XXX chercher les variables non utilisées dans les SetAllPass.sh
|
||||
|
||||
if [ -n "${NEED_GEN}" ]; then
|
||||
while : ; do
|
||||
read -p "Do you want to generate blank values? [y/n]: " yn
|
||||
read -p "Do you want to generate missing values? [y/n]: " yn
|
||||
case $yn in
|
||||
""|[Yy]*)
|
||||
"${KAZ_BIN_DIR}/secretGen.sh"
|
||||
|
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
|
||||
for filename in "${KAZ_KEY_DIR}/"env-*Serv "${KAZ_KEY_DIR}/"env-*DB; do
|
||||
if grep -q "^[^#=]*=\s*$" "${filename}" 2>/dev/null; then
|
||||
echo "${filename}"
|
||||
fi
|
||||
done
|
@@ -8,6 +8,9 @@
|
||||
# Did : 13 fevrier 2025 modif des save en postgres et mysql
|
||||
# Did : ajout des sauvegardes de mobilizon et mattermost en postgres
|
||||
|
||||
# 20/04/2025
|
||||
# Did : Ajout des sauvegardes de peertube dans les services generaux
|
||||
|
||||
|
||||
# En cas d'absence de postfix, il faut lancer :
|
||||
# docker network create postfix_mailNet
|
||||
@@ -16,8 +19,7 @@
|
||||
# sauvegarde la base de données d'un compose
|
||||
# met à jours les paramètres de configuration du mandataire (proxy)
|
||||
|
||||
#KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
KAZ_ROOT=/kaz
|
||||
KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
|
||||
@@ -59,20 +61,6 @@ doCompose () {
|
||||
${SIMU} ln -fs ../../config/dockers.env .env
|
||||
fi
|
||||
${SIMU} docker-compose $1
|
||||
|
||||
if [ "$2" = "cachet" ] && [ "$1" != "down" ]; then
|
||||
NEW_KEY=$(cd "${KAZ_COMP_DIR}/$2" ; docker-compose logs | grep APP_KEY=base64: | sed "s/^.*'APP_KEY=\(base64:[^']*\)'.*$/\1/" | tail -1)
|
||||
if [ -n "${NEW_KEY}" ]; then
|
||||
printKazMsg "cachet key change"
|
||||
# change key
|
||||
${SIMU} sed -i \
|
||||
-e 's%^\(\s*cachet_APP_KEY=\).*$%\1"'"${NEW_KEY}"'"%' \
|
||||
"${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
${SIMU} "${KAZ_BIN_DIR}/secretGen.sh"
|
||||
# restart
|
||||
${SIMU} docker-compose $1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
doComposes () {
|
||||
@@ -175,7 +163,6 @@ statusComposes () {
|
||||
|
||||
saveComposes () {
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_ROOT}/secret/SetAllPass.sh"
|
||||
|
||||
savedComposes+=( ${enableMailComposes[@]} )
|
||||
savedComposes+=( ${enableProxyComposes[@]} )
|
||||
@@ -193,63 +180,85 @@ saveComposes () {
|
||||
;;
|
||||
sympa)
|
||||
echo "save sympa"
|
||||
saveDB ${sympaDBName} "${sympa_MYSQL_USER}" "${sympa_MYSQL_PASSWORD}" "${sympa_MYSQL_DATABASE}" sympa mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh sympaDB
|
||||
saveDB ${sympaDBName} "${sympaDB_MYSQL_USER}" "${sympaDB_MYSQL_PASSWORD}" "${sympaDB_MYSQL_DATABASE}" sympa mysql
|
||||
;;
|
||||
web)
|
||||
# rien à faire (fichiers)
|
||||
;;
|
||||
etherpad)
|
||||
echo "save pad"
|
||||
saveDB ${etherpadDBName} "${etherpad_MYSQL_USER}" "${etherpad_MYSQL_PASSWORD}" "${etherpad_MYSQL_DATABASE}" etherpad mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh etherpadDB
|
||||
saveDB ${etherpadDBName} "${etherpadDB_MYSQL_USER}" "${etherpadDB_MYSQL_PASSWORD}" "${etherpadDB_MYSQL_DATABASE}" etherpad mysql
|
||||
;;
|
||||
framadate)
|
||||
echo "save date"
|
||||
saveDB ${framadateDBName} "${framadate_MYSQL_USER}" "${framadate_MYSQL_PASSWORD}" "${framadate_MYSQL_DATABASE}" framadate mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh framadateDB
|
||||
saveDB ${framadateDBName} "${framadateDB_MYSQL_USER}" "${framadateDB_MYSQL_PASSWORD}" "${framadateDB_MYSQL_DATABASE}" framadate mysql
|
||||
;;
|
||||
cloud)
|
||||
echo "save cloud"
|
||||
saveDB ${nextcloudDBName} "${nextcloud_MYSQL_USER}" "${nextcloud_MYSQL_PASSWORD}" "${nextcloud_MYSQL_DATABASE}" nextcloud mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh nextcloudDB
|
||||
saveDB ${nextcloudDBName} "${nextcloudDB_MYSQL_USER}" "${nextcloudDB_MYSQL_PASSWORD}" "${nextcloudDB_MYSQL_DATABASE}" nextcloud mysql
|
||||
;;
|
||||
paheko)
|
||||
# rien à faire (fichiers)
|
||||
;;
|
||||
mattermost)
|
||||
echo "save mattermost"
|
||||
saveDB matterPG "${mattermost_POSTGRES_USER}" "${mattermost_POSTGRES_PASSWORD}" "${mattermost_POSTGRES_DB}" mattermost postgres
|
||||
. $KAZ_BIN_DIR/getPasswords.sh mattermostDB
|
||||
saveDB matterPG "${mattermostDB_POSTGRES_USER}" "${mattermostDB_POSTGRES_PASSWORD}" "${mattermostDB_POSTGRES_DB}" mattermost postgres
|
||||
;;
|
||||
mobilizon)
|
||||
echo "save mobilizon"
|
||||
saveDB ${mobilizonDBName} "${mobilizon_POSTGRES_USER}" "${mobilizon_POSTGRES_PASSWORD}" "${mobilizon_POSTGRES_DB}" mobilizon postgres
|
||||
. $KAZ_BIN_DIR/getPasswords.sh mobilizonDB
|
||||
saveDB ${mobilizonDBName} "${mobilizonDB_POSTGRES_USER}" "${mobilizonDB_POSTGRES_PASSWORD}" "${mobilizonDB_POSTGRES_DB}" mobilizon postgres
|
||||
;;
|
||||
peertube)
|
||||
echo "save peertube"
|
||||
. $KAZ_BIN_DIR/getPasswords.sh peertubeDB
|
||||
saveDB ${peertubeDBName} "${peertubeDB_POSTGRES_USER}" "${peertubeDB_POSTGRES_PASSWORD}" "${peertubeDB_PEERTUBE_DB_HOSTNAME}" peertube postgres
|
||||
;;
|
||||
mastodon)
|
||||
echo "save mastodon"
|
||||
saveDB ${mastodonDBName} "${mastodon_POSTGRES_USER}" "${mastodon_POSTGRES_PASSWORD}" "${mastodon_POSTGRES_DB}" mastodon postgres
|
||||
. $KAZ_BIN_DIR/getPasswords.sh mastodonDB
|
||||
saveDB ${mastodonDBName} "${mastodonDB_POSTGRES_USER}" "${mastodonDB_POSTGRES_PASSWORD}" "${mastodonDB_POSTGRES_DB}" mastodon postgres
|
||||
;;
|
||||
roundcube)
|
||||
echo "save roundcube"
|
||||
saveDB ${roundcubeDBName} "${roundcube_MYSQL_USER}" "${roundcube_MYSQL_PASSWORD}" "${roundcube_MYSQL_DATABASE}" roundcube mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh roundcubeDB
|
||||
saveDB ${roundcubeDBName} "${roundcubeDB_MYSQL_USER}" "${roundcubeDB_MYSQL_PASSWORD}" "${roundcubeDB_MYSQL_DATABASE}" roundcube mysql
|
||||
;;
|
||||
vaultwarden)
|
||||
echo "save vaultwarden"
|
||||
saveDB ${vaultwardenDBName} "${vaultwarden_MYSQL_USER}" "${vaultwarden_MYSQL_PASSWORD}" "${vaultwarden_MYSQL_DATABASE}" vaultwarden mysql
|
||||
. $KAZ_BIN_DIR/getPasswords.sh vaultwardenDB
|
||||
saveDB ${vaultwardenDBName} "${vaultwardenDB_MYSQL_USER}" "${vaultwardenDB_MYSQL_PASSWORD}" "${vaultwardenDB_MYSQL_DATABASE}" vaultwarden mysql
|
||||
;;
|
||||
dokuwiki)
|
||||
# rien à faire (fichiers)
|
||||
;;
|
||||
*-orga)
|
||||
ORGA=${compose%-orga}
|
||||
echo "save ${ORGA}"
|
||||
echo "save ${ORGA}"
|
||||
if grep -q "cloud:" "${KAZ_COMP_DIR}/${compose}/docker-compose.yml" 2> /dev/null ; then
|
||||
echo " => cloud"
|
||||
saveDB "${ORGA}-DB" "${nextcloud_MYSQL_USER}" "${nextcloud_MYSQL_PASSWORD}" "${nextcloud_MYSQL_DATABASE}" "${ORGA}-cloud" mysql
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudDB
|
||||
saveDB "${ORGA}-DB" "${MYSQL_USER}" "${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" "${ORGA}-cloud" mysql
|
||||
fi
|
||||
if grep -q "agora:" "${KAZ_COMP_DIR}/${compose}/docker-compose.yml" 2> /dev/null ; then
|
||||
echo " => mattermost"
|
||||
saveDB "${ORGA}-DB" "${mattermost_MYSQL_USER}" "${mattermost_MYSQL_PASSWORD}" "${mattermost_MYSQL_DATABASE}" "${ORGA}-mattermost" mysql
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-mattermostDB
|
||||
saveDB "${ORGA}-DB" "${MYSQL_USER}" "${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" "${ORGA}-mattermost" mysql
|
||||
fi
|
||||
if grep -q "wordpress:" "${KAZ_COMP_DIR}/${compose}/docker-compose.yml" 2> /dev/null ; then
|
||||
echo " => wordpress"
|
||||
saveDB "${ORGA}-DB" "${wp_MYSQL_USER}" "${wp_MYSQL_PASSWORD}" "${wp_MYSQL_DATABASE}" "${ORGA}-wordpress" mysql
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-wpDB
|
||||
saveDB "${ORGA}-DB" "${MYSQL_USER}" "${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" "${ORGA}-wordpress" mysql
|
||||
fi
|
||||
if grep -q "spip:" "${KAZ_COMP_DIR}/${compose}/docker-compose.yml" 2> /dev/null ; then
|
||||
echo " => spip"
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-spipDB
|
||||
saveDB "${ORGA}-DB" "${MYSQL_USER}" "${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" "${ORGA}-spip" mysql
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
81
bin/createDBUsers.sh
Executable file
81
bin/createDBUsers.sh
Executable file
@@ -0,0 +1,81 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
|
||||
# pour mise au point
|
||||
# SIMU=echo
|
||||
|
||||
# Améliorations à prévoir
|
||||
# - donner en paramètre les services concernés (pour limité les modifications)
|
||||
# - pour les DB si on déclare un nouveau login, alors les privilèges sont créé mais les anciens pas révoqués
|
||||
|
||||
. "${DOCKERS_ENV}"
|
||||
|
||||
createMysqlUser(){
|
||||
# $1 = envName
|
||||
# $2 = containerName of DB
|
||||
|
||||
. $KAZ_KEY_DIR/env-$1
|
||||
|
||||
# seulement si pas de mdp pour root
|
||||
# pb oeuf et poule (il faudrait les anciennes valeurs) :
|
||||
# * si rootPass change, faire à la main
|
||||
# * si dbName change, faire à la main
|
||||
checkDockerRunning "$2" "$2" || return
|
||||
echo "change DB pass on docker $2"
|
||||
echo "grant all privileges on ${MYSQL_DATABASE}.* to '${MYSQL_USER}' identified by '${MYSQL_PASSWORD}';" | \
|
||||
docker exec -i $2 bash -c "mysql --user=root --password=${MYSQL_ROOT_PASSWORD}"
|
||||
}
|
||||
|
||||
|
||||
|
||||
framadateUpdate(){
|
||||
[[ "${COMP_ENABLE}" =~ " framadate " ]] || return
|
||||
if [ ! -f "${DOCK_LIB}/volumes/framadate_dateConfig/_data/config.php" ]; then
|
||||
return 0
|
||||
fi
|
||||
.$KAZ_BIN_DIR/getPasswords.sh framadateDB framadateServ
|
||||
|
||||
checkDockerRunning "${framadateServName}" "Framadate" &&
|
||||
${SIMU} docker exec -ti "${framadateServName}" bash -c -i "htpasswd -bc /var/framadate/admin/.htpasswd ${framadateServ_HTTPD_USER} ${framadateServ_HTTPD_PASSWORD}"
|
||||
${SIMU} sed -i \
|
||||
-e "s/^#*const DB_USER[ ]*=.*$/const DB_USER= '${framadateDB_MYSQL_USER}';/g" \
|
||||
-e "s/^#*const DB_PASSWORD[ ]*=.*$/const DB_PASSWORD= '${framadateDB_MYSQL_PASSWORD}';/g" \
|
||||
"${DOCK_LIB}/volumes/framadate_dateConfig/_data/config.php"
|
||||
}
|
||||
|
||||
jirafeauUpdate(){
|
||||
[[ "${COMP_ENABLE}" =~ " jirafeau " ]] || return
|
||||
if [ ! -f "${DOCK_LIB}/volumes/jirafeau_fileConfig/_data/config.local.php" ]; then
|
||||
return 0
|
||||
fi
|
||||
. $KAZ_BIN_DIR/getPasswords.sh jirafeauServ
|
||||
SHA=$(echo -n "${jirafeauServ_HTTPD_PASSWORD}" | sha256sum | cut -d \ -f 1)
|
||||
${SIMU} sed -i \
|
||||
-e "s/'admin_password'[ ]*=>[ ]*'[^']*'/'admin_password' => '${SHA}'/g" \
|
||||
"${DOCK_LIB}/volumes/jirafeau_fileConfig/_data/config.local.php"
|
||||
}
|
||||
|
||||
####################
|
||||
# main
|
||||
|
||||
createMysqlUser "etherpadDB" "${etherpadDBName}"
|
||||
createMysqlUser "framadateDB" "${framadateDBName}"
|
||||
createMysqlUser "giteaDB" "${gitDBName}"
|
||||
createMysqlUser "mattermostDB" "${mattermostDBName}"
|
||||
createMysqlUser "nextcloudDB" "${nextcloudDBName}"
|
||||
createMysqlUser "roundcubeDB" "${roundcubeDBName}"
|
||||
createMysqlUser "sympaDB" "${sympaDBName}"
|
||||
createMysqlUser "vigiloDB" "${vigiloDBName}"
|
||||
createMysqlUser "wpDB" "${wordpressDBName}"
|
||||
createMysqlUser "vaultwardenDB" "${vaultwardenDBName}"
|
||||
createMysqlUser "castopodDB" "${castopodDBName}"
|
||||
createMysqlUser "spipDB" "${spipDBName}"
|
||||
createMysqlUser "mastodonDB" "${mastodonDBName}"
|
||||
|
||||
|
||||
framadateUpdate
|
||||
jirafeauUpdate
|
||||
exit 0
|
@@ -1,104 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname $0)/..
|
||||
|
||||
mkdir -p emptySecret
|
||||
rsync -aHAX --info=progress2 --delete secret/ emptySecret/
|
||||
|
||||
cd emptySecret/
|
||||
|
||||
. ../config/dockers.env
|
||||
. ./SetAllPass.sh
|
||||
|
||||
# pour mise au point
|
||||
# SIMU=echo
|
||||
|
||||
cleanEnvDB(){
|
||||
# $1 = prefix
|
||||
# $2 = envName
|
||||
# $3 = containerName of DB
|
||||
rootPass="--root_password--"
|
||||
dbName="--database_name--"
|
||||
userName="--user_name--"
|
||||
userPass="--user_password--"
|
||||
|
||||
${SIMU} sed -i \
|
||||
-e "s/MYSQL_ROOT_PASSWORD=.*/MYSQL_ROOT_PASSWORD=${rootPass}/g" \
|
||||
-e "s/MYSQL_DATABASE=.*/MYSQL_DATABASE=${dbName}/g" \
|
||||
-e "s/MYSQL_USER=.*/MYSQL_USER=${userName}/g" \
|
||||
-e "s/MYSQL_PASSWORD=.*/MYSQL_PASSWORD=${userPass}/g" \
|
||||
"$2"
|
||||
}
|
||||
|
||||
cleanEnv(){
|
||||
# $1 = prefix
|
||||
# $2 = envName
|
||||
for varName in $(grep "^[a-zA-Z_]*=" $2 | sed "s/^\([^=]*\)=.*/\1/g")
|
||||
do
|
||||
srcName="$1_${varName}"
|
||||
srcVal="--clean_val--"
|
||||
${SIMU} sed -i \
|
||||
-e "s~^[ ]*${varName}=.*$~${varName}=${srcVal}~" \
|
||||
"$2"
|
||||
done
|
||||
}
|
||||
|
||||
cleanPasswd(){
|
||||
${SIMU} sed -i \
|
||||
-e 's/^\([# ]*[^#= ]*\)=".[^{][^"]*"/\1="--clean_val--"/g' \
|
||||
./SetAllPass.sh
|
||||
}
|
||||
|
||||
####################
|
||||
# main
|
||||
|
||||
# read -r -p "Do you want to remove all password? [Y/n] " input
|
||||
|
||||
# case $input in
|
||||
# [yY][eE][sS]|[yY])
|
||||
# echo "Remove all password"
|
||||
# ;;
|
||||
# [nN][oO]|[nN])
|
||||
# echo "Abort"
|
||||
# ;;
|
||||
# *)
|
||||
# echo "Invalid input..."
|
||||
# exit 1
|
||||
# ;;
|
||||
# esac
|
||||
|
||||
cleanPasswd
|
||||
|
||||
cleanEnvDB "etherpad" "./env-${etherpadDBName}" "${etherpadDBName}"
|
||||
cleanEnvDB "framadate" "./env-${framadateDBName}" "${framadateDBName}"
|
||||
cleanEnvDB "git" "./env-${gitDBName}" "${gitDBName}"
|
||||
cleanEnvDB "mattermost" "./env-${mattermostDBName}" "${mattermostDBName}"
|
||||
cleanEnvDB "nextcloud" "./env-${nextcloudDBName}" "${nextcloudDBName}"
|
||||
cleanEnvDB "roundcube" "./env-${roundcubeDBName}" "${roundcubeDBName}"
|
||||
cleanEnvDB "sso" "./env-${ssoDBName}" "${ssoDBName}"
|
||||
cleanEnvDB "sympa" "./env-${sympaDBName}" "${sympaDBName}"
|
||||
cleanEnvDB "vigilo" "./env-${vigiloDBName}" "${vigiloDBName}"
|
||||
cleanEnvDB "wp" "./env-${wordpressDBName}" "${wordpressDBName}"
|
||||
|
||||
cleanEnv "etherpad" "./env-${etherpadServName}"
|
||||
cleanEnv "gandi" "./env-gandi"
|
||||
cleanEnv "jirafeau" "./env-${jirafeauServName}"
|
||||
cleanEnv "mattermost" "./env-${mattermostServName}"
|
||||
cleanEnv "nextcloud" "./env-${nextcloudServName}"
|
||||
cleanEnv "office" "./env-${officeServName}"
|
||||
cleanEnv "roundcube" "./env-${roundcubeServName}"
|
||||
cleanEnv "sso" "./env-${ssoServName}"
|
||||
cleanEnv "vigilo" "./env-${vigiloServName}"
|
||||
cleanEnv "wp" "./env-${wordpressServName}"
|
||||
|
||||
cat > allow_admin_ip <<EOF
|
||||
# ip for admin access only
|
||||
|
||||
# local test
|
||||
allow 127.0.0.0/8;
|
||||
allow 192.168.0.0/16;
|
||||
|
||||
EOF
|
||||
|
||||
chmod -R go= .
|
||||
chmod -R +X .
|
@@ -3,14 +3,13 @@
|
||||
cd $(dirname $0)
|
||||
|
||||
./setOwner.sh
|
||||
./createEmptyPasswd.sh
|
||||
|
||||
cd ../..
|
||||
|
||||
FILE_NAME="/tmp/$(date +'%Y%M%d')-KAZ.tar.bz2"
|
||||
FILE_NAME="/tmp/$(date +'%Y%m%d')-KAZ.tar.bz2"
|
||||
|
||||
tar -cjf "${FILE_NAME}" --transform s/emptySecret/secret/ \
|
||||
./kaz/emptySecret/ ./kaz/bin ./kaz/config ./kaz/dockers
|
||||
tar -cjf "${FILE_NAME}" --transform s/secret.tmpl/secret/ \
|
||||
./kaz/secret.tmpl/ ./kaz/bin ./kaz/config ./kaz/dockers
|
||||
|
||||
ls -l "${FILE_NAME}"
|
||||
|
||||
|
@@ -37,12 +37,12 @@ setKazVars
|
||||
|
||||
cd "${KAZ_ROOT}"
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ sympaServ paheko
|
||||
|
||||
# DOCK_DIR="${KAZ_COMP_DIR}" # ???
|
||||
|
||||
SETUP_MAIL="docker exec -ti mailServ setup"
|
||||
|
||||
# on détermine le script appelant, le fichier log et le fichier source, tous issus de la même racine
|
||||
PRG=$(basename $0)
|
||||
RACINE=${PRG%.sh}
|
||||
@@ -210,15 +210,6 @@ done
|
||||
echo "numero,nom,quota_disque,action_auto" > "${TEMP_PAHEKO}"
|
||||
echo "curl \"https://${paheko_API_USER}:${paheko_API_PASSWORD}@kaz-paheko.kaz.bzh/api/user/import\" -T \"${TEMP_PAHEKO}\"" >> "${CMD_PAHEKO}"
|
||||
|
||||
#echo "récupération des login postfix... "
|
||||
## on stocke les emails et les alias KAZ déjà créés
|
||||
#(
|
||||
# ${SETUP_MAIL} email list
|
||||
# ${SETUP_MAIL} alias list
|
||||
#) | cut -d ' ' -f 2 | grep @ | sort > "${TFILE_EMAIL}"
|
||||
# did on supprime le ^M en fin de fichier pour pas faire planter les grep
|
||||
#dos2unix "${TFILE_EMAIL}"
|
||||
|
||||
echo "on récupère tous les emails (secours/alias/kaz) sur le ldap"
|
||||
FILE_LDIF=/home/sauve/ldap.ldif
|
||||
/kaz/bin/ldap/ldap_sauve.sh
|
||||
@@ -226,13 +217,14 @@ gunzip ${FILE_LDIF}.gz -f
|
||||
grep -aEiorh '([[:alnum:]]+([._-][[:alnum:]]+)*@[[:alnum:]]+([._-][[:alnum:]]+)*\.[[:alpha:]]{2,6})' ${FILE_LDIF} | sort -u > ${TFILE_EMAIL}
|
||||
|
||||
echo "récupération des login mattermost... "
|
||||
docker exec -ti mattermostServ bin/mmctl user list --all | grep ":.*(" | cut -d ':' -f 2 | cut -d ' ' -f 2 | sort > "${TFILE_MM}"
|
||||
docker exec -i mattermostServ bin/mmctl user list --all | grep ":.*(" | cut -d ':' -f 2 | cut -d ' ' -f 2 | sort > "${TFILE_MM}"
|
||||
|
||||
dos2unix "${TFILE_MM}"
|
||||
echo "done"
|
||||
|
||||
# se connecter à l'agora pour ensuite pouvoir passer toutes les commandes mmctl
|
||||
echo "docker exec -ti mattermostServ bin/mmctl auth login ${httpProto}://${URL_AGORA} --name local-server --username ${mattermost_user} --password ${mattermost_pass}" | tee -a "${CMD_INIT}"
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
echo "docker exec -i mattermostServ bin/mmctl auth login ${httpProto}://${URL_AGORA} --name local-server --username ${mattermost_user} --password ${mattermost_pass}" | tee -a "${CMD_INIT}"
|
||||
|
||||
# vérif des emails
|
||||
regex="^(([A-Za-z0-9]+((\.|\-|\_|\+)?[A-Za-z0-9]?)*[A-Za-z0-9]+)|[A-Za-z0-9]+)@(([A-Za-z0-9]+)+((\.|\-|\_)?([A-Za-z0-9]+)+)*)+\.([A-Za-z]{2,})+$"
|
||||
@@ -379,8 +371,6 @@ while read ligne; do
|
||||
else
|
||||
SEND_MSG_CREATE=true
|
||||
echo "${EMAIL_SOUHAITE} n'existe pas" | tee -a "${LOG}"
|
||||
echo "${SETUP_MAIL} email add ${EMAIL_SOUHAITE} ${PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
echo "${SETUP_MAIL} quota set ${EMAIL_SOUHAITE} ${QUOTA}G" | tee -a "${CMD_LOGIN}"
|
||||
# LDAP, à tester
|
||||
user=$(echo ${EMAIL_SOUHAITE} | awk -F '@' '{print $1}')
|
||||
domain=$(echo ${EMAIL_SOUHAITE} | awk -F '@' '{print $2}')
|
||||
@@ -406,9 +396,9 @@ nextcloudEnabled: TRUE\n\
|
||||
nextcloudQuota: ${QUOTA} GB\n\
|
||||
mobilizonEnabled: TRUE\n\
|
||||
agoraEnabled: TRUE\n\
|
||||
userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldap_LDAP_ADMIN_PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
fi
|
||||
#userPassword: {CRYPT}\$6\$${pass}\n\n\" | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldap_LDAP_CONFIG_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldap_LDAP_CONFIG_ADMIN_PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
#userPassword: {CRYPT}\$6\$${pass}\n\n\" | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldapServ_LDAP_CONFIG_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldapServ_LDAP_CONFIG_ADMIN_PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
|
||||
CREATE_ORGA_SERVICES=""
|
||||
|
||||
@@ -437,15 +427,16 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1}${NL}* un bureau virtuel pour stocker des fichiers/calendriers/contacts et partager avec vos connaissances : ${httpProto}://${URL_NC}"
|
||||
|
||||
# le user existe t-il déjà sur NC ?
|
||||
curl -o "${TEMP_USER_NC}" -X GET -H 'OCS-APIRequest:true' "${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
|
||||
. $KAZ_KEY_DIR/env-nextcloudServ
|
||||
curl -o "${TEMP_USER_NC}" -X GET -H 'OCS-APIRequest:true' "${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
|
||||
if grep -q "<element>${IDENT_KAZ}</element>" "${TEMP_USER_NC}"; then
|
||||
echo "${IDENT_KAZ} existe déjà sur ${URL_NC}" | tee -a "${LOG}"
|
||||
else
|
||||
|
||||
# on créé l'utilisateur sur NC sauf si c'est le NC général, on ne créé jamais l'utilisateur7
|
||||
if [ ${URL_NC} != "${cloudHost}.${domain}" ]; then
|
||||
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudServ
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
|
||||
-d userid='${IDENT_KAZ}' \
|
||||
-d displayName='${PRENOM} ${NOM}' \
|
||||
-d password='${PASSWORD}' \
|
||||
@@ -458,19 +449,22 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
|
||||
# s'il est admin de son orga, on le met admin
|
||||
if [ "${service[ADMIN_ORGA]}" == "O" -a "${ORGA}" != "" -a "${service[NC_ORGA]}" == "O" ]; then
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${nextcloud_NEXTCLOUD_ADMIN_USER}:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid='admin'" | tee -a "${CMD_INIT}"
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudServ
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid='admin'" | tee -a "${CMD_INIT}"
|
||||
fi
|
||||
|
||||
# faut-il mettre le user NC dans un groupe particulier sur le NC de base ?
|
||||
if [ "${GROUPE_NC_BASE}" != "" -a "${service[NC_BASE]}" == "O" ]; then
|
||||
# ici on travaille à nouveau sur le NC commun, donc on rechoppe les bons mdp
|
||||
. $KAZ_KEY_DIR/env-nextcloudServ
|
||||
# le groupe existe t-il déjà ?
|
||||
curl -o "${TEMP_GROUP_NC}" -X GET -H 'OCS-APIRequest:true' "${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups?search=${GROUPE_NC_BASE}"
|
||||
curl -o "${TEMP_GROUP_NC}" -X GET -H 'OCS-APIRequest:true' "${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups?search=${GROUPE_NC_BASE}"
|
||||
nb=$(grep "<element>${GROUPE_NC_BASE}</element>" "${TEMP_GROUP_NC}" | wc -l)
|
||||
if [ "${nb}" == "0" ];then
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups -d groupid=${GROUPE_NC_BASE}" | tee -a "${CMD_INIT}"
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups -d groupid=${GROUPE_NC_BASE}" | tee -a "${CMD_INIT}"
|
||||
fi
|
||||
# puis attacher le user au groupe
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid=${GROUPE_NC_BASE}" | tee -a "${CMD_INIT}"
|
||||
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${NEXTCLOUD_ADMIN_USER}:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid=${GROUPE_NC_BASE}" | tee -a "${CMD_INIT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -496,7 +490,8 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
|
||||
# TODO : vérif existance user
|
||||
# # le user existe t-il déjà sur le wp ?
|
||||
# curl -o "${TEMP_USER_WP}" -X GET "${httpProto}://${wp_WORDPRESS_ADMIN_USER}:${wp_WORDPRESS_ADMIN_PASSWORD}@${URL_WP_ORGA}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
|
||||
# . $KAZ_BIN_DIR/getPasswords.sh wpServ
|
||||
# curl -o "${TEMP_USER_WP}" -X GET "${httpProto}://${wpServ_WORDPRESS_ADMIN_USER}:${wpServ_WORDPRESS_ADMIN_PASSWORD}@${URL_WP_ORGA}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
|
||||
# nb_user_wp_orga=$(grep "<element>${IDENT_KAZ}</element>" "${TEMP_USER_WP}" | wc -l)
|
||||
# if [ "${nb_user_wp_orga}" != "0" ];then
|
||||
# (
|
||||
@@ -514,7 +509,7 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
# ) | tee -a "${LOG}"
|
||||
#
|
||||
# # on supprime l'utilisateur sur NC.
|
||||
# echo "curl -X DELETE -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
|
||||
# echo "curl -X DELETE -H 'OCS-APIRequest:true' ${httpProto}://admin:${NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
|
||||
# -d userid='${IDENT_KAZ}' \
|
||||
# " | tee -a "${CMD_INIT}"
|
||||
# fi
|
||||
@@ -597,11 +592,11 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
echo "${IDENT_KAZ} existe déjà sur mattermost" | tee -a "${LOG}"
|
||||
else
|
||||
# on créé le compte mattermost
|
||||
echo "docker exec -ti mattermostServ bin/mmctl user create --email ${EMAIL_SOUHAITE} --username ${IDENT_KAZ} --password ${PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl user create --email ${EMAIL_SOUHAITE} --username ${IDENT_KAZ} --password ${PASSWORD}" | tee -a "${CMD_LOGIN}"
|
||||
# et enfin on ajoute toujours le user à l'équipe KAZ et aux 2 channels publiques
|
||||
echo "docker exec -ti mattermostServ bin/mmctl team users add kaz ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -ti mattermostServ bin/mmctl channel users add kaz:une-question--un-soucis ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -ti mattermostServ bin/mmctl channel users add kaz:cafe-du-commerce--ouvert-2424h ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl team users add kaz ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl channel users add kaz:une-question--un-soucis ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl channel users add kaz:cafe-du-commerce--ouvert-2424h ${EMAIL_SOUHAITE}" | tee -a "${CMD_LOGIN}"
|
||||
NB_SERVICES_BASE=$((NB_SERVICES_BASE+1))
|
||||
fi
|
||||
|
||||
@@ -609,10 +604,10 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
# l'équipe existe t-elle déjà ?
|
||||
nb=$(docker exec mattermostServ bin/mmctl team list | grep -w "${EQUIPE_AGORA}" | wc -l)
|
||||
if [ "${nb}" == "0" ];then # non, on la créé en mettant le user en admin de l'équipe
|
||||
echo "docker exec -ti mattermostServ bin/mmctl team create --name ${EQUIPE_AGORA} --display_name ${EQUIPE_AGORA} --email ${EMAIL_SOUHAITE}" --private | tee -a "${CMD_INIT}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl team create --name ${EQUIPE_AGORA} --display_name ${EQUIPE_AGORA} --email ${EMAIL_SOUHAITE}" --private | tee -a "${CMD_INIT}"
|
||||
fi
|
||||
# puis ajouter le user à l'équipe
|
||||
echo "docker exec -ti mattermostServ bin/mmctl team users add ${EQUIPE_AGORA} ${EMAIL_SOUHAITE}" | tee -a "${CMD_INIT}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl team users add ${EQUIPE_AGORA} ${EMAIL_SOUHAITE}" | tee -a "${CMD_INIT}"
|
||||
fi
|
||||
|
||||
if [ -n "${CREATE_ORGA_SERVICES}" ]; then
|
||||
@@ -629,16 +624,16 @@ userPassword: {CRYPT}${pass}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=$
|
||||
# TODO : utiliser liste sur dev également
|
||||
|
||||
# on inscrit le user sur sympa, à la liste infos@${domain_sympa}
|
||||
# docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=https://listes.kaz.sns/sympasoap --trusted_application=SOAP_USER --trusted_application_password=SOAP_PASSWORD --proxy_vars="USER_EMAIL=contact1@kaz.sns" --service=which
|
||||
# docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=https://listes.kaz.sns/sympasoap --trusted_application=SOAP_USER --trusted_application_password=SOAP_PASSWORD --proxy_vars="USER_EMAIL=contact1@kaz.sns" --service=which
|
||||
if [[ "${mode}" = "dev" ]]; then
|
||||
echo "# DEV, on teste l'inscription à sympa"| tee -a "${CMD_SYMPA}"
|
||||
LISTMASTER=$(echo ${sympa_LISTMASTERS} | cut -d',' -f1)
|
||||
echo "docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\"" | tee -a "${CMD_SYMPA}"
|
||||
LISTMASTER=$(echo ${sympaServ_LISTMASTERS} | cut -d',' -f1)
|
||||
echo "docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\"" | tee -a "${CMD_SYMPA}"
|
||||
else
|
||||
echo "# PROD, on inscrit à sympa"| tee -a "${CMD_SYMPA}"
|
||||
LISTMASTER=$(echo ${sympa_LISTMASTERS} | cut -d',' -f1)
|
||||
echo "docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\"" | tee -a "${CMD_SYMPA}"
|
||||
echo "docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SECOURS}\"" | tee -a "${CMD_SYMPA}"
|
||||
LISTMASTER=$(echo ${sympaServ_LISTMASTERS} | cut -d',' -f1)
|
||||
echo "docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\"" | tee -a "${CMD_SYMPA}"
|
||||
echo "docker exec -i sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=add --service_parameters=\"${NL_LIST},${EMAIL_SECOURS}\"" | tee -a "${CMD_SYMPA}"
|
||||
fi
|
||||
|
||||
if [ "${service[ADMIN_ORGA]}" == "O" ]; then
|
||||
@@ -760,7 +755,7 @@ ${MAIL_KAZ}
|
||||
EOF" | tee -a "${CMD_MSG}"
|
||||
|
||||
echo " # on envoie la confirmation d'inscription sur l'agora " | tee -a "${CMD_MSG}"
|
||||
echo "docker exec -ti mattermostServ bin/mmctl post create kaz:Creation-Comptes --message \"${MAIL_KAZ}\"" | tee -a "${CMD_MSG}"
|
||||
echo "docker exec -i mattermostServ bin/mmctl post create kaz:Creation-Comptes --message \"${MAIL_KAZ}\"" | tee -a "${CMD_MSG}"
|
||||
|
||||
# fin des inscriptions
|
||||
done <<< "${ALL_LINES}"
|
||||
|
176
bin/dynDNS.sh
Executable file
176
bin/dynDNS.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
# nohup /kaz/bin/dynDNS.sh &
|
||||
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
# no more export in .env
|
||||
export $(set | grep "domain=")
|
||||
|
||||
cd "${KAZ_ROOT}"
|
||||
export PRG="$0"
|
||||
|
||||
export MYHOST="${site}"
|
||||
|
||||
MYIP_URL="https://kaz.bzh/myip.php"
|
||||
DNS_IP=""
|
||||
|
||||
DELAI_WAIT=10 # DNS occupé
|
||||
DELAI_GET=5 # min entre 2 requêtes
|
||||
DELAI_CHANGE=3600 # propagation 1h
|
||||
DELAI_NO_CHANGE=300 # pas de changement 5 min
|
||||
|
||||
BOLD='\e[1m'
|
||||
RED='\e[0;31m'
|
||||
GREEN='\e[0;32m'
|
||||
YELLOW='\e[0;33m'
|
||||
BLUE='\e[0;34m'
|
||||
MAGENTA='\e[0;35m'
|
||||
CYAN='\e[0;36m'
|
||||
NC='\e[0m' # No Color
|
||||
NL='
|
||||
'
|
||||
|
||||
export VERBOSE=""
|
||||
export SIMU=""
|
||||
|
||||
usage(){
|
||||
echo "Usage: ${PRG} list [sub-domain...]"
|
||||
echo " -h help"
|
||||
echo " -v verbose"
|
||||
echo " -n simulation"
|
||||
exit 1
|
||||
}
|
||||
|
||||
#. "${KAZ_KEY_DIR}/env-gandi"
|
||||
. "${KAZ_KEY_DIR}/env-alwaysdata"
|
||||
|
||||
if [[ -z "${ALWAYSDATA_TOKEN}" ]] ; then
|
||||
echo "no ALWAYSDATA_TOKEN set in ${KAZ_KEY_DIR}/env-alwaysdata"
|
||||
usage
|
||||
fi
|
||||
|
||||
DOMAIN_ID=$(curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" ${ALWAYSDATA_API}/domain/?name=${domain} | jq '.[0].id')
|
||||
|
||||
if [[ -z "${DOMAIN_ID}" ]] ; then
|
||||
echo "no DOMAIN_ID give by alwaysdata"
|
||||
usage
|
||||
fi
|
||||
|
||||
# if [[ -z "${GANDI_KEY}" ]] ; then
|
||||
# echo
|
||||
# echo "no GANDI_KEY set in ${KAZ_KEY_DIR}/env-gandi"
|
||||
# usage
|
||||
# exit
|
||||
# fi
|
||||
|
||||
for ARG in $@
|
||||
do
|
||||
case "${ARG}" in
|
||||
'-h' | '-help' )
|
||||
usage
|
||||
;;
|
||||
'-v' )
|
||||
shift
|
||||
export VERBOSE=":"
|
||||
;;
|
||||
'-n' )
|
||||
shift
|
||||
export SIMU="echo"
|
||||
;;
|
||||
* )
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
log () {
|
||||
echo -e "${BLUE}$(date +%d-%m-%Y-%H-%M-%S)${NC} : $*"
|
||||
}
|
||||
|
||||
simu () {
|
||||
echo -e "${YELLOW}$(date +%d-%m-%Y-%H-%M-%S)${NC} : $*"
|
||||
}
|
||||
|
||||
cmdWait () {
|
||||
#ex gandi
|
||||
#curl -H "authorization: Apikey ${GANDI_KEY}" --connect-timeout 2 -s -D - -o /dev/null "${GANDI_API}" 2>/dev/null
|
||||
curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" --connect-timeout 2 -D - -o /dev/null "${ALWAYSDATA_API}/record/?domain=${DOMAIN_ID}&type=CNAME&name=${TARGET}" 2>/dev/null
|
||||
}
|
||||
|
||||
waitNet () {
|
||||
### wait when error code 503
|
||||
if [[ $(cmdWait | head -n1) != *200* ]]; then
|
||||
log "DNS not available. Please wait..."
|
||||
while [[ $(cmdWait | head -n1) != *200* ]]; do
|
||||
[[ -z "${VERBOSE}" ]] || simu curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" --connect-timeout 2 -D - -o /dev/null "${ALWAYSDATA_API}/record/?domain=${DOMAIN_ID}&type=CNAME&name=${TARGET}"
|
||||
sleep "${DELAI_WAIT}"
|
||||
done
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
getDNS () {
|
||||
# curl -s -X GET "${GANDI_API}/records" -H "authorization: Apikey ${GANDI_KEY}"|
|
||||
# sed "s/,{/\n/g"|
|
||||
# sed 's/.*rrset_name":"\([^"]*\)".*rrset_values":\["\([^"]*\)".*/\1:\2/g'|
|
||||
# grep -e "^${MYHOST}:"|
|
||||
# sed "s/^${MYHOST}://g" |
|
||||
# tr -d '\n\t\r '
|
||||
${SIMU} curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/?domain=${DOMAIN_ID}&type=A&name=${MYHOST}" | jq '.[] | "\(.value)"' | tr -d '"'
|
||||
}
|
||||
|
||||
saveDns () {
|
||||
mkdir -p /root/dns
|
||||
${SIMU} curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/?domain=${DOMAIN_ID}" -o /root/dns/dns_save_$(date +'%Y%m%d%H%M%S')
|
||||
}
|
||||
|
||||
setDNS () {
|
||||
saveDns
|
||||
# curl -s -X POST "${GANDI_API}/records" -H "authorization: Apikey ${GANDI_KEY}" -H 'content-type: application/json' -d '{"rrset_type":"A", "rrset_name":"'${MYHOST}'", "rrset_values":["'${IP}'"]}'
|
||||
${SIMU} curl -s -X POST -d "{\"domain\":\"${DOMAIN_ID}\", \"type\":\"A\", \"name\":\"${MYHOST}\", \"value\":\"${IP}\"}" --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/"
|
||||
|
||||
}
|
||||
|
||||
while :; do
|
||||
sleep "${DELAI_GET}"
|
||||
IP=$(curl -s "${MYIP_URL}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | tr -d '\n\t\r ')
|
||||
if ! [[ ${IP} =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
log "BAB IP ${IP}" ; continue
|
||||
fi
|
||||
|
||||
if [ -z "${DNS_IP}" ]; then
|
||||
# Variable pas encore initialisée
|
||||
waitNet
|
||||
DNS_IP=$(getDNS)
|
||||
|
||||
if [ -z "${DNS_IP}" ]; then
|
||||
# C'est la première fois que le site est en prod
|
||||
log "set ${MYHOST} : ${IP}"
|
||||
setDNS
|
||||
DNS_IP=$(getDNS)
|
||||
log "DNS set ${MYHOST}:${IP} (=${DNS_IP})"
|
||||
sleep "${DELAI_CHANGE}"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${DNS_IP}" != "${IP}" ]; then
|
||||
log "${MYHOST} : ${DNS_IP} must change to ${IP}"
|
||||
# Changement d'adresse
|
||||
waitNet
|
||||
#curl -s -X DELETE "${GANDI_API}/records/${MYHOST}" -H "authorization: Apikey ${GANDI_KEY}"
|
||||
RECORD_ID=$(curl -s -X GET --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/?name=${MYHOST}&type=A&domain=${DOMAIN_ID}" | jq ".[] | select(.name==\"${MYHOST}\").id")
|
||||
${SIMU} curl -s -X DELETE --basic --user "${ALWAYSDATA_TOKEN} account=${ALWAYSDATA_ACCOUNT}:" "${ALWAYSDATA_API}/record/${RECORD_ID}/"
|
||||
setDNS
|
||||
DNS_IP=$(getDNS)
|
||||
log "DNS reset ${MYHOST}:${IP} (=${DNS_IP})"
|
||||
sleep "${DELAI_CHANGE}"
|
||||
else
|
||||
log "OK ${MYHOST}:${DNS_IP} / ${IP}"
|
||||
sleep ${DELAI_NO_CHANGE}
|
||||
fi
|
||||
done
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_ROOT/secret/env-kaz
|
||||
|
||||
PRG=$(basename $0)
|
||||
@@ -23,7 +22,7 @@ PRG=$(basename $0)
|
||||
# TEMPO_ACTION_STOP=2 # Lors de redémarrage avec tempo, on attend après le stop
|
||||
# TEMPO_ACTION_START=60 # Lors de redémarrage avec tempo, avant de reload le proxy
|
||||
|
||||
# DEFAULTCONTAINERS="cloud agora wp wiki office paheko castopod"
|
||||
# DEFAULTCONTAINERS="cloud agora wp wiki office paheko castopod spip"
|
||||
|
||||
# APPLIS_PAR_DEFAUT="tasks calendar contacts bookmarks mail richdocuments external drawio snappymail ransomware_protection" #rainloop richdocumentscode
|
||||
|
||||
@@ -42,16 +41,16 @@ CONTAINERS_TYPES=
|
||||
|
||||
|
||||
declare -A DockerServNames # le nom des containers correspondant
|
||||
DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" )
|
||||
DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}" [paheko]="${pahekoServName}" [castopod]="${castopodServName}" [spip]="${spipServName}" )
|
||||
|
||||
declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container
|
||||
FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" )
|
||||
FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" [castopod]="castopodMedia" [spip]="spip")
|
||||
|
||||
declare -A composeDirs # Le nom du repertoire compose pour le commun
|
||||
composeDirs=( [cloud]="cloud" [agora]="mattermost" [wiki]="dokuwiki" [office]="collabora" [paheko]="paheko" [castopod]="castopod" )
|
||||
composeDirs=( [cloud]="cloud" [agora]="mattermost" [wiki]="dokuwiki" [office]="collabora" [paheko]="paheko" [castopod]="castopod" [spip]="spip")
|
||||
|
||||
declare -A serviceNames # Le nom du du service dans le dockerfile d'orga
|
||||
serviceNames=( [cloud]="cloud" [agora]="agora" [wiki]="dokuwiki" [wp]="wordpress" [office]="collabora" [castopod]="castopod")
|
||||
serviceNames=( [cloud]="cloud" [agora]="agora" [wiki]="dokuwiki" [wp]="wordpress" [office]="collabora" [castopod]="castopod" [spip]="spip")
|
||||
|
||||
declare -A subScripts
|
||||
subScripts=( [cloud]="manageCloud.sh" [agora]="manageAgora.sh" [wiki]="manageWiki.sh" [wp]="manageWp.sh" [castopod]="manageCastopod.sh" )
|
||||
@@ -93,6 +92,7 @@ CONTAINERS_TYPES
|
||||
-office Les collabora
|
||||
-paheko Le paheko
|
||||
-castopod Les castopod
|
||||
-spip Les spip
|
||||
|
||||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité)
|
||||
-I|--install L'initialisation du container
|
||||
@@ -551,6 +551,8 @@ for ARG in "$@"; do
|
||||
CONTAINERS_TYPES="${CONTAINERS_TYPES} paheko" ;;
|
||||
'-pod'|'--pod'|'-castopod'|'--castopod')
|
||||
CONTAINERS_TYPES="${CONTAINERS_TYPES} castopod" ;;
|
||||
'-spip')
|
||||
CONTAINERS_TYPES="${CONTAINERS_TYPES} spip" ;;
|
||||
'-t' )
|
||||
COMMANDS="${COMMANDS} RESTART-COMPOSE" ;;
|
||||
'-r' )
|
||||
|
@@ -7,7 +7,7 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
|
||||
PRG=$(basename $0)
|
||||
|
||||
|
@@ -8,7 +8,7 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ nextcloudServ sympaServ paheko
|
||||
|
||||
VERSION="18-05-2025"
|
||||
PRG=$(basename $0)
|
||||
@@ -24,7 +24,7 @@ URL_PAHEKO="$httpProto://${paheko_API_USER}:${paheko_API_PASSWORD}@kaz-paheko.$(
|
||||
NL_LIST=infos@listes.kaz.bzh
|
||||
URL_AGORA_API=${URL_AGORA}/api/v4
|
||||
EQUIPE=kaz
|
||||
LISTMASTER=$(echo ${sympa_LISTMASTERS} | cut -d',' -f1)
|
||||
LISTMASTER=$(echo ${sympaServ_LISTMASTERS} | cut -d',' -f1)
|
||||
|
||||
|
||||
#### Test du serveur sur lequel s' execute le script ####
|
||||
@@ -47,6 +47,8 @@ rm -rf /tmp/*.json
|
||||
############################################ Fonctions #######################################################
|
||||
|
||||
ExpMail() {
|
||||
|
||||
. $KAZ_KEY_DIR/env-mail
|
||||
MAIL_DEST=$1
|
||||
MAIL_SUJET=$2
|
||||
MAIL_TEXTE=$3
|
||||
@@ -58,6 +60,7 @@ ExpMail() {
|
||||
}
|
||||
|
||||
PostMattermost() {
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
PostM=$1
|
||||
CHANNEL=$2
|
||||
TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/teams/name/${EQUIPE}" | jq .id | sed -e 's/"//g')
|
||||
@@ -91,8 +94,8 @@ searchEmail() {
|
||||
fi
|
||||
done
|
||||
ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=${SEARCH_OBJECT_CLASS})(cn=*${RMAIL}*))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS
|
||||
COMPTEUR_LIGNE=0
|
||||
while read LIGNE
|
||||
@@ -136,7 +139,8 @@ searchEmail() {
|
||||
|
||||
searchMattermost() {
|
||||
#Ici $1 est une adresse email
|
||||
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings auth login $httpProto://$URL_AGORA --name local-server --username $mattermost_user --password $mattermost_pass >/dev/null 2>&1
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings auth login $httpProto://$URL_AGORA --name local-server --username $mattermost_user --password $mattermost_pass >/dev/null 2>&1
|
||||
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings config set ServiceSettings.EnableAPIUserDeletion "true" >/dev/null 2>&1
|
||||
#on créé la list des mails dans mattermost
|
||||
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings user list --all >${TFILE_MAILS_MATTERMOST} 2>/dev/null
|
||||
@@ -182,12 +186,12 @@ infoEmail() {
|
||||
printKazMsg " DETAILS DU COMPTE DANS NEXTCLOUD PRINCIPAL"
|
||||
echo -e ""
|
||||
#TEMP_USER_NC=$(mktemp /tmp/$RACINE.XXXXXXXXX.TEMP_USER_NC)
|
||||
#curl -s -o $TEMP_USER_NC -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=$CHOIX_MAIL
|
||||
#curl -s -o $TEMP_USER_NC -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloudServ_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=$CHOIX_MAIL
|
||||
#cat $TEMP_USER_NC | grep -i "element" | sed -e s/[\<\>\/]//g | sed -e s/element//g
|
||||
echo -ne "${NC}"
|
||||
echo -ne " - Nextcloud enable : "
|
||||
echo -ne "${GREEN}"
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i nextcloudEnabled | cut -c 18-30
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i nextcloudEnabled | cut -c 18-30
|
||||
echo -ne "${NC}"
|
||||
echo -e "${NC} ------------------------------------------------"
|
||||
printKazMsg " DETAILS DU COMPTE DANS LDAP ET PAHEKO"
|
||||
@@ -203,11 +207,11 @@ infoEmail() {
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Quota Mail (Ldap) : "
|
||||
echo -ne "${GREEN}"
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i mailquota | cut -c 11-60
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i mailquota | cut -c 11-60
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Quota Nextcloud (Ldap) : "
|
||||
echo -ne "${GREEN}"
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i nextcloudquota | cut -c 17-60
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i nextcloudquota | cut -c 17-60
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Mail de secours (Paheko ): "
|
||||
echo -ne "${GREEN}"
|
||||
@@ -215,11 +219,11 @@ infoEmail() {
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Mail de secours (Ldap): "
|
||||
echo -ne "${GREEN}"
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i maildeSecours | sed -e 's/mailDeSecours://'
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i maildeSecours | sed -e 's/mailDeSecours://'
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Alias (Ldap) : "
|
||||
echo -ne "${GREEN}"
|
||||
LDAP_ALIAS=$(ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i alias | cut -c 11-60)
|
||||
LDAP_ALIAS=$(ldapsearch -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i alias | cut -c 11-60)
|
||||
echo -ne "${NC}"
|
||||
echo -ne "${GREEN}"
|
||||
for ldap_alias in ${LDAP_ALIAS}
|
||||
@@ -239,8 +243,8 @@ infoEmail() {
|
||||
echo "------------------------------------------------"
|
||||
echo " Alias : ${CHOIX_MAIL} "
|
||||
echo ""
|
||||
for INFOALIAS in $(ldapsearch -H ldap://${LDAP_IP} -x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" -b "${ldap_root}" "(&(objectclass=PostfixBookMailForward)(cn=*${CHOIX_MAIL}*))" mail \
|
||||
for INFOALIAS in $(ldapsearch -H ldap://${LDAP_IP} -x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" -b "${ldap_root}" "(&(objectclass=PostfixBookMailForward)(cn=*${CHOIX_MAIL}*))" mail \
|
||||
| grep ^mail: | sed -e 's/^mail://')
|
||||
do
|
||||
echo -ne "=====> ${GREEN} "
|
||||
@@ -307,12 +311,12 @@ searchDestroy() {
|
||||
fi
|
||||
echo -e "${NC}"
|
||||
echo -e "Recherche de ${GREEN} ${REP_SEARCH_DESTROY} ${NC} dans nextcloud"
|
||||
USER_NEXTCLOUD_SUPPR=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${REP_SEARCH_DESTROY} | grep element | sed -s 's/[ \<\>\/]//g' | sed 's/element//g')
|
||||
USER_NEXTCLOUD_SUPPR=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloudServ_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${REP_SEARCH_DESTROY} | grep element | sed -s 's/[ \<\>\/]//g' | sed 's/element//g')
|
||||
if [ ! -z ${USER_NEXTCLOUD_SUPPR} ]
|
||||
then
|
||||
printKazMsg "le user trouvé est : ${USER_NEXTCLOUD_SUPPR}"
|
||||
echo -e "${RED} Suppresion de ${USER_NEXTCLOUD_SUPPR}"
|
||||
curl -H 'OCS-APIREQUEST: true' -X DELETE $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_SUPPR} >/dev/null 2>&1
|
||||
curl -H 'OCS-APIREQUEST: true' -X DELETE $httpProto://admin:$nextcloudServ_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_SUPPR} >/dev/null 2>&1
|
||||
if [ "$?" -eq "0" ]
|
||||
then
|
||||
printKazMsg "Suppresion ok"
|
||||
@@ -327,7 +331,7 @@ searchDestroy() {
|
||||
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans la liste info de sympa"
|
||||
echo -e "${NC}"
|
||||
echo ""
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${REP_SEARCH_DESTROY}"
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${REP_SEARCH_DESTROY}"
|
||||
echo -e "${NC}"
|
||||
echo ""
|
||||
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le serveur de mail"
|
||||
@@ -344,7 +348,7 @@ searchDestroy() {
|
||||
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le ldap"
|
||||
echo -e "${NC}"
|
||||
echo ""
|
||||
ldapdelete -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" "cn=${REP_SEARCH_DESTROY},ou=users,${ldap_root}"
|
||||
ldapdelete -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" "cn=${REP_SEARCH_DESTROY},ou=users,${ldap_root}"
|
||||
if [ "$?" -eq "0" ]
|
||||
then
|
||||
printKazMsg "Suppresion ok"
|
||||
@@ -377,8 +381,8 @@ gestPassword() {
|
||||
# MAIL_SECOURS=$(jq .results[].email_secours $FICMAILSECOURS | sed -e 's/\"//g')
|
||||
|
||||
MAIL_SECOURS=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=*${CHOIX_MAIL}*))" | grep ^mailDeSecours | sed -e 's/^mailDeSecours: //')
|
||||
if [ "$MAIL_SECOURS" = "" ]
|
||||
then
|
||||
@@ -405,19 +409,19 @@ gestPassword() {
|
||||
fi
|
||||
if [ "$SEARCH_RESET_INPUT" = "o" ] || [ "$SEARCH_RESET_INPUT" = "O" ]
|
||||
then
|
||||
USER_NEXTCLOUD_MODIF=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${COMPTE_A_MODIFIER} | grep element | sed -e 's/[ \<\>\/]//g' -e 's/element//g')
|
||||
USER_NEXTCLOUD_MODIF=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloudServ_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${COMPTE_A_MODIFIER} | grep element | sed -e 's/[ \<\>\/]//g' -e 's/element//g')
|
||||
echo -e "$GREEN Compte à modifier = $RED ${COMPTE_A_MODIFIER} ${NC}"
|
||||
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||
echo -e "$GREEN Compte $RED $(searchMattermost $COMPTE_A_MODIFIER) ${NC}"
|
||||
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NC}"
|
||||
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NC}"
|
||||
docker exec -ti mattermostServ bin/mmctl user change-password $(searchMattermost $COMPTE_A_MODIFIER) -p $PASSWORD >/dev/null 2>&1
|
||||
curl -H 'OCS-APIREQUEST: true' -X PUT $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_MODIF} -d key=password -d value=${PASSWORD} >/dev/null 2>&1
|
||||
curl -H 'OCS-APIREQUEST: true' -X PUT $httpProto://admin:$nextcloudServ_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_MODIF} -d key=password -d value=${PASSWORD} >/dev/null 2>&1
|
||||
pass=$(mkpasswd -m sha512crypt ${PASSWORD})
|
||||
echo -e "\n\ndn: cn=${COMPTE_A_MODIFIER},ou=users,${ldap_root}\n\
|
||||
changeType: modify\n\
|
||||
replace: userPassword\n\
|
||||
userPassword: {CRYPT}${pass}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}"
|
||||
userPassword: {CRYPT}${pass}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}"
|
||||
echo -e "Envoi d'un message dans mattermost pour la modification du mot de passe"
|
||||
docker exec -ti mattermostServ bin/mmctl post create kaz:Creation-Comptes --message "Le mot de passe du compte ${COMPTE_A_MODIFIER} a été modifié" >/dev/null 2>&1
|
||||
if [ $ADRESSE_SEC == "OUI" ]
|
||||
@@ -465,8 +469,8 @@ createMail() {
|
||||
if [[ ${EMAIL_SOUHAITE} =~ ${regexMail} ]]
|
||||
then
|
||||
ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS
|
||||
if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}"
|
||||
then
|
||||
@@ -564,7 +568,7 @@ nextcloudEnabled: ${TRUE_KAZ}\n\
|
||||
nextcloudQuota: ${QUOTA} GB\n\
|
||||
mobilizonEnabled: ${TRUE_KAZ}\n\
|
||||
agoraEnabled: ${TRUE_KAZ}\n\
|
||||
userPassword: {CRYPT}${LDAPPASS}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldap_LDAP_ADMIN_PASSWORD}" >${TFILE_CREATE_MAIL}
|
||||
userPassword: {CRYPT}${LDAPPASS}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}" >${TFILE_CREATE_MAIL}
|
||||
# on execute le fichier avec les données ldap pour créer l' entrée dans l' annuaire
|
||||
bash ${TFILE_CREATE_MAIL} >/dev/null
|
||||
# on colle le compte et le mot de passe dans le fichier
|
||||
@@ -610,12 +614,12 @@ createAlias() {
|
||||
if [[ ${AMAIL} =~ ${regexMail} ]]
|
||||
then
|
||||
RESU_ALIAS=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=PostfixBookMailForward)(cn=*${AMAIL}*))" | grep ^cn | sed -e 's/^cn: //')
|
||||
RESU_ALIAS_IS_MAIL=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=*${AMAIL}*))" cn | grep ^cn | sed -e 's/^cn: //')
|
||||
|
||||
if echo ${RESU_ALIAS} | grep -q "^${AMAIL}$" || echo ${RESU_ALIAS_IS_MAIL} | grep -q "^${AMAIL}$"
|
||||
@@ -690,7 +694,7 @@ changeType: add\n\
|
||||
objectClass: organizationalRole\n\
|
||||
objectClass: PostfixBookMailForward\n\
|
||||
mailAlias: ${AMAIL}\n\
|
||||
${LDAPALAISMAIL}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldap_LDAP_ADMIN_PASSWORD}
|
||||
${LDAPALAISMAIL}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}
|
||||
fait=1
|
||||
printKazMsg "Création de ${AMAIL}"
|
||||
sleep 3
|
||||
@@ -722,8 +726,8 @@ delAlias() {
|
||||
if [[ ${RALIAS} =~ ${regexMail} ]]
|
||||
then
|
||||
RESU_ALIAS=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=PostfixBookMailForward)(cn=${RALIAS}))" cn | grep ^cn | sed -e 's/^cn: //')
|
||||
if [ ! -z ${RESU_ALIAS} ]
|
||||
then
|
||||
@@ -733,7 +737,7 @@ delAlias() {
|
||||
read -p "suppression de ${RESU_ALIAS} ? (o/n): " REPDELALIAS
|
||||
case "${REPDELALIAS}" in
|
||||
o | O )
|
||||
ldapdelete -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldap_LDAP_ADMIN_PASSWORD}" "cn=${RESU_ALIAS},ou=mailForwardings,${ldap_root}"
|
||||
ldapdelete -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${ldapServ_LDAP_ADMIN_PASSWORD}" "cn=${RESU_ALIAS},ou=mailForwardings,${ldap_root}"
|
||||
printKazMsg "suppression ${RESU_ALIAS} effectuée"
|
||||
sleep 2
|
||||
faitdel=1
|
||||
@@ -769,8 +773,8 @@ modifyAlias()
|
||||
ACHANGE=0
|
||||
searchEmail alias
|
||||
LISTE_MAIL_ALIAS=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=PostfixBookMailForward)(cn=*${CHOIX_MAIL}*))" \
|
||||
| grep -i ^mail: | sed -e 's/^mail: /_/' | tr -d [:space:] | sed -s 's/_/ /g')
|
||||
echo "-------------------------------------------------------------------"
|
||||
@@ -845,8 +849,8 @@ modifyAlias()
|
||||
echo "mail: ${key}" >>${FIC_MODIF_LDIF}
|
||||
done
|
||||
echo "-" >>${FIC_MODIF_LDIF}
|
||||
ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-x -w ${ldap_LDAP_ADMIN_PASSWORD} \
|
||||
ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-x -w ${ldapServ_LDAP_ADMIN_PASSWORD} \
|
||||
-f ${FIC_MODIF_LDIF} >/dev/null
|
||||
else
|
||||
printKazMsg "Pas de changement"
|
||||
@@ -872,8 +876,8 @@ updateUser() {
|
||||
for attribut in mailDeSecours mailAlias mailQuota nextcloudQuota
|
||||
do
|
||||
ATTRIB+=([${attribut}]=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldap_LDAP_ADMIN_PASSWORD}" \
|
||||
-x -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${ldapServ_LDAP_ADMIN_PASSWORD}" \
|
||||
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=*${CHOIX_MAIL}*))" \
|
||||
| grep ^"${attribut}": | sed -e 's/^'${attribut}': //' | tr -s '[:space:]' ' ' ))
|
||||
# si l' attribut est mailDesecours on l' attrape et on on le stocke pour pouvoir l' enlever de sympa
|
||||
@@ -1056,15 +1060,15 @@ updateUser() {
|
||||
done
|
||||
cat ${FIC_MODIF_LDIF}
|
||||
sleep 3
|
||||
ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-x -w ${ldap_LDAP_ADMIN_PASSWORD} \
|
||||
ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-x -w ${ldapServ_LDAP_ADMIN_PASSWORD} \
|
||||
-f ${FIC_MODIF_LDIF}
|
||||
if [ ! -z ${MAILDESECOURS} ]
|
||||
then
|
||||
# suppression du mail de secours de la liste infos
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${MAILDESECOURSACTUEL}"
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${MAILDESECOURSACTUEL}"
|
||||
# ajout de l' adresse de la nouvelle adresse de secours
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympa_SOAP_USER} --trusted_application_password=${sympa_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=add --service_parameters="${NL_LIST},${MAILDESECOURS}"
|
||||
docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${sympaServ_SOAP_USER} --trusted_application_password=${sympaServ_SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=add --service_parameters="${NL_LIST},${MAILDESECOURS}"
|
||||
fi
|
||||
updateUser
|
||||
fi
|
||||
|
94
bin/getPasswords.sh
Executable file
94
bin/getPasswords.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
#Ki: Gael
|
||||
#Kan: 2025
|
||||
#Koi: gestion mots de passe
|
||||
|
||||
KAZ_ROOT=/kaz
|
||||
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
QUIET=1
|
||||
|
||||
usage() {
|
||||
echo "getPasswords.sh [OPTIONS] [envname ...]
|
||||
Récupère les variables d'environnement présentes dans /kaz/secret/env-envname et crée des variables à partir de ces noms là.
|
||||
Les variables sont du type envname_NOMVARIABLE=valeur
|
||||
On peut passer plusieurs fichiers env, à partir du moment ou ils sont tous dans le même répertoire !
|
||||
OPTIONS
|
||||
-h|--help Cette aide :-)
|
||||
-n|--simu SIMULATION
|
||||
-d foldername prend les envfiles dans un sous dossier /kaz/secret/foldername/ (pour les orgas !)
|
||||
Les variables seront du type foldername-envname_NOMVARIABLE=valeur
|
||||
-e varname Affiche le contenu d'une variable en particulier
|
||||
"
|
||||
}
|
||||
|
||||
if [ ! -d "${KAZ_KEY_DIR}/tmp" ]; then
|
||||
mkdir "${KAZ_KEY_DIR}/tmp"
|
||||
fi
|
||||
|
||||
for ARG in "$@"; do
|
||||
if [ -n "${DIRECTORYARG}" ]; then # après un -d
|
||||
SUBDIRECTORY="${ARG}"
|
||||
unset DIRECTORYARG
|
||||
elif [ -n "${ECHOVARARG}" ]; then # après un -e
|
||||
VARTOECHO="${ARG}"
|
||||
unset ECHOVARARG
|
||||
QUIET="/dev/null" # pour ne pas avoir d'autres bruits ...
|
||||
else
|
||||
|
||||
case "${ARG}" in
|
||||
'-d' | '--directory' | '-f' | '--folder' | '--foldername')
|
||||
DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;;
|
||||
'-h' | '--help' )
|
||||
usage && exit ;;
|
||||
'-n' | '--simu')
|
||||
SIMU="echo" ;;
|
||||
'-e' | '--echo')
|
||||
ECHOVARARG="ON ATTEND UNE UN NOM DE VARIABLE APRES CA" ;;
|
||||
'-q' )
|
||||
QUIET="/dev/null" ;;
|
||||
*)
|
||||
ENVFILES="${ENVFILES} ${ARG%}";;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
|
||||
getVars () {
|
||||
# $1 : filename
|
||||
grep "^[^#]*=" $1 | sed 's/\([^=]*\).*/\1/' | sort -u
|
||||
}
|
||||
|
||||
NB_FILES=$(echo "${ENVFILES}" | wc -w )
|
||||
|
||||
if [[ $NB_FILES = 0 ]]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for ENVFILE in $ENVFILES; do
|
||||
FILENAME="$KAZ_KEY_DIR/env-$ENVFILE"
|
||||
VARSUFFIX="$ENVFILE"_
|
||||
if [ -n "${SUBDIRECTORY}" ]; then
|
||||
FILENAME="$KAZ_KEY_DIR/orgas/$SUBDIRECTORY/env-$ENVFILE"
|
||||
VARSUFFIX="${SUBDIRECTORY}-${ENVFILE}_"
|
||||
fi
|
||||
|
||||
if ! [ -f "$FILENAME" ]; then
|
||||
echo "$FILENAME does not exist." >& $QUIET
|
||||
continue
|
||||
fi
|
||||
|
||||
. $FILENAME # on récupère les variables
|
||||
vars=$(getVars $FILENAME)
|
||||
for var in $vars; do
|
||||
$SIMU declare $VARSUFFIX$var=${!var}
|
||||
unset $var
|
||||
done
|
||||
unset FILENAME VARSUFFIX vars
|
||||
done
|
||||
|
||||
if [ -n "$VARTOECHO" ]; then
|
||||
echo ${!VARTOECHO}
|
||||
fi
|
||||
|
||||
unset ENVFILES KAZ_ROOT SUBDIRECTORY SIMU QUIET NB_FILES VARTOECHO
|
@@ -214,7 +214,6 @@ fi
|
||||
|
||||
if [ ! -d "${KAZ_ROOT}/secret" ]; then
|
||||
rsync -a "${KAZ_ROOT}/secret.tmpl/" "${KAZ_ROOT}/secret/"
|
||||
. "${KAZ_ROOT}/secret/SetAllPass.sh"
|
||||
"${KAZ_BIN_DIR}/secretGen.sh"
|
||||
"${KAZ_BIN_DIR}/updateDockerPassword.sh"
|
||||
"${KAZ_BIN_DIR}/createDBUsers.sh"
|
||||
fi
|
||||
|
@@ -1,11 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
. $KAZ_BIN_DIR/getPasswords.sh paheko
|
||||
|
||||
URL_PAHEKO="$httpProto://${paheko_API_USER}:${paheko_API_PASSWORD}@kaz-paheko.$(echo $domain)"
|
||||
|
||||
@@ -76,6 +78,10 @@ Int_paheko_Action() {
|
||||
do
|
||||
eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_PAHEKO_IDFILE})
|
||||
done
|
||||
################################
|
||||
# test du mail valide en $domain
|
||||
echo ${email} | grep -i "${domain}" || { echo "le mail ${email} n'est pas en ${domain}"; exit ;}
|
||||
################################
|
||||
#comme tout va bien on continue
|
||||
#on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés
|
||||
# si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique
|
||||
@@ -158,11 +164,11 @@ Int_paheko_Action() {
|
||||
echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$paheko;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER}
|
||||
done
|
||||
else
|
||||
echo "Rien à créer"
|
||||
[ "$OPTION" = "silence" ] || echo "Rien à créer"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
#Int_paheko_Action "A créer" "silence"
|
||||
Int_paheko_Action "A créer"
|
||||
# Main
|
||||
Int_paheko_Action "A créer" "silence"
|
||||
exit 0
|
||||
|
||||
|
@@ -7,6 +7,5 @@ setKazVars
|
||||
FILE_LDIF=/home/sauve/ldap.ldif
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
docker exec -u 0 -i ${ldapServName} slapcat -F /opt/bitnami/openldap/etc/slapd.d -b ${ldap_root} | gzip >${FILE_LDIF}.gz
|
||||
|
@@ -5,7 +5,7 @@ KAZ_ROOT=/kaz
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ
|
||||
|
||||
LDAP_IP=$(docker inspect -f '{{.NetworkSettings.Networks.ldapNet.IPAddress}}' ldapServ)
|
||||
|
||||
@@ -20,4 +20,4 @@ EDITOR=${EDITOR:-vi}
|
||||
EDITOR=${EDITOR:-vi}
|
||||
export EDITOR=${EDITOR}
|
||||
|
||||
ldapvi -h $LDAP_IP -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -w ${ldap_LDAP_ADMIN_PASSWORD} --discover
|
||||
ldapvi -h $LDAP_IP -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -w ${ldapServ_LDAP_ADMIN_PASSWORD} --discover
|
||||
|
@@ -8,7 +8,7 @@ KAZ_ROOT=/kaz
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ paheko
|
||||
|
||||
ACCOUNTS=/kaz/dockers/postfix/config/postfix-accounts.cf
|
||||
|
||||
@@ -126,7 +126,7 @@ replace: agoraEnabled\n\
|
||||
agoraEnabled: TRUE\n\
|
||||
-\n\
|
||||
replace: mobilizonEnabled\n\
|
||||
mobilizonEnabled: TRUE\n\n" | tee /tmp/ldap/${mail}.ldif | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldap_LDAP_ADMIN_PASSWORD}
|
||||
mobilizonEnabled: TRUE\n\n" | tee /tmp/ldap/${mail}.ldif | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}
|
||||
done
|
||||
|
||||
#replace: nextcloudEnabled\n\
|
||||
@@ -164,7 +164,7 @@ do
|
||||
echo -e "dn: cn=${mail},ou=users,${ldap_root}\n\
|
||||
changeType: modify
|
||||
replace: mailAlias\n\
|
||||
$LIST\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldap_LDAP_ADMIN_PASSWORD}
|
||||
$LIST\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}
|
||||
else
|
||||
echo "Alias vers un mail externe, go fichier"
|
||||
echo $line >> ${ALIASES_WITHLDAP}
|
||||
@@ -185,7 +185,7 @@ replace: mailAlias\n\
|
||||
mailAlias: ${src}\n\
|
||||
-\n\
|
||||
replace: mail\n\
|
||||
mail: ${dst}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldap_LDAP_ADMIN_PASSWORD}
|
||||
mail: ${dst}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}
|
||||
fi
|
||||
else
|
||||
echo "Forward vers plusieurs adresses, on met dans le fichier"
|
||||
@@ -215,7 +215,7 @@ replace: mailAlias\n\
|
||||
mailAlias: ${src}\n\
|
||||
-\n\
|
||||
replace: mail\n\
|
||||
${LIST}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldap_LDAP_ADMIN_PASSWORD}
|
||||
${LIST}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -x -w ${ldapServ_LDAP_ADMIN_PASSWORD}
|
||||
|
||||
fi
|
||||
done
|
||||
|
@@ -5,16 +5,16 @@ KAZ_ROOT=/kaz
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ nextcloudDB
|
||||
|
||||
LDAP_IP=$(docker inspect -f '{{.NetworkSettings.Networks.ldapNet.IPAddress}}' ldapServ)
|
||||
|
||||
docker exec -i nextcloudDB mysql --user=${nextcloud_MYSQL_USER} --password=${nextcloud_MYSQL_PASSWORD} ${nextcloud_MYSQL_DATABASE} <<< "select uid from oc_users;" > /tmp/nc_users.txt
|
||||
docker exec -i nextcloudDB mysql --user=${nextcloudDB_MYSQL_USER} --password=${nextcloudDB_MYSQL_PASSWORD} ${nextcloudDB_MYSQL_DATABASE} <<< "select uid from oc_users;" > /tmp/nc_users.txt
|
||||
|
||||
OLDIFS=${IFS}
|
||||
IFS=$'\n'
|
||||
for line in `cat /tmp/nc_users.txt`; do
|
||||
result=$(ldapsearch -h $LDAP_IP -D "cn=${ldap_LDAP_ADMIN_USERNAME},${ldap_root}" -w ${ldap_LDAP_ADMIN_PASSWORD} -b $ldap_root -x "(identifiantKaz=${line})" | grep numEntries)
|
||||
result=$(ldapsearch -h $LDAP_IP -D "cn=${ldapServ_LDAP_ADMIN_USERNAME},${ldap_root}" -w ${ldapServ_LDAP_ADMIN_PASSWORD} -b $ldap_root -x "(identifiantKaz=${line})" | grep numEntries)
|
||||
echo "${line} ${result}" | grep -v "numEntries: 1" | grep -v "^uid"
|
||||
done
|
||||
IFS=${OLDIFS}
|
||||
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
#GLOBAL VARS
|
||||
PRG=$(basename $0)
|
||||
@@ -83,7 +82,8 @@ Init(){
|
||||
[ $? -ne 0 ] && printKazError "$DockerServName ne parvient pas à démarrer correctement : impossible de terminer l'install" && return 1 >& $QUIET
|
||||
|
||||
# creation compte admin
|
||||
${SIMU} curl -i -d "{\"email\":\"${mattermost_MM_ADMIN_EMAIL}\",\"username\":\"${mattermost_user}\",\"password\":\"${mattermost_pass}\",\"allow_marketing\":true}" "${MATTER_URL}/api/v4/users"
|
||||
_getPasswords
|
||||
${SIMU} curl -i -d "{\"email\":\"${mattermostServ_MM_ADMIN_EMAIL}\",\"username\":\"${mattermost_user}\",\"password\":\"${mattermost_pass}\",\"allow_marketing\":true}" "${MATTER_URL}/api/v4/users"
|
||||
|
||||
MM_TOKEN=$(_getMMToken ${MATTER_URL})
|
||||
|
||||
@@ -98,12 +98,13 @@ Version(){
|
||||
|
||||
_getMMToken(){
|
||||
#$1 MATTER_URL
|
||||
_getPasswords
|
||||
${SIMU} curl -i -s -d "{\"login_id\":\"${mattermost_user}\",\"password\":\"${mattermost_pass}\"}" "${1}/api/v4/users/login" | grep 'token' | sed 's/token:\s*\(.*\)\s*/\1/' | tr -d '\r'
|
||||
}
|
||||
|
||||
PostMessage(){
|
||||
printKazMsg "Envoi à $TEAM : $MESSAGE" >& $QUIET
|
||||
|
||||
_getPasswords
|
||||
${SIMU} docker exec -ti "${DockerServName}" bin/mmctl auth login "${MATTER_URL}" --name local-server --username ${mattermost_user} --password ${mattermost_pass}
|
||||
${SIMU} docker exec -ti "${DockerServName}" bin/mmctl post create "${TEAM}" --message "${MESSAGE}"
|
||||
}
|
||||
@@ -113,6 +114,16 @@ MmctlCommand(){
|
||||
${SIMU} docker exec -u 33 "$DockerServName" bin/mmctl $1
|
||||
}
|
||||
|
||||
_getPasswords(){
|
||||
# récupération des infos du compte admin
|
||||
if [ -n "$AGORACOMMUN" ] ; then
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
. $KAZ_BIN_DIR/getPasswords.sh mattermostServ
|
||||
else
|
||||
. $KAZ_KEY_DIR/orgas/${ORGA}/env-mattermostAdmin
|
||||
. $KAZ_BIN_DIR/getPasswords.sh -d ${ORGA} mattermostServ
|
||||
fi
|
||||
}
|
||||
|
||||
########## Main #################
|
||||
for ARG in "$@"; do
|
||||
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
#GLOBAL VARS
|
||||
PRG=$(basename $0)
|
||||
@@ -63,11 +62,12 @@ Init(){
|
||||
cookies=$(curl -c - ${POD_URL})
|
||||
CSRF_TOKEN=$(curl --cookie <(echo "$cookies") ${POD_URL}/cp-install | grep "csrf_test_name" | sed "s/.*value=.//" | sed "s/.>//")
|
||||
|
||||
_getPasswords
|
||||
#echo ${CSRF_TOKEN}
|
||||
${SIMU} curl --cookie <(echo "$cookies") -X POST \
|
||||
-d "username=${castopod_ADMIN_USER}" \
|
||||
-d "password=${castopod_ADMIN_PASSWORD}" \
|
||||
-d "email=${castopod_ADMIN_MAIL}" \
|
||||
-d "username=${ADMIN_USER}" \
|
||||
-d "password=${ADMIN_PASSWORD}" \
|
||||
-d "email=${ADMIN_MAIL}" \
|
||||
-d "csrf_test_name=${CSRF_TOKEN}" \
|
||||
"${POD_URL}/cp-install/create-superadmin"
|
||||
|
||||
@@ -78,7 +78,13 @@ Version(){
|
||||
echo "Version $DockerServName : ${GREEN}${VERSION}${NC}"
|
||||
}
|
||||
|
||||
|
||||
_getPasswords(){
|
||||
if [ -n "$CASTOPOD_COMMUN" ]; then
|
||||
. $KAZ_KEY_DIR/env-castopodAdmin
|
||||
else
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-castopodAdmin
|
||||
fi
|
||||
}
|
||||
|
||||
########## Main #################
|
||||
for ARG in "$@"; do
|
||||
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
#GLOBAL VARS
|
||||
PRG=$(basename $0)
|
||||
@@ -16,7 +15,7 @@ availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list"))
|
||||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/}
|
||||
|
||||
# CLOUD
|
||||
APPLIS_PAR_DEFAUT="tasks calendar contacts bookmarks mail richdocuments external drawio snappymail ransomware_protection" #rainloop richdocumentscode
|
||||
APPLIS_PAR_DEFAUT="tasks calendar contacts bookmarks mail richdocuments external drawio ransomware_protection" #rainloop richdocumentscode
|
||||
QUIET="1"
|
||||
ONNAS=
|
||||
|
||||
@@ -32,7 +31,7 @@ OPTIONS
|
||||
-n|--simu SIMULATION
|
||||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes)
|
||||
--nas L'orga se trouve sur le NAS !
|
||||
|
||||
|
||||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité)
|
||||
-I|--install L'initialisation du cloud
|
||||
-v|--version Donne la version du cloud et signale les MàJ
|
||||
@@ -75,7 +74,7 @@ Init(){
|
||||
CONF_FILE="${NAS_VOL}/orga_${ORGA}-cloudConfig/_data/config.php"
|
||||
fi
|
||||
|
||||
firstInstall "$CLOUD_URL" "$CONF_FILE" " NextCloud de $NOM"
|
||||
firstInstall "$CLOUD_URL" "$CONF_FILE" "$NOM"
|
||||
updatePhpConf "$CONF_FILE"
|
||||
InstallApplis
|
||||
echo "${CYAN} *** Paramétrage richdocuments pour $ORGA${NC}" >& $QUIET
|
||||
@@ -100,25 +99,38 @@ firstInstall(){
|
||||
# $2 phpConfFile
|
||||
# $3 orga
|
||||
if ! grep -q "'installed' => true," "$2" 2> /dev/null; then
|
||||
printKazMsg "\n *** Premier lancement de $3" >& $QUIET
|
||||
|
||||
printKazMsg "\n *** Premier lancement nextcloud $3" >& $QUIET
|
||||
_getPasswords
|
||||
|
||||
${SIMU} waitUrl "$1"
|
||||
|
||||
${SIMU} curl -X POST \
|
||||
-d "install=true" \
|
||||
-d "adminlogin=${nextcloud_NEXTCLOUD_ADMIN_USER}" \
|
||||
-d "adminpass=${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}" \
|
||||
-d "adminlogin=${NEXTCLOUD_ADMIN_USER}" \
|
||||
-d "adminpass=${NEXTCLOUD_ADMIN_PASSWORD}" \
|
||||
-d "directory=/var/www/html/data" \
|
||||
-d "dbtype=mysql" \
|
||||
-d "dbuser=${nextcloud_MYSQL_USER}" \
|
||||
-d "dbpass=${nextcloud_MYSQL_PASSWORD}" \
|
||||
-d "dbname=${nextcloud_MYSQL_DATABASE}" \
|
||||
-d "dbhost=${nextcloud_MYSQL_HOST}" \
|
||||
-d "dbuser=${MYSQL_USER}" \
|
||||
-d "dbpass=${MYSQL_PASSWORD}" \
|
||||
-d "dbname=${MYSQL_DATABASE}" \
|
||||
-d "dbhost=${MYSQL_HOST}" \
|
||||
-d "install-recommended-apps=true" \
|
||||
"$1"
|
||||
fi
|
||||
}
|
||||
|
||||
_getPasswords(){
|
||||
if [ -n "$CLOUDCOMMUN" ]; then
|
||||
. $KAZ_KEY_DIR/env-nextcloudServ
|
||||
. $KAZ_KEY_DIR/env-nextcloudDB
|
||||
else
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudServ
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudDB
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
setOfficeUrl(){
|
||||
# Did le 25 mars les offices sont tous normalisé sur les serveurs https://${site}-${officeHost}.${domain}
|
||||
#OFFICE_URL="https://${officeHost}.${domain}"
|
||||
@@ -131,13 +143,14 @@ setOfficeUrl(){
|
||||
}
|
||||
|
||||
initLdap(){
|
||||
. $KAZ_BIN_DIR/getPasswords.sh ldapServ
|
||||
# $1 Nom du cloud
|
||||
echo "${CYAN} *** Installation LDAP pour $1${NC}" >& $QUIET
|
||||
occCommand "app:enable user_ldap" "${DockerServName}"
|
||||
occCommand "ldap:delete-config s01" "${DockerServName}"
|
||||
occCommand "ldap:create-empty-config" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapAgentName cn=cloud,ou=applications,${ldap_root}" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapAgentPassword ${ldap_LDAP_CLOUD_PASSWORD}" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapAgentPassword ${ldapServ_LDAP_CLOUD_PASSWORD}" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapBase ${ldap_root}" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapBaseGroups ${ldap_root}" "${DockerServName}"
|
||||
occCommand "ldap:set-config s01 ldapBaseUsers ou=users,${ldap_root}" "${DockerServName}"
|
||||
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
#GLOBAL VARS
|
||||
PRG=$(basename $0)
|
||||
@@ -55,15 +54,7 @@ Init(){
|
||||
PLG_DIR="${VOL_PREFIX}wikiPlugins/_data"
|
||||
CONF_DIR="${VOL_PREFIX}wikiConf/_data"
|
||||
|
||||
# Gael, j'avais ajouté ça mais j'ai pas test alors je laisse comme avant ...
|
||||
# A charge au prochain qui monte un wiki de faire qque chose
|
||||
#WIKI_ROOT="${dokuwiki_WIKI_ROOT}"
|
||||
#WIKI_EMAIL="${dokuwiki_WIKI_EMAIL}"
|
||||
#WIKI_PASS="${dokuwiki_WIKI_PASSWORD}"
|
||||
|
||||
WIKI_ROOT=Kaz
|
||||
WIKI_EMAIL=wiki@kaz.local
|
||||
WIKI_PASS=azerty
|
||||
. $KAZ_BIN_DIR/getPasswords.sh dokuwiki
|
||||
|
||||
${SIMU} checkDockerRunning "${DockerServName}" "${NOM}" || exit
|
||||
|
||||
@@ -77,11 +68,11 @@ Init(){
|
||||
-d "l=fr" \
|
||||
-d "d[title]=${NOM}" \
|
||||
-d "d[acl]=true" \
|
||||
-d "d[superuser]=${WIKI_ROOT}" \
|
||||
-d "d[superuser]=${dokuwiki_WIKI_ROOT}" \
|
||||
-d "d[fullname]=Admin"\
|
||||
-d "d[email]=${WIKI_EMAIL}" \
|
||||
-d "d[password]=${WIKI_PASS}" \
|
||||
-d "d[confirm]=${WIKI_PASS}" \
|
||||
-d "d[email]=${dokuwiki_WIKI_EMAIL}" \
|
||||
-d "d[password]=${dokuwiki_WIKI_PASSWORD}" \
|
||||
-d "d[confirm]=${dokuwiki_WIKI_PASSWORD}" \
|
||||
-d "d[policy]=1" \
|
||||
-d "d[allowreg]=false" \
|
||||
-d "d[license]=0" \
|
||||
|
@@ -7,7 +7,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
#GLOBAL VARS
|
||||
PRG=$(basename $0)
|
||||
@@ -61,11 +60,11 @@ Init(){
|
||||
echo "\n *** Premier lancement de WP" >& $QUIET
|
||||
|
||||
${SIMU} waitUrl "${WP_URL}"
|
||||
|
||||
. $KAZ_BIN_DIR/getPasswords.sh wpServ
|
||||
${SIMU} curl -X POST \
|
||||
-d "user_name=${wp_WORDPRESS_ADMIN_USER}" \
|
||||
-d "admin_password=${wp_WORDPRESS_ADMIN_PASSWORD}" \
|
||||
-d "admin_password2=${wp_WORDPRESS_ADMIN_PASSWORD}" \
|
||||
-d "user_name=${wpServ_WORDPRESS_ADMIN_USER}" \
|
||||
-d "admin_password=${wpServ_WORDPRESS_ADMIN_PASSWORD}" \
|
||||
-d "admin_password2=${wpServ_WORDPRESS_ADMIN_PASSWORD}" \
|
||||
-d "pw_weak=true" \
|
||||
-d "admin_email=admin@kaz.bzh" \
|
||||
-d "blog_public=0" \
|
||||
|
68
bin/migGestionMotsDePasse.sh
Normal file
68
bin/migGestionMotsDePasse.sh
Normal file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-mattermostAdmin
|
||||
touch $newenvfile
|
||||
echo "mattermost_user=$mattermost_user" >> $newenvfile
|
||||
echo "mattermost_pass=$mattermost_pass" >> $newenvfile
|
||||
echo "mattermost_token=$mattermost_token" >> $newenvfile
|
||||
|
||||
|
||||
echo "EMAIL_CONTACT=$EMAIL_CONTACT" >> $DOCKERS_ENV
|
||||
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-paheko
|
||||
touch $newenvfile
|
||||
echo "API_USER=$paheko_API_USER" >> $newenvfile
|
||||
echo "API_PASSWORD=$paheko_API_PASSWORD" >> $newenvfile
|
||||
|
||||
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-mail
|
||||
touch $newenvfile
|
||||
echo "service_mail=$service_mail" >> $newenvfile
|
||||
echo "service_password=$service_password" >> $newenvfile
|
||||
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-borg
|
||||
# touch $newenvfile à priori il existe déjà
|
||||
echo "BORG_REPO=$BORG_REPO" >> $newenvfile
|
||||
echo "BORG_PASSPHRASE=$BORG_PASSPHRASE" >> $newenvfile
|
||||
echo "VOLUME_SAUVEGARDES=$VOLUME_SAUVEGARDES" >> $newenvfile
|
||||
echo "MAIL_RAPPORT=$MAIL_RAPPORT" >> $newenvfile
|
||||
echo "BORGMOUNT=$BORGMOUNT" >> $newenvfile
|
||||
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-traefik
|
||||
touch $newenvfile
|
||||
echo "DASHBOARD_USER=$traefik_DASHBOARD_USER" >> $newenvfile
|
||||
echo "DASHBOARD_PASSWORD=$traefik_DASHBOARD_PASSWORD" >> $newenvfile
|
||||
|
||||
|
||||
|
||||
#####################
|
||||
# Castopod
|
||||
# A COPIER DANS UN FICHIER DE CONF !! castopodAdmin
|
||||
|
||||
newenvfile=$KAZ_KEY_DIR/env-castopodAdmin
|
||||
touch $newenvfile
|
||||
echo "ADMIN_USER=$castopod_ADMIN_USER" >> $newenvfile
|
||||
echo "ADMIN_MAIL=$castopod_ADMIN_MAIL" >> $newenvfile
|
||||
echo "ADMIN_PASSWORD=$castopod_ADMIN_PASSWORD" >> $newenvfile
|
||||
|
||||
|
||||
# creation dossier pour les env des orgas
|
||||
mkdir $KAZ_KEY_DIR/orgas
|
||||
orgasLong=($(getList "${KAZ_CONF_DIR}/container-orga.list"))
|
||||
ORGAS=${orgasLong[*]//-orga/}
|
||||
for orga in ${ORGAS};do
|
||||
mkdir $KAZ_KEY_DIR/orgas/$orga
|
||||
cp $KAZ_KEY_DIR/env-{castopod{Admin,DB,Serv},mattermost{DB,Serv},nextcloud{DB,Serv},spip{DB,Serv},wp{DB,Serv}} $KAZ_KEY_DIR/orgas/$orga
|
||||
done
|
||||
|
||||
echo "C'est parfait, vous pouvez git pull puis supprimer SetAllPass.sh"
|
@@ -9,7 +9,6 @@ KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_ROOT/secret/env-kaz
|
||||
|
||||
|
||||
@@ -133,6 +132,7 @@ for orgaLong in ${Orgas}; do
|
||||
${SIMU} rsync -aAhHX --info=progress2 --delete "${DOCK_VOL_PAHEKO_ORGA}/${orgaCourt}" -e "ssh -p 2201" root@${SITE_DST}.${domain}:"${DOCK_VOL_PAHEKO_ORGA}/"
|
||||
fi
|
||||
${SIMU} rsync -aAhHX --info=progress2 --delete ${KAZ_COMP_DIR}/${orgaLong} -e "ssh -p 2201" root@${SITE_DST}.${domain}:${KAZ_COMP_DIR}/
|
||||
${SIMU} rsync -aAhHX --info=progress2 --delete ${KAZ_KEY_DIR}/orgas/${orgaCourt} -e "ssh -p 2201" root@${SITE_DST}.${domain}:${KAZ_KEY_DIR}/orgas/${orgaCourt}
|
||||
${SIMU} ssh -p 2201 root@${SITE_DST}.${domain} "grep -q '^${orgaLong}\$' /kaz/config/container-orga.list || echo ${orgaLong} >> /kaz/config/container-orga.list"
|
||||
${SIMU} ssh -p 2201 root@${SITE_DST}.${domain} ${KAZ_COMP_DIR}/${orgaLong}/init-volume.sh
|
||||
|
||||
|
@@ -20,8 +20,7 @@ ${SIMU} "${CV1}" stop orga
|
||||
${SIMU} "${CV1}" stop
|
||||
|
||||
${SIMU} rsync "${EV1}/dockers.env" "${EV2}/"
|
||||
${SIMU} rsync "${SV1}/SetAllPass.sh" "${SV2}/"
|
||||
${SIMU} "${BV2}/updateDockerPassword.sh"
|
||||
${SIMU} rsync "${SV1}/" "${SV2}/"
|
||||
|
||||
# XXX ? rsync /kaz/secret/allow_admin_ip /kaz-git/secret/allow_admin_ip
|
||||
|
||||
|
41
bin/nettoyer_acme_json_certifs.sh
Executable file
41
bin/nettoyer_acme_json_certifs.sh
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
#date: 23/04/2025
|
||||
#ki: fab
|
||||
#koi: supprimer de acme.json les certificats LE devenus inutiles
|
||||
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
|
||||
FILE_ACME_ORI="/var/lib/docker/volumes/traefik_letsencrypt/_data/acme.json"
|
||||
FILE_ACME="/tmp/acme.json"
|
||||
FILE_URL=$(mktemp)
|
||||
FILE_ACME_TMP=$(mktemp)
|
||||
|
||||
#l'ip du serveur:
|
||||
#marche po pour les machines hébergée chez T.C... :( on récupère l'IP dans config/dockers.env
|
||||
#MAIN_IP=$(curl ifconfig.me)
|
||||
|
||||
#DANGER: IP depuis config/dockers.env ne fonctionne pas pour les domaines hors *.kaz.bzh (ex:radiokalon.fr)
|
||||
|
||||
#sauvegarde
|
||||
cp $FILE_ACME_ORI $FILE_ACME
|
||||
cp $FILE_ACME "$FILE_ACME"_$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
#je cherche toutes les url
|
||||
jq -r '.letsencrypt.Certificates[].domain.main' $FILE_ACME > $FILE_URL
|
||||
|
||||
while read -r url; do
|
||||
#echo "Traitement de : $url"
|
||||
nb=$(dig $url | grep $MAIN_IP | wc -l)
|
||||
if [ "$nb" -eq 0 ]; then
|
||||
#absent, on vire de acme.json
|
||||
echo "on supprime "$url
|
||||
jq --arg url "$url" 'del(.letsencrypt.Certificates[] | select(.domain.main == $url))' $FILE_ACME > $FILE_ACME_TMP
|
||||
mv -f $FILE_ACME_TMP $FILE_ACME
|
||||
fi
|
||||
done < "$FILE_URL"
|
||||
|
||||
echo "si satisfait, remettre "$FILE_ACME" dans "$FILE_ACME_ORI
|
@@ -4,12 +4,12 @@ KAZ_ROOT=/kaz
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
URL_AGORA=https://$matterHost.$domain/api/v4
|
||||
EQUIPE=kaz
|
||||
|
||||
PostMattermost() {
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
PostM=$1
|
||||
CHANNEL=$2
|
||||
TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA}/teams/name/${EQUIPE}" | jq .id | sed -e 's/"//g')
|
||||
|
@@ -6,7 +6,6 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
URL_AGORA=$(echo $matterHost).$(echo $domain)
|
||||
MAX_QUEUE=50
|
||||
@@ -15,6 +14,8 @@ OLDIFS=$IFS
|
||||
IFS=" "
|
||||
COUNT_MAILQ=$(docker exec -t mailServ mailq | tail -n1 | gawk '{print $5}')
|
||||
|
||||
# récupération mots de passes
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
docker exec ${mattermostServName} bin/mmctl --suppress-warnings auth login $httpProto://$URL_AGORA --name local-server --username $mattermost_user --password $mattermost_pass >/dev/null 2>&1
|
||||
|
||||
if [ "${COUNT_MAILQ}" -gt "${MAX_QUEUE}" ]; then
|
||||
|
@@ -1,7 +1,6 @@
|
||||
#!/bin/bash
|
||||
# --------------------------------------------------------------------------------------
|
||||
# Didier
|
||||
#
|
||||
# Script de sauvegarde avec BorgBackup
|
||||
# la commande de creation du dépot est : borg init --encryption=repokey /mnt/backup-nas1/BorgRepo
|
||||
# la conf de borg est dans /root/.config/borg
|
||||
@@ -18,7 +17,7 @@ KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_BIN_DIR/getPasswords.sh borg
|
||||
|
||||
VERSION="V-10-03-2025"
|
||||
PRG=$(basename $0)
|
||||
|
167
bin/secretGen.sh
167
bin/secretGen.sh
@@ -3,70 +3,137 @@
|
||||
KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. $DOCKERS_ENV
|
||||
|
||||
cd "${KAZ_ROOT}"
|
||||
|
||||
NEW_DIR="secret"
|
||||
TMPL_DIR="secret.tmpl"
|
||||
SORTIESTANDARD=1
|
||||
DIR=$KAZ_KEY_DIR
|
||||
ORGA=
|
||||
|
||||
if [ ! -d "${NEW_DIR}/" ]; then
|
||||
rsync -a "${TMPL_DIR}/" "${NEW_DIR}/"
|
||||
fi
|
||||
|
||||
NEW_FILE="${NEW_DIR}/SetAllPass-new.sh"
|
||||
TMPL_FILE="${NEW_DIR}/SetAllPass.sh"
|
||||
usage() {
|
||||
echo "${PRG} [OPTIONS] [filename ...]
|
||||
# PARCOURE LES ENV FILE ET REMPLIT LES --clean_val-- qui n'ont pas été complétés.
|
||||
on cherche des
|
||||
@@pass@@***@@p@@ -> on génère un mot de passe 16car (les *** permettent d'identifier le mot de passe, s'il doit être utilisé ailleurs)
|
||||
@@db@@***@@d@@ -> on génère une base de données (pareil identifié par ***)
|
||||
@@user@@***@@u@@ -> on génère un user
|
||||
@@token@@***@@t@@ -> on génère un token
|
||||
@@globalvar@@***@@gv@@ -> on cherche la variable globale ***
|
||||
@@crossvar@@envname_varname@@cv@@ -> on retrouve la variable dans les envfiles
|
||||
|
||||
while read line ; do
|
||||
if [[ "${line}" =~ ^# ]] || [ -z "${line}" ] ; then
|
||||
echo "${line}"
|
||||
continue
|
||||
fi
|
||||
if [[ "${line}" =~ "--clean_val--" ]] ; then
|
||||
case "${line}" in
|
||||
*jirafeau_DATA_DIR*)
|
||||
JIRAFEAU_DIR=$(getValInFile "${DOCKERS_ENV}" "jirafeauDir")
|
||||
[ -z "${JIRAFEAU_DIR}" ] &&
|
||||
echo "${line}" ||
|
||||
sed "s%\(.*\)--clean_val--\(.*\)%\1${JIRAFEAU_DIR}\2%" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
*DATABASE*)
|
||||
dbName="$(sed "s/\([^_]*\)_.*/\1/" <<< ${line})_$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
||||
sed "s/\(.*\)--clean_val--\(.*\)/\1${dbName}\2/" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
*ROOT_PASSWORD*|*PASSWORD*)
|
||||
pass="$(apg -n 1 -m 16 -M NCL)"
|
||||
sed "s/\(.*\)--clean_val--\(.*\)/\1${pass}\2/" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
*USER*)
|
||||
user="$(sed "s/\([^_]*\)_.*/\1/" <<< ${line})_$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
||||
sed "s/\(.*\)--clean_val--\(.*\)/\1${user}\2/" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
*RAIN_LOOP*|*office_password*|*mattermost_*|*sympa_*|*gitea_*)
|
||||
pass="$(apg -n 1 -m 16 -M NCL)"
|
||||
sed "s/\(.*\)--clean_val--\(.*\)/\1${pass}\2/" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
*vaultwarden_ADMIN_TOKEN*)
|
||||
pass="$(apg -n 1 -m 32 -M NCL)"
|
||||
sed "s/\(.*\)--clean_val--\(.*\)/\1${pass}\2/" <<< ${line}
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
Si on précise des fichiers, alors il ne remplace que dans ceux là (et on "lie" les clean-val ensemble !!!)
|
||||
OPTIONS
|
||||
-h|--help Cette aide :-)
|
||||
-n|--simu SIMULATION
|
||||
-q|--quiet Sans bruits de fond
|
||||
-d foldername prend les envfiles dans un sous dossier /kaz/secret/orgas/foldername/ (pour les orgas !)
|
||||
-
|
||||
|
||||
"
|
||||
}
|
||||
|
||||
for ARG in "$@"; do
|
||||
if [ -n "${DIRECTORYARG}" ]; then # après un -d
|
||||
DIR=$KAZ_KEY_DIR/orgas/${ARG}
|
||||
ORGA=${ARG}
|
||||
DIRECTORYARG=
|
||||
else
|
||||
echo "${line}"
|
||||
continue
|
||||
|
||||
case "${ARG}" in
|
||||
'-d' | '--directory' | '-f' | '--folder' | '--foldername')
|
||||
DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;;
|
||||
'-h' | '--help' )
|
||||
usage && exit ;;
|
||||
'-n' | '--simu')
|
||||
SIMU="echo" ;;
|
||||
'-q' | '--quiet')
|
||||
SORTIESTANDARD="/dev/null" ;;
|
||||
*)
|
||||
ENVFILES="${ENVFILES} ${ARG%}";;
|
||||
esac
|
||||
fi
|
||||
printKazError "${line}" >&2
|
||||
done < "${TMPL_FILE}" > "${NEW_FILE}"
|
||||
done
|
||||
|
||||
mv "${NEW_FILE}" "${TMPL_FILE}"
|
||||
NB_FILES=$(echo "${ENVFILES}" | wc -w )
|
||||
|
||||
chmod a+x "${TMPL_FILE}"
|
||||
. "${TMPL_FILE}"
|
||||
"${KAZ_BIN_DIR}/updateDockerPassword.sh"
|
||||
if [[ $NB_FILES = 0 ]]; then
|
||||
ENVFILES=$(grep -lE '@@pass@@|@@db@@|@@user@@|@@token@@|@@globalvar@@|@@crossvar@@' $DIR/* | sed 's/.*\///') #
|
||||
fi
|
||||
|
||||
|
||||
|
||||
secretGen(){
|
||||
# $1 Le env-file à compléter
|
||||
|
||||
FILENAME=$DIR/$1
|
||||
|
||||
NBMATCH=$(grep -lE '@@pass@@|@@db@@|@@user@@|@@token@@|@@globalvar@@' $FILENAME | wc -l) # est ce qu'il y a des choses à génrérer
|
||||
if [[ $NBMATCH = 0 ]]; then
|
||||
true
|
||||
# rien à faire dans ce fichier, on passe
|
||||
else
|
||||
echo "Remplissage $FILENAME" >& $SORTIESTANDARD
|
||||
db="$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
||||
pass="$(apg -n 1 -m 16 -M NCL)"
|
||||
token="$(apg -n 1 -m 32 -M NCL)"
|
||||
user="$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
||||
|
||||
dbs=$(grep -Eo '@@db@@[^@]*@@d@@' $FILENAME | sed -e 's/@@db@@//' -e 's/@@d@@//')
|
||||
passwords=$(grep -Eo '@@pass@@[^@]*@@p@@' $FILENAME | sed -e 's/@@pass@@//' -e 's/@@p@@//')
|
||||
tokens=$(grep -Eo '@@token@@[^@]*@@t@@' $FILENAME | sed -e 's/@@token@@//' -e 's/@@t@@//')
|
||||
users=$(grep -Eo '@@user@@[^@]*@@u@@' $FILENAME | sed -e 's/@@user@@//' -e 's/@@u@@//')
|
||||
globalvars=$(grep -Eo '@@globalvar@@[^@]*@@gv@@' $FILENAME | sed -e 's/@@globalvar@@//' -e 's/@@gv@@//')
|
||||
|
||||
for dbName in $dbs; do $SIMU sed -i "s/@@db@@$dbName@@d@@/${dbName}_$db/" $DIR/*; done
|
||||
for pw in $passwords; do $SIMU sed -i "s/@@pass@@$pw@@p@@/${pass}/" $DIR/*; done
|
||||
for tk in $tokens; do $SIMU sed -i "s/@@token@@$tk@@t@@/${token}/" $DIR/*; done
|
||||
for u in $users; do $SIMU sed -i "s/@@user@@$u@@u@@/${u}_$user/" $DIR/*; done
|
||||
for var in $globalvars; do $SIMU sed -i "s/@@globalvar@@$var@@gv@@/${!var}/" $DIR/*; done
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
crossVarComplete(){
|
||||
# $1 Le env-file à compléter
|
||||
|
||||
FILENAME=$DIR/$1
|
||||
|
||||
NBMATCH=$(grep -lE '@@crossvar@@' $FILENAME | wc -l) # est ce qu'il y a des cross-var à récupérer
|
||||
if [[ $NBMATCH = 0 ]]; then
|
||||
true
|
||||
# rien à faire dans ce fichier, on passe
|
||||
else
|
||||
echo "Remplissage $FILENAME" >& $SORTIESTANDARD
|
||||
|
||||
varnames=$(grep -Eo '@@crossvar@@[^@]*@@cv@@' $FILENAME | sed -e 's/@@crossvar@@//' -e 's/@@cv@@//')
|
||||
for varname in $varnames; do
|
||||
envname=${varname%%_*}
|
||||
value=$(/$KAZ_BIN_DIR/getPasswords.sh -e $varname $envname -d $ORGA)
|
||||
$SIMU sed -i "s/@@crossvar@@$varname@@cv@@/${value}/" $DIR/*;
|
||||
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
for ENVFILE in $ENVFILES; do
|
||||
secretGen "$ENVFILE"
|
||||
done
|
||||
|
||||
|
||||
for ENVFILE in $ENVFILES; do
|
||||
crossVarComplete "$ENVFILE"
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
@@ -1,121 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
|
||||
# pour mise au point
|
||||
# SIMU=echo
|
||||
|
||||
# Améliorations à prévoir
|
||||
# - donner en paramètre les services concernés (pour limité les modifications)
|
||||
# - pour les DB si on déclare un nouveau login, alors les privilèges sont créé mais les anciens pas révoqués
|
||||
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
updateEnvDB(){
|
||||
# $1 = prefix
|
||||
# $2 = envName
|
||||
# $3 = containerName of DB
|
||||
rootPass="$1_MYSQL_ROOT_PASSWORD"
|
||||
dbName="$1_MYSQL_DATABASE"
|
||||
userName="$1_MYSQL_USER"
|
||||
userPass="$1_MYSQL_PASSWORD"
|
||||
|
||||
${SIMU} sed -i \
|
||||
-e "s/MYSQL_ROOT_PASSWORD=.*/MYSQL_ROOT_PASSWORD=${!rootPass}/g" \
|
||||
-e "s/MYSQL_DATABASE=.*/MYSQL_DATABASE=${!dbName}/g" \
|
||||
-e "s/MYSQL_USER=.*/MYSQL_USER=${!userName}/g" \
|
||||
-e "s/MYSQL_PASSWORD=.*/MYSQL_PASSWORD=${!userPass}/g" \
|
||||
"$2"
|
||||
|
||||
# seulement si pas de mdp pour root
|
||||
# pb oeuf et poule (il faudrait les anciennes valeurs) :
|
||||
# * si rootPass change, faire à la main
|
||||
# * si dbName change, faire à la main
|
||||
checkDockerRunning "$3" "$3" || return
|
||||
echo "change DB pass on docker $3"
|
||||
echo "grant all privileges on ${!dbName}.* to '${!userName}' identified by '${!userPass}';" | \
|
||||
docker exec -i $3 bash -c "mysql --user=root --password=${!rootPass}"
|
||||
}
|
||||
|
||||
updateEnv(){
|
||||
# $1 = prefix
|
||||
# $2 = envName
|
||||
|
||||
for varName in $(grep "^[a-zA-Z_]*=" $2 | sed "s/^\([^=]*\)=.*/\1/g")
|
||||
do
|
||||
srcName="$1_${varName}"
|
||||
srcVal=$(echo "${!srcName}" | sed -e "s/[&]/\\\&/g")
|
||||
${SIMU} sed -i \
|
||||
-e "s%^[ ]*${varName}=.*\$%${varName}=${srcVal}%" \
|
||||
"$2"
|
||||
done
|
||||
}
|
||||
|
||||
framadateUpdate(){
|
||||
[[ "${COMP_ENABLE}" =~ " framadate " ]] || return
|
||||
if [ ! -f "${DOCK_LIB}/volumes/framadate_dateConfig/_data/config.php" ]; then
|
||||
return 0
|
||||
fi
|
||||
checkDockerRunning "${framadateServName}" "Framadate" &&
|
||||
${SIMU} docker exec -ti "${framadateServName}" bash -c -i "htpasswd -bc /var/framadate/admin/.htpasswd ${framadate_HTTPD_USER} ${framadate_HTTPD_PASSWORD}"
|
||||
${SIMU} sed -i \
|
||||
-e "s/^#*const DB_USER[ ]*=.*$/const DB_USER= '${framadate_MYSQL_USER}';/g" \
|
||||
-e "s/^#*const DB_PASSWORD[ ]*=.*$/const DB_PASSWORD= '${framadate_MYSQL_PASSWORD}';/g" \
|
||||
"${DOCK_LIB}/volumes/framadate_dateConfig/_data/config.php"
|
||||
}
|
||||
|
||||
jirafeauUpdate(){
|
||||
[[ "${COMP_ENABLE}" =~ " jirafeau " ]] || return
|
||||
if [ ! -f "${DOCK_LIB}/volumes/jirafeau_fileConfig/_data/config.local.php" ]; then
|
||||
return 0
|
||||
fi
|
||||
SHA=$(echo -n "${jirafeau_HTTPD_PASSWORD}" | sha256sum | cut -d \ -f 1)
|
||||
${SIMU} sed -i \
|
||||
-e "s/'admin_password'[ ]*=>[ ]*'[^']*'/'admin_password' => '${SHA}'/g" \
|
||||
"${DOCK_LIB}/volumes/jirafeau_fileConfig/_data/config.local.php"
|
||||
}
|
||||
|
||||
####################
|
||||
# main
|
||||
|
||||
updateEnvDB "etherpad" "${KAZ_KEY_DIR}/env-${etherpadDBName}" "${etherpadDBName}"
|
||||
updateEnvDB "framadate" "${KAZ_KEY_DIR}/env-${framadateDBName}" "${framadateDBName}"
|
||||
updateEnvDB "gitea" "${KAZ_KEY_DIR}/env-${gitDBName}" "${gitDBName}"
|
||||
updateEnvDB "mattermost" "${KAZ_KEY_DIR}/env-${mattermostDBName}" "${mattermostDBName}"
|
||||
updateEnvDB "nextcloud" "${KAZ_KEY_DIR}/env-${nextcloudDBName}" "${nextcloudDBName}"
|
||||
updateEnvDB "roundcube" "${KAZ_KEY_DIR}/env-${roundcubeDBName}" "${roundcubeDBName}"
|
||||
updateEnvDB "sympa" "${KAZ_KEY_DIR}/env-${sympaDBName}" "${sympaDBName}"
|
||||
updateEnvDB "vigilo" "${KAZ_KEY_DIR}/env-${vigiloDBName}" "${vigiloDBName}"
|
||||
updateEnvDB "wp" "${KAZ_KEY_DIR}/env-${wordpressDBName}" "${wordpressDBName}"
|
||||
updateEnvDB "vaultwarden" "${KAZ_KEY_DIR}/env-${vaultwardenDBName}" "${vaultwardenDBName}"
|
||||
updateEnvDB "castopod" "${KAZ_KEY_DIR}/env-${castopodDBName}" "${castopodDBName}"
|
||||
|
||||
updateEnv "apikaz" "${KAZ_KEY_DIR}/env-${apikazServName}"
|
||||
updateEnv "ethercalc" "${KAZ_KEY_DIR}/env-${ethercalcServName}"
|
||||
updateEnv "etherpad" "${KAZ_KEY_DIR}/env-${etherpadServName}"
|
||||
updateEnv "framadate" "${KAZ_KEY_DIR}/env-${framadateServName}"
|
||||
updateEnv "gandi" "${KAZ_KEY_DIR}/env-gandi"
|
||||
updateEnv "gitea" "${KAZ_KEY_DIR}/env-${gitServName}"
|
||||
updateEnv "jirafeau" "${KAZ_KEY_DIR}/env-${jirafeauServName}"
|
||||
updateEnv "mattermost" "${KAZ_KEY_DIR}/env-${mattermostServName}"
|
||||
updateEnv "nextcloud" "${KAZ_KEY_DIR}/env-${nextcloudServName}"
|
||||
updateEnv "office" "${KAZ_KEY_DIR}/env-${officeServName}"
|
||||
updateEnv "roundcube" "${KAZ_KEY_DIR}/env-${roundcubeServName}"
|
||||
updateEnv "vigilo" "${KAZ_KEY_DIR}/env-${vigiloServName}"
|
||||
updateEnv "wp" "${KAZ_KEY_DIR}/env-${wordpressServName}"
|
||||
updateEnv "ldap" "${KAZ_KEY_DIR}/env-${ldapServName}"
|
||||
updateEnv "sympa" "${KAZ_KEY_DIR}/env-${sympaServName}"
|
||||
updateEnv "mail" "${KAZ_KEY_DIR}/env-${smtpServName}"
|
||||
updateEnv "mobilizon" "${KAZ_KEY_DIR}/env-${mobilizonServName}"
|
||||
updateEnv "mobilizon" "${KAZ_KEY_DIR}/env-${mobilizonDBName}"
|
||||
updateEnv "vaultwarden" "${KAZ_KEY_DIR}/env-${vaultwardenServName}"
|
||||
updateEnv "castopod" "${KAZ_KEY_DIR}/env-${castopodServName}"
|
||||
updateEnv "ldap" "${KAZ_KEY_DIR}/env-${ldapUIName}"
|
||||
|
||||
|
||||
framadateUpdate
|
||||
jirafeauUpdate
|
||||
exit 0
|
@@ -12,7 +12,6 @@ setKazVars
|
||||
|
||||
cd $(dirname $0)/..
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
DOCK_DIR=$KAZ_COMP_DIR
|
||||
|
||||
|
@@ -4,3 +4,4 @@ collabora
|
||||
etherpad
|
||||
web
|
||||
imapsync
|
||||
spip
|
||||
|
@@ -93,6 +93,8 @@ vaultwardenHost=koffre
|
||||
traefikHost=dashboard
|
||||
imapsyncHost=imapsync
|
||||
castopodHost=pod
|
||||
spipHost=spip
|
||||
mastodonHost=masto
|
||||
apikazHost=apikaz
|
||||
snappymailHost=snappymail
|
||||
|
||||
@@ -147,9 +149,18 @@ ldapUIName=ldapUI
|
||||
imapsyncServName=imapsyncServ
|
||||
castopodDBName=castopodDB
|
||||
castopodServName=castopodServ
|
||||
mastodonServName=mastodonServ
|
||||
spipDBName=spipDB
|
||||
spipServName=spipServ
|
||||
mastodonDBName=mastodonDB
|
||||
apikazServName=apikazServ
|
||||
|
||||
########################################
|
||||
# services activés par container.sh
|
||||
# variables d'environneements utilisées
|
||||
# pour le tmpl du mandataire (proxy)
|
||||
|
||||
|
||||
##################
|
||||
#qui on envoi le mail d'inscription ?
|
||||
EMAIL_CONTACT="toto@kaz.bzh"
|
@@ -1,58 +0,0 @@
|
||||
FROM alpine:3.17
|
||||
|
||||
# Some ENV variables
|
||||
ENV PATH="/mattermost/bin:${PATH}"
|
||||
#ENV MM_VERSION=5.32.0
|
||||
ENV MM_VERSION=6.1.0
|
||||
ENV MM_INSTALL_TYPE=docker
|
||||
|
||||
# Build argument to set Mattermost edition
|
||||
ARG edition=enterprise
|
||||
ARG PUID=2000
|
||||
ARG PGID=2000
|
||||
ARG MM_BINARY=
|
||||
|
||||
|
||||
# Install some needed packages
|
||||
RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
curl \
|
||||
jq \
|
||||
libc6-compat \
|
||||
libffi-dev \
|
||||
libcap \
|
||||
linux-headers \
|
||||
mailcap \
|
||||
netcat-openbsd \
|
||||
xmlsec-dev \
|
||||
tzdata \
|
||||
&& rm -rf /tmp/*
|
||||
|
||||
# Get Mattermost
|
||||
RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \
|
||||
&& if [ ! -z "$MM_BINARY" ]; then curl $MM_BINARY | tar -xvz ; \
|
||||
elif [ "$edition" = "team" ] ; then curl https://releases.mattermost.com/$MM_VERSION/mattermost-team-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; \
|
||||
else curl https://releases.mattermost.com/$MM_VERSION/mattermost-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; fi \
|
||||
&& cp /mattermost/config/config.json /config.json.save \
|
||||
&& rm -rf /mattermost/config/config.json \
|
||||
&& addgroup -g ${PGID} mattermost \
|
||||
&& adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \
|
||||
&& chown -R mattermost:mattermost /mattermost /config.json.save /mattermost/plugins /mattermost/client/plugins \
|
||||
&& setcap cap_net_bind_service=+ep /mattermost/bin/mattermost
|
||||
|
||||
USER mattermost
|
||||
|
||||
#Healthcheck to make sure container is ready
|
||||
HEALTHCHECK CMD curl --fail http://localhost:8000 || exit 1
|
||||
|
||||
# Configure entrypoint and command
|
||||
COPY entrypoint.sh /
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
WORKDIR /mattermost
|
||||
CMD ["mattermost"]
|
||||
|
||||
# Expose port 8000 of the container
|
||||
EXPOSE 8000
|
||||
|
||||
# Declare volumes for mount point directories
|
||||
VOLUME ["/mattermost/data", "/mattermost/logs", "/mattermost/config", "/mattermost/plugins", "/mattermost/client/plugins"]
|
@@ -1,82 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Function to generate a random salt
|
||||
generate_salt() {
|
||||
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 48 | head -n 1
|
||||
}
|
||||
|
||||
# Read environment variables or set default values
|
||||
DB_HOST=${DB_HOST:-db}
|
||||
DB_PORT_NUMBER=${DB_PORT_NUMBER:-5432}
|
||||
# see https://www.postgresql.org/docs/current/libpq-ssl.html
|
||||
# for usage when database connection requires encryption
|
||||
# filenames should be escaped if they contain spaces
|
||||
# i.e. $(printf %s ${MY_ENV_VAR:-''} | jq -s -R -r @uri)
|
||||
# the location of the CA file can be set using environment var PGSSLROOTCERT
|
||||
# the location of the CRL file can be set using PGSSLCRL
|
||||
# The URL syntax for connection string does not support the parameters
|
||||
# sslrootcert and sslcrl reliably, so use these PostgreSQL-specified variables
|
||||
# to set names if using a location other than default
|
||||
DB_USE_SSL=${DB_USE_SSL:-disable}
|
||||
MM_DBNAME=${MM_DBNAME:-mattermost}
|
||||
MM_CONFIG=${MM_CONFIG:-/mattermost/config/config.json}
|
||||
|
||||
_1=$(echo "$1" | awk '{ s=substr($0, 0, 1); print s; }' )
|
||||
if [ "$_1" = '-' ]; then
|
||||
set -- mattermost "$@"
|
||||
fi
|
||||
|
||||
if [ "$1" = 'mattermost' ]; then
|
||||
# Check CLI args for a -config option
|
||||
for ARG in "$@"; do
|
||||
case "$ARG" in
|
||||
-config=*) MM_CONFIG=${ARG#*=};;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -f "$MM_CONFIG" ]; then
|
||||
# If there is no configuration file, create it with some default values
|
||||
echo "No configuration file $MM_CONFIG"
|
||||
echo "Creating a new one"
|
||||
# Copy default configuration file
|
||||
cp /config.json.save "$MM_CONFIG"
|
||||
# Substitute some parameters with jq
|
||||
jq '.ServiceSettings.ListenAddress = ":8000"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.LogSettings.EnableConsole = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.LogSettings.ConsoleLevel = "ERROR"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.FileSettings.Directory = "/mattermost/data/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.FileSettings.EnablePublicLink = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq ".FileSettings.PublicLinkSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.EmailSettings.SendEmailNotifications = false' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.EmailSettings.FeedbackEmail = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.EmailSettings.SMTPServer = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.EmailSettings.SMTPPort = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq ".EmailSettings.InviteSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq ".EmailSettings.PasswordResetSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.RateLimitSettings.Enable = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.SqlSettings.DriverName = "postgres"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq ".SqlSettings.AtRestEncryptKey = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
jq '.PluginSettings.Directory = "/mattermost/plugins/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||
else
|
||||
echo "Using existing config file $MM_CONFIG"
|
||||
fi
|
||||
|
||||
# Configure database access
|
||||
if [ -z "$MM_SQLSETTINGS_DATASOURCE" ] && [ -n "$MM_USERNAME" ] && [ -n "$MM_PASSWORD" ]; then
|
||||
echo "Configure database connection..."
|
||||
# URLEncode the password, allowing for special characters
|
||||
ENCODED_PASSWORD=$(printf %s "$MM_PASSWORD" | jq -s -R -r @uri)
|
||||
export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=$DB_USE_SSL&connect_timeout=10"
|
||||
echo "OK"
|
||||
else
|
||||
echo "Using existing database connection"
|
||||
fi
|
||||
|
||||
# Wait another second for the database to be properly started.
|
||||
# Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up"
|
||||
sleep 1
|
||||
|
||||
echo "Starting mattermost"
|
||||
fi
|
||||
|
||||
exec "$@"
|
@@ -4,19 +4,21 @@ services:
|
||||
#{{db
|
||||
db:
|
||||
image: mariadb:11.4
|
||||
container_name: ${orga}DB
|
||||
container_name: ${orga}-DB
|
||||
#disk_quota: 10G
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
restart: ${restartPolicy}
|
||||
volumes:
|
||||
- ./initdb.d:/docker-entrypoint-initdb.d:ro
|
||||
# - ./initdb.d:/docker-entrypoint-initdb.d:ro
|
||||
- orgaDB:/var/lib/mysql
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
environment:
|
||||
- MARIADB_AUTO_UPGRADE=1
|
||||
env_file:
|
||||
- ../../secret/env-${nextcloudDBName}
|
||||
# - ../../secret/env-${mattermostDBName}
|
||||
- ../../secret/env-${wordpressDBName}
|
||||
- ../../secret/orgas/${orga}/env-${nextcloudDBName}
|
||||
# - ../../secret/orgas/${orga}/env-${mattermostDBName}
|
||||
- ../../secret/orgas/${orga}/env-${wordpressDBName}
|
||||
networks:
|
||||
- orgaNet
|
||||
healthcheck: # utilisé par init-db.sh pour la créa d'orga
|
||||
@@ -32,7 +34,7 @@ services:
|
||||
#{{cloud
|
||||
cloud:
|
||||
image: nextcloud
|
||||
container_name: ${orga}${nextcloudServName}
|
||||
container_name: ${orga}-${nextcloudServName}
|
||||
#disk_quota: 10G
|
||||
restart: ${restartPolicy}
|
||||
networks:
|
||||
@@ -48,8 +50,8 @@ services:
|
||||
- ${smtpServName}:${smtpHost}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}${nextcloudServName}.rule=Host(`${orga}${cloudHost}.${domain}`){{FOREIGN_NC}}"
|
||||
- "traefik.http.routers.${orga}${nextcloudServName}.middlewares=nextcloud-redirectregex1@file,nextcloud-redirectregex2@file"
|
||||
- "traefik.http.routers.${orga}-${nextcloudServName}.rule=Host(`${orga}-${cloudHost}.${domain}`){{FOREIGN_NC}}"
|
||||
- "traefik.http.routers.${orga}-${nextcloudServName}.middlewares=nextcloud-redirectregex1@file,nextcloud-redirectregex2@file"
|
||||
volumes:
|
||||
- cloudMain:/var/www/html
|
||||
- cloudData:/var/www/html/data
|
||||
@@ -61,10 +63,10 @@ services:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
env_file:
|
||||
- ../../secret/env-${nextcloudServName}
|
||||
- ../../secret/env-${nextcloudDBName}
|
||||
- ../../secret/orgas/${orga}/env-${nextcloudServName}
|
||||
- ../../secret/orgas/${orga}/env-${nextcloudDBName}
|
||||
environment:
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=${orga}${cloudHost}.${domain}
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=${orga}-${cloudHost}.${domain}
|
||||
- SMTP_HOST=${smtpHost}
|
||||
- SMTP_PORT=25
|
||||
- MAIL_DOMAIN=${domain}
|
||||
@@ -78,7 +80,7 @@ services:
|
||||
- edition=team
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
container_name: ${orga}${mattermostServName}
|
||||
container_name: ${orga}-${mattermostServName}
|
||||
#disk_quota: 10G
|
||||
restart: ${restartPolicy}
|
||||
# memory: 1G
|
||||
@@ -107,20 +109,20 @@ services:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/environment:/etc/environment:ro
|
||||
env_file:
|
||||
- ../../secret/env-${mattermostServName}
|
||||
- ../../secret/orgas/${orga}/env-${mattermostServName}
|
||||
environment:
|
||||
- VIRTUAL_HOST=${orga}${matterHost}.${domain}
|
||||
- VIRTUAL_HOST=${orga}-${matterHost}.${domain}
|
||||
# in case your config is not in default location
|
||||
#- MM_CONFIG=/mattermost/config/config.json
|
||||
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}${mattermostServName}.rule=Host(`${orga}${matterHost}.${domain}`)"
|
||||
- "traefik.http.routers.${orga}-${mattermostServName}.rule=Host(`${orga}-${matterHost}.${domain}`)"
|
||||
#}}
|
||||
#{{wp
|
||||
wordpress:
|
||||
image: wordpress
|
||||
container_name: ${orga}${wordpressServName}
|
||||
container_name: ${orga}-${wordpressServName}
|
||||
restart: ${restartPolicy}
|
||||
networks:
|
||||
- orgaNet
|
||||
@@ -134,17 +136,17 @@ services:
|
||||
external_links:
|
||||
- ${smtpServName}:${smtpHost}.${domain}
|
||||
env_file:
|
||||
- ../../secret/env-${wordpressServName}
|
||||
- ../../secret/orgas/${orga}/env-${wordpressServName}
|
||||
environment:
|
||||
- WORDPRESS_SMTP_HOST=${smtpHost}.${domain}
|
||||
- WORDPRESS_SMTP_PORT=25
|
||||
# - WORDPRESS_SMTP_USERNAME
|
||||
# - WORDPRESS_SMTP_PASSWORD
|
||||
# - WORDPRESS_SMTP_FROM=${orga}
|
||||
- WORDPRESS_SMTP_FROM_NAME=${orga}
|
||||
# - WORDPRESS_SMTP_FROM=${orga}-
|
||||
- WORDPRESS_SMTP_FROM_NAME=${orga}-
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}${wordpressServName}.rule=Host(`${orga}${wordpressHost}.${domain}`){{FOREIGN_WP}}"
|
||||
- "traefik.http.routers.${orga}-${wordpressServName}.rule=Host(`${orga}-${wordpressHost}.${domain}`){{FOREIGN_WP}}"
|
||||
volumes:
|
||||
- wordpress:/var/www/html
|
||||
# - ../../config/orgaTmpl/wp:/usr/local/bin/wp:ro
|
||||
@@ -152,12 +154,12 @@ services:
|
||||
#{{wiki
|
||||
dokuwiki:
|
||||
image: mprasil/dokuwiki
|
||||
container_name: ${orga}${dokuwikiServName}
|
||||
container_name: ${orga}-${dokuwikiServName}
|
||||
#disk_quota: 10G
|
||||
restart: ${restartPolicy}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}${dokuwikiServName}.rule=Host(`${orga}${dokuwikiHost}.${domain}`){{FOREIGN_DW}}"
|
||||
- "traefik.http.routers.${orga}-${dokuwikiServName}.rule=Host(`${orga}-${dokuwikiHost}.${domain}`){{FOREIGN_DW}}"
|
||||
volumes:
|
||||
- wikiData:/dokuwiki/data
|
||||
- wikiConf:/dokuwiki/conf
|
||||
@@ -173,7 +175,7 @@ services:
|
||||
#{{castopod
|
||||
castopod:
|
||||
image: castopod/castopod:latest
|
||||
container_name: ${orga}${castopodServName}
|
||||
container_name: ${orga}-${castopodServName}
|
||||
#disk_quota: 10G
|
||||
restart: ${restartPolicy}
|
||||
# memory: 1G
|
||||
@@ -191,29 +193,54 @@ services:
|
||||
volumes:
|
||||
- castopodMedia:/var/www/castopod/public/media
|
||||
environment:
|
||||
CP_BASEURL: "https://${orga}${castopodHost}.${domain}"
|
||||
CP_BASEURL: "https://${orga}-${castopodHost}.${domain}"
|
||||
CP_ANALYTICS_SALT: qldsgfliuzrbhgmkjbdbmkvb
|
||||
VIRTUAL_PORT: 8000
|
||||
CP_CACHE_HANDLER: redis
|
||||
CP_REDIS_HOST: redis
|
||||
CP_DATABASE_HOSTNAME: db
|
||||
env_file:
|
||||
- ../../secret/env-${castopodServName}
|
||||
- ../../secret/env-${castopodDBName}
|
||||
- ../../secret/orgas/${orga}/env-${castopodServName}
|
||||
- ../../secret/orgas/${orga}/env-${castopodDBName}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}${castopodServName}.rule=Host(`${orga}${castopodHost}.${domain}`){{FOREIGN_POD}}"
|
||||
- "traefik.http.routers.${orga}-${castopodServName}.rule=Host(`${orga}-${castopodHost}.${domain}`){{FOREIGN_POD}}"
|
||||
redis:
|
||||
image: redis:7.0-alpine
|
||||
container_name: ${orga}castopodCache
|
||||
container_name: ${orga}-castopodCache
|
||||
volumes:
|
||||
- castopodCache:/data
|
||||
networks:
|
||||
- orgaNet
|
||||
env_file:
|
||||
- ../../secret/env-${castopodServName}
|
||||
- ../../secret/orgas/${orga}/env-${castopodServName}
|
||||
command: --requirepass ${castopodRedisPassword}
|
||||
#}}
|
||||
#{{spip
|
||||
spip:
|
||||
image: ipeos/spip:4.4
|
||||
restart: ${restartPolicy}
|
||||
depends_on:
|
||||
- db
|
||||
links:
|
||||
- db
|
||||
env_file:
|
||||
- ../../secret/orgas/${orga}/env-${spipServName}
|
||||
environment:
|
||||
- SPIP_AUTO_INSTALL=1
|
||||
- SPIP_DB_HOST=db
|
||||
- SPIP_SITE_ADDRESS=https://${orga}-${spipHost}.${domain}
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${orga}-${spipServName}.rule=Host(`${orga}-${spipHost}.${domain}`){{FOREIGN_SPIP}}"
|
||||
networks:
|
||||
- orgaNet
|
||||
volumes:
|
||||
- spip:/usr/src/spip
|
||||
#}}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -223,87 +250,92 @@ volumes:
|
||||
#{{db
|
||||
orgaDB:
|
||||
external: true
|
||||
name: orga_${orga}orgaDB
|
||||
name: orga_${orga}-orgaDB
|
||||
#}}
|
||||
#{{agora
|
||||
matterConfig:
|
||||
external: true
|
||||
name: orga_${orga}matterConfig
|
||||
name: orga_${orga}-matterConfig
|
||||
matterData:
|
||||
external: true
|
||||
name: orga_${orga}matterData
|
||||
name: orga_${orga}-matterData
|
||||
matterLogs:
|
||||
external: true
|
||||
name: orga_${orga}matterLogs
|
||||
name: orga_${orga}-matterLogs
|
||||
matterPlugins:
|
||||
external: true
|
||||
name: orga_${orga}matterPlugins
|
||||
name: orga_${orga}-matterPlugins
|
||||
matterClientPlugins:
|
||||
external: true
|
||||
name: orga_${orga}matterClientPlugins
|
||||
name: orga_${orga}-matterClientPlugins
|
||||
matterIcons:
|
||||
external: true
|
||||
name: matterIcons
|
||||
#{{cloud
|
||||
cloudMain:
|
||||
external: true
|
||||
name: orga_${orga}cloudMain
|
||||
name: orga_${orga}-cloudMain
|
||||
cloudData:
|
||||
external: true
|
||||
name: orga_${orga}cloudData
|
||||
name: orga_${orga}-cloudData
|
||||
cloudConfig:
|
||||
external: true
|
||||
name: orga_${orga}cloudConfig
|
||||
name: orga_${orga}-cloudConfig
|
||||
cloudApps:
|
||||
external: true
|
||||
name: orga_${orga}cloudApps
|
||||
name: orga_${orga}-cloudApps
|
||||
cloudCustomApps:
|
||||
external: true
|
||||
name: orga_${orga}cloudCustomApps
|
||||
name: orga_${orga}-cloudCustomApps
|
||||
cloudThemes:
|
||||
external: true
|
||||
name: orga_${orga}cloudThemes
|
||||
name: orga_${orga}-cloudThemes
|
||||
cloudPhp:
|
||||
external: true
|
||||
name: orga_${orga}cloudPhp
|
||||
name: orga_${orga}-cloudPhp
|
||||
#}}
|
||||
#{{wiki
|
||||
wikiData:
|
||||
external: true
|
||||
name: orga_${orga}wikiData
|
||||
name: orga_${orga}-wikiData
|
||||
wikiConf:
|
||||
external: true
|
||||
name: orga_${orga}wikiConf
|
||||
name: orga_${orga}-wikiConf
|
||||
wikiPlugins:
|
||||
external: true
|
||||
name: orga_${orga}wikiPlugins
|
||||
name: orga_${orga}-wikiPlugins
|
||||
wikiLibtpl:
|
||||
external: true
|
||||
name: orga_${orga}wikiLibtpl
|
||||
name: orga_${orga}-wikiLibtpl
|
||||
wikiLogs:
|
||||
external: true
|
||||
name: orga_${orga}wikiLogs
|
||||
name: orga_${orga}-wikiLogs
|
||||
#}}
|
||||
#{{wp
|
||||
wordpress:
|
||||
external: true
|
||||
name: orga_${orga}wordpress
|
||||
name: orga_${orga}-wordpress
|
||||
#}}
|
||||
#{{castopod
|
||||
castopodMedia:
|
||||
external: true
|
||||
name: orga_${orga}castopodMedia
|
||||
name: orga_${orga}-castopodMedia
|
||||
castopodCache:
|
||||
external: true
|
||||
name: orga_${orga}castopodCache
|
||||
|
||||
name: orga_${orga}-castopodCache
|
||||
#}}
|
||||
#{{spip
|
||||
spip:
|
||||
external: true
|
||||
name: orga_${orga}-spip
|
||||
#}}
|
||||
|
||||
|
||||
|
||||
networks:
|
||||
orgaNet:
|
||||
external: true
|
||||
name: ${orga}orgaNet
|
||||
name: ${orga}-orgaNet
|
||||
# postfixNet:
|
||||
# external:
|
||||
# name: postfixNet
|
||||
|
@@ -4,7 +4,6 @@ KAZ_ROOT=$(cd $(dirname $0)/../..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
cd $(dirname $0)
|
||||
ORGA_DIR="$(basename "$(pwd)")"
|
||||
@@ -25,51 +24,72 @@ SQL=""
|
||||
for ARG in "$@"; do
|
||||
case "${ARG}" in
|
||||
'cloud' )
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-nextcloudDB
|
||||
SQL="$SQL
|
||||
CREATE DATABASE IF NOT EXISTS ${nextcloud_MYSQL_DATABASE};
|
||||
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};
|
||||
|
||||
DROP USER IF EXISTS '${nextcloud_MYSQL_USER}';
|
||||
CREATE USER '${nextcloud_MYSQL_USER}'@'%';
|
||||
DROP USER IF EXISTS '${MYSQL_USER}';
|
||||
CREATE USER '${MYSQL_USER}'@'%';
|
||||
|
||||
GRANT ALL ON ${nextcloud_MYSQL_DATABASE}.* TO '${nextcloud_MYSQL_USER}'@'%' IDENTIFIED BY '${nextcloud_MYSQL_PASSWORD}';
|
||||
GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
|
||||
|
||||
FLUSH PRIVILEGES;"
|
||||
;;
|
||||
'agora' )
|
||||
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-mattermostDB
|
||||
SQL="$SQL
|
||||
CREATE DATABASE IF NOT EXISTS ${mattermost_MYSQL_DATABASE};
|
||||
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};
|
||||
|
||||
DROP USER IF EXISTS '${mattermost_MYSQL_USER}';
|
||||
CREATE USER '${mattermost_MYSQL_USER}'@'%';
|
||||
DROP USER IF EXISTS '${MYSQL_USER}';
|
||||
CREATE USER '${MYSQL_USER}'@'%';
|
||||
|
||||
GRANT ALL ON ${mattermost_MYSQL_DATABASE}.* TO '${mattermost_MYSQL_USER}'@'%' IDENTIFIED BY '${mattermost_MYSQL_PASSWORD}';
|
||||
GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
|
||||
|
||||
FLUSH PRIVILEGES;"
|
||||
;;
|
||||
'wp' )
|
||||
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-wpDB
|
||||
SQL="$SQL
|
||||
CREATE DATABASE IF NOT EXISTS ${wp_MYSQL_DATABASE};
|
||||
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};
|
||||
|
||||
DROP USER IF EXISTS '${wp_MYSQL_USER}';
|
||||
CREATE USER '${wp_MYSQL_USER}'@'%';
|
||||
DROP USER IF EXISTS '${MYSQL_USER}';
|
||||
CREATE USER '${MYSQL_USER}'@'%';
|
||||
|
||||
GRANT ALL ON ${wp_MYSQL_DATABASE}.* TO '${wp_MYSQL_USER}'@'%' IDENTIFIED BY '${wp_MYSQL_PASSWORD}';
|
||||
GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
|
||||
|
||||
FLUSH PRIVILEGES;"
|
||||
;;
|
||||
'castopod' )
|
||||
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-castopodDB
|
||||
SQL="$SQL
|
||||
CREATE DATABASE IF NOT EXISTS ${castopod_MYSQL_DATABASE};
|
||||
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};
|
||||
|
||||
DROP USER IF EXISTS '${castopod_MYSQL_USER}';
|
||||
CREATE USER '${castopod_MYSQL_USER}'@'%';
|
||||
DROP USER IF EXISTS '${MYSQL_USER}';
|
||||
CREATE USER '${MYSQL_USER}'@'%';
|
||||
|
||||
GRANT ALL ON ${castopod_MYSQL_DATABASE}.* TO '${castopod_MYSQL_USER}'@'%' IDENTIFIED BY '${castopod_MYSQL_PASSWORD}';
|
||||
GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
|
||||
|
||||
FLUSH PRIVILEGES;"
|
||||
;;
|
||||
'spip' )
|
||||
|
||||
. $KAZ_KEY_DIR/orgas/$ORGA/env-spipDB
|
||||
SQL="$SQL
|
||||
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};
|
||||
|
||||
DROP USER IF EXISTS '${MYSQL_USER}';
|
||||
CREATE USER '${MYSQL_USER}'@'%';
|
||||
|
||||
GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';
|
||||
|
||||
FLUSH PRIVILEGES;"
|
||||
;;
|
||||
|
||||
|
||||
esac
|
||||
done
|
||||
|
||||
echo $SQL | docker exec -i ${ORGA}-DB bash -c "mariadb --user=root --password=${wp_MYSQL_ROOT_PASSWORD}"
|
||||
echo $SQL | docker exec -i ${ORGA}-DB bash -c "mariadb --user=root --password=${MYSQL_ROOT_PASSWORD}"
|
||||
|
@@ -3,37 +3,41 @@
|
||||
#docker network create postfix_mailNet
|
||||
|
||||
#{{db
|
||||
docker volume create --name=orga_${orga}orgaDB
|
||||
docker volume create --name=orga_${orga}-orgaDB
|
||||
#}}
|
||||
#{{agora
|
||||
docker volume create --name=orga_${orga}matterConfig
|
||||
docker volume create --name=orga_${orga}matterData
|
||||
docker volume create --name=orga_${orga}matterLogs
|
||||
docker volume create --name=orga_${orga}matterPlugins
|
||||
docker volume create --name=orga_${orga}matterClientPlugins
|
||||
docker volume create --name=orga_${orga}-matterConfig
|
||||
docker volume create --name=orga_${orga}-matterData
|
||||
docker volume create --name=orga_${orga}-matterLogs
|
||||
docker volume create --name=orga_${orga}-matterPlugins
|
||||
docker volume create --name=orga_${orga}-matterClientPlugins
|
||||
docker volume create --name=matterIcons
|
||||
#}}
|
||||
#{{cloud
|
||||
docker volume create --name=orga_${orga}cloudMain
|
||||
docker volume create --name=orga_${orga}cloudData
|
||||
docker volume create --name=orga_${orga}cloudConfig
|
||||
docker volume create --name=orga_${orga}cloudApps
|
||||
docker volume create --name=orga_${orga}cloudCustomApps
|
||||
docker volume create --name=orga_${orga}cloudThemes
|
||||
docker volume create --name=orga_${orga}cloudPhp
|
||||
chown 33:33 /var/lib/docker/volumes/orga_${orga}cloud*/_data
|
||||
docker volume create --name=orga_${orga}-cloudMain
|
||||
docker volume create --name=orga_${orga}-cloudData
|
||||
docker volume create --name=orga_${orga}-cloudConfig
|
||||
docker volume create --name=orga_${orga}-cloudApps
|
||||
docker volume create --name=orga_${orga}-cloudCustomApps
|
||||
docker volume create --name=orga_${orga}-cloudThemes
|
||||
docker volume create --name=orga_${orga}-cloudPhp
|
||||
chown 33:33 /var/lib/docker/volumes/orga_${orga}-cloud*/_data
|
||||
#}}
|
||||
#{{wiki
|
||||
docker volume create --name=orga_${orga}wikiData
|
||||
docker volume create --name=orga_${orga}wikiConf
|
||||
docker volume create --name=orga_${orga}wikiPlugins
|
||||
docker volume create --name=orga_${orga}wikiLibtpl
|
||||
docker volume create --name=orga_${orga}wikiLogs
|
||||
docker volume create --name=orga_${orga}-wikiData
|
||||
docker volume create --name=orga_${orga}-wikiConf
|
||||
docker volume create --name=orga_${orga}-wikiPlugins
|
||||
docker volume create --name=orga_${orga}-wikiLibtpl
|
||||
docker volume create --name=orga_${orga}-wikiLogs
|
||||
#}}
|
||||
#{{wp
|
||||
docker volume create --name=orga_${orga}wordpress
|
||||
docker volume create --name=orga_${orga}-wordpress
|
||||
#}}
|
||||
#{{castopod
|
||||
docker volume create --name=orga_${orga}castopodCache
|
||||
docker volume create --name=orga_${orga}castopodMedia
|
||||
docker volume create --name=orga_${orga}-castopodCache
|
||||
docker volume create --name=orga_${orga}-castopodMedia
|
||||
#}}
|
||||
#{{spip
|
||||
docker volume create --name=orga_${orga}-spip
|
||||
#}}
|
||||
|
||||
|
@@ -1,3 +0,0 @@
|
||||
CREATE DATABASE IF NOT EXISTS nextcloud;
|
||||
CREATE DATABASE IF NOT EXISTS mattermost;
|
||||
CREATE DATABASE IF NOT EXISTS wpdb;
|
@@ -20,7 +20,7 @@ STAGE_CREATE=
|
||||
STAGE_INIT=
|
||||
|
||||
usage(){
|
||||
echo "Usage: $0 [-h] [-l] [+/-paheko] [-/+cloud [-/+collabora}]] [+/-agora] [+/-wiki] [+/-wp] [+/-pod] [x{G/M/k}] OrgaName"
|
||||
echo "Usage: $0 [-h] [-l] [+/-paheko] [-/+cloud [-/+collabora}]] [+/-agora] [+/-wiki] [+/-wp] [+/-pod] [+/-spip] [x{G/M/k}] OrgaName"
|
||||
echo " -h|--help : this help"
|
||||
echo " -l|--list : list service"
|
||||
|
||||
@@ -34,6 +34,7 @@ usage(){
|
||||
echo " +/- wiki : on/off wiki"
|
||||
echo " +/- wp|word* : on/off wp"
|
||||
echo " +/- casto*|pod : on/off castopod"
|
||||
echo " +/- spip : on/off spip"
|
||||
echo " x[GMk] : set quota"
|
||||
echo " OrgaName : name must contain a-z0-9_\-"
|
||||
}
|
||||
@@ -141,6 +142,7 @@ export agora=$(flagInCompose docker-compose.yml agora: off)
|
||||
export wiki=$(flagInCompose docker-compose.yml dokuwiki: off)
|
||||
export wp=$(flagInCompose docker-compose.yml wordpress: off)
|
||||
export castopod=$(flagInCompose docker-compose.yml castopod: off)
|
||||
export spip=$(flagInCompose docker-compose.yml spip: off)
|
||||
export db="off"
|
||||
export services="off"
|
||||
export paheko=$([[ -f usePaheko ]] && echo "on" || echo "off")
|
||||
@@ -159,7 +161,7 @@ INITCMD2="--install"
|
||||
for ARG in "$@"; do
|
||||
case "${ARG}" in
|
||||
'-show' )
|
||||
for i in cloud collabora agora wiki wp castopod db; do
|
||||
for i in cloud collabora agora wiki wp castopod spip db; do
|
||||
echo "${i}=${!i}"
|
||||
done
|
||||
exit;;
|
||||
@@ -225,6 +227,11 @@ for ARG in "$@"; do
|
||||
DBaInitialiser="$DBaInitialiser castopod"
|
||||
INITCMD2="$INITCMD2 -pod"
|
||||
;;
|
||||
'+spip' )
|
||||
spip="on"
|
||||
DBaInitialiser="$DBaInitialiser spip"
|
||||
;;
|
||||
|
||||
[.0-9]*[GMk] )
|
||||
quota="${ARG}"
|
||||
;;
|
||||
@@ -304,6 +311,13 @@ if [[ "${castopod}" = "on" ]]; then
|
||||
else
|
||||
DEL_DOMAIN+="${ORGA}-${castopodHost} "
|
||||
fi
|
||||
if [[ "${spip}" = "on" ]]; then
|
||||
DOMAIN_AREA+=" - ${ORGA}-\${spipServName}:${ORGA}-\${spipHost}.\${domain}\n"
|
||||
ADD_DOMAIN+="${ORGA}-${spipHost} "
|
||||
else
|
||||
DEL_DOMAIN+="${ORGA}-${spipHost} "
|
||||
fi
|
||||
|
||||
DOMAIN_AREA+="}}\n"
|
||||
|
||||
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
|
||||
@@ -358,6 +372,9 @@ update() {
|
||||
sed "s/\([^ ]*\) ${ORGA};/ \|\| Host(\`\1\`)/" | tr -d "\r\n")
|
||||
FOREIGN_POD=$(grep " ${ORGA};" "${KAZ_CONF_PROXY_DIR}/pod_kaz_map" 2>/dev/null | \
|
||||
sed "s/\([^ ]*\) ${ORGA};/ \|\| Host(\`\1\`)/" | tr -d "\r\n")
|
||||
FOREIGN_SPIP=$(grep " ${ORGA};" "${KAZ_CONF_PROXY_DIR}/spip_kaz_map" 2>/dev/null | \
|
||||
sed "s/\([^ ]*\) ${ORGA};/ \|\| Host(\`\1\`)/" | tr -d "\r\n")
|
||||
|
||||
awk '
|
||||
BEGIN {cp=1}
|
||||
/#}}/ {cp=1 ; next};
|
||||
@@ -371,7 +388,8 @@ update() {
|
||||
-e "s/{{FOREIGN_NC}}/${FOREIGN_NC}/"\
|
||||
-e "s/{{FOREIGN_DW}}/${FOREIGN_DW}/"\
|
||||
-e "s/{{FOREIGN_POD}}/${FOREIGN_POD}/"\
|
||||
-e "s|\${orga}|${ORGA}-|g"
|
||||
-e "s/{{FOREIGN_SPIP}}/${FOREIGN_SPIP}/"\
|
||||
-e "s|\${orga}|${ORGA}|g"
|
||||
) > "$2"
|
||||
sed "s/storage_opt:.*/storage_opt: ${quota}/g" -i "$2"
|
||||
}
|
||||
@@ -394,13 +412,18 @@ if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
|
||||
ln -sf ../../config/orgaTmpl/orga-gen.sh
|
||||
ln -sf ../../config/orgaTmpl/orga-rm.sh
|
||||
ln -sf ../../config/orgaTmpl/init-paheko.sh
|
||||
ln -sf ../../config/orgaTmpl/initdb.d/
|
||||
#ln -sf ../../config/orgaTmpl/initdb.d/
|
||||
ln -sf ../../config/orgaTmpl/app/
|
||||
ln -sf ../../config/orgaTmpl/wiki-conf/
|
||||
ln -sf ../../config/orgaTmpl/reload.sh
|
||||
ln -sf ../../config/orgaTmpl/init-db.sh
|
||||
fi
|
||||
|
||||
if [ ! -d "${KAZ_KEY_DIR}/orgas/$ORGA/" ]; then
|
||||
rsync -a "${KAZ_CONF_DIR}/orgaTmpl/secret.tmpl/" "${KAZ_KEY_DIR}/orgas/$ORGA/"
|
||||
${KAZ_BIN_DIR}/secretGen.sh -d $ORGA
|
||||
fi
|
||||
|
||||
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
|
||||
# ########## update ${DOCKERS_ENV}
|
||||
if ! grep -q "proxy_orga=" .env 2> /dev/null
|
||||
@@ -420,6 +443,12 @@ if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
|
||||
fi
|
||||
|
||||
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
|
||||
|
||||
|
||||
# ########## create network
|
||||
## GAEL bizarre, je pense que c'est déjà fait qque part, mais chez moi ça veut pas ...
|
||||
docker network create "${ORGA}-orgaNet"
|
||||
|
||||
# ########## create volume
|
||||
./init-volume.sh
|
||||
fi
|
||||
|
@@ -40,6 +40,8 @@ remove () {
|
||||
sed -i -e "/proxy_${ORGA_FLAG}=/d" "${DOCKERS_ENV}"
|
||||
sed -i -e "/^${ORGA}-orga$/d" "${ORGA_LIST}"
|
||||
rm -fr "${KAZ_COMP_DIR}/${ORGA}-orga"
|
||||
|
||||
rm -fr "${KAZ_KEY_DIR}/orgas/${ORGA}"
|
||||
exit;;
|
||||
[Nn]* )
|
||||
|
||||
|
3
config/orgaTmpl/secret.tmpl/env-castopodAdmin
Normal file
3
config/orgaTmpl/secret.tmpl/env-castopodAdmin
Normal file
@@ -0,0 +1,3 @@
|
||||
ADMIN_USER=@@pass@@castopod2@@p@@
|
||||
ADMIN_MAIL=admin@@@globalvar@@domain@@gv@@
|
||||
ADMIN_PASSWORD=@@pass@@castopod3@@p@@
|
4
config/orgaTmpl/secret.tmpl/env-castopodDB
Normal file
4
config/orgaTmpl/secret.tmpl/env-castopodDB
Normal file
@@ -0,0 +1,4 @@
|
||||
MYSQL_ROOT_PASSWORD=@@pass@@rootdb@@p@@
|
||||
MYSQL_USER=@@user@@castopod1@@u@@
|
||||
MYSQL_PASSWORD=@@pass@@castopod1@@p@@
|
||||
MYSQL_DATABASE=@@db@@castopod1@@d@@
|
7
config/orgaTmpl/secret.tmpl/env-castopodServ
Normal file
7
config/orgaTmpl/secret.tmpl/env-castopodServ
Normal file
@@ -0,0 +1,7 @@
|
||||
CP_EMAIL_SMTP_HOST=
|
||||
CP_EMAIL_FROM=
|
||||
CP_EMAIL_SMTP_USERNAME=
|
||||
CP_EMAIL_SMTP_PASSWORD=
|
||||
CP_EMAIL_SMTP_PORT=
|
||||
CP_EMAIL_SMTP_CRYPTO=
|
||||
CP_REDIS_PASSWORD=
|
9
config/orgaTmpl/secret.tmpl/env-mattermostDB
Normal file
9
config/orgaTmpl/secret.tmpl/env-mattermostDB
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
MYSQL_ROOT_PASSWORD=@@pass@@rootdb@@p@@
|
||||
MYSQL_DATABASE=@@db@@mattermost@@d@@
|
||||
MYSQL_USER=@@user@@mattermost@@u@@
|
||||
MYSQL_PASSWORD=@@pass@@mattermost@@p@@
|
||||
|
||||
POSTGRES_USER=@@user@@mattermost@@u@@
|
||||
POSTGRES_PASSWORD=@@pass@@mattermost@@p@@
|
||||
POSTGRES_DB=@@db@@mattermost@@d@@
|
9
config/orgaTmpl/secret.tmpl/env-mattermostServ
Normal file
9
config/orgaTmpl/secret.tmpl/env-mattermostServ
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
MM_ADMIN_EMAIL=@@globalvar@@matterHost@@gv@@@@@globalvar@@domain@@gv@@
|
||||
MM_ADMIN_USER=@@user@@mattermost2@@u@@
|
||||
MM_ADMIN_PASSWORD=@@pass@@mattermost2@@p@@
|
||||
|
||||
|
||||
MM_SQLSETTINGS_DRIVERNAME=postgres
|
||||
MM_SQLSETTINGS_DATASOURCE=postgres://@@user@@mattermost@@u@@:@@pass@@mattermost@@p@@@postgres:5432/@@db@@mattermost@@d@@?sslmode=disable&connect_timeout=10
|
||||
|
8
config/orgaTmpl/secret.tmpl/env-nextcloudDB
Normal file
8
config/orgaTmpl/secret.tmpl/env-nextcloudDB
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
MYSQL_ROOT_PASSWORD=@@pass@@rootdb@@p@@
|
||||
MYSQL_DATABASE=@@db@@nextcloud@@d@@
|
||||
MYSQL_USER=@@user@@nextcloud@@u@@
|
||||
MYSQL_PASSWORD=@@pass@@nextcloud@@p@@
|
||||
|
||||
#NC_MYSQL_USER=
|
||||
#NC_MYSQL_PASSWORD=
|
5
config/orgaTmpl/secret.tmpl/env-nextcloudServ
Normal file
5
config/orgaTmpl/secret.tmpl/env-nextcloudServ
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
NEXTCLOUD_ADMIN_USER=@@user@@nextcloudadmin@@u@@
|
||||
NEXTCLOUD_ADMIN_PASSWORD=@@pass@@nextcloudadmin@@p@@
|
||||
MYSQL_HOST=db
|
||||
RAIN_LOOP=@@pass@@rainloop@@p@@
|
4
config/orgaTmpl/secret.tmpl/env-spipDB
Normal file
4
config/orgaTmpl/secret.tmpl/env-spipDB
Normal file
@@ -0,0 +1,4 @@
|
||||
MYSQL_ROOT_PASSWORD=@@pass@@rootdb@@p@@
|
||||
MYSQL_DATABASE=@@db@@spip@@d@@
|
||||
MYSQL_USER=@@user@@spip@@u@@
|
||||
MYSQL_PASSWORD=@@pass@@spip@@p@@
|
10
config/orgaTmpl/secret.tmpl/env-spipServ
Normal file
10
config/orgaTmpl/secret.tmpl/env-spipServ
Normal file
@@ -0,0 +1,10 @@
|
||||
SPIP_AUTO_INSTALL=1
|
||||
SPIP_DB_SERVER=mysql
|
||||
SPIP_DB_NAME=@@db@@spip@@d@@
|
||||
SPIP_DB_LOGIN=@@user@@spip@@u@@
|
||||
SPIP_DB_PASS=@@pass@@spip@@p@@
|
||||
SPIP_ADMIN_NAME=admin
|
||||
SPIP_ADMIN_LOGIN=@@user@@spipadmin@@u@@
|
||||
SPIP_ADMIN_EMAIL=admin@@@globalvar@@domain@@gv@@
|
||||
SPIP_ADMIN_PASS=@@pass@@spipadmin@@p@@
|
||||
PHP_TIMEZONE=Europe/Paris
|
4
config/orgaTmpl/secret.tmpl/env-wpDB
Normal file
4
config/orgaTmpl/secret.tmpl/env-wpDB
Normal file
@@ -0,0 +1,4 @@
|
||||
MYSQL_ROOT_PASSWORD=@@pass@@rootdb@@p@@
|
||||
MYSQL_DATABASE=@@db@@wp@@d@@
|
||||
MYSQL_USER=@@user@@wp@@u@@
|
||||
MYSQL_PASSWORD=@@pass@@wp@@p@@
|
8
config/orgaTmpl/secret.tmpl/env-wpServ
Normal file
8
config/orgaTmpl/secret.tmpl/env-wpServ
Normal file
@@ -0,0 +1,8 @@
|
||||
# share with wpDB
|
||||
|
||||
WORDPRESS_DB_HOST=db:3306
|
||||
WORDPRESS_ADMIN_USER=@@user@@adminwp@@u@@
|
||||
WORDPRESS_ADMIN_PASSWORD=@@pass@@adminwp@@p@@
|
||||
WORDPRESS_DB_NAME=@@db@@wp@@d@@
|
||||
WORDPRESS_DB_USER=@@user@@wp@@u@@
|
||||
WORDPRESS_DB_PASSWORD=@@pass@@wp@@p@@
|
@@ -1,10 +0,0 @@
|
||||
# acl.auth.php
|
||||
# <?php exit()?>
|
||||
# Don't modify the lines above
|
||||
#
|
||||
# Access Control Lists
|
||||
#
|
||||
# Auto-generated by install script
|
||||
# Date: Sat, 13 Feb 2021 17:42:28 +0000
|
||||
* @ALL 1
|
||||
* @user 8
|
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* Dokuwiki's Main Configuration File - Local Settings
|
||||
* Auto-generated by config plugin
|
||||
* Run for user: felix
|
||||
* Date: Sun, 28 Feb 2021 15:56:13 +0000
|
||||
*/
|
||||
|
||||
$conf['title'] = 'Kaz';
|
||||
$conf['template'] = 'docnavwiki';
|
||||
$conf['license'] = 'cc-by-sa';
|
||||
$conf['useacl'] = 1;
|
||||
$conf['superuser'] = '@admin';
|
||||
$conf['manager'] = '@manager';
|
||||
$conf['disableactions'] = 'register';
|
||||
$conf['remoteuser'] = '';
|
||||
$conf['mailfrom'] = 'dokuwiki@kaz.bzh';
|
||||
$conf['updatecheck'] = 0;
|
||||
$conf['userewrite'] = '1';
|
||||
$conf['useslash'] = 1;
|
||||
$conf['plugin']['ckgedit']['scayt_auto'] = 'on';
|
||||
$conf['plugin']['ckgedit']['scayt_lang'] = 'French/fr_FR';
|
||||
$conf['plugin']['ckgedit']['other_lang'] = 'fr';
|
||||
$conf['plugin']['smtp']['smtp_host'] = 'smtp.kaz.bzh';
|
||||
$conf['plugin']['todo']['CheckboxText'] = 0;
|
||||
$conf['plugin']['wrap']['restrictionType'] = '1';
|
@@ -1,13 +0,0 @@
|
||||
# users.auth.php
|
||||
# <?php exit()?>
|
||||
# Don't modify the lines above
|
||||
#
|
||||
# Userfile
|
||||
#
|
||||
# Auto-generated by install script
|
||||
# Date: Sat, 13 Feb 2021 17:42:28 +0000
|
||||
#
|
||||
# Format:
|
||||
# login:passwordhash:Real Name:email:groups,comma,separated
|
||||
|
||||
admin:$2y$10$GYvFgViXeEUmDViplHEs7eoYV8tmbfsS8wA1vfHQ.tWgW14o9aTjy:admin:contact@kaz.bzh:admin,user
|
@@ -1,21 +0,0 @@
|
||||
|
||||
#proxy_buffering off;
|
||||
#proxy_set_header X-Forwarded-Host $host:$server_port;
|
||||
#proxy_set_header X-Forwarded-Server $host;
|
||||
#XXX pb proxy_set_header Connection $proxy_connection;
|
||||
|
||||
proxy_buffers 256 16k;
|
||||
proxy_buffer_size 16k;
|
||||
|
||||
# mattermost
|
||||
http2_push_preload on; # Enable HTTP/2 Server Push
|
||||
add_header Strict-Transport-Security max-age=15768000;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
#proxy_hide_header 'x-frame-options';
|
||||
#proxy_set_header x-frame-options allowall;
|
||||
proxy_set_header X-Frame-Options SAMEORIGIN;
|
||||
|
1
dockers/cadvisor/.env
Symbolic link
1
dockers/cadvisor/.env
Symbolic link
@@ -0,0 +1 @@
|
||||
../../config/dockers.env
|
42
dockers/cadvisor/docker-compose.yml
Normal file
42
dockers/cadvisor/docker-compose.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
services:
|
||||
|
||||
cadvisor:
|
||||
image: gcr.io/cadvisor/cadvisor:v0.52.0
|
||||
container_name: cadvisor
|
||||
command:
|
||||
- "--store_container_labels=false"
|
||||
- "--whitelisted_container_labels=com.docker.compose.project"
|
||||
- "--housekeeping_interval=60s"
|
||||
- "--docker_only=true"
|
||||
- "--disable_metrics=percpu,sched,tcp,udp,disk,diskIO,hugetlb,referenced_memory,cpu_topology,resctrl"
|
||||
networks:
|
||||
- traefikNet
|
||||
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.cadvisor-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.cadvisor-secure.rule=Host(`cadvisor-${site}.${domain}`)"
|
||||
#- "traefik.http.routers.grafana-secure.tls=true"
|
||||
- "traefik.http.routers.cadvisor-secure.service=cadvisor"
|
||||
- "traefik.http.routers.cadvisor-secure.middlewares=test-adminipallowlist@file"
|
||||
- "traefik.http.services.cadvisor.loadbalancer.server.port=8080"
|
||||
- "traefik.docker.network=traefikNet"
|
||||
|
||||
# ports:
|
||||
# - 8098:8080
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:ro
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker/:/var/lib/docker:ro
|
||||
- /dev/disk/:/dev/disk:ro
|
||||
devices:
|
||||
- /dev/kmsg
|
||||
privileged: true
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
traefikNet:
|
||||
external: true
|
||||
name: traefikNet
|
||||
|
@@ -6,7 +6,6 @@ setKazVars
|
||||
|
||||
cd $(dirname $0)
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
"${KAZ_BIN_DIR}/gestContainers.sh" --install -M -castopod
|
||||
|
||||
|
@@ -4,7 +4,6 @@ KAZ_ROOT=$(cd $(dirname $0)/../..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
|
||||
${KAZ_BIN_DIR}/gestContainers.sh --install -M -cloud
|
||||
|
@@ -1,102 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
|
||||
|
||||
#"${KAZ_BIN_DIR}/initCloud.sh"
|
||||
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ app:enable user_ldap
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:delete-config s01
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:create-empty-config
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapAgentName cn=cloud,ou=applications,${ldap_root}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapAgentPassword ${ldap_LDAP_CLOUD_PASSWORD}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapAgentPassword ${ldap_LDAP_CLOUD_PASSWORD}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapBase ${ldap_root}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapBaseGroups ${ldap_root}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapBaseUsers ou=users,${ldap_root}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapExpertUsernameAttr identifiantKaz
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapHost ${ldapServName}
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapPort 389
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapTLS 0
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapLoginFilter "(&(objectclass=nextcloudAccount)(|(cn=%uid)(identifiantKaz=%uid)))"
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapQuotaAttribute nextcloudQuota
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapUserFilter "(&(objectclass=nextcloudAccount)(nextcloudEnabled=TRUE))"
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapUserFilterObjectclass nextcloudAccount
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapEmailAttribute mail
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapUserDisplayName cn
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapUserFilterMode 1
|
||||
docker exec -ti -u 33 nextcloudServ /var/www/html/occ ldap:set-config s01 ldapConfigurationActive 1
|
||||
|
||||
# Dans le mariadb, pour permettre au ldap de reprendre la main : delete from oc_users where uid<>'admin';
|
||||
# docker exec -i nextcloudDB mysql --user=<user> --password=<password> <db> <<< "delete from oc_users where uid<>'admin';"
|
||||
|
||||
# Doc : https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205
|
||||
|
||||
# Exemple de table/clés :
|
||||
# +-------------------------------+----------------------------------------------------------+
|
||||
# | Configuration | s01 |
|
||||
# +-------------------------------+----------------------------------------------------------+
|
||||
# | hasMemberOfFilterSupport | 0 |
|
||||
# | homeFolderNamingRule | |
|
||||
# | lastJpegPhotoLookup | 0 |
|
||||
# | ldapAgentName | cn=cloud,ou=applications,dc=kaz,dc=sns |
|
||||
# | ldapAgentPassword | *** |
|
||||
# | ldapAttributesForGroupSearch | |
|
||||
# | ldapAttributesForUserSearch | |
|
||||
# | ldapBackgroundHost | |
|
||||
# | ldapBackgroundPort | |
|
||||
# | ldapBackupHost | |
|
||||
# | ldapBackupPort | |
|
||||
# | ldapBase | ou=users,dc=kaz,dc=sns |
|
||||
# | ldapBaseGroups | ou=users,dc=kaz,dc=sns |
|
||||
# | ldapBaseUsers | ou=users,dc=kaz,dc=sns |
|
||||
# | ldapCacheTTL | 600 |
|
||||
# | ldapConfigurationActive | 1 |
|
||||
# | ldapConnectionTimeout | 15 |
|
||||
# | ldapDefaultPPolicyDN | |
|
||||
# | ldapDynamicGroupMemberURL | |
|
||||
# | ldapEmailAttribute | mail |
|
||||
# | ldapExperiencedAdmin | 0 |
|
||||
# | ldapExpertUUIDGroupAttr | |
|
||||
# | ldapExpertUUIDUserAttr | |
|
||||
# | ldapExpertUsernameAttr | uid |
|
||||
# | ldapExtStorageHomeAttribute | |
|
||||
# | ldapGidNumber | gidNumber |
|
||||
# | ldapGroupDisplayName | cn |
|
||||
# | ldapGroupFilter | |
|
||||
# | ldapGroupFilterGroups | |
|
||||
# | ldapGroupFilterMode | 0 |
|
||||
# | ldapGroupFilterObjectclass | |
|
||||
# | ldapGroupMemberAssocAttr | |
|
||||
# | ldapHost | ldap |
|
||||
# | ldapIgnoreNamingRules | |
|
||||
# | ldapLoginFilter | (&(|(objectclass=nextcloudAccount))(cn=%uid)) |
|
||||
# | ldapLoginFilterAttributes | |
|
||||
# | ldapLoginFilterEmail | 0 |
|
||||
# | ldapLoginFilterMode | 0 |
|
||||
# | ldapLoginFilterUsername | 1 |
|
||||
# | ldapMatchingRuleInChainState | unknown |
|
||||
# | ldapNestedGroups | 0 |
|
||||
# | ldapOverrideMainServer | |
|
||||
# | ldapPagingSize | 500 |
|
||||
# | ldapPort | 389 |
|
||||
# | ldapQuotaAttribute | nextcloudQuota |
|
||||
# | ldapQuotaDefault | |
|
||||
# | ldapTLS | 0 |
|
||||
# | ldapUserAvatarRule | default |
|
||||
# | ldapUserDisplayName | cn |
|
||||
# | ldapUserDisplayName2 | |
|
||||
# | ldapUserFilter | (&(objectclass=nextcloudAccount)(nextcloudEnabled=TRUE)) |
|
||||
# | ldapUserFilterGroups | |
|
||||
# | ldapUserFilterMode | 1 |
|
||||
# | ldapUserFilterObjectclass | nextcloudAccount |
|
||||
# | ldapUuidGroupAttribute | auto |
|
||||
# | ldapUuidUserAttribute | auto |
|
||||
# | turnOffCertCheck | 0 |
|
||||
# | turnOnPasswordChange | 0 |
|
||||
# | useMemberOfToDetectMembership | 1 |
|
||||
# +-------------------------------+----------------------------------------------------------+
|
@@ -27,11 +27,13 @@ services:
|
||||
- "traefik.docker.network=giteaNet"
|
||||
|
||||
db:
|
||||
image: mariadb:10.5
|
||||
image: mariadb
|
||||
container_name: ${gitDBName}
|
||||
restart: ${restartPolicy}
|
||||
env_file:
|
||||
- ../../secret/env-${gitDBName}
|
||||
environment:
|
||||
- MARIADB_AUTO_UPGRADE=1
|
||||
volumes:
|
||||
- gitDB:/var/lib/mysql
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
|
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:v2.15.2
|
||||
image: prom/prometheus:v3.3.0
|
||||
restart: unless-stopped
|
||||
container_name: ${prometheusServName}
|
||||
volumes:
|
||||
@@ -10,27 +10,27 @@ services:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
command:
|
||||
- "--web.route-prefix=/"
|
||||
- "--web.external-url=https://${site}.${domain}/prometheus"
|
||||
# - "--web.route-prefix=/"
|
||||
# - "--web.external-url=https://prometheus.${domain}"
|
||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||
- "--storage.tsdb.path=/prometheus"
|
||||
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
|
||||
- "--web.console.templates=/usr/share/prometheus/consoles"
|
||||
networks:
|
||||
- traefikNet
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.prometheus-secure.entrypoints=websecure"
|
||||
- "traefik.http.middlewares.prometheus-stripprefix.stripprefix.prefixes=/prometheus"
|
||||
- "traefik.http.routers.prometheus-secure.rule=Host(`${site}.${domain}`) && PathPrefix(`/prometheus`)"
|
||||
# - "traefik.http.routers.prometheus-secure.tls=true"
|
||||
- "traefik.http.routers.prometheus-secure.middlewares=prometheus-stripprefix,test-adminiallowlist@file,traefik-auth"
|
||||
- "traefik.http.routers.prometheus-secure.service=prometheus"
|
||||
- "traefik.http.services.prometheus.loadbalancer.server.port=9090"
|
||||
- "traefik.docker.network=traefikNet"
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.prometheus-secure.entrypoints=websecure"
|
||||
# - "traefik.http.middlewares.prometheus-stripprefix.stripprefix.prefixes=/prometheus"
|
||||
# - "traefik.http.routers.prometheus-secure.rule=Host(`prometheus.${domain}`)"
|
||||
# # - "traefik.http.routers.prometheus-secure.tls=true"
|
||||
# - "traefik.http.routers.prometheus-secure.middlewares=prometheus-stripprefix,test-adminiallowlist@file,traefik-auth"
|
||||
# - "traefik.http.routers.prometheus-secure.service=prometheus"
|
||||
# - "traefik.http.services.prometheus.loadbalancer.server.port=9090"
|
||||
# - "traefik.docker.network=traefikNet"
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:6.6.1
|
||||
image: grafana/grafana:11.6.0
|
||||
restart: unless-stopped
|
||||
container_name: ${grafanaServName}
|
||||
volumes:
|
||||
@@ -48,8 +48,8 @@ services:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.grafana-secure.entrypoints=websecure"
|
||||
- "traefik.http.middlewares.grafana-stripprefix.stripprefix.prefixes=/grafana"
|
||||
- "traefik.http.routers.grafana-secure.rule=Host(`${site}.${domain}`) && PathPrefix(`/grafana`)"
|
||||
# - "traefik.http.routers.grafana-secure.tls=true"
|
||||
- "traefik.http.routers.grafana-secure.rule=Host(`grafana.${domain}`)"
|
||||
#- "traefik.http.routers.grafana-secure.tls=true"
|
||||
- "traefik.http.routers.grafana-secure.service=grafana"
|
||||
- "traefik.http.routers.grafana-secure.middlewares=grafana-stripprefix,test-adminipallowlist@file,traefik-auth"
|
||||
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||
|
23545
dockers/grafana/grafana/provisioning/dashboards/Node_Exporter_Full.json
Normal file
23545
dockers/grafana/grafana/provisioning/dashboards/Node_Exporter_Full.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,874 @@
|
||||
{
|
||||
"__inputs": [
|
||||
{
|
||||
"name": "DS_PROMETHEUS",
|
||||
"label": "Prometheus",
|
||||
"description": "",
|
||||
"type": "datasource",
|
||||
"pluginId": "prometheus",
|
||||
"pluginName": "Prometheus"
|
||||
}
|
||||
],
|
||||
"__elements": {},
|
||||
"__requires": [
|
||||
{
|
||||
"type": "grafana",
|
||||
"id": "grafana",
|
||||
"name": "Grafana",
|
||||
"version": "11.6.0"
|
||||
},
|
||||
{
|
||||
"type": "datasource",
|
||||
"id": "prometheus",
|
||||
"name": "Prometheus",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
{
|
||||
"type": "panel",
|
||||
"id": "stat",
|
||||
"name": "Stat",
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"type": "panel",
|
||||
"id": "timeseries",
|
||||
"name": "Time series",
|
||||
"version": ""
|
||||
}
|
||||
],
|
||||
"annotations": {
|
||||
"list": [
|
||||
{
|
||||
"builtIn": 1,
|
||||
"datasource": {
|
||||
"type": "grafana",
|
||||
"uid": "-- Grafana --"
|
||||
},
|
||||
"enable": true,
|
||||
"hide": true,
|
||||
"iconColor": "rgba(0, 211, 255, 1)",
|
||||
"name": "Annotations & Alerts",
|
||||
"type": "dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "Docker monitoring with Prometheus and cAdvisor",
|
||||
"editable": true,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 1,
|
||||
"id": null,
|
||||
"links": [
|
||||
{
|
||||
"asDropdown": false,
|
||||
"icon": "external link",
|
||||
"includeVars": false,
|
||||
"keepTime": false,
|
||||
"tags": [],
|
||||
"targetBlank": true,
|
||||
"title": "Portainer",
|
||||
"tooltip": "",
|
||||
"type": "link",
|
||||
"url": "https://portainer.kaz.bzh/"
|
||||
}
|
||||
],
|
||||
"panels": [
|
||||
{
|
||||
"collapsed": false,
|
||||
"gridPos": {
|
||||
"h": 1,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"id": 8,
|
||||
"panels": [],
|
||||
"repeat": "host",
|
||||
"title": "$host",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"mappings": [
|
||||
{
|
||||
"options": {
|
||||
"match": "null",
|
||||
"result": {
|
||||
"text": "N/A"
|
||||
}
|
||||
},
|
||||
"type": "special"
|
||||
}
|
||||
],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 3,
|
||||
"w": 8,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
"id": 7,
|
||||
"maxDataPoints": 100,
|
||||
"options": {
|
||||
"colorMode": "none",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"orientation": "horizontal",
|
||||
"percentChangeColorMode": "standard",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"mean"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"showPercentChange": false,
|
||||
"textMode": "auto",
|
||||
"wideLayout": true
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "count(container_last_seen{image!=\"\", host=\"$host\"})",
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "",
|
||||
"metric": "container_last_seen",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 240
|
||||
}
|
||||
],
|
||||
"title": "Running containers",
|
||||
"transparent": true,
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"mappings": [
|
||||
{
|
||||
"options": {
|
||||
"match": "null",
|
||||
"result": {
|
||||
"text": "N/A"
|
||||
}
|
||||
},
|
||||
"type": "special"
|
||||
}
|
||||
],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "mbytes"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 3,
|
||||
"w": 8,
|
||||
"x": 8,
|
||||
"y": 1
|
||||
},
|
||||
"id": 5,
|
||||
"maxDataPoints": 100,
|
||||
"options": {
|
||||
"colorMode": "none",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"orientation": "horizontal",
|
||||
"percentChangeColorMode": "standard",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"showPercentChange": false,
|
||||
"textMode": "auto",
|
||||
"wideLayout": true
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(container_memory_usage_bytes{image!=\"\", host=\"$host\"})/1024/1024",
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "",
|
||||
"metric": "container_memory_usage_bytes",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 240
|
||||
}
|
||||
],
|
||||
"title": "Total Memory Usage",
|
||||
"transparent": true,
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"mappings": [
|
||||
{
|
||||
"options": {
|
||||
"match": "null",
|
||||
"result": {
|
||||
"text": "N/A"
|
||||
}
|
||||
},
|
||||
"type": "special"
|
||||
}
|
||||
],
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "percent"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 3,
|
||||
"w": 8,
|
||||
"x": 16,
|
||||
"y": 1
|
||||
},
|
||||
"id": 6,
|
||||
"maxDataPoints": 100,
|
||||
"options": {
|
||||
"colorMode": "none",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"orientation": "horizontal",
|
||||
"percentChangeColorMode": "standard",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"showPercentChange": false,
|
||||
"textMode": "auto",
|
||||
"wideLayout": true
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "sum(rate(container_cpu_user_seconds_total{image!=\"\", host=\"$host\"}[5m]) * 100)",
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "",
|
||||
"metric": "container_memory_usage_bytes",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 240
|
||||
}
|
||||
],
|
||||
"title": "Total CPU Usage",
|
||||
"transparent": true,
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 10,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 2,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "never",
|
||||
"spanNulls": true,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"links": [
|
||||
{
|
||||
"oneClick": false,
|
||||
"targetBlank": true,
|
||||
"title": "Portainer host",
|
||||
"url": "https://portainer.kaz.bzh/#!/${__field.labels.portainer_id}/docker/containers"
|
||||
},
|
||||
{
|
||||
"targetBlank": true,
|
||||
"title": "Portainer container",
|
||||
"url": "https://portainer.kaz.bzh/#!/${__field.labels.portainer_id}/docker/containers/${__field.labels.id.21}${__field.labels.id.22}${__field.labels.id.23}${__field.labels.id.24}${__field.labels.id.25}${__field.labels.id.26}${__field.labels.id.27}${__field.labels.id.28}${__field.labels.id.29}${__field.labels.id.30}${__field.labels.id.31}${__field.labels.id.32}"
|
||||
}
|
||||
],
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "percent"
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"__systemRef": "hideSeriesFrom",
|
||||
"matcher": {
|
||||
"id": "byNames",
|
||||
"options": {
|
||||
"mode": "exclude",
|
||||
"names": [
|
||||
"lagalette-orga/lagalette-wpServ"
|
||||
],
|
||||
"prefix": "All except:",
|
||||
"readOnly": true
|
||||
}
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "custom.hideFrom",
|
||||
"value": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 4
|
||||
},
|
||||
"id": 2,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"lastNotNull"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Mean",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "multi",
|
||||
"sort": "desc"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "rate(container_cpu_user_seconds_total{image!=\"\", host=\"$host\"}[5m]) * 100",
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "{{container_label_com_docker_compose_project}}/{{name}}",
|
||||
"metric": "cpu",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 10
|
||||
}
|
||||
],
|
||||
"title": "CPU Usage",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 10,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 2,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "never",
|
||||
"spanNulls": true,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"links": [
|
||||
{
|
||||
"targetBlank": true,
|
||||
"title": "Portainer host",
|
||||
"url": "https://portainer.kaz.bzh/#!/${__field.labels.portainer_id}/docker/containers"
|
||||
},
|
||||
{
|
||||
"targetBlank": true,
|
||||
"title": "Portainer container",
|
||||
"url": "https://portainer.kaz.bzh/#!/${__field.labels.portainer_id}/docker/containers/${__field.labels.id.21}${__field.labels.id.22}${__field.labels.id.23}${__field.labels.id.24}${__field.labels.id.25}${__field.labels.id.26}${__field.labels.id.27}${__field.labels.id.28}${__field.labels.id.29}${__field.labels.id.30}${__field.labels.id.31}${__field.labels.id.32}"
|
||||
}
|
||||
],
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "bytes"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 24,
|
||||
"x": 0,
|
||||
"y": 11
|
||||
},
|
||||
"id": 1,
|
||||
"links": [
|
||||
{
|
||||
"targetBlank": true,
|
||||
"title": "Portainer",
|
||||
"url": "https://portainer.kaz.bzh"
|
||||
}
|
||||
],
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"lastNotNull"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "multi",
|
||||
"sort": "desc"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "builder",
|
||||
"expr": "container_memory_usage_bytes{image!=\"\", host=\"$host\"}",
|
||||
"hide": false,
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "{{container_label_com_docker_compose_project}}/{{name}}",
|
||||
"metric": "container_memory_usage_bytes",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 10
|
||||
}
|
||||
],
|
||||
"title": "Memory Usage",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 10,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 2,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "never",
|
||||
"spanNulls": true,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "Bps"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 18
|
||||
},
|
||||
"id": 3,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"lastNotNull"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Mean",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "multi",
|
||||
"sort": "desc"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "irate(container_network_receive_bytes_total{image!=\"\", host=\"$host\"}[5m])",
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "{{container_label_com_docker_compose_project}}/{{name}}",
|
||||
"metric": "container_network_receive_bytes_total",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 20
|
||||
}
|
||||
],
|
||||
"title": "Network Rx",
|
||||
"transformations": [
|
||||
{
|
||||
"id": "renameByRegex",
|
||||
"options": {
|
||||
"regex": "(.*)",
|
||||
"renamePattern": "$1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 10,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 2,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "never",
|
||||
"spanNulls": true,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "Bps"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 12,
|
||||
"y": 18
|
||||
},
|
||||
"id": 9,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"lastNotNull"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "right",
|
||||
"showLegend": true,
|
||||
"sortBy": "Mean",
|
||||
"sortDesc": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "multi",
|
||||
"sort": "desc"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "${DS_PROMETHEUS}"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "irate(container_network_transmit_bytes_total{image!=\"\", host=\"$host\"}[5m])",
|
||||
"hide": false,
|
||||
"intervalFactor": 2,
|
||||
"legendFormat": "{{container_label_com_docker_compose_project}}/{{name}}",
|
||||
"metric": "container_network_receive_bytes_total",
|
||||
"range": true,
|
||||
"refId": "B",
|
||||
"step": 20
|
||||
}
|
||||
],
|
||||
"title": "Network Tx",
|
||||
"type": "timeseries"
|
||||
}
|
||||
],
|
||||
"refresh": "30s",
|
||||
"schemaVersion": 41,
|
||||
"tags": [],
|
||||
"templating": {
|
||||
"list": [
|
||||
{
|
||||
"allowCustomValue": false,
|
||||
"current": {},
|
||||
"definition": "label_values(host)",
|
||||
"includeAll": true,
|
||||
"multi": true,
|
||||
"name": "host",
|
||||
"options": [],
|
||||
"query": {
|
||||
"qryType": 1,
|
||||
"query": "label_values(host)",
|
||||
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||
},
|
||||
"refresh": 1,
|
||||
"regex": "",
|
||||
"type": "query"
|
||||
},
|
||||
{
|
||||
"baseFilters": [],
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
"uid": "PBFA97CFB590B2093"
|
||||
},
|
||||
"filters": [
|
||||
{
|
||||
"condition": "",
|
||||
"key": "container_label_com_docker_compose_project",
|
||||
"keyLabel": "container_label_com_docker_compose_project",
|
||||
"operator": "=~",
|
||||
"value": ".*",
|
||||
"valueLabels": [
|
||||
".*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"hide": 1,
|
||||
"name": "filter",
|
||||
"type": "adhoc"
|
||||
}
|
||||
]
|
||||
},
|
||||
"time": {
|
||||
"from": "now-3h",
|
||||
"to": "now"
|
||||
},
|
||||
"timepicker": {},
|
||||
"timezone": "browser",
|
||||
"title": "Docker monitoring par host",
|
||||
"uid": "eekgch7tdq8sgc",
|
||||
"version": 29,
|
||||
"weekStart": ""
|
||||
}
|
@@ -0,0 +1,442 @@
|
||||
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "Bps"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 14
|
||||
},
|
||||
"id": 84,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [
|
||||
"mean",
|
||||
"lastNotNull",
|
||||
"max",
|
||||
"min"
|
||||
],
|
||||
"displayMode": "table",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "multi",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "rate(node_network_receive_bytes_total{host=\"$host\", device=~\"$device\"}[5m])",
|
||||
"format": "time_series",
|
||||
"intervalFactor": 1,
|
||||
"legendFormat": "{{device}} - rx",
|
||||
"range": true,
|
||||
"refId": "A",
|
||||
"step": 240
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "- rate(node_network_transmit_bytes_total{host=\"$host\", device=~\"$device\"}[5m])",
|
||||
"hide": false,
|
||||
"instant": false,
|
||||
"legendFormat": "{{device}} - tx",
|
||||
"range": true,
|
||||
"refId": "B"
|
||||
}
|
||||
],
|
||||
"title": "Network Traffic Rx",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"description": "",
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"links": [],
|
||||
"mappings": [],
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "percent"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 12,
|
||||
"y": 14
|
||||
},
|
||||
"id": 174,
|
||||
"options": {
|
||||
"alertThreshold": true,
|
||||
"legend": {
|
||||
"calcs": [],
|
||||
"displayMode": "list",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": "(node_filesystem_size_bytes{host=\"$host\",fstype=~\"ext.*|xfs\",mountpoint !~\".*pod.*\"}-node_filesystem_free_bytes{host=\"$host\",fstype=~\"ext.*|xfs\",mountpoint !~\".*pod.*\"}) *100/(node_filesystem_avail_bytes{host=\"$host\",fstype=~\"ext.*|xfs\",mountpoint !~\".*pod.*\"}+(node_filesystem_size_bytes{host=\"$host\",fstype=~\"ext.*|xfs\",mountpoint !~\".*pod.*\"}-node_filesystem_free_bytes{host=\"$host\",fstype=~\"ext.*|xfs\",mountpoint !~\".*pod.*\"}))",
|
||||
"format": "time_series",
|
||||
"instant": false,
|
||||
"interval": "",
|
||||
"intervalFactor": 1,
|
||||
"legendFormat": "{{mountpoint}}",
|
||||
"refId": "A"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"expr": "node_filesystem_files_free{host=\"$host\",fstype=~\"ext.?|xfs\"} / node_filesystem_files{host=\"$host\",fstype=~\"ext.?|xfs\"}",
|
||||
"hide": true,
|
||||
"interval": "",
|
||||
"legendFormat": "Inodes:{{instance}}:{{mountpoint}}",
|
||||
"refId": "B"
|
||||
}
|
||||
],
|
||||
"title": "Disk",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"description": "Physical machines only",
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"min": 0,
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "celsius"
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 21
|
||||
},
|
||||
"id": 175,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [],
|
||||
"displayMode": "list",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"editorMode": "code",
|
||||
"expr": "node_thermal_zone_temp{host=\"$host\"}",
|
||||
"legendFormat": "{{type}}-zone{{zone}}",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Temperature",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"axisBorderShow": false,
|
||||
"axisCenteredZero": false,
|
||||
"axisColorMode": "text",
|
||||
"axisLabel": "",
|
||||
"axisPlacement": "auto",
|
||||
"barAlignment": 0,
|
||||
"barWidthFactor": 0.6,
|
||||
"drawStyle": "line",
|
||||
"fillOpacity": 0,
|
||||
"gradientMode": "none",
|
||||
"hideFrom": {
|
||||
"legend": false,
|
||||
"tooltip": false,
|
||||
"viz": false
|
||||
},
|
||||
"insertNulls": false,
|
||||
"lineInterpolation": "linear",
|
||||
"lineWidth": 1,
|
||||
"pointSize": 5,
|
||||
"scaleDistribution": {
|
||||
"type": "linear"
|
||||
},
|
||||
"showPoints": "auto",
|
||||
"spanNulls": false,
|
||||
"stacking": {
|
||||
"group": "A",
|
||||
"mode": "none"
|
||||
},
|
||||
"thresholdsStyle": {
|
||||
"mode": "off"
|
||||
}
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green"
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 7,
|
||||
"w": 12,
|
||||
"x": 12,
|
||||
"y": 21
|
||||
},
|
||||
"id": 176,
|
||||
"options": {
|
||||
"legend": {
|
||||
"calcs": [],
|
||||
"displayMode": "list",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"hideZeros": false,
|
||||
"mode": "single",
|
||||
"sort": "none"
|
||||
}
|
||||
},
|
||||
"pluginVersion": "11.6.0",
|
||||
"targets": [
|
||||
{
|
||||
"editorMode": "code",
|
||||
"expr": "rate(node_disk_reads_completed_total{host=\"$host\"}[2m])",
|
||||
"legendFormat": "{{device}} reads",
|
||||
"range": true,
|
||||
"refId": "A"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "prometheus"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"expr": " rate(node_disk_writes_completed_total{host=~\"$host\"}[2m])",
|
||||
"hide": false,
|
||||
"instant": false,
|
||||
"legendFormat": "{{device}} writes",
|
||||
"range": true,
|
||||
"refId": "B"
|
||||
}
|
||||
],
|
||||
"title": "Disks IOs",
|
||||
"type": "timeseries"
|
||||
}
|
||||
],
|
||||
"preload": false,
|
||||
"refresh": "5s",
|
||||
"schemaVersion": 41,
|
||||
"tags": [],
|
||||
"templating": {
|
||||
"list": [
|
||||
{
|
||||
"allowCustomValue": false,
|
||||
"current": {
|
||||
"text": "kazguel",
|
||||
"value": "kazguel"
|
||||
},
|
||||
"definition": "label_values(host)",
|
||||
"includeAll": false,
|
||||
"name": "host",
|
||||
"options": [],
|
||||
"query": {
|
||||
"qryType": 1,
|
||||
"query": "label_values(host)",
|
||||
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||
},
|
||||
"refresh": 1,
|
||||
"regex": "",
|
||||
"type": "query"
|
||||
},
|
||||
{
|
||||
"allowCustomValue": false,
|
||||
"current": {
|
||||
"text": [
|
||||
"ens18"
|
||||
],
|
||||
"value": [
|
||||
"ens18"
|
||||
]
|
||||
},
|
||||
"definition": "label_values(node_network_info{device!~\"br.*|veth.*|lo.*|tap.*|docker.*|vibr.*\"},device)",
|
||||
"includeAll": true,
|
||||
"label": "NIC",
|
||||
"multi": true,
|
||||
"name": "device",
|
||||
"options": [],
|
||||
"query": {
|
||||
"qryType": 1,
|
||||
"query": "label_values(node_network_info{device!~\"br.*|veth.*|lo.*|tap.*|docker.*|vibr.*\"},device)",
|
||||
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||
},
|
||||
"refresh": 1,
|
||||
"regex": "",
|
||||
"type": "query"
|
||||
}
|
||||
]
|
||||
},
|
||||
"time": {
|
||||
"from": "now-6h",
|
||||
"to": "now"
|
||||
},
|
||||
"timepicker": {},
|
||||
"timezone": "",
|
||||
"title": "Vue Serveur",
|
||||
"uid": "deki6c3qvihhcd",
|
||||
"version": 22
|
||||
}
|
1197
dockers/grafana/grafana/provisioning/dashboards/server_overview.json
Normal file
1197
dockers/grafana/grafana/provisioning/dashboards/server_overview.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,108 @@
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
scrape_interval: 60s
|
||||
evaluation_interval: 60s
|
||||
scrape_timeout: 55s
|
||||
|
||||
rule_files:
|
||||
- 'alert.rules'
|
||||
|
||||
scrape_configs:
|
||||
- job_name: 'traefik'
|
||||
scrape_interval: 5s
|
||||
# unused for now
|
||||
#- job_name: 'traefik'
|
||||
# scrape_interval: 5s
|
||||
# static_configs:
|
||||
# - targets: ['reverse-proxy:8080']
|
||||
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ['dashboard.kaz.sns:8289','dashboard2.kaz.sns:8289']
|
||||
- targets: ["prometheus:9090"]
|
||||
|
||||
|
||||
- job_name: cadvisor-prod1
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-prod1.kaz.bzh:443"]
|
||||
labels:
|
||||
host: 'prod1'
|
||||
portainer_id: 2
|
||||
|
||||
- job_name: cadvisor-prod2
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-prod2.kaz.bzh:443"]
|
||||
labels:
|
||||
host: 'prod2'
|
||||
portainer_id: 4
|
||||
|
||||
- job_name: cadvisor-kazoulet
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-kazoulet.kaz.bzh:443"]
|
||||
labels:
|
||||
host: 'kazoulet'
|
||||
portainer_id: 3
|
||||
|
||||
- job_name: cadvisor-tykaz
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-tykaz.kaz.bzh:443"]
|
||||
labels:
|
||||
host: 'tykaz'
|
||||
portainer_id: 10
|
||||
|
||||
- job_name: cadvisor-kazguel
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-kazguel.kaz.bzh:443"]
|
||||
labels:
|
||||
host: 'kazguel'
|
||||
portainer_id: 11
|
||||
|
||||
- job_name: cadvisor-kazkouil
|
||||
scheme: "https"
|
||||
static_configs:
|
||||
- targets: ["cadvisor-dev.kazkouil.fr:443"]
|
||||
labels:
|
||||
host: 'kazkouil'
|
||||
portainer_id: 5
|
||||
|
||||
- job_name: node-exporter-prod1
|
||||
static_configs:
|
||||
# - targets: ["prod1.kaz.bzh:9100","prod2.kaz.bzh:9100","kazoulet.kaz.bzh:9100","tykaz.kaz.bzh:9100","kazguel.kaz.bzh:9100","kazkouil.fr:9100"]
|
||||
|
||||
- targets: ["prod1.kaz.bzh:9100"]
|
||||
labels:
|
||||
host: 'prod1'
|
||||
|
||||
|
||||
- job_name: node-exporter-prod2
|
||||
static_configs:
|
||||
# - targets: ["prod1.kaz.bzh:9100","prod2.kaz.bzh:9100","kazoulet.kaz.bzh:9100","tykaz.kaz.bzh:9100","kazguel.kaz.bzh:9100","kazkouil.fr:9100"]
|
||||
|
||||
- targets: ["prod2.kaz.bzh:9100"]
|
||||
labels:
|
||||
host: 'prod2'
|
||||
|
||||
- job_name: node-exporter-kazoulet
|
||||
static_configs:
|
||||
- targets: ["kazoulet.kaz.bzh:9100"]
|
||||
labels:
|
||||
host: 'kazoulet'
|
||||
|
||||
- job_name: node-exporter-tykaz
|
||||
static_configs:
|
||||
- targets: ["tykaz.kaz.bzh:9100"]
|
||||
labels:
|
||||
host: 'tykaz'
|
||||
|
||||
- job_name: node-exporter-kazguel
|
||||
static_configs:
|
||||
- targets: ["kazguel.kaz.bzh:9100"]
|
||||
labels:
|
||||
host: 'kazguel'
|
||||
|
||||
- job_name: node-exporter-kazkouil
|
||||
static_configs:
|
||||
- targets: ["kazkouil.fr:9100"]
|
||||
labels:
|
||||
host: 'kazkouil'
|
||||
|
@@ -5,7 +5,9 @@ NEWPASSWORD=$(base64 -d <<< $2)
|
||||
OLDPASSWORD=$(base64 -d <<< $3)
|
||||
|
||||
URL_AGORA="https://${matterHost}.${domain}"
|
||||
mattermost_token=${LDAPUI_MM_ADMIN_TOKEN}
|
||||
|
||||
#mattermost_token=${LDAPUI_MM_ADMIN_TOKEN}
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
|
||||
IDUSER=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA}/api/v4/users/email/${EMAIL}" | awk -F "," '{print $1}' | sed -e 's/{"id"://g' -e 's/"//g')
|
||||
if [ ${IDUSER} == 'app.user.missing_account.const' ]
|
||||
|
@@ -13,8 +13,10 @@ services:
|
||||
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
||||
volumes:
|
||||
- postgres:/var/lib/postgresql/data
|
||||
environment:
|
||||
- 'POSTGRES_HOST_AUTH_METHOD=trust'
|
||||
# environment:
|
||||
# - 'POSTGRES_HOST_AUTH_METHOD=trust'
|
||||
env_file:
|
||||
- ../../secret/env-mastodonDB
|
||||
|
||||
redis:
|
||||
container_name: ${mastodonRedisName}
|
||||
@@ -72,6 +74,7 @@ services:
|
||||
env_file:
|
||||
- env-config
|
||||
- ../../secret/env-mastodonServ
|
||||
- ../../secret/env-mastodonDB
|
||||
command: bundle exec puma -C config/puma.rb
|
||||
networks:
|
||||
- mastodonNet
|
||||
|
@@ -24,9 +24,9 @@ REDIS_PORT=
|
||||
# PostgreSQL
|
||||
# ----------
|
||||
DB_HOST=db
|
||||
DB_USER=postgres
|
||||
DB_NAME=postgres
|
||||
DB_PASS=
|
||||
#DB_USER=postgres
|
||||
#DB_NAME=postgres
|
||||
#DB_PASS=
|
||||
DB_PORT=5432
|
||||
|
||||
# Elasticsearch (optional)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
|
||||
app:
|
||||
image: mattermost/mattermost-team-edition:10.6
|
||||
image: mattermost/mattermost-team-edition:10.9.1
|
||||
container_name: ${mattermostServName}
|
||||
restart: ${restartPolicy}
|
||||
volumes:
|
||||
|
@@ -6,7 +6,6 @@ setKazVars
|
||||
|
||||
cd $(dirname $0)
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
"${KAZ_BIN_DIR}/gestContainers.sh" --install -M -agora
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM paheko/paheko:1.3.13
|
||||
FROM paheko/paheko:1.3.15
|
||||
|
||||
ENV PAHEKO_DIR /var/www/paheko
|
||||
|
||||
|
@@ -127,4 +127,4 @@ define('Paheko\SHOW_ERRORS', true);
|
||||
#add by fab le 21/04/2022
|
||||
//const PDF_COMMAND = 'prince';
|
||||
# const PDF_COMMAND = 'auto';
|
||||
const PDF_COMMAND = 'chromium --no-sandbox --headless --disable-dev-shm-usage --autoplay-policy=no-user-gesture-required --no-first-run --disable-gpu --disable-features=DefaultPassthroughCommandDecoder --use-fake-ui-for-media-stream --use-fake-device-for-media-stream --disable-sync --print-to-pdf=%2$s %1$s';
|
||||
const PDF_COMMAND = 'chromium --no-sandbox --headless --no-pdf-header-footer --disable-dev-shm-usage --autoplay-policy=no-user-gesture-required --no-first-run --disable-gpu --disable-features=DefaultPassthroughCommandDecoder --use-fake-ui-for-media-stream --use-fake-device-for-media-stream --disable-sync --print-to-pdf=%2$s %1$s';
|
||||
|
Binary file not shown.
1
dockers/peertube/.env
Symbolic link
1
dockers/peertube/.env
Symbolic link
@@ -0,0 +1 @@
|
||||
../../config/dockers.env
|
84
dockers/peertube/docker-compose.yml
Normal file
84
dockers/peertube/docker-compose.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
services:
|
||||
|
||||
webserver:
|
||||
image: chocobozzz/peertube-webserver:latest
|
||||
restart: ${restartPolicy}
|
||||
depends_on:
|
||||
- peertube
|
||||
networks:
|
||||
- peertubeNet
|
||||
#ports:
|
||||
#- "80:80"
|
||||
#- "443:443"
|
||||
volumes:
|
||||
- assets:/var/www/peertube/peertube-latest/client/dist:ro
|
||||
- data:/var/www/peertube/storage
|
||||
env_file:
|
||||
- ../../secret/env-${peertubeServName}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${peertubeServName}.rule=Host(`${peertubeHost}.${domain}`)"
|
||||
- "traefik.docker.network=peertubeNet"
|
||||
|
||||
peertube:
|
||||
image: chocobozzz/peertube:production-bookworm
|
||||
container_name: ${peertubeServName}
|
||||
restart: ${restartPolicy}
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
networks:
|
||||
- peertubeNet
|
||||
volumes:
|
||||
# Remove the following line if you want to use another webserver/proxy or test PeerTube in local
|
||||
- assets:/app/client/dist
|
||||
- data:/data
|
||||
- config:/config
|
||||
env_file:
|
||||
- ../../secret/env-${peertubeServName}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${peertubeServName}.rule=Host(`${peertubeHost}.${domain}`)"
|
||||
- "traefik.docker.network=peertubeNet"
|
||||
- "traefik.http.services.${peertubeServName}.loadbalancer.server.port=9000"
|
||||
#traefik.frontend.rule: "Host:videos.kaz.bzh"
|
||||
#traefik.port: "9000"
|
||||
# traefik.frontend.redirect.entryPoint: https
|
||||
|
||||
postgres:
|
||||
image: postgres:13-alpine
|
||||
container_name: ${peertubeDBName}
|
||||
restart: ${restartPolicy}
|
||||
networks:
|
||||
- peertubeNet
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
env_file:
|
||||
- ../../secret/env-${peertubeDBName}
|
||||
labels:
|
||||
traefik.enable: "false"
|
||||
|
||||
redis:
|
||||
image: redis:6-alpine
|
||||
container_name: peertubeCache
|
||||
restart: ${restartPolicy}
|
||||
networks:
|
||||
- peertubeNet
|
||||
env_file:
|
||||
- ../../secret/env-${peertubeServName}
|
||||
volumes:
|
||||
- redis:/data
|
||||
labels:
|
||||
traefik.enable: "false"
|
||||
|
||||
volumes:
|
||||
assets:
|
||||
data:
|
||||
config:
|
||||
db:
|
||||
redis:
|
||||
|
||||
networks:
|
||||
peertubeNet:
|
||||
external: true
|
||||
name: peertubeNet
|
@@ -1,4 +1,4 @@
|
||||
FROM docker.io/mailserver/docker-mailserver:15.0.0
|
||||
FROM docker.io/mailserver/docker-mailserver:15.0.2
|
||||
|
||||
########################################
|
||||
# APT local cache
|
||||
|
@@ -44,8 +44,8 @@ services:
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.mail.rule=Host(`mail.${domain}`) || Host(`smtp.${domain}`)"
|
||||
- "traefik.http.routers.webmails.rule=Host(`webmail.kaz.bzh`)"
|
||||
- "traefik.http.middlewares.reg-webmails.redirectregex.regex=^https://webmail.kaz.bzh(.*)"
|
||||
- "traefik.http.routers.webmails.rule=Host(`webmail.${domain}`)"
|
||||
- "traefik.http.middlewares.reg-webmails.redirectregex.regex=^https://webmail.${domain}(.*)"
|
||||
- "traefik.http.middlewares.reg-webmails.redirectregex.replacement=https://kaz.bzh/relever-ses-mails-chez-kaz-via-un-webmail"
|
||||
- "traefik.http.middlewares.reg-webmails.redirectregex.permanent=true"
|
||||
- "traefik.http.routers.webmails.middlewares=reg-webmails"
|
||||
|
1
dockers/spip/.env
Symbolic link
1
dockers/spip/.env
Symbolic link
@@ -0,0 +1 @@
|
||||
../../config/dockers.env
|
42
dockers/spip/docker-compose.yml
Normal file
42
dockers/spip/docker-compose.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
services:
|
||||
db:
|
||||
image: mariadb:11.4
|
||||
container_name: ${spipDBName}
|
||||
restart: ${restartPolicy}
|
||||
env_file:
|
||||
- ../../secret/env-${spipDBName}
|
||||
volumes:
|
||||
- spipDB:/var/lib/mysql
|
||||
networks:
|
||||
- spipNet
|
||||
|
||||
spip:
|
||||
image: ipeos/spip:4.4
|
||||
restart: ${restartPolicy}
|
||||
container_name: ${spipServName}
|
||||
env_file:
|
||||
- ../../secret/env-${spipServName}
|
||||
links:
|
||||
- db:mysql
|
||||
environment:
|
||||
- SPIP_AUTO_INSTALL=1
|
||||
- SPIP_DB_HOST=${spipDBName}
|
||||
- SPIP_SITE_ADDRESS=https://${spipHost}.${domain}
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.${spipServName}.rule=Host(`${spipHost}.${domain}`)"
|
||||
networks:
|
||||
- spipNet
|
||||
volumes:
|
||||
- spipData:/usr/src/spip
|
||||
|
||||
volumes:
|
||||
spipDB:
|
||||
spipData:
|
||||
|
||||
networks:
|
||||
spipNet:
|
||||
external: true
|
||||
name: spipNet
|
@@ -99,7 +99,7 @@ RUN echo "root: ADMIN_EMAIL" >> /etc/aliases \
|
||||
RUN echo aliases_program postalias >>/etc/sympa/sympa/sympa.conf \
|
||||
&& echo sendmail /usr/sbin/sendmail >>/etc/sympa/sympa/sympa.conf \
|
||||
&& echo soap_url /sympasoap >>/etc/sympa/sympa/sympa.conf \
|
||||
&& echo dmarc_protection.mode dmarc_reject >>/etc/sympa/sympa/sympa.conf \
|
||||
&& echo dmarc_protection.mode dmarc_reject,dmarc_quarantine >>/etc/sympa/sympa/sympa.conf \
|
||||
&& cp /usr/share/doc/sympa/examples/script/sympa_soap_client.pl.gz /usr/lib/sympa/bin/ \
|
||||
&& gunzip /usr/lib/sympa/bin/sympa_soap_client.pl.gz \
|
||||
&& chmod +x /usr/lib/sympa/bin/sympa_soap_client.pl \
|
||||
|
@@ -6,7 +6,7 @@ KAZ_ROOT=/kaz
|
||||
setKazVars
|
||||
|
||||
. $DOCKERS_ENV
|
||||
. $KAZ_ROOT/secret/SetAllPass.sh
|
||||
. $KAZ_KEY_DIR/env-mattermostAdmin
|
||||
|
||||
DOCKER_CMD="docker exec sympaServ"
|
||||
URL_AGORA=$(echo $matterHost).$(echo $domain)
|
||||
|
@@ -3,6 +3,7 @@ orange.com veryslow:
|
||||
wanadoo.com veryslow:
|
||||
wanadoo.fr veryslow:
|
||||
gmail.com slow:
|
||||
laposte.net slow:
|
||||
yahoo.com slow:
|
||||
yahoo.fr slow:
|
||||
outlook.com veryslow:
|
||||
|
@@ -16,7 +16,6 @@ services:
|
||||
- ${jirafeauServName}:${fileHost}
|
||||
ports:
|
||||
- ${SYMPA_IP}:25:25
|
||||
- ${SYMPA_IP}:80:80
|
||||
- ${SYMPA_IP}:443:443
|
||||
env_file:
|
||||
- ../../secret/env-${sympaServName}
|
||||
@@ -33,7 +32,12 @@ services:
|
||||
- ./config/transport:/etc/postfix/transport:rw
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/letsencrypt:/etc/letsencrypt:ro
|
||||
- /etc/ssl:/etc/ssl:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.sympa.rule=host(`listes.${domain}`)"
|
||||
- "traefik.docker.network=sympaNet"
|
||||
|
||||
|
||||
db:
|
||||
image: mariadb:10.5
|
||||
|
@@ -6,7 +6,6 @@ setKazVars
|
||||
|
||||
cd $(dirname $0)
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_KEY_DIR}/SetAllPass.sh"
|
||||
|
||||
DockerServName="${sympaServName}"
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
reverse-proxy:
|
||||
image: traefik:v3.3.4
|
||||
image: traefik:v3.4.1
|
||||
container_name: ${traefikServName}
|
||||
restart: ${restartPolicy}
|
||||
# Enables the web UI and tells Traefik to listen to docker
|
||||
@@ -11,6 +11,7 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./conf:/etc/traefik/
|
||||
- letsencrypt:/letsencrypt
|
||||
- log:/log
|
||||
environment:
|
||||
- TRAEFIK_PROVIDERS_DOCKER=true
|
||||
- TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT=false
|
||||
@@ -25,11 +26,19 @@ services:
|
||||
- TRAEFIK_CERTIFICATESRESOLVERS_letsencrypt_ACME_EMAIL=admin@${domain}
|
||||
- TRAEFIK_CERTIFICATESRESOLVERS_letsencrypt_ACME_CASERVER=${acme_server}
|
||||
- TRAEFIK_CERTIFICATESRESOLVERS_letsencrypt_ACME_STORAGE=/letsencrypt/acme.json
|
||||
- TRAEFIK_CERTIFICATESRESOLVERS_letsencrypt_ACME_TLSCHALLENGE=true
|
||||
- TRAEFIK_LOG_LEVEL=INFO
|
||||
- TRAEFIK_CERTIFICATESRESOLVERS_letsencrypt_ACME_HTTPCHALLENGE_ENTRYPOINT=web
|
||||
- TRAEFIK_API_DASHBOARD=true
|
||||
#pour la migration vers traefik3
|
||||
- TRAEFIK_CORE_DEFAULTRULESYNTAX=v3
|
||||
|
||||
- TZ=Europe/Paris
|
||||
- TRAEFIK_ACCESSLOG=true
|
||||
- TRAEFIK_ACCESSLOG_FILEPATH=/log/traefik_acces.log
|
||||
- TRAEFIK_ACCESSLOG_FILTERS_STATUSCODES=404,403,401
|
||||
- TRAEFIK_LOG=true
|
||||
- TRAEFIK_LOG_LEVEL=INFO
|
||||
- TRAEFIK_LOG_FILEPATH=/log/traefik.log
|
||||
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik_https.rule=Host(`${site}.${domain}`) && PathPrefix(`/api`, `/dashboard`)"
|
||||
@@ -101,6 +110,12 @@ services:
|
||||
{{mastodon
|
||||
- mastodonNet
|
||||
}}
|
||||
{{peertube
|
||||
- peertubeNet
|
||||
}}
|
||||
{{spip
|
||||
- spipNet
|
||||
}}
|
||||
|
||||
#### BEGIN ORGA USE_NET
|
||||
#### END ORGA USE_NET
|
||||
@@ -209,6 +224,16 @@ networks:
|
||||
external: true
|
||||
name: mastodonNet
|
||||
}}
|
||||
{{peertube
|
||||
peertubeNet:
|
||||
external:true
|
||||
name:peertubeNet
|
||||
}}
|
||||
{{spip
|
||||
spipNet:
|
||||
external:true
|
||||
name:spipNet
|
||||
}}
|
||||
|
||||
|
||||
#### BEGIN ORGA DEF_NET
|
||||
@@ -216,3 +241,4 @@ networks:
|
||||
|
||||
volumes:
|
||||
letsencrypt:
|
||||
log:
|
||||
|
@@ -4,7 +4,7 @@ KAZ_ROOT=$(cd "$(dirname $0)/../.."; pwd)
|
||||
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
||||
setKazVars
|
||||
. "${DOCKERS_ENV}"
|
||||
. "${KAZ_ROOT}/secret/SetAllPass.sh"
|
||||
. $KAZ_BIN_DIR/getPasswords.sh traefik
|
||||
|
||||
printKazMsg "\n *** Proxy update config"
|
||||
|
||||
|
@@ -67,3 +67,59 @@ div.kaz::after {
|
||||
border-width: thin;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
|
||||
div.kaz2:hover {
|
||||
font-size: initial !important;
|
||||
color: initial !important;
|
||||
}
|
||||
div.kaz2:hover a.kaz2 {
|
||||
background-size: initial !important;
|
||||
padding: 4px 0 4px 230px;
|
||||
}
|
||||
div.kaz2 a.kaz2 {
|
||||
background-size: 110px 12px;
|
||||
padding: 4px 0 4px 120px;
|
||||
}
|
||||
div.kaz2 {
|
||||
font-size: 10px;
|
||||
color: #969696;
|
||||
padding: 1pc 0 0 0;
|
||||
margin: 0 0 0 80px;
|
||||
min-height: 200px;
|
||||
clear: left;
|
||||
}
|
||||
div.kaz2::before {
|
||||
content: url("/m/logo.png");
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
margin: 0 0 0 -70px;
|
||||
width: 50px;
|
||||
height: 100px;
|
||||
}
|
||||
div.kaz2>ul>li {
|
||||
list-style-type: none; /* Remove bullets */
|
||||
}
|
||||
div.kaz2>ul>li::before {
|
||||
content: "\2713";
|
||||
color: green;
|
||||
margin-left: -20px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
a.kaz2 {
|
||||
background-image: url("/m/coche.png");
|
||||
background-repeat: no-repeat;
|
||||
padding: 4px 0 4px 230px;
|
||||
margin: 0 0 0 0;
|
||||
min-height: 25px;
|
||||
}
|
||||
|
||||
div.kaz2 div.nb {
|
||||
padding: 1pc;
|
||||
margin: 0 0 0 -70px;
|
||||
display: block;
|
||||
border-radius: 30px;
|
||||
border-style: solid;
|
||||
border-width: thin;
|
||||
border-color: red;
|
||||
}
|
||||
|
@@ -1,11 +0,0 @@
|
||||
Mise à jour des mots de passe
|
||||
|
||||
L'idée c'est d'extraire la gestion des mots de passe de l'installation.
|
||||
|
||||
Tous les mots de passe sont dans un fichier "SetAllPass.sh" que des scripts vont chercher.
|
||||
|
||||
updateDockerPassword.sh met à jours les fichiers d'environnement de mots de passe utilisé par docker-compose.
|
||||
|
||||
(Il y a un problème pour mettre à jour le mot de passe d'une BD si son conteneur n'est pas en route)
|
||||
|
||||
Les modifications sont prises en compte que lors de la création de nouveaux conteneurs (les données permanentes (mot de passe) dans les volumes ne sont pas changées)
|
@@ -2,227 +2,43 @@
|
||||
|
||||
# Attention à cause des scripts pas de ["'/] dans les mot de passe
|
||||
|
||||
####################
|
||||
# ethercalc
|
||||
ethercalc_REDIS_PORT_6379_TCP_ADDR="redis"
|
||||
ethercalc_REDIS_PORT_6379_TCP_PORT="6379"
|
||||
|
||||
####################
|
||||
# etherpad
|
||||
etherpad_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
etherpad_MYSQL_DATABASE="--clean_val--"
|
||||
etherpad_MYSQL_USER="--clean_val--"
|
||||
etherpad_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
# Share with etherpadDB
|
||||
etherpad_DB_NAME="${etherpad_MYSQL_DATABASE}"
|
||||
etherpad_DB_USER="${etherpad_MYSQL_USER}"
|
||||
etherpad_DB_PASS="${etherpad_MYSQL_PASSWORD}"
|
||||
|
||||
etherpad_DB_TYPE="mysql"
|
||||
etherpad_DB_HOST="padDB"
|
||||
etherpad_DB_PORT="3306"
|
||||
#etherpad_DB_CHARSET="utf8"
|
||||
#user: admin
|
||||
etherpad_ADMIN_PASSWORD="--clean_val--"
|
||||
etherpad_PAD_OPTIONS_LANG="fr"
|
||||
etherpad_TITLE="KazPad"
|
||||
etherpad_TRUST_PROXY="true"
|
||||
|
||||
####################
|
||||
# framadate
|
||||
framadate_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
framadate_MYSQL_DATABASE="--clean_val--"
|
||||
framadate_MYSQL_USER="--clean_val--"
|
||||
framadate_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
framadate_HTTPD_USER="--clean_val--"
|
||||
framadate_HTTPD_PASSWORD="--clean_val--"
|
||||
|
||||
##################
|
||||
# Gandi
|
||||
# à supprimer et à replacer par dns_gandi_api_key
|
||||
gandi_GANDI_KEY="xxx"
|
||||
gandi_GANDI_API="https://api.gandi.net/v5/livedns/domains/${domain}"
|
||||
gandi_dns_gandi_api_key="${gandi_GANDI_KEY}"
|
||||
|
||||
####################
|
||||
# mattermost
|
||||
mattermost_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
mattermost_MYSQL_DATABASE="--clean_val--"
|
||||
mattermost_MYSQL_USER="--clean_val--"
|
||||
mattermost_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
# Share with mattermostDB
|
||||
mattermost_MM_DBNAME="${mattermost_MYSQL_DATABASE}"
|
||||
mattermost_MM_USERNAME="${mattermost_MYSQL_USER}"
|
||||
mattermost_MM_PASSWORD="${mattermost_MYSQL_PASSWORD}"
|
||||
|
||||
mattermost_DB_PORT_NUMBER="3306"
|
||||
mattermost_DB_HOST="db"
|
||||
mattermost_MM_SQLSETTINGS_DRIVERNAME="mysql"
|
||||
mattermost_MM_ADMIN_EMAIL="admin@kaz.bzh"
|
||||
|
||||
# mattermost_MM_SQLSETTINGS_DATASOURCE = "MM_USERNAME:MM_PASSWORD@tcp(DB_HOST:DB_PORT_NUMBER)/MM_DBNAME?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
|
||||
# Don't forget to replace all entries (beginning by MM_ and DB_) in MM_SQLSETTINGS_DATASOURCE with the real variables values.
|
||||
mattermost_MM_SQLSETTINGS_DATASOURCE="${mattermost_MYSQL_USER}:${mattermost_MYSQL_PASSWORD}@tcp(${mattermost_DB_HOST}:${mattermost_DB_PORT_NUMBER})/${mattermost_MM_DBNAME}?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
|
||||
# sinon avec postgres
|
||||
# mattermost_MM_SQLSETTINGS_DATASOURCE = "postgres://${MM_USERNAME}:${MM_PASSWORD}@db:5432/${MM_DBNAME}?sslmode=disable&connect_timeout=10"
|
||||
|
||||
# A COPIER DANS UN FICHIER DE CONF !! -> mattermostAdmin
|
||||
# pour envoyer des messages sur l'agora avec mmctl
|
||||
mattermost_user="admin-mattermost"
|
||||
mattermost_pass="--clean_val--"
|
||||
mattermost_token="xxx-private"
|
||||
|
||||
##################
|
||||
# Openldap
|
||||
ldap_LDAP_ADMIN_USERNAME="--clean_val--"
|
||||
ldap_LDAP_ADMIN_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_CONFIG_ADMIN_USERNAME="--clean_val--"
|
||||
ldap_LDAP_CONFIG_ADMIN_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_POSTFIX_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_LDAPUI_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_MATTERMOST_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_CLOUD_PASSWORD="--clean_val--"
|
||||
ldap_LDAP_MOBILIZON_PASSWORD="--clean_val--"
|
||||
|
||||
ldap_LDAPUI_URI=ldap://ldap
|
||||
ldap_LDAPUI_BASE_DN=${ldap_root}
|
||||
ldap_LDAPUI_REQUIRE_STARTTLS=FALSE
|
||||
ldap_LDAPUI_ADMINS_GROUP=admins
|
||||
ldap_LDAPUI_ADMIN_BIND_DN=cn=ldapui,ou=applications,${ldap_root}
|
||||
ldap_LDAPUI_ADMIN_BIND_PWD=${ldap_LDAP_LDAPUI_PASSWORD}
|
||||
ldap_LDAPUI_IGNORE_CERT_ERRORS=TRUE
|
||||
ldap_LDAPUI_PASSWORD="--clean_val--"
|
||||
ldap_LDAPUI_MM_ADMIN_TOKEN=${mattermost_token}
|
||||
|
||||
###################
|
||||
# gitea
|
||||
gitea_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
gitea_MYSQL_DATABASE="--clean_val--"
|
||||
gitea_MYSQL_USER="--clean_val--"
|
||||
gitea_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
# on ne peut pas utiliser le login "admin"
|
||||
gitea_user_admin="admin_gitea"
|
||||
gitea_pass_admin="--clean_val--"
|
||||
gitea_admin_email="admin@kaz.bzh"
|
||||
|
||||
####################
|
||||
# jirafeau
|
||||
jirafeau_HTTPD_PASSWORD="--clean_val--"
|
||||
jirafeau_DATA_DIR="--clean_val--"
|
||||
|
||||
|
||||
####################
|
||||
# nexcloud
|
||||
nextcloud_MYSQL_ROOT_PASSWORD="${mattermost_MYSQL_ROOT_PASSWORD}"
|
||||
nextcloud_MYSQL_DATABASE="--clean_val--"
|
||||
nextcloud_MYSQL_USER="--clean_val--"
|
||||
nextcloud_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
nextcloud_NEXTCLOUD_ADMIN_USER="admin"
|
||||
nextcloud_NEXTCLOUD_ADMIN_PASSWORD="--clean_val--"
|
||||
nextcloud_MYSQL_HOST="db"
|
||||
|
||||
#user: admin
|
||||
nextcloud_RAIN_LOOP="--clean_val--"
|
||||
|
||||
####################
|
||||
# collabora
|
||||
office_username="admin"
|
||||
office_password="--clean_val--"
|
||||
|
||||
####################
|
||||
# roundcube
|
||||
roundcube_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
roundcube_MYSQL_DATABASE="--clean_val--"
|
||||
roundcube_MYSQL_USER="--clean_val--"
|
||||
roundcube_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
# Share with roundcubeDB
|
||||
roundcube_ROUNDCUBEMAIL_DB_TYPE="mysql"
|
||||
roundcube_ROUNDCUBEMAIL_DB_NAME="${roundcube_MYSQL_DATABASE}"
|
||||
roundcube_ROUNDCUBEMAIL_DB_USER="${roundcube_MYSQL_USER}"
|
||||
roundcube_ROUNDCUBEMAIL_DB_PASSWORD="${roundcube_MYSQL_PASSWORD}"
|
||||
roundcube_ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE="1G"
|
||||
|
||||
####################
|
||||
# postfix LDAP
|
||||
mail_LDAP_BIND_DN=cn=postfix,ou=applications,${ldap_root}
|
||||
mail_LDAP_BIND_PW=${ldap_LDAP_POSTFIX_PASSWORD}
|
||||
|
||||
####################
|
||||
# sympa
|
||||
sympa_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
sympa_MYSQL_DATABASE="sympa"
|
||||
sympa_MYSQL_USER="sympa"
|
||||
sympa_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
sympa_KEY="/etc/letsencrypt/live/${domain}/privkey.pem"
|
||||
sympa_CERT="/etc/letsencrypt/live/${domain}/fullchain.pem"
|
||||
sympa_LISTMASTERS="listmaster@${domain_sympa}"
|
||||
sympa_ADMINEMAIL="listmaster@${domain_sympa}"
|
||||
sympa_SOAP_USER="sympa"
|
||||
sympa_SOAP_PASSWORD="--clean_val--"
|
||||
|
||||
# pour inscrire des users sur des listes sympa avec soap
|
||||
#il faut que le user soit admin de sympa
|
||||
sympa_user="a@${domain}"
|
||||
sympa_pass="--clean_val--"
|
||||
|
||||
##################
|
||||
# vigilo
|
||||
vigilo_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
vigilo_MYSQL_USER="--clean_val--"
|
||||
vigilo_MYSQL_PASSWORD="--clean_val--"
|
||||
vigilo_MYSQL_DATABASE="--clean_val--"
|
||||
vigilo_MYSQL_HOST="db"
|
||||
#vigilo_BIND=
|
||||
|
||||
####################
|
||||
# wordpress
|
||||
wp_MYSQL_ROOT_PASSWORD="${mattermost_MYSQL_ROOT_PASSWORD}"
|
||||
wp_MYSQL_DATABASE="--clean_val--"
|
||||
wp_MYSQL_USER="--clean_val--"
|
||||
wp_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
# Share with wpDB
|
||||
wp_WORDPRESS_DB_HOST="db:3306"
|
||||
wp_WORDPRESS_DB_NAME="${wp_MYSQL_DATABASE}"
|
||||
wp_WORDPRESS_DB_USER="${wp_MYSQL_USER}"
|
||||
wp_WORDPRESS_DB_PASSWORD="${wp_MYSQL_PASSWORD}"
|
||||
|
||||
wp_WORDPRESS_ADMIN_USER="admin"
|
||||
wp_WORDPRESS_ADMIN_PASSWORD="--clean_val--"
|
||||
|
||||
##################
|
||||
# A DEPLACER DANS DOCKER ENV
|
||||
#qui envoi le mail d'inscription ?
|
||||
EMAIL_CONTACT="toto@kaz.bzh"
|
||||
|
||||
|
||||
# A COPIER DANS UN FICHIER DE CONF !! -> paheko
|
||||
##################
|
||||
# Paheko
|
||||
paheko_API_USER="admin-api"
|
||||
paheko_API_PASSWORD="--clean_val--"
|
||||
|
||||
##################
|
||||
# La nas de Kaz chez Grifon
|
||||
nas_admin1="admin"
|
||||
nas_password1="--clean_val--"
|
||||
nas_admin2="kaz"
|
||||
nas_password1="--clean_val--"
|
||||
# compte mail pour les notifications du nas
|
||||
nas_email_account="admin-nas@${domain}"
|
||||
nas_email_password="--clean_val--"
|
||||
|
||||
|
||||
# A virer dans koffre
|
||||
##################
|
||||
#Compte sur outlook.com
|
||||
outlook_user="kaz-user@outlook.fr"
|
||||
outlook_pass="--clean_val--"
|
||||
|
||||
|
||||
# A COPIER DANS UN FICHIER DE CONF !! -> mail
|
||||
service_mail=admin-kaz@kaz.bzh
|
||||
service_password="--clean_val--"
|
||||
|
||||
##################
|
||||
#Borg
|
||||
|
||||
# A COPIER DANS UN FICHIER DE CONF !! -> borg
|
||||
BORG_REPO="/mnt/backup-nas1/BorgRepo"
|
||||
BORG_PASSPHRASE="--clean_val--"
|
||||
VOLUME_SAUVEGARDES="/mnt/backup-nas1"
|
||||
@@ -230,86 +46,21 @@ MAIL_RAPPORT="a@${domain};b@${domain};c@${domain}"
|
||||
BORGMOUNT="/mnt/disk-nas1/tmp/repo_mount"
|
||||
|
||||
|
||||
###################
|
||||
# mobilizon
|
||||
mobilizon_POSTGRES_USER="--clean_val--"
|
||||
mobilizon_POSTGRES_PASSWORD="--clean_val--"
|
||||
mobilizon_POSTGRES_DB=mobilizon
|
||||
mobilizon_MOBILIZON_DATABASE_USERNAME="${mobilizon_POSTGRES_USER}"
|
||||
mobilizon_MOBILIZON_DATABASE_PASSWORD="${mobilizon_POSTGRES_PASSWORD}"
|
||||
mobilizon_MOBILIZON_DATABASE_DBNAME=mobilizon
|
||||
|
||||
mobilizon_MOBILIZON_INSTANCE_REGISTRATIONS_OPEN=false
|
||||
mobilizon_MOBILIZON_INSTANCE_NAME="Mobilizon"
|
||||
mobilizon_MOBILIZON_INSTANCE_HOST="${mobilizonHost}.${domain}"
|
||||
|
||||
mobilizon_MOBILIZON_INSTANCE_SECRET_KEY_BASE=changeme
|
||||
mobilizon_MOBILIZON_INSTANCE_SECRET_KEY=changeme
|
||||
|
||||
mobilizon_MOBILIZON_INSTANCE_EMAIL=noreply@${domain}
|
||||
mobilizon_MOBILIZON_REPLY_EMAIL=contact@${domain_sympa}
|
||||
mobilizon_MOBILIZON_ADMIN_EMAIL=admin@${domain_sympa}
|
||||
|
||||
mobilizon_MOBILIZON_SMTP_SERVER="${smtpHost}.${domain}"
|
||||
mobilizon_MOBILIZON_SMTP_PORT=25
|
||||
mobilizon_MOBILIZON_SMTP_HOSTNAME="${smtpHost}.${domain}"
|
||||
mobilizon_MOBILIZON_SMTP_USERNAME=noreply@${domain}
|
||||
mobilizon_MOBILIZON_SMTP_PASSWORD=
|
||||
mobilizon_MOBILIZON_SMTP_SSL=false
|
||||
|
||||
mobilizon_MOBILIZON_LDAP_BINDUID=cn=mobilizon,ou=applications,${ldap_root}
|
||||
mobilizon_MOBILIZON_LDAP_BINDPASSWORD=${ldap_LDAP_MOBILIZON_PASSWORD}
|
||||
|
||||
|
||||
#####################
|
||||
# Vaultwarden
|
||||
|
||||
vaultwarden_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
vaultwarden_MYSQL_DATABASE="vaultwarden"
|
||||
vaultwarden_MYSQL_USER="vaultwarden"
|
||||
vaultwarden_MYSQL_PASSWORD="--clean_val--"
|
||||
|
||||
vaultwarden_DATABASE_URL="mysql://${vaultwarden_MYSQL_USER}:${vaultwarden_MYSQL_PASSWORD}@db/${vaultwarden_MYSQL_DATABASE}"
|
||||
vaultwarden_ADMIN_TOKEN="--clean_val--"
|
||||
|
||||
#####################
|
||||
#Traefik
|
||||
|
||||
# A COPIER DANS UN FICHIER DE CONF !! -> traefik
|
||||
traefik_DASHBOARD_USER="admin"
|
||||
traefik_DASHBOARD_PASSWORD="--clean_val--"
|
||||
|
||||
|
||||
#####################
|
||||
# dokuwiki
|
||||
|
||||
dokuwiki_WIKI_ROOT=Kaz
|
||||
dokuwiki_WIKI_EMAIL=wiki@kaz.local
|
||||
dokuwiki_WIKI_PASSWORD="--clean_val--"
|
||||
|
||||
#####################
|
||||
# Castopod
|
||||
castopod_MYSQL_ROOT_PASSWORD="--clean_val--"
|
||||
castopod_MYSQL_DATABASE="--clean_val--"
|
||||
castopod_MYSQL_USER="--clean_val--"
|
||||
castopod_MYSQL_PASSWORD="--clean_val--"
|
||||
castopod_CP_REDIS_PASSWORD="${castopodRedisPassword}"
|
||||
# A COPIER DANS UN FICHIER DE CONF !! castopodAdmin
|
||||
|
||||
castopod_ADMIN_USER=adminKaz
|
||||
castopod_ADMIN_MAIL=admin@${domain}
|
||||
castopod_ADMIN_PASSWORD="--clean_val--"
|
||||
castopod_CP_EMAIL_SMTP_HOST="${smtpHost}.${domain}"
|
||||
castopod_CP_EMAIL_SMTP_PORT=25
|
||||
castopod_CP_EMAIL_SMTP_USERNAME=noreply@${domain}
|
||||
castopod_CP_EMAIL_SMTP_PASSWORD=
|
||||
castopod_CP_EMAIL_FROM=noreply@${domain}
|
||||
castopod_CP_EMAIL_SMTP_CRYPTO=tls
|
||||
|
||||
######################
|
||||
# SNAPPYMAIL
|
||||
# Url https://snappymail.${domain}/?admin
|
||||
# au premier lancement un mot de passe est généré en aut par l' appli dans le
|
||||
# volume Data : /var/lib/docker/volumes/snappymail_data/_data/_data_/_default_
|
||||
# le fichier s' appelle admin_password.txt
|
||||
# une fois le mot de passe changé dans le Gui de l' admin, ce fichier est automatiquement supprimé
|
||||
snappymail_TZ="Europe/Paris"
|
||||
snappymail_UPLOAD_MAX_SIZE="100M"
|
||||
|
||||
|
@@ -1,22 +1,24 @@
|
||||
paheko_API_USER=
|
||||
paheko_API_PASSWORD=
|
||||
paheko_url=
|
||||
|
||||
mattermost_user=
|
||||
mattermost_pass=
|
||||
mattermost_url=
|
||||
paheko_url=https://kaz-@@globalvar@@pahekoHost@@gv@@.@@globalvar@@domain@@gv@@
|
||||
paheko_API_USER="@@user@@pahekoapi@@u@@"
|
||||
paheko_API_PASSWORD="@@pass@@pahekoapi@@p@@"
|
||||
|
||||
ldap_LDAP_ADMIN_USERNAME=
|
||||
ldap_LDAP_ADMIN_PASSWORD=
|
||||
ldap_root=
|
||||
mattermost_user="@@user@@mattermost2@@u@@"
|
||||
mattermost_pass="@@pass@@mattermost2@@p@@"
|
||||
mattermost_token="@@token@@mattermost@@t@@"
|
||||
|
||||
nextcloud_NEXTCLOUD_ADMIN_USER=
|
||||
nextcloud_NEXTCLOUD_ADMIN_PASSWORD=
|
||||
cloud_url=
|
||||
ldap_LDAP_ADMIN_USERNAME="@@user@@ldap@@u@@"
|
||||
ldap_LDAP_ADMIN_PASSWORD="@@pass@@ldap@@p@@"
|
||||
ldap_root=@@globalvar@@ldap_root@@gv@@
|
||||
|
||||
sympa_SOAP_USER=
|
||||
sympa_SOAP_PASSWORD=
|
||||
sympa_url=
|
||||
nextcloud_NEXTCLOUD_ADMIN_USER="@@user@@nextcloudadmin@@u@@"
|
||||
nextcloud_NEXTCLOUD_ADMIN_PASSWORD="@@pass@@nextcloudadmin@@p@@"
|
||||
cloud_url=https://@@globalvar@@cloudHost@@gv@@.@@globalvar@@domain@@gv@@
|
||||
|
||||
|
||||
sympa_SOAP_USER="@@user@@sympasoap@@u@@"
|
||||
sympa_SOAP_PASSWORD="@@pass@@sympasoap@@p@@"
|
||||
sympa_url=https://@@globalvar@@sympaHost@@gv@@.@@globalvar@@domain@@gv@@
|
||||
|
||||
gandi_GANDI_KEY=
|
||||
gandi_GANDI_API=
|
||||
|
17
secret.tmpl/env-borg
Normal file
17
secret.tmpl/env-borg
Normal file
@@ -0,0 +1,17 @@
|
||||
VOLUME_SAUVEGARDES=
|
||||
BORG_REPO=
|
||||
BORG_PASSPHRASE=@@token@@borg@@t@@
|
||||
BORGLOG="/var/log/borg"
|
||||
BORG_FIC_DEL="/tmp/sauvegarde_supp.txt"
|
||||
BORG_EXCLUDE_BACKUP=
|
||||
MAIL_RAPPORT=a@@@globalvar@@domain@@gv@@;b@@@globalvar@@domain@@gv@@;c@@@globalvar@@domain@@gv@@
|
||||
LISTREPSAUV=
|
||||
BORGMOUNT="/mnt/repo_borg"
|
||||
MAILOK=
|
||||
MAILWARNING=
|
||||
MAILDETAIL=
|
||||
BACKUPS_KEEP="4m"
|
||||
NB_BACKUPS_JOUR=90
|
||||
NB_BACKUPS_SEM=30
|
||||
NB_BACKUPS_MOIS=12
|
||||
BORGSCRIPTS=/root/borgscripts
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user