Files
nextcloud/php
Simon L. f7987b26ac feat(desec): add deSEC account + domain registration backend
Add the server-side deSEC (dedyn.io) free dynamic-DNS flow so users without a
domain can obtain one from the AIO interface.

- DesecManager drives the full flow against the deSEC API, matching its real
  semantics: account creation returns HTTP 202 + email verification (no token),
  a token is obtained via /auth/login/ only after the email is verified, domain
  registration handles 201/409, and a wildcard CNAME rrset is created for new
  accounts. Existing accounts can be used by supplying a password.
- The "awaiting verification" step is derived from the stored credentials (email
  + generated password but no token and no domain yet), not a separate flag.
  register() returns false for that state so the controller can re-render the
  awaiting-verification UI instead of surfacing it as an error.
- DesecController exposes POST /api/desec/register; DependencyInjection wires the
  manager; account credentials (email, generated password, token) are stored in
  the AIO configuration and DESEC_TOKEN is exposed to the caddy container.
- The dynamic-DNS record is refreshed with the current public IP on container
  start (DockerController) and via the cron path (Cron/UpdateDesecIp, cron.sh).
- Fix an undefined-variable bug in the desecToken/desecPassword config setters
  that prevented credentials from being persisted.

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
..
2021-11-30 11:20:42 +01:00
2021-11-30 13:59:41 +01:00
2026-03-12 15:55:56 +01:00
2026-03-18 17:56:37 +01:00
2026-03-20 04:40:46 +00:00
2026-05-20 10:55:39 +00:00

PHP Docker Controller

This is the code for the PHP Docker controller.

How to run

Running this locally requires :

1. Install the development environment

This project uses Composer as dependency management software. It is very similar to NPM. The command to install all dependencies is:

composer install

2. Access to docker socket

The root user has all privileges including access to the Docker socket. But it is not recommended to launch the local instance with full privileges, consider the docker group for docker access without being root. See https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

3. Run a nextcloud-aio-mastercontainer container

This application manages containers, including its own container. So you need to run a nextcloud-aio-mastercontainer container for the application to work properly.

Here is a command to quickly launch a container :

docker run \
--rm \
--name nextcloud-aio-mastercontainer \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/nextcloud-releases/all-in-one:latest

4. Start your server

With this command you will launch the server:

# Make sure to launch this command with a user having access to the docker socket.
SKIP_DOMAIN_VALIDATION=true composer run dev

You can then access the web interface at http://localhost:8080.

Note: You can restart the server by preceding the command with other environment variables.

Composer routine

Command Description
composer run dev Starts the development server
composer run psalm Run Psalm static analysis
composer run psalm:strict Run Psalm static analysis strict
composer run psalm:update-baseline Run Psalm with --update-baseline arg
composer run lint Run PHP Syntax check
composer run lint:twig Run Twig Syntax check
composer run php-deprecation-detector Run PHP Deprecation Detector