first commit

This commit is contained in:
2024-06-03 18:43:35 +02:00
parent 2da01a3f6e
commit f501d519af
883 changed files with 71550 additions and 2 deletions

View File

@ -0,0 +1,4 @@
# e-mail server composer
ldap
postfix
sympa

View File

@ -0,0 +1 @@
# orga composer

View File

@ -0,0 +1,2 @@
proxy
#traefik

View File

@ -0,0 +1,12 @@
cloud
dokuwiki
#framadate
paheko
gitea
jirafeau
mattermost
roundcube
mobilizon
vaultwarden
ldap
apikaz

View File

@ -0,0 +1,6 @@
jirafeau
ethercalc
collabora
etherpad
web
imapsync

153
config/dockers.tmpl.env Normal file
View File

@ -0,0 +1,153 @@
# Les variables d'environnements utilisées
# par les dockers via le lien :
# .env -> ../../config/dockers.env
#######################################
# prod / dev / local
mode=
########################################
# choix du domaine
# prod=kaz.bzh
domain=
########################################
# choix du domaine des mails sympa
# prod=listes.kaz.bzh
domain_sympa=
########################################
# Pour paheko qui met en "dur" dans
# sa config l'URL pour l'atteindre
# prod=https
httpProto=
# prod=89.234.186.111
MAIN_IP=
# prod=89.234.186.151
SYMPA_IP=
# prod1=prod1
site=prod1
########################################
# choix du domaine ldap
# prod dc=kaz,dc=bzh
ldap_root=
########################################
# devrait être dans env-jirafeauServ
# mais seuls les variables de ".env" sont
# utilisables pour le montage des volumes
jirafeauDir=
# idem, devrait être dans le env-castopodServ mais c'est utilisé directement dans le docker-compose.yml
castopodRedisPassword=
########################################
# politique de redémarrage
# prod=always
restartPolicy=
########################################
# sites multiples
# prod=prod1
site=
########################################
# URL de l'API ACME pour les certifs
# prod=https://acme-v02.api.letsencrypt.org/directory
acme_server=
########################################
# noms des services
# ou www (mais bof)
webHost=
calcHost=tableur
cloudHost=cloud
dateHost=sondage
dokuwikiHost=wiki
fileHost=depot
pahekoHost=paheko
gitHost=git
gravHost=grav
matterHost=agora
officeHost=office
padHost=pad
smtpHost=smtp
ldapHost=ldap
ldapUIHost=mdp
sympaHost=listes
vigiloHost=vigilo
webmailHost=webmail
wordpressHost=wp
mobilizonHost=mobilizon
vaultwardenHost=koffre
traefikHost=dashboard
imapsyncHost=imapsync
castopodHost=pod
apikazHost=apikaz
########################################
# ports internes
matterPort=8000
imapsyncPort=8080
apikaz=5000
########################################
# noms des containers
dokuwikiServName=dokuwikiServ
ethercalcServName=ethercalcServ
etherpadServName=etherpadServ
framadateServName=framadateServ
pahekoServName=pahekoServ
gitServName=gitServ
gravServName=gravServ
jirafeauServName=jirafeauServ
mattermostServName=mattermostServ
nextcloudServName=nextcloudServ
officeServName=officeServ
proxyServName=proxyServ
roundcubeServName=roundcubeServ
smtpServName=mailServ
ldapServName=ldapServ
sympaServName=sympaServ
vigiloServName=vigiloServ
webServName=webServ
wordpressServName=wpServ
mobilizonServName=mobilizonServ
vaultwardenServName=vaultwardenServ
traefikServName=traefikServ
prometheusServName=prometheusServ
grafanaServName=grafanaServ
ethercalcDBName=ethercalcDB
etherpadDBName=etherpadDB
framadateDBName=framadateDB
gitDBName=gitDB
mattermostDBName=mattermostDB
nextcloudDBName=nextcloudDB
roundcubeDBName=roundcubeDB
sympaDBName=sympaDB
vigiloDBName=vigiloDB
wordpressDBName=wpDB
mobilizonDBName=mobilizonDB
vaultwardenDBName=vaultwardenDB
ldapUIName=ldapUI
imapsyncServName=imapsyncServ
castopodDBName=castopodDB
castopodServName=castopodServ
apikazServName=apikazServ
########################################
# services activés par container.sh
# variables d'environneements utilisées
# pour le tmpl du mandataire (proxy)

1
config/orgaTmpl/.env Symbolic link
View File

@ -0,0 +1 @@
../../config/dockers.env

View File

@ -0,0 +1,58 @@
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"]

View File

@ -0,0 +1,82 @@
#!/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 "$@"

View File

@ -0,0 +1,307 @@
version: '3.3'
#{{services
services:
#}}
#{{db
db:
image: mariadb:10.5
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
- orgaDB:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
env_file:
- ../../secret/env-${nextcloudDBName}
# - ../../secret/env-${mattermostDBName}
- ../../secret/env-${wordpressDBName}
networks:
- orgaNet
healthcheck: # utilisé par init-db.sh pour la créa d'orga
test: ["CMD", 'mysqladmin', 'ping', '-h', 'localhost', '-u', 'root', '-p$$MYSQL_ROOT_PASSWORD' ]
interval: 30s
timeout: 30s
retries: 5
#}}
#{{cloud
cloud:
image: nextcloud
container_name: ${orga}${nextcloudServName}
#disk_quota: 10G
restart: ${restartPolicy}
networks:
- orgaNet
# - postfixNet
depends_on:
- db
#db:
# condition: service_healthy # on peut mais ca va ralentir le process
links:
- db
external_links:
- ${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"
volumes:
- cloudMain:/var/www/html
- cloudData:/var/www/html/data
- cloudConfig:/var/www/html/config
- cloudApps:/var/www/html/apps
- cloudCustomApps:/var/www/html/custom_apps
- cloudThemes:/var/www/html/themes/
- cloudPhp:/usr/local/etc/php/conf.d/
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
env_file:
- ../../secret/env-${nextcloudServName}
- ../../secret/env-${nextcloudDBName}
environment:
- NEXTCLOUD_TRUSTED_DOMAINS=${orga}${cloudHost}.${domain}
- SMTP_HOST=${smtpHost}
- SMTP_PORT=25
- MAIL_DOMAIN=${domain}
#}}
#{{agora
agora:
build:
context: app
# uncomment following lines for team edition or change UID/GID
args:
- edition=team
- PUID=1000
- PGID=1000
container_name: ${orga}${mattermostServName}
#disk_quota: 10G
restart: ${restartPolicy}
# memory: 1G
networks:
- orgaNet
# - postfixNet
expose:
- ${matterPort}
depends_on:
- db
#db:
# condition: service_healthy # on peut mais ca va ralentir le process
links:
- db
external_links:
- ${smtpServName}:${smtpHost}.${domain}
volumes:
- matterConfig:/mattermost/config:rw
- matterData:/mattermost/data:rw
- matterLogs:/mattermost/logs:rw
- matterPlugins:/mattermost/plugins:rw
- matterClientPlugins:/mattermost/client/plugins:rw
- matterIcons:/mattermost/client/images:ro
- /etc/ssl:/etc/ssl:ro
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /etc/environment:/etc/environment:ro
env_file:
- ../../secret/env-${mattermostServName}
environment:
- 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}`)"
#}}
#{{wp
wordpress:
image: wordpress
container_name: ${orga}${wordpressServName}
restart: ${restartPolicy}
networks:
- orgaNet
# - postfixNet
depends_on:
- db
#db:
# condition: service_healthy # on peut mais ca va ralentir le process
links:
- db
external_links:
- ${smtpServName}:${smtpHost}.${domain}
env_file:
- ../../secret/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}
labels:
- "traefik.enable=true"
- "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
#}}
#{{wiki
dokuwiki:
image: mprasil/dokuwiki
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}}"
volumes:
- wikiData:/dokuwiki/data
- wikiConf:/dokuwiki/conf
- wikiPlugins:/dokuwiki/lib/plugins
- wikiLibtpl:/dokuwiki/lib/tpl
- wikiLogs:/var/log
networks:
- orgaNet
# - postfixNet
external_links:
- ${smtpServName}:${smtpHost}.${domain}
#}}
#{{castopod
castopod:
image: castopod/castopod:latest
container_name: ${orga}${castopodServName}
#disk_quota: 10G
restart: ${restartPolicy}
# memory: 1G
networks:
- orgaNet
# - postfixNet
expose:
- 8000
depends_on:
- db
links:
- db
external_links:
- ${smtpServName}:${smtpHost}.${domain}
volumes:
- castopodMedia:/var/www/castopod/public/media
environment:
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}
labels:
- "traefik.enable=true"
- "traefik.http.routers.${orga}${castopodServName}.rule=Host(`${orga}${castopodHost}.${domain}`){{FOREIGN_POD}}"
redis:
image: redis:7.0-alpine
container_name: ${orga}castopodCache
volumes:
- castopodCache:/data
networks:
- orgaNet
env_file:
- ../../secret/env-${castopodServName}
command: --requirepass ${castopodRedisPassword}
#}}
#{{services
volumes:
#}}
#{{db
orgaDB:
external: true
name: orga_${orga}orgaDB
#}}
#{{agora
matterConfig:
external: true
name: orga_${orga}matterConfig
matterData:
external: true
name: orga_${orga}matterData
matterLogs:
external: true
name: orga_${orga}matterLogs
matterPlugins:
external: true
name: orga_${orga}matterPlugins
matterClientPlugins:
external: true
name: orga_${orga}matterClientPlugins
matterIcons:
external: true
name: matterIcons
#{{cloud
cloudMain:
external: true
name: orga_${orga}cloudMain
cloudData:
external: true
name: orga_${orga}cloudData
cloudConfig:
external: true
name: orga_${orga}cloudConfig
cloudApps:
external: true
name: orga_${orga}cloudApps
cloudCustomApps:
external: true
name: orga_${orga}cloudCustomApps
cloudThemes:
external: true
name: orga_${orga}cloudThemes
cloudPhp:
external: true
name: orga_${orga}cloudPhp
#}}
#{{wiki
wikiData:
external: true
name: orga_${orga}wikiData
wikiConf:
external: true
name: orga_${orga}wikiConf
wikiPlugins:
external: true
name: orga_${orga}wikiPlugins
wikiLibtpl:
external: true
name: orga_${orga}wikiLibtpl
wikiLogs:
external: true
name: orga_${orga}wikiLogs
#}}
#{{wp
wordpress:
external: true
name: orga_${orga}wordpress
#}}
#{{castopod
castopodMedia:
external: true
name: orga_${orga}castopodMedia
castopodCache:
external: true
name: orga_${orga}castopodCache
#}}
networks:
orgaNet:
external: true
name: ${orga}orgaNet
# postfixNet:
# external:
# name: postfixNet

75
config/orgaTmpl/init-db.sh Executable file
View File

@ -0,0 +1,75 @@
#!/bin/bash
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)")"
ORGA=${ORGA_DIR%-orga}
if [[ -z "${ORGA}" ]]
then
printKazError "it's not an orga dir"
exit
fi
waitContainerHealthy "${ORGA}-DB" 180
[ $? -ne 0 ] && printKazError "\n La base de donnée démarre pas : impossible de terminer l'install" && exit
SQL=""
for ARG in "$@"; do
case "${ARG}" in
'cloud' )
SQL="$SQL
CREATE DATABASE IF NOT EXISTS ${nextcloud_MYSQL_DATABASE};
DROP USER IF EXISTS '${nextcloud_MYSQL_USER}';
CREATE USER '${nextcloud_MYSQL_USER}'@'%';
GRANT ALL ON ${nextcloud_MYSQL_DATABASE}.* TO '${nextcloud_MYSQL_USER}'@'%' IDENTIFIED BY '${nextcloud_MYSQL_PASSWORD}';
FLUSH PRIVILEGES;"
;;
'agora' )
SQL="$SQL
CREATE DATABASE IF NOT EXISTS ${mattermost_MYSQL_DATABASE};
DROP USER IF EXISTS '${mattermost_MYSQL_USER}';
CREATE USER '${mattermost_MYSQL_USER}'@'%';
GRANT ALL ON ${mattermost_MYSQL_DATABASE}.* TO '${mattermost_MYSQL_USER}'@'%' IDENTIFIED BY '${mattermost_MYSQL_PASSWORD}';
FLUSH PRIVILEGES;"
;;
'wp' )
SQL="$SQL
CREATE DATABASE IF NOT EXISTS ${wp_MYSQL_DATABASE};
DROP USER IF EXISTS '${wp_MYSQL_USER}';
CREATE USER '${wp_MYSQL_USER}'@'%';
GRANT ALL ON ${wp_MYSQL_DATABASE}.* TO '${wp_MYSQL_USER}'@'%' IDENTIFIED BY '${wp_MYSQL_PASSWORD}';
FLUSH PRIVILEGES;"
;;
'castopod' )
SQL="$SQL
CREATE DATABASE IF NOT EXISTS ${castopod_MYSQL_DATABASE};
DROP USER IF EXISTS '${castopod_MYSQL_USER}';
CREATE USER '${castopod_MYSQL_USER}'@'%';
GRANT ALL ON ${castopod_MYSQL_DATABASE}.* TO '${castopod_MYSQL_USER}'@'%' IDENTIFIED BY '${castopod_MYSQL_PASSWORD}';
FLUSH PRIVILEGES;"
;;
esac
done
echo $SQL | docker exec -i ${ORGA}-DB bash -c "mysql --user=root --password=${wp_MYSQL_ROOT_PASSWORD}"

27
config/orgaTmpl/init-paheko.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
. "${DOCKERS_ENV}"
cd $(dirname $0)
PWD=$(pwd)
ORGA_DIR=$(basename ${PWD})
if [[ "${ORGA_DIR}" != *"-orga" ]]
then
printKazError "it's not an orga dir"
exit
fi
ORGA=${ORGA_DIR%-orga}
if [[ -z "${ORGA}" ]]
then
printKazError "it's not an orga dir"
exit
fi
printKazMsg "init paheko ${ORGA}"
#${KAZ_COMP_DIR}/paheko/installPlugins.sh ${ORGA}

39
config/orgaTmpl/init-volume.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
#docker network create postfix_mailNet
#{{db
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=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
#}}
#{{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
#}}
#{{wp
docker volume create --name=orga_${orga}wordpress
#}}
#{{castopod
docker volume create --name=orga_${orga}castopodCache
docker volume create --name=orga_${orga}castopodMedia
#}}

View File

@ -0,0 +1,3 @@
CREATE DATABASE IF NOT EXISTS nextcloud;
CREATE DATABASE IF NOT EXISTS mattermost;
CREATE DATABASE IF NOT EXISTS wpdb;

486
config/orgaTmpl/orga-gen.sh Executable file
View File

@ -0,0 +1,486 @@
#!/bin/bash
# XXX pb arret des services retiré
PRG=$(basename $0)
KAZ_ROOT=$(cd "$(dirname $0)/../.."; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
cd $(dirname $0)
ORGA_DIR="$(basename "$(pwd)")"
TIMESTAMP=YES
TMPL_PROXY_COMPOSE="${KAZ_COMP_DIR}/proxy/docker-compose.tmpl.yml"
TMPL_TRAEFIK_COMPOSE="${KAZ_COMP_DIR}/traefik/docker-compose.tmpl.yml"
ORGA_LIST="${KAZ_CONF_DIR}/container-orga.list"
LIST=""
STAGE_DEFAULT=true
STAGE_CREATE=
STAGE_INIT=
usage(){
echo "Usage: $0 [-h] [-l] [+/-paheko] [-/+cloud [-/+collabora}]] [+/-agora] [+/-wiki] [+/-wp] [+/-pod] [x{G/M/k}] OrgaName"
echo " -h|--help : this help"
echo " -l|--list : list service"
echo " --create : only create (before start)"
echo " --init : only init (after start)"
echo " +/- paheko : on/off paheko"
echo " +/- cloud : on/off cloud"
echo " +/- coll* : on/off collabora"
echo " +/- matter*|agora : on/off agora"
echo " +/- wiki : on/off wiki"
echo " +/- wp|word* : on/off wp"
echo " +/- casto*|pod : on/off castopod"
echo " x[GMk] : set quota"
echo " OrgaName : name must contain a-z0-9_\-"
}
for ARG in "$@"; do
case "${ARG}" in
'-h' | '--help' )
usage
exit 0;;
'-l' | '--list' )
;;
'--create' )
STAGE_DEFAULT=
STAGE_CREATE=true
if [[ -n "${STAGE_INIT}" ]]; then
usage
echo " Incompatible options (--create --init)"
exit 1
fi
;;
'--init' )
STAGE_DEFAULT=
STAGE_INIT=true
if [[ -n "${STAGE_CREATE}" ]]; then
usage
echo " Incompatible options (--create --init)"
exit 1
fi
;;
'-'* )
;;
'+'* )
;;
[.0-9]*[GMk] )
;;
* )
if [[ "${ORGA_DIR}" = "orgaTmpl" ]]; then
if [[ "${ARG}" =~ ^[a-z0-9_\-]+$ ]]; then
printKazMsg "create ${ARG}"
ORGA_PATH="${KAZ_COMP_DIR}/${ARG}-orga"
mkdir -p "${ORGA_PATH}"
cd "${ORGA_PATH}"
ORGA_DIR="$(basename "$(pwd)")"
ln -sf ../../config/dockers.env .env
ln -sf ../../config/orgaTmpl/orga-gen.sh
ln -sf ../../config/orgaTmpl/orga-rm.sh
ln -sf ../../config/orgaTmpl/reload.sh
else
printKazError "Name must contains only a-z0-9_\-"
usage
exit 1
fi
else
if [[ "${ARG}-orga" != "${ORGA_DIR}" ]]; then
printKazError "Can't cross config ${ARG}-orga with ${ORGA_DIR}"
usage
exit 1
fi
fi
;;
esac
done
if [[ "${ORGA_DIR}" = "orgaTmpl" ]]
then
printKazError "You must give orga name"
usage
exit 1
fi
if [[ "${ORGA_DIR}" != *"-orga" ]]
then
printKazError "it's not an orga dir"
exit
fi
ORGA=${ORGA_DIR%-orga}
if [[ -z "${ORGA}" ]]
then
printKazError "it's not an orga dir"
exit
fi
# default values
flagInCompose(){
# $1 filename (docker-compose.yml)
# $2 service name
# $3 default value
if [[ ! -f "$1" ]]
then
echo "$3"
else
if grep -q "$2" docker-compose.yml
then
echo on
else
echo off
fi
fi
}
export cloud=$(flagInCompose docker-compose.yml cloud: off)
export collabora=$(flagInCompose docker-compose.yml collabora: off)
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 db="off"
export services="off"
export paheko=$([[ -f usePaheko ]] && echo "on" || echo "off")
export quota=10G
if [[ -f docker-compose.yml ]]; then
if grep -q "storage_opt" docker-compose.yml
then
quota=$(grep "storage_opt" docker-compose.yml | cut -d : -f 2 | tail -n 1)
fi
fi
DBaInitialiser=""
INITCMD2="--install"
for ARG in "$@"; do
case "${ARG}" in
'-show' )
for i in cloud collabora agora wiki wp castopod db; do
echo "${i}=${!i}"
done
exit;;
'-h' | '--help' )
usage
exit 1
;;
'-l' | '--list' )
LIST="list"
;;
'-time'* )
TIMESTAMP=YES
;;
'-paheko'* )
paheko="off"
;;
'-cloud' )
cloud="off"
collabora="off"
;;
'-coll'* | '-offi'* )
collabora="off"
;;
'-matter'* | '-agora')
agora="off"
;;
'-wiki' )
wiki="off"
;;
'-wp' | '-word'* )
wp="off"
;;
'-pod' | '-casto'* )
castopod="off"
;;
'+paheko' )
paheko="on"
;;
'+cloud' )
cloud="on"
DBaInitialiser="$DBaInitialiser cloud"
INITCMD2="$INITCMD2 -cloud"
;;
'+coll'* | '+offi'* )
collabora="on"
INITCMD2="$INITCMD2 -office"
;;
'+matter'* | '+agora' )
agora="on"
DBaInitialiser="$DBaInitialiser agora"
INITCMD2="$INITCMD2 -agora"
;;
'+wiki' )
wiki="on"
;;
'+wp' | '+word'* )
wp="on"
DBaInitialiser="$DBaInitialiser wp"
INITCMD2="$INITCMD2 -wp"
;;
'+pod' | '+casto'* )
castopod="on"
DBaInitialiser="$DBaInitialiser castopod"
INITCMD2="$INITCMD2 -pod"
;;
[.0-9]*[GMk] )
quota="${ARG}"
;;
esac
done
if [ "${cloud}" = "on" -o "${agora}" = "on" -o "${wp}" = "on" -o "${castopod}" = "on" ]
then
db="on"
fi
if [ "${db}" = "on" -o "${wiki}" = "on" ]
then
services="on"
fi
. "${DOCKERS_ENV}"
ORGA_FLAG=${ORGA_DIR//-/_}
DOMAIN_AREA="{{${ORGA_FLAG}\n"
ADD_DOMAIN=""
DEL_DOMAIN=""
listServ () {
for serv in $(getAvailableServices); do
if [[ "${!serv}" == "on" ]]; then
echo "${serv}"
fi
done
}
if [[ -n "${LIST}" ]] ; then
listServ
exit
fi
if [[ "${paheko}" = "on" ]]; then
touch usePaheko
ADD_DOMAIN+="${ORGA}-${pahekoHost} "
else
rm -f usePaheko
DEL_DOMAIN+="${ORGA}-${pahekoHost} "
fi
if [[ "${cloud}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${nextcloudServName}:${ORGA}-\${cloudHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${cloudHost} "
else
DEL_DOMAIN+="${ORGA}-${cloudHost} "
fi
if [[ "${collabora}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${officeServName}:${ORGA}-\${officeHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${officeHost} "
else
DEL_DOMAIN+="${ORGA}-${officeHost} "
fi
if [[ "${agora}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${mattermostServName}:${ORGA}-\${matterHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${matterHost} "
else
DEL_DOMAIN+="${ORGA}-${matterHost} "
fi
if [[ "${wiki}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${dokuwikiServName}:${ORGA}-\${dokuwikiHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${dokuwikiHost} "
else
DEL_DOMAIN+="${ORGA}-${dokuwikiHost} "
fi
if [[ "${wp}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${wordpressServName}:${ORGA}-\${wordpressHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${wordpressHost} "
else
DEL_DOMAIN+="${ORGA}-${wordpressHost} "
fi
if [[ "${castopod}" = "on" ]]; then
DOMAIN_AREA+=" - ${ORGA}-\${castopodServName}:${ORGA}-\${castopodHost}.\${domain}\n"
ADD_DOMAIN+="${ORGA}-${castopodHost} "
else
DEL_DOMAIN+="${ORGA}-${castopodHost} "
fi
DOMAIN_AREA+="}}\n"
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
if [[ -f "${TMPL_TRAEFIK_COMPOSE}" ]]; then
# ########## update traefik/docker-compose.tmpl.yml
printKazMsg "Update ${TMPL_TRAEFIK_COMPOSE}"
if grep -q "^{{${ORGA_FLAG}" "${TMPL_TRAEFIK_COMPOSE}" 2> /dev/null ; then
sed -i -e "/^{{${ORGA_FLAG}/,/^}}/d" "${TMPL_TRAEFIK_COMPOSE}"
fi
# use net
sed "s/^#### END ORGA USE_NET/{{${ORGA_FLAG}\n - ${ORGA}Net\n}}\n#### END ORGA USE_NET/" -i "${TMPL_TRAEFIK_COMPOSE}"
# def net
sed "s/^#### END ORGA DEF_NET/{{${ORGA_FLAG}\n ${ORGA}Net:\n external: true\n name: ${ORGA}-orgaNet\n}}\n#### END ORGA DEF_NET/" -i "${TMPL_TRAEFIK_COMPOSE}"
fi
if [[ -f "${TMPL_PROXY_COMPOSE}" ]]; then
# ########## update proxy/docker-compose.tmpl.yml
printKazMsg "Update ${TMPL_PROXY_COMPOSE}"
if grep -q "^{{${ORGA_FLAG}" "${TMPL_PROXY_COMPOSE}" 2> /dev/null ; then
sed -i -e "/^{{${ORGA_FLAG}/,/^}}/d" "${TMPL_PROXY_COMPOSE}"
fi
# domaine
sed "s/^#### END ORGA HOST/${DOMAIN_AREA}#### END ORGA HOST/" -i "${TMPL_PROXY_COMPOSE}"
# use net
sed "s/^#### END ORGA USE_NET/{{${ORGA_FLAG}\n - ${ORGA}Net\n}}\n#### END ORGA USE_NET/" -i "${TMPL_PROXY_COMPOSE}"
# def net
sed "s/^#### END ORGA DEF_NET/{{${ORGA_FLAG}\n ${ORGA}Net:\n external: true\n name: ${ORGA}-orgaNet\n}}\n#### END ORGA DEF_NET/" -i "${TMPL_PROXY_COMPOSE}"
fi
fi
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
# ########## update DNS
printKazMsg "Update DNS"
${KAZ_BIN_DIR}/dns.sh add ${ADD_DOMAIN}
${KAZ_BIN_DIR}/dns.sh del ${DEL_DOMAIN}
fi
update() {
(
# $1 = template
# $2 = target
if [ "${TIMESTAMP}" == "YES" ]; then
echo "# Generated by $(pwd)$(basename $0)"
echo "# à partir du modèle $1"
echo "#" $(date "+%x %X")
echo
fi
FOREIGN_WP=$(grep " ${ORGA};" "${KAZ_CONF_PROXY_DIR}/wp_kaz_map" 2>/dev/null | \
sed "s/\([^ ]*\) ${ORGA};/ \|\| Host(\`\1\`)/" | tr -d "\r\n")
FOREIGN_NC=$(grep " ${ORGA};" "${KAZ_CONF_PROXY_DIR}/cloud_kaz_map" 2>/dev/null | \
sed "s/\([^ ]*\) ${ORGA};/ \|\| Host(\`\1\`)/" | tr -d "\r\n")
FOREIGN_DW=$(grep " ${ORGA};" "${KAZ_CONF_PROXY_DIR}/wiki_kaz_map" 2>/dev/null | \
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")
awk '
BEGIN {cp=1}
/#}}/ {cp=1 ; next};
/#{{on/ {cp=1; next};
/#{{off/ {cp=0; next};
match($0, /#{{[a-zA-Z0-9_]+/) {cp=(ENVIRON[substr($0,RSTART+3,RLENGTH)] == "on"); next};
{if (cp) print $0};' $1 | sed \
-e "/^[ \t]*$/d"\
-e "/^[ ]*#.*$/d"\
-e "s/{{FOREIGN_WP}}/${FOREIGN_WP}/"\
-e "s/{{FOREIGN_NC}}/${FOREIGN_NC}/"\
-e "s/{{FOREIGN_DW}}/${FOREIGN_DW}/"\
-e "s/{{FOREIGN_POD}}/${FOREIGN_POD}/"\
-e "s|\${orga}|${ORGA}-|g"
) > "$2"
sed "s/storage_opt:.*/storage_opt: ${quota}/g" -i "$2"
}
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
# ########## update ${ORGA_DIR}/docker-compose.tmpl.yml
printKazMsg "update docker-compose.yml ${ORGA}"
update ${KAZ_CONF_DIR}/orgaTmpl/docker-compose.yml docker-compose.yml
printKazMsg "Service enabled:"
for service in $(listServ) ; do
printKazMsg " * ${service}"
done
fi
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
# ########## update ${ORGA_DIR}/init-volume.sh
update ${KAZ_CONF_DIR}/orgaTmpl/init-volume.sh init-volume.sh
chmod a+x init-volume.sh
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/app/
ln -sf ../../config/orgaTmpl/wiki-conf/
ln -sf ../../config/orgaTmpl/reload.sh
ln -sf ../../config/orgaTmpl/init-db.sh
fi
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
# ########## update ${DOCKERS_ENV}
if ! grep -q "proxy_orga=" .env 2> /dev/null
then
echo "proxy_orga=on" >> .env
fi
if ! grep -q "proxy_${ORGA_FLAG}=" .env 2> /dev/null
then
echo "proxy_${ORGA_FLAG}=off" >> .env
fi
touch "${ORGA_LIST}"
if ! grep -qx "${ORGA}-orga" "${ORGA_LIST}" 2> /dev/null
then
echo "${ORGA}-orga" >> "${ORGA_LIST}"
fi
fi
if [[ -n "${STAGE_DEFAULT}${STAGE_CREATE}" ]]; then
# ########## create volume
./init-volume.sh
fi
if [[ -n "${STAGE_CREATE}" ]]; then
# ########## start docker
docker-compose up -d
fi
if [[ -n "${STAGE_DEFAULT}" ]]; then
# ########## start docker proxy
${KAZ_BIN_DIR}/container.sh start ${ORGA}-orga
fi
if [[ -n "${STAGE_DEFAULT}" ]]; then
# ########## stop ${DOCKERS_ENV}
for service in $("${KAZ_BIN_DIR}/kazList.sh" service disable ${ORGA}-orga); do
DockerServName=
case "${service}" in
agora)
DockerServName="${ORGA}-${mattermostServName}"
;;
paheko)
continue
;;
cloud)
DockerServName="${ORGA}-${nextcloudServName}"
;;
collabora)
DockerServName="${ORGA}-${officeServName}"
;;
wiki)
DockerServName="${ORGA}-${dokuwikiServName}"
;;
wp)
DockerServName="${ORGA}-${wordpressServName}"
;;
esac
if checkDockerRunning "${DockerServName}"; then
printKazMsg " - stop ${service}"
docker rm -f "${DockerServName}" 2>/dev/null
fi
done
fi
if [[ -n "${STAGE_DEFAULT}${STAGE_INIT}" ]]; then
[ -z "$DBaInitialiser" ] || ./init-db.sh $DBaInitialiser
# ########## init services
[[ "${paheko}" = "on" ]] && ./init-paheko.sh
# initCmd="--install"
# # XXX risque d'écraser user DB
# [[ "${cloud}" = "on" ]] && initCmd="$initCmd -cloud"
# # XXX risque d'écraser user DB
# [[ "${wp}" = "on" ]] && initCmd="$initCmd -wp"
# [[ "${wiki}" = "on" ]] && initCmd="$initCmd -wiki"
# # XXX risque d'écraser user DB
# [[ "${agora}" = "on" ]] && initCmd="$initCmd -agora"
# [[ "${castopod}" = "on" ]] && initCmd="$initCmd -castopod"
# on initialise que si il y a au moins un truc à initialiser
[[ "${INITCMD2}" != "--install" ]] && ${KAZ_BIN_DIR}/gestContainers.sh $INITCMD2 "${ORGA}"
fi
if [[ -n "${STAGE_DEFAULT}" ]]; then
# ########## update status web page
${KAZ_COMP_DIR}/web/web-gen.sh
fi

75
config/orgaTmpl/orga-rm.sh Executable file
View File

@ -0,0 +1,75 @@
#!/bin/bash
KAZ_ROOT=$(cd "$(dirname $0)/../.."; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
cd $(dirname $0)
PWD=$(pwd)
ORGA_DIR=$(basename ${PWD})
availableProxyComposes=($(getList "${KAZ_CONF_DIR}/container-proxy.list"))
TMPL_PROXY_COMPOSES=()
for item in "${availableProxyComposes[@]}"; do
TMPL_PROXY_COMPOSES+=("${KAZ_COMP_DIR}/${item}/docker-compose.tmpl.yml")
done
ORGA_LIST="${KAZ_CONF_DIR}/container-orga.list"
remove () {
while : ; do
read -r -p "Are you sure remove ${ORGA}? [y/N] " response
case "$response" in
[oO][uU][iI] | [yY][eE][sS] | [yY] | [oO] )
echo "remove ${ORGA}"
. .env
ORGA_FLAG=${ORGA//-/_}_orga
for item in "${TMPL_PROXY_COMPOSES[@]}"; do
echo "Update ${item}"
if grep -q "^{{${ORGA_FLAG}" "${item}" 2> /dev/null ; then
sed -i -e "/^{{${ORGA_FLAG}/,/^}}/d" "${item}"
fi
done
DEL_DOMAIN=""
for serv in ${pahekoHost} ${cloudHost} ${officeHost} ${dokuwikiHost} ${wordpressHost} ${matterHost}
do
DEL_DOMAIN+="${ORGA}-${serv} "
done
${KAZ_BIN_DIR}/dns.sh del ${DEL_DOMAIN}
${KAZ_BIN_DIR}/container.sh stop ${ORGA}-orga
sed -i -e "/proxy_${ORGA_FLAG}=/d" "${DOCKERS_ENV}"
sed -i -e "/^${ORGA}-orga$/d" "${ORGA_LIST}"
rm -fr "${KAZ_COMP_DIR}/${ORGA}-orga"
exit;;
[Nn]* )
exit;;
* )
echo "Please answer yes or no."
;;
esac
done
}
if [[ "${ORGA_DIR}" = "orgaTmpl" ]]
then
while :
do
echo -n "Give new organization name ? "
read ORGA
[[ "${ORGA}" =~ ^[a-zA-Z0-9_\-]+$ ]] && [[ ! -z "${ORGA}" ]] && break
echo "Name must contains only a-zA-Z0-9_\-"
done
remove
exit
fi
if [[ "${ORGA_DIR}" != *"-orga" ]]
then
echo "it's not an orga dir"
exit
fi
ORGA=${ORGA_DIR%-orga}
remove

15
config/orgaTmpl/reload.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
PRG=$(basename $0)
KAZ_ROOT=$(cd "$(dirname $0)/../.."; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
. "${DOCKERS_ENV}"
cd $(dirname $0)
PWD=$(pwd)
ORGA_DIR=$(basename ${PWD})
ORGA=${ORGA_DIR%-orga}
${KAZ_BIN_DIR}/manageWiki.sh --reload $ORGA

View File

@ -0,0 +1,10 @@
# 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

View File

@ -0,0 +1,26 @@
<?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';

View File

@ -0,0 +1,13 @@
# 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

21
config/proxy/proxy_params Normal file
View File

@ -0,0 +1,21 @@
#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;

89
config/skip-file.txt Normal file
View File

@ -0,0 +1,89 @@
# a verifier
/vigilo/
dockers/grav
dockers/web/Dockerfile
dockers/proxy/todo-ssl
dockers/cloud/DEADJOE
# jamais
/.git/
bin/createUser.log
bin/createUser.old
bin/createUser.txt
dockers/mattermost/modif_user.txt
state/activites_mailbox.csv
state/collecte.csv
config/createUser_cmds_to_run.sh
dockers/proxy/config/pb-vigilo.txt
*~
*/*~
*/*/*~
*/*/*/*~
.*~
*/.*~
*/*/.*~
*/*/*/.*~
*/*.old/
*/*/*.old/
*/*/*/*.old/
# auto
config/dockers.env
dockers/proxy/config/nginx.conf
dockers/*-orga/
dockers/proxy-*
# param
config/container-*.list
dockers/postfix/config/dovecot-quotas.cf
dockers/postfix/config/postfix-accounts.cf
dockers/postfix/config/postfix-accounts.cf
dockers/postfix/config/postfix-virtual.cf
dockers/postfix/config/ssl/demoCA/cacert.pem
dockers/postfix/config/ssl/demoCA/careq.pem
dockers/postfix/config/ssl/demoCA/index.txt
dockers/postfix/config/ssl/demoCA/index.txt.attr
dockers/postfix/config/ssl/demoCA/index.txt.old
dockers/postfix/config/ssl/demoCA/newcerts/*.pem
dockers/postfix/config/ssl/demoCA/private/cakey.pem
dockers/postfix/config/ssl/demoCA/serial
dockers/postfix/config/ssl/mail.dev.kaz.bzh-key.pem
dockers/postfix/config/ssl/mail.dev.kaz.bzh-req.pem
dockers/proxy/docker-compose.yml
dockers/test-all-but-mail.sh
dockers/web/html/status/allServices.html
dockers/web/html/status/allServices.tmpl.html
config/container-orga.list
config/container-withMail.list
config/container-withoutMail.list
config/password/env-mailServ
config/proxy/*_kaz_map.*
config/proxy/*_kaz_name.*
# parfois
dockers/proxy/docker-compose.tmpl.yml
# ajouté par rdiff.sh
config/proxy/port.kaz.local
config/proxy/allow_ip.kaz.local
config/proxy/redirect.kaz.local
config/proxy/foreign-certificate
config/proxy/wiki_kaz_map
config/proxy/wp_kaz_name
config/proxy/agora_kaz_map
config/proxy/wiki_kaz_name
config/proxy/agora_kaz_name
config/proxy/redirect
config/proxy/port
config/proxy/cloud_kaz_name
config/proxy/wp_kaz_map
config/proxy/allow_ip
config/proxy/cloud_kaz_map
dockers/postfix/filter/master.cf.update
dockers/postfix/filter/filter.sh
dockers/postfix/filter/jirafeauAPI
dockers/postfix/filter/eMailShrinker
dockers/postfix/filter/domainname
dockers/postfix/filter
dockers/jirafeau/config/config.local.php
config/skip-email.txt
dockers/sympa/filter/domainname
dockers/sympa/DEADJOE
bin/DEADJOE
dockers/sympa/reload.sh.non.utilisé
dockers/kaz-orga.sav