diff --git a/CHANGES b/CHANGES index a444710c9..d60ba9792 100644 --- a/CHANGES +++ b/CHANGES @@ -2784,4 +2784,5 @@ * domains: add deSEC integration * notfound: better message when navigating by IP address * IPv6 only server installation +* Initial Ubuntu 24.04 (Noble Numbat) support diff --git a/scripts/cloudron-setup b/scripts/cloudron-setup index 63d0c55a4..d63d48373 100755 --- a/scripts/cloudron-setup +++ b/scripts/cloudron-setup @@ -117,8 +117,8 @@ fi # Only --help works with mismatched ubuntu ubuntu_version=$(lsb_release -rs) -if [[ "${ubuntu_version}" != "16.04" && "${ubuntu_version}" != "18.04" && "${ubuntu_version}" != "20.04" && "${ubuntu_version}" != "22.04" ]]; then - echo "Cloudron requires Ubuntu 18.04, 20.04, 22.04" > /dev/stderr +if [[ "${ubuntu_version}" != "16.04" && "${ubuntu_version}" != "18.04" && "${ubuntu_version}" != "20.04" && "${ubuntu_version}" != "22.04" && "${ubuntu_version}" != "24.04" ]]; then + echo "Cloudron requires Ubuntu 18.04, 20.04, 22.04, 24.04" > /dev/stderr exit 1 fi @@ -217,6 +217,11 @@ if ! grep -q avx /proc/cpuinfo; then fi fi +if [[ "${ubuntu_version}" == "24.04" ]] && ! vergte "${version}" "8.0.0"; then + echo "Cloudron >= 8.0.0 required for installation on Ubuntu ${ubuntu_version}" + exit 1 +fi + if ! sourceTarballUrl=$(echo "${releaseJson}" | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["info"]["sourceTarballUrl"])'); then echo "No source code for version '${requestedVersion:-latest}'" exit 1 diff --git a/scripts/init-ubuntu.sh b/scripts/init-ubuntu.sh index beded5119..b47a8b32e 100755 --- a/scripts/init-ubuntu.sh +++ b/scripts/init-ubuntu.sh @@ -67,6 +67,13 @@ case "${ubuntu_version}" in python_package="python3.10" nginx_package="nginx-full" ;; +24.04) + gpg_package="gpg" + mysql_package="mysql-server-8.0" + ntpd_package="systemd-timesyncd" + python_package="python3.12" + nginx_package="nginx-full" + ;; esac apt-get -y install --no-install-recommends \ diff --git a/scripts/installer.sh b/scripts/installer.sh index a33aeefd6..d7341b27d 100755 --- a/scripts/installer.sh +++ b/scripts/installer.sh @@ -82,8 +82,8 @@ systemctl stop unbound || true systemctl enable --now systemd-resolved # https://docs.docker.com/engine/installation/linux/ubuntulinux/ -readonly docker_version="23.0.6" -readonly containerd_version="1.6.21-1" +readonly docker_version="26.0.1" +readonly containerd_version="1.6.31-1" if ! which docker 2>/dev/null || [[ $(docker version --format {{.Client.Version}}) != "${docker_version}" ]]; then log "installing/updating docker" diff --git a/setup/start.sh b/setup/start.sh index 581800995..c3ae03b56 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -110,6 +110,7 @@ usermod -a -G adm ${USER} log "Setting up unbound" cp -f "${script_dir}/start/unbound.conf" /etc/unbound/unbound.conf.d/cloudron-network.conf +rm -f /etc/unbound/unbound.conf.d/remote-control.conf # on ubuntu 24 # update the root anchor after a out-of-disk-space situation (see #269) # it returns 1 even on fail, it's not clear - https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound-anchor.html#exit-code unbound-anchor -v -a /var/lib/unbound/root.key || log "unbound-anchor failed, but it probably worked" @@ -117,7 +118,6 @@ unbound-anchor -v -a /var/lib/unbound/root.key || log "unbound-anchor failed, bu log "Adding systemd services" cp -r "${script_dir}/start/systemd/." /etc/systemd/system/ systemctl daemon-reload -systemctl enable --now cloudron-syslog systemctl enable unbound systemctl enable box systemctl enable cloudron-firewall @@ -132,9 +132,6 @@ systemctl enable --now cron # ensure unbound runs systemctl restart unbound -# ensure cloudron-syslog runs -systemctl restart cloudron-syslog - log "Configuring sudoers" rm -f /etc/sudoers.d/${USER} /etc/sudoers.d/cloudron cp "${script_dir}/start/sudoers" /etc/sudoers.d/cloudron @@ -246,6 +243,11 @@ chown "${USER}:${USER}" -R "${BOX_DATA_DIR}" # do not chown the boxdata/mail directory entirely; dovecot gets upset chown "${USER}:${USER}" "${MAIL_DATA_DIR}" +# this require logs dir to have correct permissions +log "Starting cloudron-syslog" +systemctl enable cloudron-syslog +systemctl start cloudron-syslog + log "Starting Cloudron" systemctl start box