Current Behavior
The documented RUSTIC_REPOSITORY_BASE_PATH environment variable does
not affect local Rustic backup repositories.
RusticConfigController reads:
backups.disks.rustic_local.repository_base_path
However, config/backups.php does not define a rustic_local disk, so the
controller always uses the fallback:
/var/lib/pterodactyl/rustic-repos
In my installation, this caused approximately 76 GB of backups to fill
the node OS disk until there was nothing left, even though RUSTIC_REPOSITORY_BASE_PATH pointed to an
NFS mount.
Adding the following block fixes the API output and backups then write
successfully to NFS:
'rustic_local' => [
'adapter' => 'rustic_local',
'repository_base_path' => env(
'RUSTIC_REPOSITORY_BASE_PATH',
'/var/lib/pterodactyl/rustic-repos'
),
],
Expected Behavior
Setting:
RUSTIC_REPOSITORY_BASE_PATH=/mnt/PteroFiles/Backups/rustic-repos (this is my directory in this case)
Should cause the remote Rustic configuration endpoint to return:
/mnt/PteroFiles/Backups/rustic-repos/
Elytra should then create and update each server’s rustic_local repository at that configured path instead of using the default local OS path:
/var/lib/pterodactyl/rustic-repos/
Steps to Reproduce
-
deploy hydrodactyl using the current docker image
-
configure a writable backup location that is mounted on the elytra node, for example, and in my case: /mnt/PteroFiles/Backups/rustic-repos
-
add the documented environment variable to the panel service:
environment:
RUSTIC_REPOSITORY_BASE_PATH: /mnt/PteroFiles/Backups/rustic-repos
-
recreate the panel container so the environment variable is applied:
docker compose up -d --force-recreate --no-deps panel
-
verify that the variable is present inside the panel container:
docker exec
printenv RUSTIC_REPOSITORY_BASE_PATH
should be, in my case:
output:
/mnt/PteroFiles/Backups/rustic-repos
-
clear the laravel configuration cache:
docker exec php artisan config:clear
-
query the remote Rustic configuration endpoint for a server:
curl -fsS
-H "Accept: application/vnd.pterodactyl.v1+json"
-H "Authorization: Bearer ."
"https:///api/remote/servers//rustic-config?type=local"
-
observe that the response still contains the default OS path:
{
"repository_path": "/var/lib/pterodactyl/rustic-repos/"
}
-
create a rustic_local backup through the panel
-
observe that elytra writes the actual rustic repository to:
/var/lib/pterodactyl/rustic-repos/
instead of the configured path.
-
inspect the installed configuration and controller:
grep -Rns "repository_base_path"
/app/app/Http/Controllers/Api/Remote
/app/config
RusticConfigController reads:
config(
'backups.disks.rustic_local.repository_base_path',
'/var/lib/pterodactyl/rustic-repos'
)
however, the shipped config/backups.php does not define a
backups.disks.rustic_local entry
- add the missing configuration block to config/backups.php:
'rustic_local' => [
'adapter' => 'rustic_local',
'repository_base_path' => env(
'RUSTIC_REPOSITORY_BASE_PATH',
'/var/lib/pterodactyl/rustic-repos'
),
],
-
clear the configuration cache and repeat the API request
-
the endpoint now correctly returns:
/mnt/PteroFiles/Backups/rustic-repos/
-
creating another backup then writes the repository to the configured
NFS path successfully
Panel Version
number system invalid as "canary", Commit : 4056b9f
Panel Installation Type
Daemon Version
1.4.0
Daemon Installation Type
Games and/or Eggs Affected
Minecraft (Neoforge)
Docker Image
No response
Error Logs
Is there an existing issue for this?
Current Behavior
The documented RUSTIC_REPOSITORY_BASE_PATH environment variable does
not affect local Rustic backup repositories.
RusticConfigController reads:
backups.disks.rustic_local.repository_base_path
However, config/backups.php does not define a rustic_local disk, so the
controller always uses the fallback:
/var/lib/pterodactyl/rustic-repos
In my installation, this caused approximately 76 GB of backups to fill
the node OS disk until there was nothing left, even though RUSTIC_REPOSITORY_BASE_PATH pointed to an
NFS mount.
Adding the following block fixes the API output and backups then write
successfully to NFS:
'rustic_local' => [
'adapter' => 'rustic_local',
'repository_base_path' => env(
'RUSTIC_REPOSITORY_BASE_PATH',
'/var/lib/pterodactyl/rustic-repos'
),
],
Expected Behavior
Setting:
RUSTIC_REPOSITORY_BASE_PATH=/mnt/PteroFiles/Backups/rustic-repos (this is my directory in this case)
Should cause the remote Rustic configuration endpoint to return:
/mnt/PteroFiles/Backups/rustic-repos/
Elytra should then create and update each server’s rustic_local repository at that configured path instead of using the default local OS path:
/var/lib/pterodactyl/rustic-repos/
Steps to Reproduce
deploy hydrodactyl using the current docker image
configure a writable backup location that is mounted on the elytra node, for example, and in my case: /mnt/PteroFiles/Backups/rustic-repos
add the documented environment variable to the panel service:
environment:
RUSTIC_REPOSITORY_BASE_PATH: /mnt/PteroFiles/Backups/rustic-repos
recreate the panel container so the environment variable is applied:
docker compose up -d --force-recreate --no-deps panel
verify that the variable is present inside the panel container:
docker exec
printenv RUSTIC_REPOSITORY_BASE_PATH
should be, in my case:
output:
/mnt/PteroFiles/Backups/rustic-repos
clear the laravel configuration cache:
docker exec php artisan config:clear
query the remote Rustic configuration endpoint for a server:
curl -fsS
-H "Accept: application/vnd.pterodactyl.v1+json"
-H "Authorization: Bearer ."
"https:///api/remote/servers//rustic-config?type=local"
observe that the response still contains the default OS path:
{
"repository_path": "/var/lib/pterodactyl/rustic-repos/"
}
create a rustic_local backup through the panel
observe that elytra writes the actual rustic repository to:
/var/lib/pterodactyl/rustic-repos/
instead of the configured path.
inspect the installed configuration and controller:
grep -Rns "repository_base_path"
/app/app/Http/Controllers/Api/Remote
/app/config
RusticConfigController reads:
config(
'backups.disks.rustic_local.repository_base_path',
'/var/lib/pterodactyl/rustic-repos'
)
however, the shipped config/backups.php does not define a
backups.disks.rustic_local entry
'rustic_local' => [
'adapter' => 'rustic_local',
'repository_base_path' => env(
'RUSTIC_REPOSITORY_BASE_PATH',
'/var/lib/pterodactyl/rustic-repos'
),
],
clear the configuration cache and repeat the API request
the endpoint now correctly returns:
/mnt/PteroFiles/Backups/rustic-repos/
creating another backup then writes the repository to the configured
NFS path successfully
Panel Version
number system invalid as "canary", Commit : 4056b9f
Panel Installation Type
Daemon Version
1.4.0
Daemon Installation Type
Games and/or Eggs Affected
Minecraft (Neoforge)
Docker Image
No response
Error Logs
Is there an existing issue for this?