From 4e279b9f96fa222c9d12d8f101780f31da130e6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Tue, 6 Jan 2026 19:48:50 +0000 Subject: [PATCH] add doc --- Makefile.common | 169 ++++++++++++++++++++++-------- generate-butane-spec.sh | 3 + nextcloud-aio/examples/config.env | 101 ------------------ 3 files changed, 130 insertions(+), 143 deletions(-) delete mode 100644 nextcloud-aio/examples/config.env diff --git a/Makefile.common b/Makefile.common index 340b260..a5f010d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,9 +1,3 @@ -.PHONY: all install install-config install-examples uninstall pre-requisites clean dryrun -.PHONY: tail-logs butane help fcos-vm clean-vm console units units-pre -.PHONY: clean-pre clean-post install-pre install-post uninstall-pre uninstall-post -.PHONY: install-files install-files-pre install-files-post install-actions -.PHONY: install-actions-pre install-actions-post - all: help help: @echo "Available targets:" @@ -18,40 +12,68 @@ help: @echo " clean-vm - Clean up the Fedora CoreOS VM and its resources" @echo " console - Connect to the Fedora CoreOS VM console" +# Where to install the quadlets and systemd units. If not set, the host system is used. TARGET_CHROOT ?= + +# Name of the current project, derived from the current working directory. +# This is used to create subdirectories for configuration and state files. PROJECT_NAME := $(shell basename "$${PWD}") + +# Quadlets files and their corresponding systemd unit names QUADLETS_FILES = $(wildcard *.container *.volume *.network *.pod *.build) -SYSTEMD_FILES = $(wildcard *.service *.target *.timer *.mount) -SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer *.mount) -SYSTEMD_TIMER_NAMES := $(wildcard *.timer) -SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) QUADLET_UNIT_NAMES := $(patsubst %.container, %.service, $(wildcard *.container)) \ $(patsubst %.volume, %-volume.service, $(wildcard *.volume)) \ $(patsubst %.network, %-network.service, $(wildcard *.network)) \ $(patsubst %.pod, %-pod.service, $(wildcard *.pod)) \ $(patsubst %.build, %-build.service, $(wildcard *.build)) + +# Wellknown systemd unit file types +SYSTEMD_FILES = $(wildcard *.service *.target *.timer *.mount) +SYSTEMD_UNIT_NAMES := $(wildcard *.service *.target *.timer *.mount) +SYSTEMD_TIMER_NAMES := $(wildcard *.timer) + +# The main systemd units will be enabled and started after installation. +SYSTEMD_MAIN_UNIT_NAMES := $(wildcard *.target) + +# Configuration files CONFIG_FILES = $(filter-out %/examples, $(wildcard config/*)) TMPFILESD_FILES = $(filter-out %/examples, $(wildcard tmpfiles.d/*)) SYSCTLD_FILES = $(filter-out %/examples, $(wildcard sysctl.d/*)) -EXAMPLES_CONFIG_FILES = $(wildcard config/examples/*) -EXAMPLES_TMPFILESD_FILES = $(wildcard tmpfiles.d/examples/*) -EXAMPLES_SYSCTLD_FILES = $(wildcard sysctl.d/examples/*) TARGET_CONFIG_FILES = $(patsubst config/%, $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME)/%, $(CONFIG_FILES)) TARGET_TMPFILESD_FILES = $(patsubst tmpfiles.d/%, $(TARGET_CHROOT)/etc/tmpfiles.d/%, $(TMPFILESD_FILES)) TARGET_SYSCTLD_FILES = $(patsubst sysctl.d/%, $(TARGET_CHROOT)/etc/sysctl.d/%, $(SYSCTLD_FILES)) + +# Example configuration files +EXAMPLES_CONFIG_FILES = $(wildcard config/examples/*) +EXAMPLES_TMPFILESD_FILES = $(wildcard tmpfiles.d/examples/*) +EXAMPLES_SYSCTLD_FILES = $(wildcard sysctl.d/examples/*) TARGET_EXAMPLES_CONFIG_FILES = $(patsubst config/examples/%, $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME)/%, $(EXAMPLES_CONFIG_FILES)) TARGET_EXAMPLES_TMPFILESD_FILES = $(patsubst tmpfiles.d/examples/%, $(TARGET_CHROOT)/etc/tmpfiles.d/%, $(EXAMPLES_TMPFILESD_FILES)) TARGET_EXAMPLES_SYSCTLD_FILES = $(patsubst sysctl.d/examples/%, $(TARGET_CHROOT)/etc/sysctl.d/%, $(EXAMPLES_SYSCTLD_FILES)) -TARGET_EXAMPLE_FILES = $(TARGET_EXAMPLES_CONFIG_FILES) $(TARGET_EXAMPLES_TMPFILESD_FILES) $(TARGET_EXAMPLES_SYSCTLD_FILES) + +# All configuration files to be installed TARGET_FILES = $(addprefix $(TARGET_CHROOT)/etc/containers/systemd/, $(QUADLETS_FILES)) \ $(addprefix $(TARGET_CHROOT)/etc/systemd/system/, $(SYSTEMD_FILES)) \ $(TARGET_CONFIG_FILES) $(TARGET_TMPFILESD_FILES) $(TARGET_SYSCTLD_FILES) + +# All example configuration files to be installed +TARGET_EXAMPLE_FILES = $(TARGET_EXAMPLES_CONFIG_FILES) $(TARGET_EXAMPLES_TMPFILESD_FILES) $(TARGET_EXAMPLES_SYSCTLD_FILES) + +# Dependencies on other projects +# List here the names of other projects (directories at the top-level) that this project depends on. DEPENDENCIES ?= + +# Set this variable to "yes" to skip the confirmation prompt when running "make clean". I_KNOW_WHAT_I_AM_DOING ?= + +# List of all ignition files corresponding to the dependencies DEPENDENCIES_IGNITION_FILES = $(shell for dep in $(DEPENDENCIES); do echo $(TOP_LEVEL_DIR)/$$dep/$$dep.ign; done) + +# User and group IDs to own the project files and directories. PROJECT_UID ?= 0 PROJECT_GID ?= 0 +# Ensure that the Makefile is not run from the top-level directory and that it is run as root. pre-requisites: @if [ -z "$(TOP_LEVEL_DIR)" ]; then \ echo "Do not run this Makefile from the top-level directory!" >&2; \ @@ -62,30 +84,27 @@ pre-requisites: exit 1; \ fi +# Perform a dry run of the podman systemd generator to validate the quadlet and systemd files. dryrun: QUADLET_UNIT_DIRS="$$PWD" /usr/lib/systemd/system-generators/podman-system-generator -dryrun > /dev/null -$(TARGET_CHROOT)/etc/containers/systemd: - install -D -d -m 0755 -o root -g root $@ - -$(TARGET_CHROOT)/etc/systemd/system: +# Create the base directories needed for installation. +$(TARGET_CHROOT)/etc/containers/systemd $(TARGET_CHROOT)/etc/systemd/system $(TARGET_CHROOT)/etc/tmpfiles.d $(TARGET_CHROOT)/etc/sysctl.d: install -D -d -m 0755 -o root -g root $@ +# Create the directory to store quadlet configuration files. $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME): install -D -d -m 0755 -o $(PROJECT_UID) -g $(PROJECT_GID) $@ -$(TARGET_CHROOT)/etc/tmpfiles.d: - install -D -d -m 0755 -o root -g root $@ - -$(TARGET_CHROOT)/etc/sysctl.d: - install -D -d -m 0755 -o root -g root $@ - +# Copy quadlet files $(TARGET_CHROOT)/etc/containers/systemd/%: % $(TARGET_CHROOT)/etc/containers/systemd install -m 0644 -o root -g root $< $@ +# Copy systemd unit files $(TARGET_CHROOT)/etc/systemd/system/%: % $(TARGET_CHROOT)/etc/systemd/system install -m 0644 -o root -g root $< $@ +# Copy configuration files, handling executable and non-executable files differently. $(TARGET_CONFIG_FILES): $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME)/%: config/% $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME) $(TARGET_EXAMPLES_CONFIG_FILES): $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME)/%: config/examples/% $(TARGET_CHROOT)/etc/quadlets/$(PROJECT_NAME) $(filter-out %.env, $(TARGET_CONFIG_FILES) $(TARGET_EXAMPLES_CONFIG_FILES)): @@ -96,39 +115,49 @@ $(filter-out %.env, $(TARGET_CONFIG_FILES) $(TARGET_EXAMPLES_CONFIG_FILES)): run install -D -m 0644 -o $(PROJECT_UID) -g $(PROJECT_GID) $< $@; \ fi +# Handle .env files separately to set more restrictive permissions $(filter %.env, $(TARGET_CONFIG_FILES) $(TARGET_EXAMPLES_CONFIG_FILES)): install -m 0600 -o root -g root -D $< $@ +# Copy tmpfiles.d files $(TARGET_TMPFILESD_FILES): $(TARGET_CHROOT)/etc/tmpfiles.d/%: tmpfiles.d/% $(TARGET_CHROOT)/etc/tmpfiles.d $(TARGET_EXAMPLES_TMPFILESD_FILES): $(TARGET_CHROOT)/etc/tmpfiles.d/%: tmpfiles.d/examples/% $(TARGET_CHROOT)/etc/tmpfiles.d $(TARGET_TMPFILESD_FILES) $(TARGET_EXAMPLES_TMPFILESD_FILES): install -D -m 0644 -o root -g root $< $@ +# Copy sysctl.d files $(TARGET_SYSCTLD_FILES): $(TARGET_CHROOT)/etc/sysctl.d/%: sysctl.d/% $(TARGET_CHROOT)/etc/sysctl.d $(TARGET_EXAMPLES_SYSCTLD_FILES): $(TARGET_CHROOT)/etc/sysctl.d/%: sysctl.d/examples/% $(TARGET_CHROOT)/etc/sysctl.d $(TARGET_SYSCTLD_FILES) $(TARGET_EXAMPLES_SYSCTLD_FILES): install -D -m 0644 -o root -g root $< $@ +# Create the directory to store quadlet state and data. $(TARGET_CHROOT)/var/lib/quadlets/$(PROJECT_NAME): install -d -m 0755 -o $(PROJECT_UID) -g $(PROJECT_GID) $@ +# Copy all configuration files provided by this project. install-config: $(TARGET_FILES) $(TARGET_CHROOT)/var/lib/quadlets/$(PROJECT_NAME) + +# Copy all example configuration files provided by this project. install-examples: $(TARGET_EXAMPLE_FILES) $(TARGET_CHROOT)/var/lib/quadlets/$(PROJECT_NAME) +# Copy all quadlets and systemd files provided by this project. +install-files: install-files-pre install-config install-examples + $(MAKE) install-files-post + +# Custom commands to be run before copying quadlets and systemd files. +# This target can be extended by Makefiles sourcing this one. install-files-pre:: @run() { echo $$*; "$$@"; }; \ for dep in $(DEPENDENCIES); do \ run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep install-files; \ done -install-files: install-files-pre install-config install-examples - $(MAKE) install-files-post + +# Custom commands to be run after copying quadlets and systemd files. +# This target can be extended by Makefiles sourcing this one. install-files-post:: -install-actions-pre:: - @run() { echo $$*; "$$@"; }; \ - for dep in $(DEPENDENCIES); do \ - run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep install-actions; \ - done +# Perform post-installation actions such as enabling and starting units. install-actions: install-actions-pre systemctl daemon-reload systemd-analyze --generators=true verify $(QUADLET_UNIT_NAMES) $(SYSTEMD_UNIT_NAMES) @@ -143,20 +172,33 @@ install-actions: install-actions-pre systemctl start $(SYSTEMD_MAIN_UNIT_NAMES) $(MAKE) install-actions-post -install-pre:: -install-post:: +# Custom commands to be run before performing post-installation actions. +# This target can be extended by Makefiles sourcing this one. +install-actions-pre:: + @run() { echo $$*; "$$@"; }; \ + for dep in $(DEPENDENCIES); do \ + run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep install-actions; \ + done + +# Custom commands to be run after performing post-installation actions. +# This target can be extended by Makefiles sourcing this one. +install-actions-post:: + +# Install all quadlets and systemd units provided by this project. install: pre-requisites dryrun install-pre $(MAKE) install-files $(MAKE) install-actions $(MAKE) install-post -uninstall-pre:: -uninstall-post:: - @run() { echo $$*; "$$@"; }; \ - for dep in $(DEPENDENCIES); do \ - run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep uninstall; \ - done +# Custom commands to be run before installing quadlets and systemd units. +# This target can be extended by Makefiles sourcing this one. +install-pre:: +# Custom commands to be run after installing quadlets and systemd units. +# This target can be extended by Makefiles sourcing this one. +install-post:: + +# Uninstall all quadlets and systemd units installed by this project. uninstall: pre-requisites uninstall-pre systemctl disable $(SYSTEMD_MAIN_UNIT_NAMES) $(SYSTEMD_TIMER_NAMES) || true systemctl stop $(SYSTEMD_UNIT_NAMES) $(QUADLET_UNIT_NAMES) || true @@ -168,6 +210,19 @@ uninstall: pre-requisites uninstall-pre systemctl daemon-reload $(MAKE) uninstall-post +# Custom commands to be run before uninstalling quadlets and systemd units. +# This target can be extended by Makefiles sourcing this one. +uninstall-pre:: + +# Custom commands to be run after uninstalling quadlets and systemd units. +# This target can be extended by Makefiles sourcing this one. +uninstall-post:: + @run() { echo $$*; "$$@"; }; \ + for dep in $(DEPENDENCIES); do \ + run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep uninstall; \ + done + +# Tail the logs of all units managed by this project. tail-logs: pre-requisites @run() { echo $$*; "$$@"; }; \ declare -a journalctl_args=( -f ); \ @@ -176,22 +231,27 @@ tail-logs: pre-requisites done; \ run journalctl "$${journalctl_args[@]}" +# Generate the current project's Butane spec. $(PROJECT_NAME).bu: install-config @if [ -z "$(TARGET_CHROOT)" ]; then \ echo "TARGET_CHROOT is not set!"; exit 1; \ fi $(TOP_LEVEL_DIR)/generate-butane-spec.sh $(TARGET_CHROOT) $(TOP_LEVEL_DIR)/butane.blocklist $(SYSTEMD_MAIN_UNIT_NAMES) $(SYSTEMD_TIMER_NAMES) > $(PROJECT_NAME).bu +# Generate the current project's Butane spec for the example configuration files. $(PROJECT_NAME)-examples.bu: install-examples @if [ -z "$(TARGET_CHROOT)" ]; then \ echo "TARGET_CHROOT is not set!"; exit 1; \ fi $(TOP_LEVEL_DIR)/generate-butane-spec.sh $(TARGET_CHROOT) butane.blocklist > $(PROJECT_NAME)-examples.bu +# Generate the current project's Ignition files from the Butane specs. $(PROJECT_NAME).ign: butane butane --strict -o $(PROJECT_NAME).ign $(PROJECT_NAME).bu butane --strict -o $(PROJECT_NAME)-examples.ign $(PROJECT_NAME)-examples.bu +# Build the Butane specifications suitable for Fedora CoreOS, including those of the dependencies of this project. +# In order to avoid duplications in the ignition files, a blocklist is created containing file paths as they are added to the chroot. butane: @run() { echo $$*; "$$@"; }; \ init_butane_blocklist() { \ @@ -213,14 +273,17 @@ butane: run rm -rf "$$TARGET_CHROOT"; \ fi +# Generate the local Butane spec (the one containing local customizations). $(TOP_LEVEL_DIR)/local.ign: $(TOP_LEVEL_DIR)/local.bu butane --strict -o $@ $< -# Because we don't know how to build this file, it is safer to declare it as phony and let the Makefile of the dependency handle it. -.PHONY: $(DEPENDENCIES_IGNITION_FILES) +# Build the ignition files of the dependencies of this project. $(DEPENDENCIES_IGNITION_FILES): $(MAKE) -C $(dir $@) $(notdir $@) +# Because we don't know how to build this file, it is safer to declare it as phony and let the Makefile of the dependency handle it. +.PHONY: $(DEPENDENCIES_IGNITION_FILES) +# Generate the final Fedora CoreOS ignition file by merging the Butane spec with the local and project-specific ignition files, as well as those of the dependencies. fcos.ign: fcos.bu $(TOP_LEVEL_DIR)/local.ign $(PROJECT_NAME).ign $(DEPENDENCIES_IGNITION_FILES) @run() { echo $$*; "$$@"; }; \ tmp=$$(mktemp -d /tmp/butane-XXXXXX); \ @@ -228,6 +291,7 @@ fcos.ign: fcos.bu $(TOP_LEVEL_DIR)/local.ign $(PROJECT_NAME).ign $(DEPENDENCIES_ run butane --strict -d $$tmp -o $@ fcos.bu; \ run rm -rf $$tmp +# Fetch the latest version of the Fedora CoreOS QCOW2 image. /var/lib/libvirt/images/library/fedora-coreos.qcow2: @run() { echo $$*; "$$@"; }; \ run mkdir -p /var/lib/libvirt/images/library/ ; \ @@ -238,15 +302,19 @@ fcos.ign: fcos.bu $(TOP_LEVEL_DIR)/local.ign $(PROJECT_NAME).ign $(DEPENDENCIES_ qcow2=$$(ls -1ctr /var/lib/libvirt/images/library/fedora-coreos-*.qcow2 | tail -n 1) ; \ run mv "$$qcow2" $@ +# Copy the ignition file. /var/lib/libvirt/images/fcos-$(PROJECT_NAME)/fcos.ign: fcos.ign install -D -o root -g root -m 0644 $< $@ +# Copy the Fedora CoreOS base image to create a new QCOW2 image for the VM. /var/lib/libvirt/images/fcos-$(PROJECT_NAME)/root.qcow2: /var/lib/libvirt/images/library/fedora-coreos.qcow2 install -D -o root -g root -m 0644 $< $@ +# Create the directory to be shared with the Fedora CoreOS VM through virtiofs. /srv/fcos-$(PROJECT_NAME): install -d -o root -g root -m 0755 $@ +# Launch a Fedora CoreOS VM with the generated Butane spec. fcos-vm: pre-requisites clean-vm /var/lib/libvirt/images/fcos-$(PROJECT_NAME)/fcos.ign /var/lib/libvirt/images/fcos-$(PROJECT_NAME)/root.qcow2 /srv/fcos-$(PROJECT_NAME) virt-install --name=fcos-$(PROJECT_NAME) --import --noautoconsole \ --ram=4096 --vcpus=2 --os-variant=fedora-coreos-stable \ @@ -257,30 +325,40 @@ fcos-vm: pre-requisites clean-vm /var/lib/libvirt/images/fcos-$(PROJECT_NAME)/fc --memorybacking=access.mode=shared,source.type=memfd \ --filesystem=type=mount,accessmode=passthrough,driver.type=virtiofs,driver.queue=1024,source.dir=/srv/fcos-$(PROJECT_NAME),target.dir=data +# Clean up the Fedora CoreOS VM and its resources. clean-vm: pre-requisites virsh destroy fcos-$(PROJECT_NAME) || true virsh undefine fcos-$(PROJECT_NAME) --nvram || true rm -rf /var/lib/libvirt/images/fcos-$(PROJECT_NAME) rm -rf /srv/fcos-$(PROJECT_NAME) +# Connect to the console of the Fedora CoreOS VM. console: pre-requisites @while sleep 2; do virsh console fcos-$(PROJECT_NAME); echo -e "Disconnected. Reconnecting in 2 seconds...\nPress Ctrl-C to abort.\n"; done +# List all systemd and quadlet unit names provided by the dependencies of this project. units-pre:: @for dep in $(DEPENDENCIES); do \ $(MAKE) -s -C $(TOP_LEVEL_DIR)/$$dep units 2>/dev/null; \ done + +# List all systemd and quadlet unit names provided by this project and, through "units-pre", also its dependencies. units: units-pre @for unit in $(SYSTEMD_UNIT_NAMES) $(QUADLET_UNIT_NAMES); do echo "$$unit"; done +# Custom commands to be run before cleaning persistent data and configuration files. +# This target can be extended by Makefiles sourcing this one. clean-pre:: @run() { echo $$*; "$$@"; }; \ for dep in $(DEPENDENCIES); do \ run $(MAKE) -C $(TOP_LEVEL_DIR)/$$dep clean; \ done - +# Custom commands to be run after cleaning persistent data and configuration files. +# This target can be extended by Makefiles sourcing this one. clean-post:: + +# Remove all persistent data and configuration files clean: clean-pre pre-requisites rm -f *.butane @run() { echo $$*; "$$@"; }; \ @@ -292,3 +370,10 @@ clean: clean-pre pre-requisites fi rm -rf /var/lib/quadlets/$(PROJECT_NAME)/ /var/run/quadlets/$(PROJECT_NAME)/ /etc/quadlets/$(PROJECT_NAME)/ $(MAKE) clean-post + +# All phony targets +.PHONY: all install install-config install-examples uninstall pre-requisites clean dryrun +.PHONY: tail-logs butane help fcos-vm clean-vm console units units-pre +.PHONY: clean-pre clean-post install-pre install-post uninstall-pre uninstall-post +.PHONY: install-files install-files-pre install-files-post install-actions +.PHONY: install-actions-pre install-actions-post diff --git a/generate-butane-spec.sh b/generate-butane-spec.sh index 3918516..69f9a1e 100755 --- a/generate-butane-spec.sh +++ b/generate-butane-spec.sh @@ -9,6 +9,9 @@ # It takes the following parameters: # - The target chroot directory where the quadlets and systemd units # have been installed. +# - The path to a file containing a list of files and directories +# (one per line) to ignore (i.e., files and directories that are +# already part of the CoreOS default installation). # - The list of systemd main unit names to enable. # # It outputs the butane config file to stdout. diff --git a/nextcloud-aio/examples/config.env b/nextcloud-aio/examples/config.env deleted file mode 100644 index edc48bb..0000000 --- a/nextcloud-aio/examples/config.env +++ /dev/null @@ -1,101 +0,0 @@ -# Setting this to true allows to hide the backup section in the AIO interface. -# See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section -#AIO_DISABLE_BACKUP_SECTION=false - -# Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). -# See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md -#APACHE_PORT=11000 - -# Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. -# See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md -#APACHE_IP_BINDING=127.0.0.1 - -# (Optional) Connect the apache container to an additional docker network. -# Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. -# See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md -#APACHE_ADDITIONAL_NETWORK=frontend_net - -# Allows to adjust borgs retention policy. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy -#BORG_RETENTION_POLICY=--keep-within=7d --keep-weekly=4 --keep-monthly=6 - -# Setting this to true allows to disable Collabora's Seccomp feature. -# See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature -#COLLABORA_SECCOMP_DISABLED=false - -# You can adjust the internally used docker api version with this variable. -# ⚠️⚠️⚠️ Warning: please note that only the default api version (unset this variable) is supported and tested by the maintainers of Nextcloud AIO. -# So use this on your own risk and things might break without warning. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-internally-used-docker-api-version -#DOCKER_API_VERSION=1.44 - -# Allows to adjust the fulltextsearch java options. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options -#FULLTEXTSEARCH_JAVA_OPTIONS=-Xms1024M -Xmx1024M - -# Allows to set the host directory for Nextcloud's datadir. -# ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! -# See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir -NEXTCLOUD_DATADIR=/var/lib/quadlets/nextcloud-aio/data - -# Allows the Nextcloud container to access the chosen directory on the host. -# See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host -#NEXTCLOUD_MOUNT=/mnt/ - -# Can be adjusted if you need more. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud -#NEXTCLOUD_UPLOAD_LIMIT=16G - -# Can be adjusted if you need more. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud -#NEXTCLOUD_MAX_TIME=3600 - -# Can be adjusted if you need more. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud -#NEXTCLOUD_MEMORY_LIMIT=512M - -# CA certificates in this directory will be trusted by the OS of the nextcloud container (Useful e.g. for LDAPS). -# See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca -#NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts - -# Allows to modify the Nextcloud apps that are installed on starting AIO the first time. -# See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup -#NEXTCLOUD_STARTUP_APPS=deck twofactor_totp tasks calendar contacts notes - -# This allows to add additional packages to the Nextcloud container permanently. -# Default is imagemagick but can be overwritten by modifying this value. -# See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container -#NEXTCLOUD_ADDITIONAL_APKS=imagemagick - -# This allows to add additional php extensions to the Nextcloud container permanently. -# Default is imagick but can be overwritten by modifying this value. -# See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container -#NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick - -# This allows to enable the /dev/dri device for containers that profit from it. -# ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! -# If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! -# See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud -#NEXTCLOUD_ENABLE_DRI_DEVICE=true - -# This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. -# ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. -# See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud. -#NEXTCLOUD_ENABLE_NVIDIA_GPU=true - -# Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. -# See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps -#NEXTCLOUD_KEEP_DISABLED_APPS=false - -# This should only be set to true if things are correctly configured. -# See https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation -#SKIP_DOMAIN_VALIDATION=false - -# This allows to adjust the port that the talk container is using which is exposed on the host. -# See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port -#TALK_PORT=3478 - -# Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. -# Otherwise mastercontainer updates will fail. -# For macos it needs to be '/var/run/docker.sock' -#WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock