nixfiles/hosts/hetzner-arm/containers/storage/profiles/rcloneServe.nix

93 lines
2.3 KiB
Nix

{config, ...}: let
inherit (config.services.secrets) secrets;
ports = import ../data/ports.nix;
in {
systemd.tmpfiles.rules = [
"d /caches - storage storage"
"d /caches/main_webdav_serve - storage storage"
"d /caches/media_webdav_serve - storage storage"
];
services.rclone-serve = {
enable = true;
remotes = map (remote:
{
user = "storage";
}
// remote) [
{
id = "main";
remote = "Storage:";
type = "webdav";
extraArgs = [
"--addr=0.0.0.0:${toString ports.webdav_main}"
"--htpasswd=${secrets.webdav_main_htpasswd.path}"
"--baseurl=/Main/"
"--cache-dir=/caches/main_webdav_serve"
"--vfs-cache-mode=full"
];
}
{
id = "music-ro";
remote = "Storage:Music";
type = "webdav";
extraArgs = [
"--addr=0.0.0.0:${toString ports.webdav_music_ro}"
"--read-only"
"--baseurl=/MusicRO/"
];
}
{
id = "uploads";
remote = "Storage:Uploads";
type = "webdav";
extraArgs = [
"--addr=0.0.0.0:${toString ports.webdav_uploads}"
"--htpasswd=${secrets.webdav_uploads_htpasswd.path}"
"--baseurl=/Uploads/"
];
}
{
id = "notes";
remote = "Notes:";
type = "webdav";
extraArgs = [
"--addr=0.0.0.0:${toString ports.webdav_notes}"
"--htpasswd=${secrets.webdav_notes_htpasswd.path}"
"--baseurl=/Notes/"
];
}
{
id = "music-ro";
remote = "Storage:Music";
type = "http";
extraArgs = [
"--addr=0.0.0.0:${toString ports.http_music}"
"--baseurl=/Music/"
"--read-only"
];
}
{
id = "public";
remote = "Storage:Public";
type = "http";
extraArgs = [
"--addr=0.0.0.0:${toString ports.http_public}"
"--baseurl=/Public/"
"--read-only"
];
}
{
id = "uploads-public";
remote = "Storage:Uploads/Public";
type = "http";
extraArgs = [
"--addr=0.0.0.0:${toString ports.http_uploads_public}"
"--baseurl=/Uploads/"
"--read-only"
];
}
];
};
}