Commit Graph

8556 Commits

Author SHA1 Message Date
Simon L. 20d54c9663 ConfigurationManager: remove unused isx64Platform method
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-29 14:51:34 +02:00
Simon L. 117497b651 Fix snap-to-AIO migration docs (#8396) 2026-06-28 22:08:14 +02:00
Simon L. 0f2b54e7c6 Fix snap-to-AIO migration docs
The snap migration section had several issues that caused the database
conversion step to fail (as reported at
https://help.nextcloud.com/t/migration-from-snap-installation-to-docker-aio/246329):

- The conversion container overrode the entrypoint with `--entrypoint bash`,
  so the Nextcloud source was never rsynced from /usr/src/nextcloud to
  /var/www/html. occ was missing and, with the config mounted to the wrong
  path, occ reported "Nextcloud is not installed". Now the container runs
  with its normal entrypoint (no admin/DB env vars, so it stages files
  without installing) and occ is invoked via `docker exec`.
- The temporary config is now mounted to /var/www/html/config/config.php and
  made writable (chmod 666) since db:convert-type writes the new DB settings
  back into it as www-data.
- The temporary MySQL container now starts with --skip-log-bin to avoid the
  "You do not have the SUPER privilege and binary logging is enabled" import
  error.
- The SNAP_DATA mount is read-write since the conversion writes to the data
  directory.
- Updated the version placeholder example and corrected the typical snap
  datadirectory path.

Verified end-to-end with real MySQL/PostgreSQL/Nextcloud containers: the
conversion runs clean and pg_dump produces a valid database-dump.sql.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-28 22:05:46 +02:00
Simon L. b25cccde1e Revise pull request template for clarity and completeness (#8380) 2026-06-26 13:34:10 +02:00
Simon L. 7ce7e0cd25 address review
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-26 13:05:06 +02:00
Simon L. 37d1b9632b update NPMplus screenshot (#8387) 2026-06-26 11:41:44 +02:00
Simon L. c2a26934ca Update AIO version from 13.3.0 to 13.3.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
v13.3.1
2026-06-26 10:31:40 +02:00
Zoey adf1cfdf78 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Zoey <zoey@z0ey.de>
2026-06-25 21:37:57 +02:00
Zoey cc3cd9fd17 update NPMplus screenshot
Signed-off-by: Zoey <zoey@z0ey.de>
2026-06-25 21:35:20 +02:00
Simon L. d54d9c7ff2 Nextcloud dependency update (#8385) 2026-06-25 15:00:20 +02:00
Simon L. 49f4731c91 apache: re-introduce X-Forwarded-Proto https so that onlyoffice and eurooffice always work no matter the actual reverse proxy config in front of it (#8379) 2026-06-25 14:59:11 +02:00
szaimen 5be7645a56 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-25 12:58:48 +00:00
Simon L. d6ea25f6ed Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-25 14:58:40 +02:00
Simon L. 3d13a55e10 PHP dependency updates (#8375) 2026-06-25 14:58:06 +02:00
Simon L. bebb5d4847 eurooffice should only get enabled on new instances (#8378) 2026-06-25 14:57:44 +02:00
Simon L. 1feee6ecd7 Revise pull request template for clarity and completeness
Updated security issue reporting instructions and added new checkboxes for PR summary and AI content.

Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-24 17:55:25 +02:00
Simon L. 78faad6716 apache: re-introduce X-Forwarded-Proto https so that onlyoffice and eurooffice always work no matter the actual reverse proxy config in front of it
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-24 15:12:51 +02:00
Simon L. 6fc913bc41 eurooffice should only get enabled on new instances
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-24 14:58:40 +02:00
szaimen 0bfcb3696c php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-24 12:41:14 +00:00
Simon L. 5f317a2b17 build(deps): bump actions/checkout from 6.0.3 to 7.0.0 in /.github/workflows (#8374) 2026-06-24 14:23:54 +02:00
dependabot[bot] 0544068385 build(deps): bump actions/checkout in /.github/workflows
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 12:05:45 +00:00
Simon L. d65a00d61e change scrutiny port to port 8001 (#8366) v13.3.0 2026-06-24 10:49:15 +02:00
Simon L. c3c22d3ae9 change scrutiny port to port 8001
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-23 16:48:35 +02:00
Simon L. fc7ddf26e8 increase to v13.3.0
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-23 16:07:41 +02:00
Simon L. cd61f66467 add desec (#7995)
## Summary
- Integrates Desec into the AIO interface which simplifies the domain
registration and domain setup.
- You can either create a new account directly or use an existing
account.
- You have a button that you can open where the process will be done.
After the process is done, the whole page reloads and you can continue
with the setup.
- Caddy and dnsmasq community containers will be activated during the
process which will take over the cert generation and enable split-brain
dns.
- Community containers will work automatically for example Vaultwarden
as the subdomains of the desec domain point automatically via a wildcard
dns entry towards the main desec domain.
- Playwright tests are added to ensure that the system works as expected
in the future
- the desec api is mocked via a small node js based file.
- the qa and other docs were updated to mention desec
2026-06-23 15:05:42 +02:00
Simon L. e0c208da19 Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-23 14:53:54 +02:00
Simon L. 1fdda55421 Apply suggestions from code review
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-23 14:52:05 +02:00
Pablo Zmdl 84f76d61dc nextcloud-entrypoint: Introduce a new marker for cert bundle setup (#8364)
* Introduce a new marker for cert bundle setup

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>

* Update Containers/nextcloud/entrypoint.sh

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>

* Update Containers/nextcloud/entrypoint.sh

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>

---------

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
Signed-off-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-06-23 12:15:44 +02:00
Simon L. f62a81b651 PHP dependency updates (#8365) 2026-06-23 08:57:09 +02:00
Simon L. 7e50969d02 feat(desec): keep the typed slug across the registration flow
A slug typed into the deSEC form was lost when the form re-rendered after a
201 redirect (e.g. on the awaiting-verification step), forcing the user to
re-enter it. Persist the requested slug in the AIO config when register()
runs and pre-fill the slug input from it on every step, then clear it once a
domain is set. Stored in configuration.json rather than a URL parameter so it
survives the multi-step flow without leaking into the iframe address.

Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:04:36 +02:00
Simon L. 0d2ce61af3 fix(desec): only reveal the deSEC password for AIO-created accounts
The containers page showed "Reveal deSEC password" for every deSEC domain,
but when the user logs in with their own existing account AIO stores an
empty password, so the reveal exposed nothing useful. Gate the reveal on a
stored password: AIO-created accounts show the generated credentials as
before; existing accounts now just say the domain is managed via that
account and to log in at desec.io with your own password.

Also clear the stored generated password in the awaiting-verification path
when the user logs in with their own password (the email already had an
account), so a non-empty stored password reliably means "AIO generated this
account" — and report the account as not-new so no wildcard CNAME is created
on a domain the user manages themselves.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:36 +02:00
Simon L. ebad4fd06f fix spelling
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:35 +02:00
Simon L. 9cfd5b41f6 fix(desec): reuse an existing slug the user already owns
Logging in with an existing deSEC account and entering a slug you already
own failed with "Domain limit exceeded": registerDomain() always tried to
POST /domains/, which deSEC rejects (403 when the account is at its quota,
400/409 when the name is taken) even though the domain belongs to you.

Now, for a user-specified slug, a 400/403/409 triggers an ownership check
(GET /domains/{name}/); if the account already owns the domain it is reused
and registration completes. Otherwise a clear message is shown (over-limit
vs. taken by someone else). Random-slug registration is unchanged.

Update the deSEC mock to mirror the real status codes (per-account ownership,
domain limit -> 403, taken name -> 400, GET /domains/{name}/) and add a spec
that exercises the over-limit ownership-recovery path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:35 +02:00
Simon L. b5e35c90d8 move the desec template another time
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:35 +02:00
Simon L. ac112f3b42 docs(dnsmasq): note auto IP detection is Linux-only, not Docker Desktop
dnsmasq runs in host network mode and auto-detects the host's LAN IP. On
Docker Desktop (Windows/macOS) containers run inside a Linux VM isolated
from the real host LAN, so detection yields the wrong IP and local DNS
resolution does not work. Call this out in the dnsmasq readme and the
in-app deSEC domain notice.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:35 +02:00
Simon L. ee1bf5f88a ci(desec): drop obsolete SKIP_DOMAIN_VALIDATION from the deSEC test step
The deSEC registration entry point now renders regardless of
SKIP_DOMAIN_VALIDATION (it was moved out of the skip-validation guard), and
the deSEC flow already sets the domain with validation skipped internally.
Remove the now-unnecessary SKIP_DOMAIN_VALIDATION=false override from the
deSEC Playwright steps in both workflows and update the stale spec comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:34 +02:00
Simon L. ef7e320c61 fix(desec): keep modal markup and script with the moved entry block
The deSEC entry <details> was moved up above the domain submit form, but the
#desec-modal container and desec-modal.js were left behind inside the
skip_domain_validation block. Move them up to sit directly after the entry
block so the open button, modal, and wiring script are always rendered
together (and present even when domain validation is skipped). This restores
the modal flow the Playwright tests drive via #desec-frame.

Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:34 +02:00
Simon L. 64d49c1b59 move desec futher up in the containers template
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:34 +02:00
Simon L. b4e4ff8fd7 fix a detail
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:34 +02:00
Simon L. d2fbb711d2 feat(desec): surface domain notice at top, drop in-flow credentials
Hide the "Your deSEC login credentials" block during the in-flight
register/verify steps — the credentials are still shown in the dedicated
"deSEC account credentials" section once the domain is registered.

Extract the deSEC domain info/dnsmasq-caution notice into a reusable include
and also show it at the top of the initial-install flow, directly above the
"download and start containers" explanation, while keeping it in the
Community Containers section where it already appeared.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:34 +02:00
Simon L. 13c762c720 fix(desec): style the email field and stack the modal form inputs
The email input was unstyled because input[type="email"] was missing from
the text/password input rules, and the deSEC form's inline-block inputs
flowed side by side. Add the email type to the input styling rules and lay
the deSEC modal form out as a vertical stack with full-width inputs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 16:04:33 +02:00
szaimen 8ace9ef096 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-22 13:49:23 +00:00
Simon L. 454905c852 feat(desec): run registration flow in a modal iframe
Move the deSEC "register a free domain" flow out of the inline containers
page form and into a modal backed by a dedicated /desec view loaded in an
iframe. The multi-step register -> verify -> domain process now re-renders
inside the modal, so the user can adjust the details and complete email
verification without reloading the whole page each step. Only once the
domain is fully registered does the view reload the parent containers page.

- add /desec route + desec.twig standalone view
- add desec-modal.js (open/close, backdrop + Escape) and desec-done.js
  (parent reload on completion)
- redirect register POST to the /desec view so steps stay in the modal
- drop the redundant <details> wrapper in desec-register.twig, add heading
- style the modal and let <button class="button"> pick up button styles
- drive the modal iframe in the Playwright specs and update the QA checklist

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-22 13:24:50 +02:00
Simon L. a2b991feac build(deps): bump docker from 29.5.3-cli to 29.6.0-cli in /Containers/mastercontainer (#8363) 2026-06-22 09:19:55 +02:00
dependabot[bot] 97dfbd1b48 build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.5.3-cli to 29.6.0-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 29.6.0-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 04:09:05 +00:00
Simon L. 302db41862 build(deps): bump guzzlehttp/guzzle from 7.12.0 to 7.12.1 in /php (#8361) 2026-06-19 14:15:51 +02:00
dependabot[bot] 5005242b9a build(deps): bump guzzlehttp/guzzle from 7.12.0 to 7.12.1 in /php
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 7.12.0 to 7.12.1.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.12/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.12.0...7.12.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-version: 7.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-19 12:02:45 +00:00
Simon L. 474197cae6 PHP dependency updates (#8360) 2026-06-18 15:56:17 +02:00
szaimen 37fb09442c php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-18 13:05:20 +00:00
Simon L. 164b150817 docs(desec): document the free deSEC domain option
Mention and recommend the built-in deSEC free domain registration across the
readme, reverse-proxy and local-instance guides, and add a deSEC step to the
new-instance QA checklist.

Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-18 13:19:16 +02:00