aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Scholten2025-10-28 10:32:59 +1000
committerSam Scholten2025-10-28 10:32:59 +1000
commitdfd7d9fa5cb11fd8af2da9394a5a5abb3230a4eb (patch)
tree176349b7e28890b4db1675022e2212b480787d50
parent73347c8ab19904377a31224ced345a7cd28886e4 (diff)
downloaddrestic-dfd7d9fa5cb11fd8af2da9394a5a5abb3230a4eb.tar.gz
drestic-dfd7d9fa5cb11fd8af2da9394a5a5abb3230a4eb.zip
fix: remove hardcoded HOME=/root from systemd templates
- Remove hardcoded HOME=/root from systemd service templates - Only set HOME explicitly for system scope in setup.sh and update.sh - This fixes rclone config lookup issue for user installations - Update sed patterns to correctly replace environment variables Resolves issue where user backups failed with rclone permission errors looking for config in /root/.rclone.conf instead of ~/.config/rclone/rclone.conf
-rwxr-xr-xsetup.sh16
-rw-r--r--systemd/restic-backup.service5
-rw-r--r--systemd/restic-check.service5
-rwxr-xr-xupdate.sh4
4 files changed, 20 insertions, 10 deletions
diff --git a/setup.sh b/setup.sh
index f667247..ed5bce5 100755
--- a/setup.sh
+++ b/setup.sh
@@ -348,15 +348,23 @@ else
fi
log "Generating systemd service file: $SYSTEMD_DIR/restic-backup.service"
+# Generate the service file with correct paths
sed -e "s|ExecStart=/path/to/be/replaced/restic_backup.sh|ExecStart=$INSTALL_DIR/restic_backup.sh|" \
- -e "s|Environment=\"HOME=/root\"|Environment=\"HOME=$HOME_PATH\"|" \
- -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$ENV_FILE\"|" \
+ -e "s|Environment=\"RESTIC_ENV_FILE=/path/to/be/replaced\"|Environment=\"RESTIC_ENV_FILE=$ENV_FILE\"|" \
systemd/restic-backup.service >"$SYSTEMD_DIR/restic-backup.service"
+# Add HOME environment variable only for system scope
+if [ "$SCOPE" == "system" ]; then
+ sed -i "/# HOME will be set by setup.sh for system scope only/a Environment=\"HOME=/root\"" "$SYSTEMD_DIR/restic-backup.service"
+fi
log "Generating systemd service file: $SYSTEMD_DIR/restic-check.service"
+# Generate the service file with correct paths
sed -e "s|ExecStart=/path/to/be/replaced/restic_check.sh|ExecStart=$INSTALL_DIR/restic_check.sh|" \
- -e "s|Environment=\"HOME=/root\"|Environment=\"HOME=$HOME_PATH\"|" \
- -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$ENV_FILE\"|" \
+ -e "s|Environment=\"RESTIC_ENV_FILE=/path/to/be/replaced\"|Environment=\"RESTIC_ENV_FILE=$ENV_FILE\"|" \
systemd/restic-check.service >"$SYSTEMD_DIR/restic-check.service"
+# Add HOME environment variable only for system scope
+if [ "$SCOPE" == "system" ]; then
+ sed -i "/# HOME will be set by setup.sh for system scope only/a Environment=\"HOME=/root\"" "$SYSTEMD_DIR/restic-check.service"
+fi
# Copy systemd timer files
log "Copying systemd timer file: $SYSTEMD_DIR/restic-backup.timer"
diff --git a/systemd/restic-backup.service b/systemd/restic-backup.service
index 0e2e411..259b5d8 100644
--- a/systemd/restic-backup.service
+++ b/systemd/restic-backup.service
@@ -7,8 +7,9 @@ After=network.target network-online.target
Type=oneshot
# ExecStart path will be replaced by setup.sh during installation
ExecStart=/path/to/be/replaced/restic_backup.sh
-# Environment variable will be set by setup.sh based on scope
-Environment="HOME=/root"
+# Environment variable for restic configuration
+Environment="RESTIC_ENV_FILE=/path/to/be/replaced"
+# HOME will be set by setup.sh for system scope only
# Memory limits to prevent OOM on VPS (allow swap for prune operations)
MemoryMax=512M
MemorySwapMax=1G
diff --git a/systemd/restic-check.service b/systemd/restic-check.service
index 0892554..78f92f8 100644
--- a/systemd/restic-check.service
+++ b/systemd/restic-check.service
@@ -7,8 +7,9 @@ After=network.target network-online.target
Type=oneshot
# ExecStart path will be replaced by setup.sh during installation
ExecStart=/path/to/be/replaced/restic_check.sh
-# Environment variable will be set by setup.sh based on scope
-Environment="HOME=/root"
+# Environment variable for restic configuration
+Environment="RESTIC_ENV_FILE=/path/to/be/replaced"
+# HOME will be set by setup.sh for system scope only
# Memory limits to prevent OOM on VPS (allow swap for safety)
MemoryMax=512M
MemorySwapMax=1G
diff --git a/update.sh b/update.sh
index 34231eb..c342539 100755
--- a/update.sh
+++ b/update.sh
@@ -113,10 +113,10 @@ update_services() {
# Generate service files with correct paths (like setup.sh does)
sed -e "s|ExecStart=/path/to/be/replaced/restic_backup.sh|ExecStart=$install_dir/restic_backup.sh|" \
- -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \
+ -e "s|Environment=\"RESTIC_ENV_FILE=/path/to/be/replaced\"|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \
systemd/restic-backup.service >"$systemd_dir/restic-backup.service"
sed -e "s|ExecStart=/path/to/be/replaced/restic_check.sh|ExecStart=$install_dir/restic_check.sh|" \
- -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \
+ -e "s|Environment=\"RESTIC_ENV_FILE=/path/to/be/replaced\"|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \
systemd/restic-check.service >"$systemd_dir/restic-check.service"
# Copy timer files directly