proper handling of rwebdav socket permissions

This commit is contained in:
William 2025-07-12 16:35:02 -03:00
parent d79fbeb419
commit dc515dd29f

View file

@ -189,25 +189,17 @@ in
}; };
systemd.services = { systemd.services = {
# TODO: remove when bug fix
# serokell/deploy-rs/issues/57
# NixOS/nixpkgs/issues/180175
# Workaround for upstream bug in NetworkManager-wait-online.service
NetworkManager-wait-online.enable = false;
rclone-webdav = { rclone-webdav = {
description = "RClone WebDAV Server"; description = "RClone WebDAV Server";
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
Type = "exec"; Type = "exec";
User = "user"; User = "user";
Group = "users"; Group = "nginx";
ExecStart = "${rclone-webdav-start}"; ExecStart = "${rclone-webdav-start}";
Restart = "always"; Restart = "always";
RestartSec = "10"; RestartSec = "10";
# Security settings
NoNewPrivileges = true; NoNewPrivileges = true;
PrivateTmp = true; PrivateTmp = true;
ProtectSystem = "strict"; ProtectSystem = "strict";
@ -216,24 +208,20 @@ in
"/data/webdav" "/data/webdav"
"/run" "/run"
]; ];
# Create runtime directory for socket
RuntimeDirectory = "rclone-webdav"; RuntimeDirectory = "rclone-webdav";
RuntimeDirectoryMode = "0750"; RuntimeDirectoryMode = "0750";
UMask = "0002"; UMask = "0002";
}; };
# Ensure the user exists
preStart = '' preStart = ''
# Create webdav directory if it doesn't exist
mkdir -p /data/webdav mkdir -p /data/webdav
chown user:users /data/webdav chown user:users /data/webdav
chmod 755 /data/webdav chmod 755 /data/webdav
# Ensure nginx can access the socket directory
mkdir -p /run/rclone-webdav
chown user:nginx /run/rclone-webdav
chmod 750 /run/rclone-webdav
''; '';
}; };
# TODO: remove when bug fix
# serokell/deploy-rs/issues/57
# NixOS/nixpkgs/issues/180175
# Workaround for upstream bug in NetworkManager-wait-online.service
NetworkManager-wait-online.enable = false;
}; };
} }