Commit graph

99 commits

Author SHA1 Message Date
Simon Bärlocher
5e53ff3e28
docs(bookstack): add meta/argument_specs.yml
47 typed options covering the full defaults file plus the OIDC and
backup-timer subsystems. The three secrets the role asserts on
(db_root_password, db_password, admin_password) are marked
required: true so ansible refuses the play with a clear error before
the validate task even runs.

Loads cleanly through ansible-core's ArgumentSpecValidator with 100%
defaults/spec coverage. Matches the spec convention used by traefik,
authentik, drawio, garage, nextcloud, opnform, coturn, talk and send.
2026-05-26 15:13:30 +02:00
Simon Bärlocher
1dbeece5f0
fix(bookstack): drop hardcoded secrets from defaults
bookstack_db_root_password, bookstack_db_password and
bookstack_admin_password shipped as real strings in defaults, despite
the comment two lines above promising 'empty defaults force assert to
fail until set'. The Validate task in tasks/main.yml asserts each is
non-empty, so set them to '' and let the assert do its job.

Mirror the docstring comment to show how to generate each one with
openssl rand.
2026-05-26 15:13:21 +02:00
9d539d0da4 feat(bookstack): add role for self-hosted BookStack deployment
Deploy BookStack with linuxserver.io images behind Traefik, including
Entra ID OIDC SSO support and a daily backup timer.

Stack:
- lscr.io/linuxserver/bookstack:version-v26.03.3
- lscr.io/linuxserver/mariadb:11.4.9
- Traefik labels for websecure entrypoint on internal network
- Healthcheck via mariadb-admin ping (LSIO image lacks healthcheck.sh)

Features:
- Persistent APP_KEY generated on first run, stored in volume dir
- Optional OIDC SSO via Microsoft Entra ID (configurable per-instance)
- Idempotent admin user creation with DB-based existence check
- Daily systemd timer backup (DB dump + uploads tar + APP_KEY)
  with configurable retention

Implementation notes:
- DB queries use --protocol=tcp with the app user because root@localhost
  uses unix_socket auth in the LSIO MariaDB image (no password) and
  root@% does not exist
- docker_container_exec uses argv: (list) instead of command: (string)
  to avoid argument-splitting issues
- Migration-wait task ensures users table exists before admin check,
  since /login returns 200 before Laravel migrations complete
- no_log: true on all tasks that reference DB or admin passwords
- artisan absolute path (/app/www/artisan) because LSIO image WORKDIR
  is not the app directory

Adds bookstack route to DMZ Traefik service registry.
2026-05-20 17:39:16 +02:00
78095cca1d Merge remote-tracking branch 'origin/main' 2026-05-20 12:41:52 +02:00
61193e26f4
refactor(homarr): extract layout packing to filter plugin 2026-05-19 11:19:29 +02:00
27ed51ee95 chore: ignore python bytecode cache 2026-05-18 18:02:59 +02:00
e0cb1ac68c Merge branch 'feature/homarr' 2026-05-18 17:25:15 +02:00
bbbd1c8940 fix: (Homarr) removed small mistakenly added entry in defaults 2026-05-18 10:47:06 +00:00
1c7ecabcaf Merge remote-tracking branch 'origin/feature/homarr' into feature/homarr 2026-05-18 09:45:28 +02:00
9fc34dfb29
Merge branch 'feature/homarr' 2026-05-13 15:40:52 +02:00
2aa1df8614
chore(homarr): added readme and removed test env contents 2026-05-13 15:37:13 +02:00
308bf50122
chore(homarr): remove digitalboard-specific defaults 2026-05-13 15:37:12 +02:00
c1c1a84591
feat(homarr): make apps list configurable with auto-layout 2026-05-13 15:37:12 +02:00
d4eaa5f12c
refactor(homarr): extract seed SQL into template 2026-05-13 15:37:12 +02:00
3c35b8782e
fix: reomved remnants of removed env / fixed encription key validatiion 2026-05-13 15:37:11 +02:00
f4084ba078
refactor(homarr): drop service_name var and rename db_dir to db
- homarr_service_name removed, replaced with fixed "homarr" string
- homarr_db_dir renamed to homarr_db (variable points to a file, not a dir)
2026-05-13 15:37:11 +02:00
123769a4f4
feat(homarr): use handler for restart, validate encryption key 2026-05-13 15:37:11 +02:00
bdb1b03a18
refactor(homarr): align vars with homarr_ prefix, EN-only strings 2026-05-13 15:37:11 +02:00
c060d6136a
fix(homarr): salt column, bcrypt newline, transaction safety 2026-05-13 15:37:10 +02:00
23ea8dafc9 Chore: add admin user and seed staging
added creation of the admin user, the basic homeboard and all basic setup tasks.
Todo: Cleanup
2026-05-13 13:30:34 +00:00
5608daadaa chore: base config and deployment for role homarr 2026-05-13 13:30:34 +00:00
1fcb433aae chore: add new boilerplate role for homarr 2026-05-13 13:30:34 +00:00
967ffb0c2d
fix: leading space in extra networks
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 14:34:15 +02:00
c27b4d9488
feat: add blueprints for authentik ldap outpost and render values directly instead of using env vars
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 14:33:52 +02:00
d25f1c5304
chore: add authentik outpost deployment
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 11:27:07 +02:00
dbcccc090b
feat: ability to set extra networks for opencloud
needed for ldap outpost

Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 11:19:10 +02:00
e2fae25592
feat: make nextcloud_notify_push_image configurable
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 11:18:28 +02:00
468ed34550
feat: ability to set extra networks for nextcloud
needed for ldap outpost

Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 11:17:42 +02:00
422b196831
Chore: add admin user and seed staging
added creation of the admin user, the basic homeboard and all basic setup tasks.
Todo: Cleanup
2026-04-07 16:58:28 +02:00
77484f1944
chore: add new empty role skeleton for authentik_outpost_ldap
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-02 11:51:58 +02:00
aa8baad630
feat: opencloud group provisioning via oidc
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 16:43:02 +01:00
6f4cc2bdb3
feat: nextcloud ability to get groups from ldap backend
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 15:37:33 +01:00
d517f77b6c
feat: add file_lock and notify_push configuration to nextcloud role
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 15:22:09 +01:00
910986b808
feat: add drawio instance for nextcloud and opencloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 14:37:02 +01:00
f3f2b6d5b7
feat: add empty role skeleton for drawio role
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 13:44:53 +01:00
db21030a64
feat: add ldap backend to opencloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 11:43:11 +01:00
12864a13b0
feat: add 389ds ldap backend to keycloak
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 10:58:40 +01:00
59d0174905
feat: add ldap provisioning to nextcloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-13 10:46:49 +01:00
700cafed0e
feat: add basic ds389 docker setup and configuration
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-06 17:54:07 +01:00
dae32362ed
chore: add empty boilerplate role for 389ds
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-06 17:47:50 +01:00
244e378d9d
fix: use correct file ownership for nextcloud volumes
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-06 17:18:01 +01:00
6be4a50f8f
chore: ensure we can use the same collabora instance for multiple cloud instances
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-06 17:00:33 +01:00
d3d7bb9ba5
chore: add central collabora service
instead of providing one for owncloud and nextcloud separately

Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-05 17:09:06 +01:00
064b939d06
chore: add empty role boilerplate for collabora
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-05 16:34:50 +01:00
fe85cc0f86
feat: add s3 storage provisioning for opencloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-05 16:24:12 +01:00
2dc9097707
feat: add oidc provisioning for opencloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-03-05 15:36:12 +01:00
59cd27a031
feat: add basic opencloud deployment
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-02-27 14:59:45 +01:00
6fad15e7ed
chore: add empty boilerplate role for opencloud
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-02-27 13:44:43 +01:00
b5a6573beb
feat: add nextcloud oidc provisioning 2026-02-27 11:23:07 +01:00
3fcaebe1a8
feat: add keycloak provisioning tasks 2026-02-27 11:22:08 +01:00