Update arch_install.sh

This commit is contained in:
RomanNum3ral 2026-03-18 18:10:10 +00:00
parent f40c00d7cc
commit c9d302fe44
1 changed files with 62 additions and 6 deletions

View File

@ -37,11 +37,15 @@ SMB_FSTAB_OPTIONS="rw,credentials=${SMB_CREDENTIALS_FILE},uid=http,gid=http,ioch
# INTERNALS
########################################
PHP_INI="/etc/php-legacy/php.ini"
PHP_ETC_DIR="/etc/php-legacy"
PHP_INI="${PHP_ETC_DIR}/php.ini"
PHP_CONF_D="${PHP_ETC_DIR}/conf.d"
PHP_FPM_POOL_CONF="/etc/php-legacy/php-fpm.d/www.conf"
HTTPD_CONF="/etc/httpd/conf/httpd.conf"
HTTPD_NEXTCLOUD_CONF="/etc/httpd/conf/extra/nextcloud.conf"
HTTPD_WELLKNOWN_CONF="/etc/httpd/conf/extra/nextcloud-wellknown.conf"
VALKEY_CONF="/etc/valkey/valkey.conf"
log() {
@ -80,8 +84,16 @@ ensure_line() {
grep -Fqx "$line" "$file" || echo "$line" >> "$file"
}
write_ini() {
local file="$1"
shift
cat > "$file" <<EOF
$*
EOF
}
occ() {
sudo -u "${APACHE_RUN_USER}" php-legacy "${NEXTCLOUD_WEBROOT}/occ" "$@"
sudo -u "${APACHE_RUN_USER}" /usr/bin/php-legacy /usr/bin/occ "$@"
}
########################################
@ -125,10 +137,11 @@ pacman -S --needed --noconfirm \
log "Creating base directories"
mkdir -p "${NEXTCLOUD_DATA_DIR}"
mkdir -p /var/lib/nextcloud
mkdir -p /var/log/httpd
mkdir -p /run/httpd
mkdir -p "${PHP_CONF_D}"
mkdir -p /var/lib/nextcloud
chown -R "${APACHE_RUN_USER}:${APACHE_RUN_GROUP}" /var/lib/nextcloud
chmod 0750 /var/lib/nextcloud
chmod 0750 "${NEXTCLOUD_DATA_DIR}"
@ -181,6 +194,36 @@ replace_or_append_ini "output_buffering" "Off" "${PHP_INI}"
replace_or_append_ini "date.timezone" "${PHP_TIMEZONE}" "${PHP_INI}"
replace_or_append_ini "cgi.fix_pathinfo" "0" "${PHP_INI}"
# Explicitly enable extensions needed by Nextcloud.
# Arch php-legacy package layout is module-based, so make sure conf.d loads them.
write_ini "${PHP_CONF_D}/20-nextcloud-core.ini" \
"; Core DB and image modules for Nextcloud
extension=mysqli
extension=pdo_mysql
extension=gd
extension=intl
extension=sodium
"
write_ini "${PHP_CONF_D}/20-nextcloud-cache.ini" \
"; Cache modules for Nextcloud
extension=apcu
extension=redis
apc.enable_cli=1
"
write_ini "${PHP_CONF_D}/10-opcache.ini" \
"; Opcache
zend_extension=opcache
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.save_comments=1
opcache.revalidate_freq=60
"
sed -ri 's|^user\s*=.*|user = http|g' "${PHP_FPM_POOL_CONF}"
sed -ri 's|^group\s*=.*|group = http|g' "${PHP_FPM_POOL_CONF}"
@ -209,12 +252,12 @@ else
fi
systemctl enable --now php-fpm-legacy
systemctl restart php-fpm-legacy
log "Configuring Valkey (TCP localhost only)"
backup_file "${VALKEY_CONF}"
# Avoid unix socket issues entirely; listen only on localhost
if grep -Eq '^[#[:space:]]*bind ' "${VALKEY_CONF}"; then
sed -ri 's|^[#[:space:]]*bind .*|bind 127.0.0.1 ::1|g' "${VALKEY_CONF}"
else
@ -233,7 +276,6 @@ else
echo "protected-mode yes" >> "${VALKEY_CONF}"
fi
# Disable unix socket lines to prevent service start issues
sed -ri 's|^[#[:space:]]*unixsocket .*|# unixsocket disabled by install script|g' "${VALKEY_CONF}" || true
sed -ri 's|^[#[:space:]]*unixsocketperm .*|# unixsocketperm disabled by install script|g' "${VALKEY_CONF}" || true
@ -350,10 +392,23 @@ if [[ "${ENABLE_SMB_MOUNT}" == "true" ]]; then
chown "${APACHE_RUN_USER}:${APACHE_RUN_GROUP}" "${SMB_MOUNTPOINT}" || true
fi
log "Verifying PHP modules before install"
php-legacy -m | grep -qi '^gd$' || die "PHP GD module is still not loaded."
php-legacy -m | grep -qi '^mysqli$' || die "PHP mysqli module is still not loaded."
php-legacy -m | grep -qi '^PDO$' || die "PHP PDO core is still not loaded."
php-legacy -m | grep -qi '^pdo_mysql$' || die "PHP pdo_mysql module is still not loaded."
php-legacy -m | grep -qi '^intl$' || die "PHP intl module is still not loaded."
php-legacy -m | grep -qi '^redis$' || die "PHP redis module is still not loaded."
php-legacy -m | grep -qi '^apcu$' || die "PHP apcu module is still not loaded."
systemctl restart php-fpm-legacy
systemctl restart httpd
log "Installing Nextcloud non-interactively"
if [[ ! -f "${NEXTCLOUD_CONFIG_DIR}/config/config.php" ]] || grep -q "CAN_INSTALL" "${NEXTCLOUD_CONFIG_DIR}/config/config.php" 2>/dev/null; then
sudo -u "${APACHE_RUN_USER}" php-legacy "${NEXTCLOUD_WEBROOT}/occ" maintenance:install \
sudo -u "${APACHE_RUN_USER}" /usr/bin/php-legacy /usr/bin/occ maintenance:install \
--database "mysql" \
--database-name "${DB_NAME}" \
--database-user "${DB_USER}" \
@ -385,6 +440,7 @@ occ config:system:set maintenance_window_start --type=integer --value=1 || true
log "Enabling cron"
systemctl enable --now nextcloud-cron.service || true
systemctl enable --now nextcloud-cron.timer || true
log "Final service restarts"