Commit graph

9 commits

Author SHA1 Message Date
09ac9e5a3f chore(devops): hooks Git versionnes + scripts deploy et restore (Cr 4.f.2 / 7.b.2) (#75)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 22s
CI / static-tests (push) Successful in 45s
CI / js-tests (push) Successful in 23s
2026-06-22 08:44:45 +02:00
6c6a34db9f fix(borne): passerelle /api same-origin sur le vhost kiosk (#62)
All checks were successful
CI / secret-scan (push) Successful in 10s
CI / php-lint (push) Successful in 25s
CI / static-tests (push) Successful in 52s
CI / js-tests (push) Successful in 28s
2026-06-19 16:15:41 +02: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
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
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
32ff6a63ba P1 conception: security-by-design layer (Merise 21 entities, Forgejo CI/CD, hardening) (#3)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 4s
2026-06-15 12:16:11 +02:00
Imugiii
b8f7d35064 feat(stubs): unblock 403 with kiosk and admin index pages, plus FastCGI fixes
Three changes bundled because the stubs surfaced two pre-existing infra bugs
that had never been hit (the smoke test only exercised PHP via 'docker exec',
not via the full Apache->PHP-FPM FastCGI path).

- src/public/borne/index.html : minimal HTML stub for the kiosk vhost
  (200 OK with the imported logo)
- src/public/admin/index.php : minimal PHP stub that proves the full
  FastCGI chain works end-to-end (renders PHP_VERSION + current timestamp)
- docker/apache/vhost.conf : add 'DirectoryIndex index.php index.html' on
  the admin vhost. Without it, hitting / returned 403 because the default
  Apache DirectoryIndex is index.html only, and the existing RewriteRule
  did not apply to the directory request (\!-d cond was false).
- docker/php-fpm/www.conf : comment out 'listen.allowed_clients = any'.
  PHP-FPM 8.3 rejects 'any' with 'Wrong IP address' and ends up dropping
  every connection from Apache. With the directive absent, all connections
  are accepted, which is acceptable in our isolated Docker network.
2026-04-30 13:07:12 +00: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