mirror of
https://github.com/nextcloud/all-in-one.git
synced 2025-12-20 06:26:57 +00:00
Merge pull request #326 from nextcloud/enh/271/allow-to-change-datadir
allow to change the location of Nextclouds datadir
This commit is contained in:
commit
d170feb1e7
5 changed files with 65 additions and 2 deletions
|
|
@ -72,6 +72,19 @@ elif ! docker volume ls | grep -q "nextcloud_aio_mastercontainer"; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for other options
|
# Check for other options
|
||||||
|
if [ -n "$NEXTCLOUD_DATADIR" ]; then
|
||||||
|
if ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/mnt/" \
|
||||||
|
&& ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/media/"
|
||||||
|
then
|
||||||
|
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
|
||||||
|
The string must start with '/mnt/' or '/media/'. E.g. '/mnt/ncdata'"
|
||||||
|
exit 1
|
||||||
|
elif [ "$NEXTCLOUD_DATADIR" = "/mnt/" ] || [ "$NEXTCLOUD_DATADIR" = "/media/" ]; then
|
||||||
|
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
|
||||||
|
The string must start with '/mnt/' or '/media/' and not be equal to these."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if [ -n "$NEXTCLOUD_MOUNT" ]; then
|
if [ -n "$NEXTCLOUD_MOUNT" ]; then
|
||||||
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/" \
|
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/" \
|
||||||
&& ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/media/" \
|
&& ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/media/" \
|
||||||
|
|
@ -85,6 +98,12 @@ The string must be equal to/start with '/mnt/' or '/media/' or be equal to '/var
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
|
||||||
|
if [ "$NEXTCLOUD_DATADIR" = "$NEXTCLOUD_MOUNT" ]; then
|
||||||
|
echo "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if [ -n "$APACHE_PORT" ]; then
|
if [ -n "$APACHE_PORT" ]; then
|
||||||
if ! check_if_number "$APACHE_PORT"; then
|
if ! check_if_number "$APACHE_PORT"; then
|
||||||
echo "You provided an Apache port but did not only use numbers"
|
echo "You provided an Apache port but did not only use numbers"
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,15 @@ redis.session.lock_retries = -1
|
||||||
redis.session.lock_wait_time = 10000
|
redis.session.lock_wait_time = 10000
|
||||||
REDIS_CONF
|
REDIS_CONF
|
||||||
|
|
||||||
|
# Check permissions in ncdata
|
||||||
|
touch "/mnt/ncdata/this-is-a-test-file"
|
||||||
|
if ! [ -f "/mnt/ncdata/this-is-a-test-file" ]; then
|
||||||
|
echo "The www-data user doesn't seem to have access rights in /mnt/ncdata.
|
||||||
|
Did you maybe change the datadir and did forget to apply the correct permissions?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm "/mnt/ncdata/this-is-a-test-file"
|
||||||
|
|
||||||
if [ -f /var/www/html/version.php ]; then
|
if [ -f /var/www/html/version.php ]; then
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||||
|
|
@ -223,6 +232,13 @@ if ! [ -f "/mnt/ncdata/skip.update" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if appdata is present
|
||||||
|
# If not, something broke (e.g. changing ncdatadir after aio was first started)
|
||||||
|
if [ -z "$(find "/mnt/ncdata/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
|
||||||
|
echo "Appdata is not present. Did you maybe change the datadir after aio was first started?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Apply one-click-instance settings
|
# Apply one-click-instance settings
|
||||||
echo "Applying one-click-instance settings..."
|
echo "Applying one-click-instance settings..."
|
||||||
php /var/www/html/occ config:system:set one-click-instance --value=true --type=bool
|
php /var/www/html/occ config:system:set one-click-instance --value=true --type=bool
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@
|
||||||
"writeable": true
|
"writeable": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud_aio_nextcloud_data",
|
"name": "%NEXTCLOUD_DATADIR%",
|
||||||
"location": "/mnt/ncdata",
|
"location": "/mnt/ncdata",
|
||||||
"writeable": true
|
"writeable": true
|
||||||
},
|
},
|
||||||
|
|
@ -215,7 +215,7 @@
|
||||||
"writeable": true
|
"writeable": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud_aio_nextcloud_data",
|
"name": "%NEXTCLOUD_DATADIR%",
|
||||||
"location": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
|
"location": "/nextcloud_aio_volumes/nextcloud_aio_nextcloud_data",
|
||||||
"writeable": true
|
"writeable": true
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,11 @@ class ContainerDefinitionFetcher
|
||||||
if($value['name'] === '') {
|
if($value['name'] === '') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
} elseif ($value['name'] === '%NEXTCLOUD_DATADIR%') {
|
||||||
|
$value['name'] = $this->configurationManager->GetNextcloudDatadirMount();
|
||||||
|
if ($value['name'] === '') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if($value['location'] === '%NEXTCLOUD_MOUNT%') {
|
if($value['location'] === '%NEXTCLOUD_MOUNT%') {
|
||||||
$value['location'] = $this->configurationManager->GetNextcloudMount();
|
$value['location'] = $this->configurationManager->GetNextcloudMount();
|
||||||
|
|
|
||||||
|
|
@ -337,4 +337,27 @@ class ConfigurationManager
|
||||||
return $mount;
|
return $mount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function GetNextcloudDatadirMount() : string {
|
||||||
|
$mount = getenv('NEXTCLOUD_DATADIR');
|
||||||
|
if ($mount === false) {
|
||||||
|
$config = $this->GetConfig();
|
||||||
|
if (!isset($config['nextcloud_datadir']) || $config['nextcloud_datadir'] === '') {
|
||||||
|
$config['nextcloud_datadir'] = 'nextcloud_aio_nextcloud_data';
|
||||||
|
}
|
||||||
|
return $config['nextcloud_datadir'];
|
||||||
|
} else {
|
||||||
|
if(file_exists(DataConst::GetConfigFile())) {
|
||||||
|
$config = $this->GetConfig();
|
||||||
|
if (!isset($config['nextcloud_datadir'])) {
|
||||||
|
$config['nextcloud_datadir'] = '';
|
||||||
|
}
|
||||||
|
if ($mount !== $config['nextcloud_datadir']) {
|
||||||
|
$config['nextcloud_datadir'] = $mount;
|
||||||
|
$this->WriteConfig($config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $mount;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue