diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ea316079ca1d0b4ea305d64c551b0daaffa72fe5..ec09aa8b7fa325eaf800d746d88c7ce88be05117 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -31,17 +31,18 @@ docker-image:
   stage: build
   tags: [dind]
   variables:
-    IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
+    PUBLIC_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
+    PREZBUILDER_IMAGE: prezbuilder
+    PREZBUILDER_TAG: "$CI_COMMIT_SHA"
+    LOCAL_IMAGE: "$PREZBUILDER_IMAGE:$PREZBUILDER_TAG"
   script:
-    - docker pull "$IMAGE" || exit 0
-    - docker build --cache-from "node:buster-12,$IMAGE" --tag "$IMAGE" .
-    - docker run --rm "$IMAGE" build src public
+    - set -x
+    - docker pull "$PUBLIC_IMAGE" || exit 0
+    - docker build --cache-from "node:buster-12,$PUBLIC_IMAGE" --tag "$LOCAL_IMAGE" --tag "$PUBLIC_IMAGE" .
+    - docker run --rm "$LOCAL_IMAGE" build
+    - bash -x bin/prezbuilder-docker build src public
     - "[ -e public/index.html ]"
-    - rm -rf public/*
-    - bin/prezbuilder-docker build src public
-    - docker push "$IMAGE"
+    - docker push "$PUBLIC_IMAGE"
 
 lint:
   stage: test
@@ -51,33 +52,6 @@ lint:
   script:
     - npm run lint
 
-run-from-sources:
-  stage: test
-  image: node:12-buster
-  needs:
-    - node_modules
-  before_script:
-    - apt-get update -yq && apt-get install -yq pandoc wkhtmltopdf
-  script:
-    - bin/prezbuilder build src public
-    - "[ -e public/index.html ]"
-
-run-from-npm:
-  stage: test
-  image: node:12-buster
-  needs: []
-  variables:
-    GIT_STRATEGY: none
-  before_script:
-    - apt-get update -yq && apt-get install -yq pandoc wkhtmltopdf
-    - set -x
-    - mkdir -p $HOME/prezbuilder
-    - cd $HOME/prezbuilder
-    - npm install "git+${CI_REPOSITORY_URL}#${CI_COMMIT_REF_NAME}"
-  script:
-    - node_modules/.bin/prezbuilder build $CI_PROJECT_DIR/src $CI_PROJECT_DIR/public
-    - "[ -e $CI_PROJECT_DIR/public/index.html ]"
-
 pages:
   extends: .prezbuilder
   variables:
diff --git a/bin/prezbuilder-docker b/bin/prezbuilder-docker
index 374a73682e7666e3598661459cd52fc8a4f15ca0..d0937f81def86bb8f737393772223ba3d398cbf3 100755
--- a/bin/prezbuilder-docker
+++ b/bin/prezbuilder-docker
@@ -7,5 +7,5 @@ exec docker run \
   -v `readlink -f ${3:-public}`:/public \
   -p 3000:3000/tcp \
   -p 35729:35729/tcp \
-  gitlab-registry.irstea.fr/pole-is/tools/prezbuilder:${CI_COMMIT_REF_NAME:-master} \
-  ${1:-build} /src /public
+  "${PREZBUILDER_IMAGE:-gitlab-registry.irstea.fr/pole-is/tools/prezbuilder}:${PREZBUILDER_TAG:-master}" \
+  "${1:-build}" /src /public
diff --git a/src/index.md b/src/index.md
index 929535bc39dfa8b5c71acc96ce479727a424095e..7bca240fec1d28906f5dee63951a7b6ff415d4a0 100644
--- a/src/index.md
+++ b/src/index.md
@@ -58,25 +58,6 @@ pages:
     - if: $CI_COMMIT_TAG
 ```
 
-## Avec NodeJS (_a.k.a._ depuis les sources)
-
-Il faudra installer vous-même les prérequis :
-
-- [node 12](https://nodejs.org/fr/download/)
-- [pandoc](https://pandoc.org/installing.html)
-- [drawio-desktop](https://github.com/jgraph/drawio-desktop/releases/latest) (optionel)
-- [wkhtmltopdf](https://wkhtmltopdf.org/downloads.html) (optionel)
-- gulp-cli (`sudo npm install --global gulp-cli`)
-
-Installation :
-
-```bash
-mkdir -p $HOME/prezbuilder
-cd $HOME/prezbuilder
-npm install "git+https://gitlab.irstea.fr/pole-is/tools/prezbuilder.git#master"
-sudo ln -s $HOME/prezbuilder/node_modules/.bin/prezbuilder /usr/local/bin/prezbuilder
-```
-
 # Utilisation
 
 prezbuild crée une (ou plusieurs) présentation(s) dans `public/` à partir du
@@ -148,20 +129,6 @@ prezbuiler peut être exécuté selon deux modes :
   - présentation accessible sur http://localhost:3000,
   - mise à jour automatique sur modification des sources.
 
-## Avec NodeJS
-
-#### Build
-
-```bash
-prezbuilder build [répertoire_source [répertoire_sortie]]
-```
-
-#### Dev
-
-```bash
-prezbuilder dev [répertoire_source [répertoire_sortie]]
-```
-
 ## Avec Docker
 
 Le script pour Docker s'utilise comme celui présenté de NodeJS :