Commit graph

11 commits

Author SHA1 Message Date
Imugiii
0e39fb257b fix(devops): passer les variables SMTP/MAIL au conteneur wakdo-app
All checks were successful
CI / secret-scan (pull_request) Successful in 11s
CI / static-tests (pull_request) Successful in 1m2s
CI / js-tests (pull_request) Successful in 32s
CI / js-tests (push) Successful in 38s
CI / php-lint (pull_request) Successful in 20s
CI / secret-scan (push) Successful in 10s
CI / php-lint (push) Successful in 23s
CI / static-tests (push) Successful in 53s
La feature SMTP (#96) lisait SMTP_HOST/USER/PASSWORD via getenv, mais aucun
compose ne les exposait au conteneur (bloc environment explicite) : l'app
serait restee sur LogMailer meme avec un .env renseigne. Ajout de SMTP_HOST/
PORT/USER/PASSWORD + MAIL_FROM_EMAIL/NAME au service wakdo-app, avec defauts
vides (absence = repli LogMailer, comportement inchange en local).
2026-06-23 14:09:15 +00:00
9d75fabdca chore(docker): docker-compose.yml standalone portable + .env local-first (#41)
All checks were successful
CI / secret-scan (push) Successful in 9s
CI / js-tests (push) Successful in 22s
CI / php-lint (push) Successful in 22s
CI / static-tests (push) Successful in 50s
CI / auto-merge (push) Has been skipped
2026-06-17 15:31:57 +02:00
e613adc24a chore: remplace le Makefile par un service compose wakdo-migrate (migrate + seed idempotents) (#40)
All checks were successful
CI / static-tests (push) Successful in 46s
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 20s
CI / js-tests (push) Successful in 21s
CI / auto-merge (push) Has been skipped
2026-06-17 15:07:05 +02:00
7d30f5481d feat(cron): purge de retention audit_log + throttle (mlt 13.4/13.5) (#25)
Some checks failed
CI / secret-scan (push) Has been cancelled
CI / php-lint (push) Has been cancelled
CI / static-tests (push) Has been cancelled
CI / auto-merge (push) Has been cancelled
2026-06-16 14:21:17 +02:00
656c7a2f3d fix(auth): retire le bouton mort PASSWORD_ALGO (argon2id fixe dans le code) (#29)
Some checks failed
CI / secret-scan (push) Has been cancelled
CI / php-lint (push) Has been cancelled
CI / static-tests (push) Has been cancelled
CI / auto-merge (push) Has been cancelled
2026-06-16 14:21:09 +02:00
e62a9783b1 fix(db): moindre privilege pour le user applicatif (drop GRANT ALL) (#24)
Some checks failed
CI / secret-scan (push) Successful in 13s
CI / php-lint (push) Has been cancelled
CI / static-tests (push) Has been cancelled
CI / auto-merge (push) Has been cancelled
2026-06-16 14:19:58 +02:00
ad5203d3fc feat(admin): throttle du PIN d action sensible par acteur (RG-T22) (#18)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 20s
CI / static-tests (push) Successful in 32s
CI / auto-merge (push) Has been skipped
2026-06-16 00:06:33 +02:00
7c35f8e2dc feat: PIN d action sensible P2 (PinVerifier RG-T13) (#13)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 30s
CI / auto-merge (push) Has been skipped
2026-06-15 21:00:11 +02:00
1b0b20c12d feat: authentification back-office P2 (login/logout/reset, throttle, audit) (#11)
All checks were successful
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 17s
CI / static-tests (push) Successful in 32s
CI / auto-merge (push) Has been skipped
2026-06-15 20:18:59 +02:00
Imugiii
d9890cfb5d chore(docker): smoke test fixes for stack startup and healthz
Three issues surfaced when running 'make init' on the deployment host
and were fixed in place:

- wakdo_internal network: explicit subnet 192.168.148.0/24 (RFC 1918,
  in the free 192.168.144-159 gap). The host's Docker daemon has its
  default address pools saturated by other stacks, so auto-allocation
  failed. An explicit subnet bypasses the allocator and isolates Wakdo
  from neighbour churn.

- wakdo-cron: init: true added so Docker injects tini as PID 1. Without
  it, dcron loops on 'setpgid: Operation not permitted' because PID 1
  in a container without an init system cannot change process groups
  for its children.

- healthz vhost: served as a static file from /usr/local/apache2/htdocs/
  instead of a RewriteRule [R=200] that triggered Apache's ErrorDocument
  template (and leaked 'internal error' wording into a 200 response).
  The file lives outside /var/www/html/ which is bind-mounted at runtime
  and would otherwise mask the COPY.
2026-04-30 11:36:10 +00:00
Imugiii
ac8b6a6791 feat(docker): complete stack with compose and 4 services
Deliver the full Docker stack for Bloc 5 DevOps (Cr 7.c.3 and 7.c.4):

- docker/apache/    Custom httpd:2.4-alpine with hardened main config,
                    MPM event tuning and 3 vhosts (healthz, kiosk static,
                    admin reverse FCGI to wakdo-app:9000). Kiosk vhost
                    explicitly denies .php to enforce Bloc 1 isolation.
- docker/php-fpm/   Custom php:8.3-fpm-alpine3.20 with pdo_mysql, opcache,
                    intl, exif, zip and tini for signal handling.
                    Dynamic pool 3-10 workers listening on TCP 9000.
- docker/cron/      Custom alpine:3.20 with dcron, mariadb-client, gzip.
                    Nightly mysqldump at 03h00 with 14-day rotation and
                    512-byte sanity check. Purge and stats jobs templated.
- docker-compose.yml  4 services orchestrated on 2 networks (internal
                      bridge + external reverse-proxy). 2 named volumes
                      for DB and uploads, bind-mount for backups.
                      Traefik labels for 2 routers with HTTPS redirect.

Makefile adds `make backup` (manual dump) and `make backup-ls`.
.gitignore adds /var/ for backup bind-mount path.
docs/journal/2026-04-24--infra-docker.md documents 5 decisions with
alternatives, maps 16 RNCP criteria to artefacts and prepares 6 jury Q&A.

Validated: `docker compose config --quiet` passes. Smoke test deferred
to next session (requires server .env).
2026-04-24 15:59:19 +00:00