From 1a8f4d66134bdabd65952156296760ce57082c23 Mon Sep 17 00:00:00 2001 From: afornerot Date: Sat, 26 Jul 2025 17:20:03 +0200 Subject: [PATCH] add keeweb --- env/.env | 6 ++++ misc/images/keeweb/containers/Dockerfile | 32 +++++++++++++++++ misc/images/keeweb/containers/apache.conf | 16 +++++++++ misc/images/keeweb/containers/webdav.js | 21 +++++++++++ misc/images/keeweb/docker-compose.yml | 14 ++++++++ misc/images/keeweb/init.kdbx | 0 services/50-keeweb/apache/apache.conf | 4 +++ .../50-keeweb/dockercompose/dockercompose.yml | 13 +++++++ services/50-keeweb/env/.env | 5 +++ services/50-keeweb/misc/nine.sh | 36 +++++++++++++++++++ 10 files changed, 147 insertions(+) create mode 100755 misc/images/keeweb/containers/Dockerfile create mode 100644 misc/images/keeweb/containers/apache.conf create mode 100644 misc/images/keeweb/containers/webdav.js create mode 100755 misc/images/keeweb/docker-compose.yml create mode 100644 misc/images/keeweb/init.kdbx create mode 100644 services/50-keeweb/apache/apache.conf create mode 100644 services/50-keeweb/dockercompose/dockercompose.yml create mode 100644 services/50-keeweb/env/.env create mode 100644 services/50-keeweb/misc/nine.sh diff --git a/env/.env b/env/.env index ce5f147..77d63a1 100644 --- a/env/.env +++ b/env/.env @@ -171,6 +171,12 @@ DOKUWIKI_ACTIVATE=0 DOKUWIKI_LOCAL=1 DOKUWIKI_URL=${PROTOCOLE}://${WEB_URL}/dokuwiki +# KEEWEB +KEEWEB_SERVICE_NAME=keeweb +KEEWEB_ACTIVATE=0 +KEEWEB_LOCAL=1 +KEEWEB_URL=${PROTOCOLE}://${WEB_URL}/keeweb + # KOMGA KOMGA_SERVICE_NAME=komga KOMGA_ACTIVATE=0 diff --git a/misc/images/keeweb/containers/Dockerfile b/misc/images/keeweb/containers/Dockerfile new file mode 100755 index 0000000..e0f4c7a --- /dev/null +++ b/misc/images/keeweb/containers/Dockerfile @@ -0,0 +1,32 @@ +FROM reg.cadoles.com/envole/nineapache:8.2 + +USER root + +# Installe Node.js + npm +RUN apk add --no-cache nodejs npm + +# Crée le dossier de l'app +WORKDIR /app + +# Installe webdav-server localement (dans /app/node_modules) +RUN npm install webdav-server@2 + +# Copie ton script WebDAV dans /app +COPY webdav.js /app/webdav.js + +# Installe KeeWeb +RUN curl -L https://github.com/keeweb/keeweb/releases/download/v1.18.7/KeeWeb-1.18.7.html.zip -o /tmp/keeweb.zip \ + && unzip /tmp/keeweb.zip -d /app/public \ + && sed -i 's| + ProxyPass http://127.0.0.1:9999/ + ProxyPassReverse http://127.0.0.1:9999/ + + + + Options FollowSymLinks + AllowOverride Limit Options FileInfo + DirectoryIndex index.php + Require all granted + diff --git a/misc/images/keeweb/containers/webdav.js b/misc/images/keeweb/containers/webdav.js new file mode 100644 index 0000000..785c988 --- /dev/null +++ b/misc/images/keeweb/containers/webdav.js @@ -0,0 +1,21 @@ +const webdav = require('webdav-server').v2; + +const adminUser = process.env.WEBDAV_USER || 'admin'; +const adminPass = process.env.WEBDAV_PASS || 'password'; + +const userManager = new webdav.SimpleUserManager(); +const user = userManager.addUser(adminUser, adminPass, false); // false = pas admin système + +const privilegeManager = new webdav.SimplePathPrivilegeManager(); + +const server = new webdav.WebDAVServer({ + port: 9999, + hostname: '0.0.0.0', + httpAuthentication: new webdav.HTTPBasicAuthentication(userManager, 'default realm'), + privilegeManager, + rootFileSystem: new webdav.PhysicalFileSystem('/data') +}); + +server.start(() => { + console.log(`WebDAV server running at http://0.0.0.0:9999 as ${adminUser}`); +}); diff --git a/misc/images/keeweb/docker-compose.yml b/misc/images/keeweb/docker-compose.yml new file mode 100755 index 0000000..0211585 --- /dev/null +++ b/misc/images/keeweb/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3' + +services: + keeweb: + build: + context: ./containers + image: reg.cadoles.com/envole/keeweb + container_name: keeweb + ports: + - "80:80" + - "443:443" + environment: + WEBDAV_USER: tonuser + WEBDAV_PASS: tonpassword \ No newline at end of file diff --git a/misc/images/keeweb/init.kdbx b/misc/images/keeweb/init.kdbx new file mode 100644 index 0000000..e69de29 diff --git a/services/50-keeweb/apache/apache.conf b/services/50-keeweb/apache/apache.conf new file mode 100644 index 0000000..71f8104 --- /dev/null +++ b/services/50-keeweb/apache/apache.conf @@ -0,0 +1,4 @@ + +# Keeweb +ProxyPass /keeweb http://keeweb retry=0 keepalive=On +ProxyPassReverse /keeweb http://keeweb retry=0 diff --git a/services/50-keeweb/dockercompose/dockercompose.yml b/services/50-keeweb/dockercompose/dockercompose.yml new file mode 100644 index 0000000..7aa9666 --- /dev/null +++ b/services/50-keeweb/dockercompose/dockercompose.yml @@ -0,0 +1,13 @@ +services: + # keeweb + # interface Web pour KeePass + # Port interne 80 + keeweb: + image: reg.cadoles.com/envole/keeweb + container_name: nine-keeweb + restart: unless-stopped + env_file: ./services/50-keeweb/env/.env.merge + networks: + - nine-network + volumes: + - ./services/50-keeweb/volume/data:/web diff --git a/services/50-keeweb/env/.env b/services/50-keeweb/env/.env new file mode 100644 index 0000000..4904cb6 --- /dev/null +++ b/services/50-keeweb/env/.env @@ -0,0 +1,5 @@ + +# == KEEWEB ================================================================================================================================= + +WEBDAV_USER=${ADMIN_USER} +WEBDAV_PASS=${ADMIN_PASSWORD} diff --git a/services/50-keeweb/misc/nine.sh b/services/50-keeweb/misc/nine.sh new file mode 100644 index 0000000..9631d34 --- /dev/null +++ b/services/50-keeweb/misc/nine.sh @@ -0,0 +1,36 @@ +#!/bin/bash + + +function upkeeweb { + if [[ $KEEWEB_ACTIVATE == 1 && $KEEWEB_LOCAL == 1 ]] + then + Title ${KEEWEB_SERVICE_NAME^^} + + EchoVert "CONTAINER" + upservice ${KEEWEB_SERVICE_NAME} + chmod -R a+wr ./services/50-keeweb/volume/data + Echo + fi +} + +function destroykeeweb { + if [[ $KEEWEB_LOCAL == 1 ]] + then + Title "DESTROY $KEEWEB_SERVICE_NAME" + + stop $KEEWEB_SERVICE_NAME 1 + docker-compose rm -s -v -f "$KEEWEB_SERVICE_NAME" + + if [[ -z $1 ]]; then + Question_ouinon "Souhaitez-vous supprimer le volume associé à $KEEWEB_SERVICE_NAME ?"; + response=$? + fi + if [[ "$response" == 0 || ! -z $1 ]] + then + EchoRouge "Delete Volume = $KEEWEB_SERVICE_NAME" + rm -rf services/50-keeweb/volume/data + fi + + echo "" + fi +} \ No newline at end of file