@@ -8,12 +8,106 @@ This project adheres to [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
88
99## [ Unreleased]
1010
11- ### Planned — Next Up (Phase 2 Sprint)
12- - Phase 2 Lab 01 (Standalone ) for: Nextcloud, Mattermost, Jitsi, iRedMail, Zammad
11+ ### Planned — Next Up (Phase 2 Lab 04 Sprint)
12+ - Phase 2 Lab 04 (SSO Integration ) for: Nextcloud, Mattermost, Jitsi, iRedMail, Zammad
1313- ` it-stack-installer ` operational scripts (` clone-all-repos.ps1 ` , ` update-all-repos.ps1 ` , ` install-tools.ps1 ` )
1414
1515---
1616
17+ ## [ 1.5.0] — 2026-03-01
18+
19+ ### Added — Phase 2 Lab 03: Advanced Features (all 5 Phase 2 modules)
20+
21+ Lab progress: 40/120 → 45/120 (33.3% → 37.5%). Phase 2 Lab 03 (Advanced Features) complete for all 5 Phase 2 modules.
22+
23+ | Module | Key Advanced Features | Key Lab 03 Tests |
24+ | --------| ----------------------| ------------------|
25+ | Nextcloud (06) | cron worker container, PHP tuning (512M), Redis ` allkeys-lru ` , trusted proxies | ` backgroundjobs_mode=cron ` via occ, ` PHP_MEMORY_LIMIT=512M ` in env, memory limit 1G |
26+ | Mattermost (07) | MinIO S3 storage, ` MaxFileSize=524288000 ` (500MB), read/write timeout 300s, login retry limit | ` MM_FILESETTINGS_MAXFILESIZE ` in env + API, ` DriverName=amazons3 ` in config |
27+ | Jitsi (08) | JWT authentication (` APP_SECRET=JitsiJWT03! ` ), coturn TURN server, guest access | ` ENABLE_AUTH=1 ` , ` AUTH_TYPE=jwt ` , ` APP_ID=jitsi ` in web+prosody env, TURN :3478 |
28+ | iRedMail (09) | DKIM signing (` ENABLE_DKIM=1 ` , selector=lab), LDAP readonly bind, SMTP STARTTLS | DKIM keys in ` /opt/dkim/ ` , STARTTLS in EHLO response, resource limit 1G |
29+ | Zammad (11) | ` RAILS_MAX_THREADS=5 ` , ` WEB_CONCURRENCY=2 ` , ES indices, Redis ` allkeys-lru ` | ` RAILS_MAX_THREADS=5 ` in railsserver env, ` zammad_* ` indices in ES, resource limit 2G |
30+
31+ #### Architecture Notes (Lab 03)
32+
33+ ```
34+ Theme: Resource limits on all containers + module-specific advanced production features
35+ Nextcloud: 4-container stack: db+redis+app+cron; cron replaces ajax background jobs
36+ Mattermost: 5-container stack adds MinIO S3; MM_FILESETTINGS_DRIVERNAME=amazons3
37+ Jitsi: 5-container stack adds JWT auth layer; ENABLE_GUESTS=1 allows anonymous after auth
38+ iRedMail: 3-container stack; DKIM keys generated at /opt/dkim/; POSTFIX relays via mailhog
39+ Zammad: 7-container stack (init+railsserver+scheduler+websocket+nginx+pg+es+redis+smtp)
40+ RAILS_MAX_THREADS=5, WEB_CONCURRENCY=2 tune Ruby concurrency
41+ ```
42+
43+ #### CI Workflow Updates
44+
45+ All 5 Phase 2 CI workflows updated — ` lab-03-smoke ` job appended to each (after ` lab-02-smoke ` ), with compose-specific wait conditions and ` continue-on-error: true ` .
46+
47+ ---
48+
49+ ## [ 1.4.0] — 2026-02-28
50+
51+ ### Added — Phase 2 Lab 02: External Dependencies (all 5 Phase 2 modules)
52+
53+ Lab progress: 35/120 → 40/120 (29.2% → 33.3%). Phase 2 Lab 02 (External Dependencies) complete for all 5 Phase 2 modules.
54+
55+ | Module | Key External Deps | Key Lab 02 Tests |
56+ | --------| -------------------| ------------------|
57+ | Nextcloud (06) | postgres:16-alpine, redis:7-alpine (2 networks) | DB type = pgsql via ` occ config:system:get dbtype ` , Redis in config.php |
58+ | Mattermost (07) | postgres:16-alpine, redis:7-alpine, mailhog SMTP relay | SMTP relay: ` SMTPServer ` = ` smtp ` verified via config API |
59+ | Jitsi (08) | coturn:4.6 TURN/STUN (2 networks: jitsi-net + turn-net) | TURN TCP :3478 reachable, config.js TURN config present |
60+ | iRedMail (09) | osixia/openldap:1.5.0, mailhog SMTP relay (2 networks) | LDAP search dc=lab,dc=local, readonly bind, SMTP/IMAP/SUBM banners |
61+ | Zammad (11) | postgres:15, elasticsearch:8, redis:7 (replaces memcached), mailhog (3 networks) | REDIS_URL=redis:// in container env (not memcached), Mailhog :8025 new |
62+
63+ #### Architecture Notes (Lab 02)
64+
65+ ```
66+ Theme: Each module connects to externally-managed services on separate Docker networks
67+ simulating real LAN topology (app ↔ db on dedicated subnets)
68+ Nextcloud: nc-app-net (app+redis) + nc-db-net (app+db); REDIS_HOST_PASSWORD=Lab02Redis!
69+ Mattermost: mm-app-net + mm-data-net; MM_EMAILSETTINGS_SMTPSERVER=smtp (mailhog)
70+ Jitsi: jitsi-net (all Jitsi components) + turn-net (coturn); coturn --user=jitsi:TurnPass1!
71+ iRedMail: mail-app-net + mail-dir-net; LDAP_BIND_DN=cn=readonly,dc=lab,dc=local
72+ Zammad: zammad-app-net + zammad-data-net + zammad-mail-net; REDIS_URL replaces MEMCACHE_SERVERS
73+ ```
74+
75+ #### CI Workflow Updates
76+
77+ All 5 Phase 2 CI workflows updated — ` lab-02-smoke ` job appended to each, including real wait conditions for PG/Redis/ES/LDAP/TURN/API readiness before running lab scripts.
78+
79+ ---
80+
81+ ## [ 1.3.0] — 2026-02-28
82+
83+ ### Added — Phase 2 Lab 01: Standalone (all 5 Phase 2 modules)
84+
85+ Lab progress: 30/120 → 35/120 (25.0% → 29.2%). Phase 2 Lab 01 (Standalone) complete for all 5 Phase 2 modules.
86+
87+ | Module | Compose | Sidecar Services | Key Tests |
88+ | --------| ---------| ------------------| -----------|
89+ | Nextcloud (06) | ` nextcloud:29-apache ` :8080, SQLite auto | — | ` status.php installed:true ` , ` occ status/user:list ` , WebDAV PROPFIND, OCS Capabilities |
90+ | Mattermost (07) | ` mattermost-team-edition:9.3 ` :8065 | postgres:16-alpine | API ` /system/ping ` , create team/channel, post message |
91+ | Jitsi (08) | web+prosody+jicofo+jvb ` :stable-9753 ` | 4-container stack | HTTPS :8443, config.js, external_api.js, BOSH :5280, JVB logs |
92+ | iRedMail (09) | ` iredmail/iredmail:stable ` all-in-one | — | SMTP :9025, IMAP :9143, Submission :9587, Roundcube :9080/mail, Postfix/Dovecot/MariaDB |
93+ | Zammad (11) | ` ghcr.io/zammad/zammad:6.3.0 ` × 5 | postgres:15, ES:8, memcached | PG/ES health, web :3000, API ` /signshow ` , create admin, railsserver |
94+
95+ #### Architecture Notes (Lab 01)
96+
97+ ```
98+ Nextcloud: SQLite (no external DB) — correct for standalone lab validation
99+ Mattermost: Internal PG sidecar — no Keycloak, no FreeIPA at this stage
100+ Jitsi: 4 containers with xmpp.meet.jitsi network alias for XMPP DNS resolution
101+ iRedMail: All-in-one container (Postfix+Dovecot+MariaDB+Nginx+Roundcube)
102+ Zammad: YAML anchor x-zammad-env shared across 5 service containers; ES security disabled for lab
103+ ```
104+
105+ #### CI Workflow Updates
106+
107+ All 5 CI workflows updated — ` lab-01-smoke ` job now uses correct module-specific test script names and real health-wait conditions (no more scaffold ` sleep 30 ` or ` test-lab-01.sh ` references).
108+
109+ ---
110+
17111## [ 1.2.0] — 2026-02-28
18112
19113### Added — Phase 1 Lab 06: Production Deployment 🎉 Phase 1 Complete
0 commit comments