mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2025-04-01 23:57:05 +00:00
Merge 6adc494e49
into 3efd4257b5
This commit is contained in:
commit
dae948230d
@ -7,6 +7,6 @@
|
|||||||
## your own --- please do not ask for help from us.
|
## your own --- please do not ask for help from us.
|
||||||
|
|
||||||
upstream php-fpm {
|
upstream php-fpm {
|
||||||
server unix:/var/run/php/php8.0-fpm.sock;
|
server unix:/var/run/php/php{{phpver}}-fpm.sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ from datetime import date
|
|||||||
import rtyaml
|
import rtyaml
|
||||||
from exclusiveprocess import Lock
|
from exclusiveprocess import Lock
|
||||||
|
|
||||||
from utils import load_environment, shell, wait_for_service
|
from utils import load_environment, shell, wait_for_service, get_php_version
|
||||||
|
|
||||||
def backup_status(env):
|
def backup_status(env):
|
||||||
# If backups are disabled, return no status.
|
# If backups are disabled, return no status.
|
||||||
@ -266,6 +266,7 @@ def get_target_type(config):
|
|||||||
|
|
||||||
def perform_backup(full_backup):
|
def perform_backup(full_backup):
|
||||||
env = load_environment()
|
env = load_environment()
|
||||||
|
php_fpm = f"php{get_php_version()}-fpm"
|
||||||
|
|
||||||
# Create an global exclusive lock so that the backup script
|
# Create an global exclusive lock so that the backup script
|
||||||
# cannot be run more than one.
|
# cannot be run more than one.
|
||||||
@ -301,7 +302,7 @@ def perform_backup(full_backup):
|
|||||||
if quit:
|
if quit:
|
||||||
sys.exit(code)
|
sys.exit(code)
|
||||||
|
|
||||||
service_command("php8.0-fpm", "stop", quit=True)
|
service_command(php_fpm, "stop", quit=True)
|
||||||
service_command("postfix", "stop", quit=True)
|
service_command("postfix", "stop", quit=True)
|
||||||
service_command("dovecot", "stop", quit=True)
|
service_command("dovecot", "stop", quit=True)
|
||||||
service_command("postgrey", "stop", quit=True)
|
service_command("postgrey", "stop", quit=True)
|
||||||
@ -339,7 +340,7 @@ def perform_backup(full_backup):
|
|||||||
service_command("postgrey", "start", quit=False)
|
service_command("postgrey", "start", quit=False)
|
||||||
service_command("dovecot", "start", quit=False)
|
service_command("dovecot", "start", quit=False)
|
||||||
service_command("postfix", "start", quit=False)
|
service_command("postfix", "start", quit=False)
|
||||||
service_command("php8.0-fpm", "start", quit=False)
|
service_command(php_fpm, "start", quit=False)
|
||||||
|
|
||||||
# Remove old backups. This deletes all backup data no longer needed
|
# Remove old backups. This deletes all backup data no longer needed
|
||||||
# from more than 3 days ago.
|
# from more than 3 days ago.
|
||||||
|
@ -179,6 +179,11 @@ def wait_for_service(port, public, env, timeout):
|
|||||||
return False
|
return False
|
||||||
time.sleep(min(timeout/4, 1))
|
time.sleep(min(timeout/4, 1))
|
||||||
|
|
||||||
|
def get_php_version():
|
||||||
|
# Gets the version of PHP used by Mail-in-a-Box
|
||||||
|
# To modify PHP version, also update variable PHP_VER in functions.sh
|
||||||
|
return "8.1"
|
||||||
|
|
||||||
def get_ssh_port():
|
def get_ssh_port():
|
||||||
port_value = get_ssh_config_value("port")
|
port_value = get_ssh_config_value("port")
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import os.path, re, rtyaml
|
|||||||
from mailconfig import get_mail_domains
|
from mailconfig import get_mail_domains
|
||||||
from dns_update import get_custom_dns_config, get_dns_zones
|
from dns_update import get_custom_dns_config, get_dns_zones
|
||||||
from ssl_certificates import get_ssl_certificates, get_domain_ssl_files, check_certificate
|
from ssl_certificates import get_ssl_certificates, get_domain_ssl_files, check_certificate
|
||||||
from utils import shell, safe_domain_name, sort_domains
|
from utils import shell, safe_domain_name, sort_domains, get_php_version
|
||||||
|
|
||||||
def get_web_domains(env, include_www_redirects=True, include_auto=True, exclude_dns_elsewhere=True):
|
def get_web_domains(env, include_www_redirects=True, include_auto=True, exclude_dns_elsewhere=True):
|
||||||
# What domains should we serve HTTP(S) for?
|
# What domains should we serve HTTP(S) for?
|
||||||
@ -82,6 +82,8 @@ def do_web_update(env):
|
|||||||
|
|
||||||
# Build an nginx configuration file.
|
# Build an nginx configuration file.
|
||||||
nginx_conf = read_conf("nginx-top.conf")
|
nginx_conf = read_conf("nginx-top.conf")
|
||||||
|
# Hardcode php version in the nginx configuration file
|
||||||
|
nginx_conf = re.sub("{{phpver}}", get_php_version(), nginx_conf)
|
||||||
|
|
||||||
# Load the templates.
|
# Load the templates.
|
||||||
template0 = read_conf("nginx.conf")
|
template0 = read_conf("nginx.conf")
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
# -o pipefail: don't ignore errors in the non-last command in a pipeline
|
# -o pipefail: don't ignore errors in the non-last command in a pipeline
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
PHP_VER=8.0
|
# To modify PHP version, also update method get_php_version() in utils.py
|
||||||
|
PHP_VER=8.1
|
||||||
|
|
||||||
function hide_output {
|
function hide_output {
|
||||||
# This function hides the output of a command unless the command fails
|
# This function hides the output of a command unless the command fails
|
||||||
|
@ -62,12 +62,15 @@ user_external_hash=280d24eb2a6cb56b4590af8847f925c28d8d853e
|
|||||||
# 5.3 You still can create, edit and delete users
|
# 5.3 You still can create, edit and delete users
|
||||||
# 5.4 Go to Administration > Logs and ensure no new errors are shown
|
# 5.4 Go to Administration > Logs and ensure no new errors are shown
|
||||||
|
|
||||||
|
# Set a local variable for the PHP version
|
||||||
|
NC_PHP_VER=$PHP_VER
|
||||||
|
|
||||||
# Clear prior packages and install dependencies from apt.
|
# Clear prior packages and install dependencies from apt.
|
||||||
apt-get purge -qq -y owncloud* # we used to use the package manager
|
apt-get purge -qq -y owncloud* # we used to use the package manager
|
||||||
|
|
||||||
apt_install curl php"${PHP_VER}" php"${PHP_VER}"-fpm \
|
apt_install curl php"${PHP_VER}" php"${PHP_VER}"-fpm \
|
||||||
php"${PHP_VER}"-cli php"${PHP_VER}"-sqlite3 php"${PHP_VER}"-gd php"${PHP_VER}"-imap php"${PHP_VER}"-curl \
|
php"${PHP_VER}"-cli php"${PHP_VER}"-sqlite3 php"${PHP_VER}"-gd php"${PHP_VER}"-imap php"${PHP_VER}"-curl \
|
||||||
php"${PHP_VER}"-dev php"${PHP_VER}"-gd php"${PHP_VER}"-xml php"${PHP_VER}"-mbstring php"${PHP_VER}"-zip php"${PHP_VER}"-apcu \
|
php"${PHP_VER}"-dev php"${PHP_VER}"-xml php"${PHP_VER}"-mbstring php"${PHP_VER}"-zip php"${PHP_VER}"-apcu \
|
||||||
php"${PHP_VER}"-intl php"${PHP_VER}"-imagick php"${PHP_VER}"-gmp php"${PHP_VER}"-bcmath
|
php"${PHP_VER}"-intl php"${PHP_VER}"-imagick php"${PHP_VER}"-gmp php"${PHP_VER}"-bcmath
|
||||||
|
|
||||||
# Enable APC before Nextcloud tools are run.
|
# Enable APC before Nextcloud tools are run.
|
||||||
@ -138,23 +141,23 @@ InstallNextcloud() {
|
|||||||
if [ -e "$STORAGE_ROOT/owncloud/owncloud.db" ]; then
|
if [ -e "$STORAGE_ROOT/owncloud/owncloud.db" ]; then
|
||||||
# ownCloud 8.1.1 broke upgrades. It may fail on the first attempt, but
|
# ownCloud 8.1.1 broke upgrades. It may fail on the first attempt, but
|
||||||
# that can be OK.
|
# that can be OK.
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ upgrade
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ upgrade
|
||||||
E=$?
|
E=$?
|
||||||
if [ $E -ne 0 ] && [ $E -ne 3 ]; then
|
if [ $E -ne 0 ] && [ $E -ne 3 ]; then
|
||||||
echo "Trying ownCloud upgrade again to work around ownCloud upgrade bug..."
|
echo "Trying ownCloud upgrade again to work around ownCloud upgrade bug..."
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ upgrade
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ upgrade
|
||||||
E=$?
|
E=$?
|
||||||
if [ $E -ne 0 ] && [ $E -ne 3 ]; then exit 1; fi
|
if [ $E -ne 0 ] && [ $E -ne 3 ]; then exit 1; fi
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ maintenance:mode --off
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ maintenance:mode --off
|
||||||
echo "...which seemed to work."
|
echo "...which seemed to work."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add missing indices. NextCloud didn't include this in the normal upgrade because it might take some time.
|
# Add missing indices. NextCloud didn't include this in the normal upgrade because it might take some time.
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ db:add-missing-indices
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ db:add-missing-indices
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ db:add-missing-primary-keys
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ db:add-missing-primary-keys
|
||||||
|
|
||||||
# Run conversion to BigInt identifiers, this process may take some time on large tables.
|
# Run conversion to BigInt identifiers, this process may take some time on large tables.
|
||||||
sudo -u www-data php"$PHP_VER" /usr/local/lib/owncloud/occ db:convert-filecache-bigint --no-interaction
|
sudo -u www-data php"$NC_PHP_VER" /usr/local/lib/owncloud/occ db:convert-filecache-bigint --no-interaction
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,10 +217,27 @@ if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextc
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Hint: whenever you bump, remember this:
|
# Install php 8.0 for older versions of nextcloud that don't support 8.1
|
||||||
# - Run a server with the previous version
|
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^2[0123] ]]; then
|
||||||
# - On a new if-else block, copy the versions/hashes from the previous version
|
# Version 20 is the latest version from the 18.04 version of miab. To upgrade to version 21, install php8.0. This is
|
||||||
# - Run sudo ./setup/start.sh on the new machine. Upon completion, test its basic functionalities.
|
# not supported by version 20, but that does not matter, as the InstallNextcloud function only runs the version 21 code.
|
||||||
|
# We need php 8.0 for nextcloud 21-23, as php 8.1 is supported starting nextcloud 24
|
||||||
|
|
||||||
|
# Prevent installation of old packages
|
||||||
|
apt-mark hold php7.0-apcu php7.1-apcu php7.2-apcu php7.3-apcu php7.4-apcu
|
||||||
|
|
||||||
|
# Install php version 8.0
|
||||||
|
apt_install php8.0 php8.0-fpm php8.0-apcu php8.0-cli php8.0-sqlite3 php8.0-gd php8.0-imap \
|
||||||
|
php8.0-curl php8.0-dev php8.0-xml php8.0-mbstring php8.0-zip
|
||||||
|
|
||||||
|
# set php version 8.0 as default
|
||||||
|
NC_PHP_VER=8.0
|
||||||
|
|
||||||
|
# Make sure apc is enabled
|
||||||
|
tools/editconf.py /etc/php/$NC_PHP_VER/mods-available/apcu.ini -c ';' \
|
||||||
|
apc.enabled=1 \
|
||||||
|
apc.enable_cli=1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^20 ]]; then
|
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^20 ]]; then
|
||||||
InstallNextcloud 21.0.7 f5c7079c5b56ce1e301c6a27c0d975d608bb01c9 4.0.7 45e7cf4bfe99cd8d03625cf9e5a1bb2e90549136 3.0.4 d0284b68135777ec9ca713c307216165b294d0fe
|
InstallNextcloud 21.0.7 f5c7079c5b56ce1e301c6a27c0d975d608bb01c9 4.0.7 45e7cf4bfe99cd8d03625cf9e5a1bb2e90549136 3.0.4 d0284b68135777ec9ca713c307216165b294d0fe
|
||||||
@ -235,10 +255,31 @@ if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextc
|
|||||||
InstallNextcloud 24.0.12 7aa5d61632c1ccf4ca3ff00fb6b295d318c05599 4.1.0 697f6b4a664e928d72414ea2731cb2c9d1dc3077 3.2.2 ce4030ab57f523f33d5396c6a81396d440756f5f 3.0.0 0df781b261f55bbde73d8c92da3f99397000972f
|
InstallNextcloud 24.0.12 7aa5d61632c1ccf4ca3ff00fb6b295d318c05599 4.1.0 697f6b4a664e928d72414ea2731cb2c9d1dc3077 3.2.2 ce4030ab57f523f33d5396c6a81396d440756f5f 3.0.0 0df781b261f55bbde73d8c92da3f99397000972f
|
||||||
CURRENT_NEXTCLOUD_VER="24.0.12"
|
CURRENT_NEXTCLOUD_VER="24.0.12"
|
||||||
fi
|
fi
|
||||||
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^24 ]]; then
|
|
||||||
|
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^2[456] ]]; then
|
||||||
|
# From nextcloud 24 and higher, php8.1 is supported, so we can now remove the php8.0 ppa and packages
|
||||||
|
|
||||||
|
# Reset the default php version used
|
||||||
|
NC_PHP_VER=8.1
|
||||||
|
|
||||||
|
# Remove older php version
|
||||||
|
apt-get purge -qq -y php8.0 php8.0-fpm php8.0-apcu php8.0-cli php8.0-sqlite3 php8.0-gd \
|
||||||
|
php8.0-imap php8.0-curl php8.0-dev php8.0-xml php8.0-mbstring php8.0-zip \
|
||||||
|
php8.0-common php8.0-opcache php8.0-readline
|
||||||
|
|
||||||
|
# Unhold packages
|
||||||
|
apt-mark unhold php7.0-apcu php7.1-apcu php7.2-apcu php7.3-apcu php7.4-apcu
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^24 ]]; then
|
||||||
InstallNextcloud 25.0.7 a5a565c916355005c7b408dd41a1e53505e1a080 5.3.0 4b0a6666374e3b55cfd2ae9b72e1d458b87d4c8c 4.4.2 21a42e15806adc9b2618760ef94f1797ef399e2f 3.2.0 a494073dcdecbbbc79a9c77f72524ac9994d2eec
|
InstallNextcloud 25.0.7 a5a565c916355005c7b408dd41a1e53505e1a080 5.3.0 4b0a6666374e3b55cfd2ae9b72e1d458b87d4c8c 4.4.2 21a42e15806adc9b2618760ef94f1797ef399e2f 3.2.0 a494073dcdecbbbc79a9c77f72524ac9994d2eec
|
||||||
CURRENT_NEXTCLOUD_VER="25.0.7"
|
CURRENT_NEXTCLOUD_VER="25.0.7"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Hint: whenever you bump, remember this:
|
||||||
|
# - Run a server with the previous version
|
||||||
|
# - On a new if-else block, copy the versions/hashes from the previous version
|
||||||
|
# - Run sudo ./setup/start.sh on the new machine. Upon completion, test its basic functionalities.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
InstallNextcloud $nextcloud_ver $nextcloud_hash $contacts_ver $contacts_hash $calendar_ver $calendar_hash $user_external_ver $user_external_hash
|
InstallNextcloud $nextcloud_ver $nextcloud_hash $contacts_ver $contacts_hash $calendar_ver $calendar_hash $user_external_ver $user_external_hash
|
||||||
|
@ -41,18 +41,18 @@ if [ $needs_update == 1 ]; then
|
|||||||
mv /tmp/z-push/*/src /usr/local/lib/z-push
|
mv /tmp/z-push/*/src /usr/local/lib/z-push
|
||||||
rm -rf /tmp/z-push.zip /tmp/z-push
|
rm -rf /tmp/z-push.zip /tmp/z-push
|
||||||
|
|
||||||
# Create admin and top scripts with PHP_VER
|
|
||||||
rm -f /usr/sbin/z-push-{admin,top}
|
|
||||||
echo '#!/bin/bash' > /usr/sbin/z-push-admin
|
|
||||||
echo php"$PHP_VER" /usr/local/lib/z-push/z-push-admin.php '"$@"' >> /usr/sbin/z-push-admin
|
|
||||||
chmod 755 /usr/sbin/z-push-admin
|
|
||||||
echo '#!/bin/bash' > /usr/sbin/z-push-top
|
|
||||||
echo php"$PHP_VER" /usr/local/lib/z-push/z-push-top.php '"$@"' >> /usr/sbin/z-push-top
|
|
||||||
chmod 755 /usr/sbin/z-push-top
|
|
||||||
|
|
||||||
echo $VERSION > /usr/local/lib/z-push/version
|
echo $VERSION > /usr/local/lib/z-push/version
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create admin and top scripts with PHP_VER
|
||||||
|
rm -f /usr/sbin/z-push-{admin,top}
|
||||||
|
echo '#!/bin/bash' > /usr/sbin/z-push-admin
|
||||||
|
echo php"$PHP_VER" /usr/local/lib/z-push/z-push-admin.php '"$@"' >> /usr/sbin/z-push-admin
|
||||||
|
chmod 755 /usr/sbin/z-push-admin
|
||||||
|
echo '#!/bin/bash' > /usr/sbin/z-push-top
|
||||||
|
echo php"$PHP_VER" /usr/local/lib/z-push/z-push-top.php '"$@"' >> /usr/sbin/z-push-top
|
||||||
|
chmod 755 /usr/sbin/z-push-top
|
||||||
|
|
||||||
# Configure default config.
|
# Configure default config.
|
||||||
sed -i "s^define('TIMEZONE', .*^define('TIMEZONE', '$(cat /etc/timezone)');^" /usr/local/lib/z-push/config.php
|
sed -i "s^define('TIMEZONE', .*^define('TIMEZONE', '$(cat /etc/timezone)');^" /usr/local/lib/z-push/config.php
|
||||||
sed -i "s/define('BACKEND_PROVIDER', .*/define('BACKEND_PROVIDER', 'BackendCombined');/" /usr/local/lib/z-push/config.php
|
sed -i "s/define('BACKEND_PROVIDER', .*/define('BACKEND_PROVIDER', 'BackendCombined');/" /usr/local/lib/z-push/config.php
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This script will restore the backup made during an installation
|
# This script will restore the backup made during an installation
|
||||||
source /etc/mailinabox.conf # load global vars
|
source /etc/mailinabox.conf # load global vars
|
||||||
|
source ./setup/functions.sh
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
echo "Usage: owncloud-restore.sh <backup directory>"
|
echo "Usage: owncloud-restore.sh <backup directory>"
|
||||||
@ -26,7 +27,7 @@ if [ ! -f "$1/config.php" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Restoring backup from $1"
|
echo "Restoring backup from $1"
|
||||||
service php8.0-fpm stop
|
service "php$PHP_VER-fpm" stop
|
||||||
|
|
||||||
# remove the current ownCloud/Nextcloud installation
|
# remove the current ownCloud/Nextcloud installation
|
||||||
rm -rf /usr/local/lib/owncloud/
|
rm -rf /usr/local/lib/owncloud/
|
||||||
@ -45,5 +46,5 @@ chown www-data:www-data "$STORAGE_ROOT/owncloud/config.php"
|
|||||||
|
|
||||||
sudo -u www-data "php$PHP_VER" /usr/local/lib/owncloud/occ maintenance:mode --off
|
sudo -u www-data "php$PHP_VER" /usr/local/lib/owncloud/occ maintenance:mode --off
|
||||||
|
|
||||||
service php8.0-fpm start
|
service "php$PHP_VER-fpm" start
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
@ -7,8 +7,9 @@
|
|||||||
# purpopses only. After this point you are on your own.
|
# purpopses only. After this point you are on your own.
|
||||||
|
|
||||||
source /etc/mailinabox.conf # load global vars
|
source /etc/mailinabox.conf # load global vars
|
||||||
|
source ./setup/functions.sh
|
||||||
|
|
||||||
ADMIN=$(./mail.py user admins | head -n 1)
|
ADMIN=$(./management/cli.py user admins | head -n 1)
|
||||||
test -z "$1" || ADMIN=$1
|
test -z "$1" || ADMIN=$1
|
||||||
|
|
||||||
echo "I am going to unlock admin features for $ADMIN."
|
echo "I am going to unlock admin features for $ADMIN."
|
||||||
|
Loading…
Reference in New Issue
Block a user