Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
aacb187
dist-upgrade for debian 12, php-8.3 placeholder for trixie, bump ncp.…
MagelanM May 10, 2026
48cd715
correct trixie dist repos
MagelanM May 10, 2026
f161ca9
suppress php error if not yet installed
MagelanM May 10, 2026
77904f5
bump ncp.cfg to trixie
MagelanM May 10, 2026
fb7e891
correct mariadb inst command
MagelanM May 10, 2026
dd145da
Disable OCSP stapling for self-signed certs - fixes OpenSSL 3.5 incom…
MagelanM May 10, 2026
1c59171
Enabling OCSP Stapling with valid Let's Encrypt certificates
MagelanM May 10, 2026
86c461d
restart ssh instead of reload for socket-activated ssh
MagelanM May 10, 2026
6bf959c
remove switch to systemd-resolved for lxc enviroments, it breaks DNS …
MagelanM May 11, 2026
3a1358f
remove deprecated,removed directives for MariaDB 11.8 and later
MagelanM May 13, 2026
50464cd
extended dpkg failure handling
MagelanM May 14, 2026
5f44e2d
change order: first set new data dir in config, then move data
MagelanM May 14, 2026
bacbc3f
remove log
MagelanM May 15, 2026
f8876a1
systemd drop-in for write access
MagelanM May 15, 2026
968d0a1
move drop-in to update.sh
MagelanM May 15, 2026
00a6f58
drop in also in lamp.sh
MagelanM May 15, 2026
9552a5d
ProtectSystem=false for unprivileged lxcs
MagelanM May 15, 2026
e0a2053
daemon-reload for push service
MagelanM May 31, 2026
db51f47
move start of push service after configuration is complete
MagelanM May 31, 2026
6ebc6f3
start push service explicit
MagelanM May 31, 2026
2125220
build-lxd.yml: Enable dist-upgrade test for debian 13
theCalcaholic Jun 5, 2026
7927844
ncp-dist-upgrade: Run (to-be-merged) debian-12.sh when upgrading from…
theCalcaholic Jun 5, 2026
ef3a22c
Don't handle the case os_version = trixie && php version < 8.3 (preve…
theCalcaholic Jun 7, 2026
776ee44
nc-datadir.sh: Restore fallbacks for editing config.php without php
theCalcaholic Jun 7, 2026
57b1bf4
freeDNS.sh: Remove redundant function wait_for_dpkg
theCalcaholic Jun 7, 2026
f0f58fe
letsencrypt.sh: Disable OCSP stapling when disabling letsencrypt cert…
theCalcaholic Jun 7, 2026
6f75674
Move installation of php-fpm systemd service dropin to updates/1.58.0.sh
theCalcaholic Jun 7, 2026
5d5e554
Merge branch 'feature/Debian-13-Support-2082' into feature/debian-13
theCalcaholic Jun 7, 2026
cbc34bb
build-lxd.yml: Don't perform NC updates if installed NC version is ne…
theCalcaholic Jun 7, 2026
dce1a94
nc-datadir.sh: Remove IDE artifact
theCalcaholic Jun 7, 2026
ef1bdd4
build-lxd.yml: Fix NC version comparison
theCalcaholic Jun 7, 2026
26dc04c
build-lxd.yml: Fix nc-update test
theCalcaholic Jun 7, 2026
0fc5c10
debian-12.sh: Make sure, PHP8.3 repo is properly setup
theCalcaholic Jun 7, 2026
edbefe6
Add debug output
theCalcaholic Jun 7, 2026
6fa3d40
bin/ncp-dist-upgrade*: Move prompt to launch script (so it happens ou…
theCalcaholic Jun 7, 2026
9b29111
Add debug output
theCalcaholic Jun 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 96 additions & 45 deletions .github/workflows/build-lxd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ jobs:
env:
USE_INCUS: "${{ needs.determine-runner.outputs.lxc_cmd == 'incus' && 'yes' || 'no' }}"
run: |
set -x
export CI
LXD_EXTRA_PROFILE="$LXD_EXTRA_PROFILE" BRANCH="${VERSION##refs/heads/}" ./build/build-LXD.sh
- name: Pack LXD image
Expand Down Expand Up @@ -269,16 +270,16 @@ jobs:
export FF_BINARY_PATH="$(which firefox)"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc config:system:set overwrite.cli.url --value "https://nextcloudpi.local"
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &
../.venv/bin/python activation_tests.py --no-gui "nextcloudpi.local" 443 4443 || {
../.venv/bin/python activation_tests.py -t 300 --no-gui "nextcloudpi.local" 443 4443 || {
echo "Activation test failed!"
echo "Geckodriver logs:"
tail -n 20 geckodriver.log >&2 || true
echo "================"
echo "ncp.log: "
sudo "$LXC" exec ncp -- bash -c "tail -n20 /var/log/ncp.log" || true
sudo "$LXC" exec ncp -- bash -c "cat /var/log/ncp.log" || true
echo "================"
echo "nextcloud log: "
datadir="$("$LXC" exec ncp -- ncc config:system:get datadirectory)"
datadir="$(sudo "$LXC" exec ncp -- ncc config:system:get datadirectory)"
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
Expand All @@ -295,7 +296,7 @@ jobs:
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
USE_INCUS="$USE_INCUS" python system_tests.py --non-interactive --skip-update-test || {
USE_INCUS="$USE_INCUS" ../.venv/bin/python system_tests.py --non-interactive --skip-update-test || {
echo "System test failed!"
exit 1
}
Expand All @@ -321,7 +322,17 @@ jobs:
sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update ${UPDATE_ARGS[*]}"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc status

if [[ "$current_nc_version" =~ "$latest_nc_version".* ]]
latest_build="${latest_nc_version#*.}"
latest_build="${latest_build#*.}"

if [[ "$current_nc_version" =~ ^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$ ]]
then
current_nc_version="${current_nc_version%.*}"
fi
current_build="${current_nc_version#*.}"
current_build="${current_build#*.}"

if [[ "${current_nc_version%.*}" == "${latest_nc_version%.*}" ]] && [[ "${current_build}" -ge "${latest_build}" ]]
then
echo "Nextcloud is up to date - skipping NC update test."
else
Expand Down Expand Up @@ -393,16 +404,15 @@ jobs:
sudo "$LXC" stop ncp

test-dist-upgrade:
if: false
needs:
- determine-runner
runs-on: ${{ needs.determine-runner.outputs.runner_label }}
env:
VERSION: "${{ inputs.git_ref || github.ref }}"
LXC: "${{ needs.determine-runner.outputs.lxc_cmd }}"
LXD_EXTRA_PROFILE: "${{ needs.determine-runner.outputs.lxd_extra_profile }}"
PREVIOUS_IMAGE_URL_ARM64: "https://github.com/nextcloud/nextcloudpi/releases/download/v1.53.2/NextcloudPi_LXD_arm64_v1.53.2.tar.gz"
PREVIOUS_IMAGE_URL_AMD64: "https://github.com/nextcloud/nextcloudpi/releases/download/v1.53.2/NextCloudPi_LXD_x86_v1.53.2.tar.gz"
PREVIOUS_IMAGE_URL_ARM64: "https://github.com/nextcloud/nextcloudpi/releases/download/v1.57.1/NextcloudPi_LXD_arm64_v1.57.1.tar.gz"
PREVIOUS_IMAGE_URL_AMD64: "https://github.com/nextcloud/nextcloudpi/releases/download/v1.57.1/NextCloudPi_LXD_x86_v1.57.1.tar.gz"
USE_INCUS: "${{ needs.determine-runner.outputs.lxc_cmd == 'incus' && 'yes' || 'no' }}"
steps:
- name: Setup incus
Expand All @@ -416,7 +426,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: "v1.54.3"
ref: "v1.57.1"
- name: Setup Firefox
if: ${{ runner.arch != 'ARM64' }}
continue-on-error: true
Expand All @@ -425,6 +435,7 @@ jobs:
- name: Setup Firefox from packages
if: ${{ runner.arch == 'ARM64' || steps.setup-firefox-browser-action.outcome == 'failure' }}
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends firefox
- name: Setup GeckoDriver
env:
Expand Down Expand Up @@ -458,8 +469,9 @@ jobs:
- name: Launch ncp container
run: |
set -x
. ./build/buildlib.sh
sudo "$LXC" delete -q -f ncp || true
sudo "$LXC" image import -q "./ncp.tar.gz" --alias "ncp/update"
sudo "$LXC" image import -q "./ncp.tar.gz" --alias "ncp/update" || true
LXC_ARGS=(-p default)
[[ -z "$LXD_EXTRA_PROFILE" ]] || LXC_ARGS+=(-p "$LXD_EXTRA_PROFILE")
systemd-run --user --scope -p "Delegate=yes" "$LXC" launch -q "${LXC_ARGS[@]}" "ncp/update" ncp || \
Expand All @@ -477,6 +489,7 @@ jobs:
set -x
export GECKODRIVER_PATH="$GECKODRIVER_PATH"
export FF_BINARY_PATH="$(which firefox)"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc config:system:set overwrite.cli.url --value "https://nextcloudpi.local"
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &
../.venv/bin/python activation_tests.py --no-gui "nextcloudpi.local" 443 4443 || {
echo "Activation test failed!"
Expand All @@ -485,6 +498,10 @@ jobs:
echo "================"
echo "ncp.log: "
sudo "$LXC" exec ncp -- bash -c "tail -n20 /var/log/ncp.log" || true
echo "================"
echo "nextcloud log: "
datadir="$(sudo "$LXC" exec ncp -- ncc config:system:get datadirectory)"
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
../.venv/bin/python nextcloud_tests.py --skip-release-check --no-gui "nextcloudpi.local" 443 4443 || {
Expand Down Expand Up @@ -528,22 +545,34 @@ jobs:
echo "Running update to ${VERSION}"

current_nc_version="$(sudo "$LXC" exec ncp -- ncc status | grep "version:" | awk '{ print $3 }')"
latest_nc_version="29.0.9"

sudo "$LXC" exec ncp -- apt-get update ||:
sudo "$LXC" exec ncp -- apt-get install --no-install-recommends -y gnupg2
sudo "$LXC" exec ncp -- apt-key adv --fetch-keys https://packages.sury.org/php/apt.gpg

latest_nc_version="33.0.3"

sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update ${UPDATE_ARGS[*]}"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc status

#if [[ "$current_nc_version" =~ "$latest_nc_version".* ]]
#then
# echo "Nextcloud is up to date - skipping NC update test."
#else
# sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update-nc ${latest_nc_version?}"
# sudo "$LXC" exec ncp -- /usr/local/bin/ncc status
#fi
if [[ "$current_nc_version" =~ "$latest_nc_version".* ]]
then
echo "Nextcloud is up to date - skipping NC update test."
else
for i in {1..10}
do
echo "running nc update $i/10..."
sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update-nc ${latest_nc_version?}"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc status
current_nc_version_new="$(sudo "$LXC" exec ncp -- ncc status | grep "version:" | awk '{ print $3 }')"

if [[ "$current_nc_version_new" =~ "$latest_nc_version".* ]]
then
break
fi
if [[ "$current_nc_version" == "$current_nc_version_new" ]]
then
echo "failed to update to $latest_nc_version"
exit 1
fi
current_nc_version="$current_nc_version_new"
done
fi

sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log

Expand All @@ -564,9 +593,22 @@ jobs:
- name: Test LXD Image
working-directory: ./tests
run: |
set -x
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &
export GECKODRIVER_PATH="$GECKODRIVER_PATH"
export FF_BINARY_PATH="$(which firefox)"
../.venv/bin/python nextcloud_tests.py --no-gui --skip-release-check "nextcloudpi.local" 443 4443 || {

USE_INCUS="$USE_INCUS" ../.venv/bin/python system_tests.py --skip-update-test --non-interactive || {
echo "System test failed!"
echo "ncp.log: "
sudo "$LXC" exec ncp -- bash -c "tail -n20 /var/log/ncp.log" || true
echo "================"
echo "nextcloud log: "
datadir="$(sudo "$LXC" exec ncp -- ncc config:system:get datadirectory)"
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
../.venv/bin/python nextcloud_tests.py --no-gui "nextcloudpi.local" 443 4443 || {
echo "Nextcloud test failed!"
echo "Geckodriver logs:"
tail -n 20 geckodriver.log >&2 || true
Expand All @@ -579,11 +621,6 @@ jobs:
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &
USE_INCUS="$USE_INCUS" ../.venv/bin/python system_tests.py --non-interactive --skip-update-test || {
echo "System test failed!"
exit 1
}
- name: Checkout current version
run: |
git fetch origin
Expand All @@ -592,7 +629,7 @@ jobs:
id: distupgrade
run: |
set -x
sudo "$LXC" exec ncp -- cat /etc/os-release | grep 'VERSION_ID="11"' || {
sudo "$LXC" exec ncp -- cat /etc/os-release | grep 'VERSION_ID="12"' || {
echo "can't upgrade from Debian $(sudo "$LXC" exec ncp -- cat /etc/os-release | grep VERSION_ID=)"
exit 1
}
Expand All @@ -602,18 +639,27 @@ jobs:
sudo "$LXC" exec ncp -- bash -c "DEBIAN_FRONTEND=noninteractive ncp-dist-upgrade"
sudo "$LXC" exec ncp -- /usr/local/bin/ncc status

if [[ "$current_nc_version" =~ "$latest_nc_version".* ]]
latest_build="${latest_nc_version#*.}"
latest_build="${latest_build#*.}"

if [[ "$current_nc_version" =~ ^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$ ]]
then
current_nc_version="${current_nc_version%.*}"
fi
current_build="${current_nc_version#*.}"
current_build="${current_build#*.}"

if [[ "${current_nc_version%.*}" == "${latest_nc_version%.*}" ]] && [[ "${current_build}" -ge "${latest_build}" ]]
then
echo "Nextcloud is up to date - skipping NC update test."
else

for i in {1..10};
for i in {1..10}
do
echo "running nc update ($i/10)..."
echo "running nc update $i/10..."
sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update-nc ${latest_nc_version?}"

sudo "$LXC" exec ncp -- /usr/local/bin/ncc status
current_nc_version_new="$(sudo "$LXC" exec ncp -- ncc status | grep "version:" | awk '{ print $3 }')"

if [[ "$current_nc_version_new" =~ "$latest_nc_version".* ]]
then
break
Expand All @@ -632,10 +678,8 @@ jobs:
- name: Relaunch container
run: |
set -x
LXC_ARGS=()
[[ -z "$LXD_EXTRA_PROFILE" ]] || LXC_ARGS+=(-p "$LXD_EXTRA_PROFILE")
systemd-run --user --scope -p "Delegate=yes" "$LXC" start ncp || \
sudo systemd-run --scope -p "Delegate=yes" "$LXC" start ncp
systemd-run --user --scope -p "Delegate=yes" "$LXC" start -q ncp || \
sudo systemd-run --scope -p "Delegate=yes" "$LXC" start -q ncp
sudo "$LXC" exec ncp -- bash -c 'while [ "$(systemctl is-system-running 2>/dev/null)" != "running" ] && [ "$(systemctl is-system-running 2>/dev/null)" != "degraded" ]; do :; done'
sleep 30
ip="$(sudo "$LXC" list -c n4 -f csv | grep '^ncp' | cut -d ',' -f2)"
Expand All @@ -646,9 +690,20 @@ jobs:
working-directory: ./tests
run: |
set -x
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &
export GECKODRIVER_PATH="$GECKODRIVER_PATH"
export FF_BINARY_PATH="$(which firefox)"
sudo "$LXC" exec ncp -- bash -c 'tail -f /var/log/ncp.log' |& awk '{ print "NCP::" $0 }' &

USE_INCUS="$USE_INCUS" ../.venv/bin/python system_tests.py --skip-update-test --non-interactive || {
echo "System test failed!"
echo "ncp.log: "
sudo "$LXC" exec ncp -- bash -c "tail -n20 /var/log/ncp.log" || true
echo "================"
echo "nextcloud log: "
datadir="$(sudo "$LXC" exec ncp -- ncc config:system:get datadirectory)"
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
../.venv/bin/python nextcloud_tests.py --no-gui "nextcloudpi.local" 443 4443 || {
echo "Nextcloud test failed!"
echo "Geckodriver logs:"
Expand All @@ -662,10 +717,6 @@ jobs:
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
USE_INCUS="$USE_INCUS" ../.venv/bin/python system_tests.py --non-interactive || {
echo "System test failed!"
exit 1
}
sudo "$LXC" stop ncp

test-fresh-install:
Expand Down Expand Up @@ -767,7 +818,7 @@ jobs:
sudo "$LXC" exec ncp -- bash -c "tail -n20 /var/log/ncp.log" || true
echo "================"
echo "nextcloud log: "
datadir="$("$LXC" exec ncp -- ncc config:system:get datadirectory)"
datadir="$(sudo "$LXC" exec ncp -- ncc config:system:get datadirectory)"
sudo "$LXC" exec ncp -- cat "$datadir/nextcloud.log" || true
exit 1
}
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/build-sd-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,12 @@ jobs:
echo 'Mutex posixsem' | sudo tee -a raspbian_root/etc/apache2/mods-available/ssl.conf
echo 'ignore-warnings ARM64-COW-BUG' | sudo tee -a raspbian_root/etc/redis/redis.conf
sudo mkdir -p raspbian_root/etc/systemd/system/redis-server.service.d
echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
echo 'PrivateUsers=false' | sudo tee -a raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/redis-server.service.d/ncp-ci.conf
echo 'PrivateUsers=false' | sudo tee -a raspbian_root/etc/systemd/system/redis-server.service.d/ncp-ci.conf

sudo mkdir -p raspbian_root/etc/systemd/system/php8.3-fpm.service.d
echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/php8.3-fpm.service.d/ncp.conf
echo 'ExecStartPre=mkdir -p /var/run/php' | sudo tee -a raspbian_root/etc/systemd/system/php8.3-fpm.service.d/ncp.conf
echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/php8.3-fpm.service.d/ncp-ci.conf
echo 'ExecStartPre=mkdir -p /var/run/php' | sudo tee -a raspbian_root/etc/systemd/system/php8.3-fpm.service.d/ncp-ci.conf
- name: Test image
id: test
run: |
Expand Down Expand Up @@ -421,8 +421,8 @@ jobs:
# echo 'Mutex posixsem' | sudo tee -a raspbian_root/etc/apache2/mods-available/ssl.conf
# echo 'ignore-warnings ARM64-COW-BUG' | sudo tee -a raspbian_root/etc/redis/redis.conf
# sudo mkdir -p raspbian_root/etc/systemd/system/redis-server.service.d
# echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
# echo 'PrivateUsers=false' | sudo tee -a raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
# echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/redis-server.service.d/ncp-ci.conf
# echo 'PrivateUsers=false' | sudo tee -a raspbian_root/etc/systemd/system/redis-server.service.d/ncp-ci.conf
# - name: Test and activate image
# if: ${{ steps.download-previous-image.outputs.skipped == 'false' }}
# id: test
Expand Down
26 changes: 26 additions & 0 deletions bin/ncp-dist-upgrade
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,38 @@ set -e

. /etc/os-release

new_cfg=/usr/local/etc/ncp-recommended.cfg
[[ -f "${new_cfg}" ]] || { echo "Already on the latest recommended distribution. Abort." >&2; exit 1; }

echo "
>>> ATTENTION <<<
This is a dangerous process that is only guaranteed to work properly if you
have not made manual changes in the system. Backup the SD card first and
proceed at your own risk.

Note that this is not a requirement for NCP to continue working properly.
The current distribution will keep receiving updates for some time.

Do you want to continue? [y/N]"

if [[ "${DEBIAN_FRONTEND:-}" == "noninteractive" ]] || ! [[ -t 0 ]]
then
echo "Noninteractive environment detected. Automatically proceeding in 30 seconds..."
sleep 30
else
read -n1 -r key
[[ "${key,,}" == y ]] || exit 0
fi

if [[ "$VERSION_ID" -eq 10 ]]
then
UPGRADE_CMD=(bash /usr/local/bin/ncp-dist-upgrade.d/debian-10.sh)
elif [[ "$VERSION_ID" -eq 11 ]]
then
UPGRADE_CMD=(bash /usr/local/bin/ncp-dist-upgrade.d/debian-11.sh)
elif [[ "$VERSION_ID" -eq 12 ]]
then
UPGRADE_CMD=(bash /usr/local/bin/ncp-dist-upgrade.d/debian-12.sh)
else
echo "No dist-upgrade available for OS version: Debian ${VERSION}."
exit 0
Expand Down
20 changes: 0 additions & 20 deletions bin/ncp-dist-upgrade.d/debian-10.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,6 @@ set -eu -o pipefail

[[ -f /.dockerenv ]] && { echo "Not supported in Docker. Upgrade the container instead"; exit 0; }

new_cfg=/usr/local/etc/ncp-recommended.cfg
[[ -f "${new_cfg}" ]] || { echo "Already on the lastest recommended distribution. Abort." >&2; exit 1; }

APTINSTALL="apt-get install -y --no-install-recommends"
export DEBIAN_FRONTEND=noninteractive

echo "
>>> ATTENTION <<<
This is a dangerous process that is only guaranteed to work properly if you
have not made manual changes in the system. Backup the SD card first and
proceed at your own risk.

Note that this is not a requirement for NCP to continue working properly.
The current distribution will keep receiving updates for some time.

Do you want to continue? [y/N]"

read key
[[ "$key" == y ]] || exit 0

source /usr/local/etc/library.sh # sets NCPCFG RELEASE PHPVER
old_cfg="${NCPCFG}"

Expand Down
Loading
Loading