Merge pull request #119 from wi11-holdsworth/113

Install send
This commit is contained in:
Will 2026-03-02 02:46:46 -08:00 committed by Will Holdsworth
commit 522c9fc253
Signed by: will-holdsworth
SSH key fingerprint: SHA256:Ykee8aymMJNAiYeeEmiwcIzkA1wgd4v8OZcWGxjq12c
3 changed files with 96 additions and 48 deletions

View file

@ -23,6 +23,7 @@
"radarr" "radarr"
"radicale" "radicale"
"readarr" "readarr"
"send"
"sonarr" "sonarr"
"vaultwarden" "vaultwarden"
# keep-sorted end # keep-sorted end

View file

@ -46,6 +46,17 @@ in
listenPort = port; listenPort = port;
allowedHosts = "homepage-dashboard.fi33.buzz"; allowedHosts = "homepage-dashboard.fi33.buzz";
services = [ services = [
{
"Public Services" = [
{
Send = {
description = "Simple, private file sharing";
icon = "send.svg";
href = "https://send.fi33.buzz/";
};
}
];
}
{ {
"Media Management" = [ "Media Management" = [
{ {
@ -146,6 +157,52 @@ in
} }
]; ];
} }
{
"Private Services" = [
{
"copyparty" = {
"description" = "Cloud file manager";
"icon" = "sh-copyparty.svg";
"href" = "https://copyparty.fi33.buzz/";
};
}
{
CouchDB = {
description = "Obsidian sync database";
icon = "couchdb.svg";
href = "https://couchdb.fi33.buzz/_utils/";
};
}
{
ntfy = {
description = "Notification service";
icon = "ntfy.svg";
href = "https://ntfy-sh.fi33.buzz/";
};
}
{
Radicale = {
description = "CalDAV/CardDAV service";
icon = "radicale.svg";
href = "https://radicale.fi33.buzz";
};
}
{
Syncthing = {
description = "Decentralised file synchronisation";
icon = "syncthing.svg";
href = "https://syncthing.fi33.buzz/";
};
}
{
Vaultwarden = {
description = "Password manager";
icon = "vaultwarden.svg";
href = "https://vaultwarden.fi33.buzz/";
};
}
];
}
{ {
"Media Streaming" = [ "Media Streaming" = [
{ {
@ -223,52 +280,7 @@ in
} }
]; ];
} }
{
Services = [
{
"copyparty" = {
"description" = "Cloud file manager";
"icon" = "sh-copyparty.svg";
"href" = "https://copyparty.fi33.buzz/";
};
}
{
CouchDB = {
description = "Obsidian sync database";
icon = "couchdb.svg";
href = "https://couchdb.fi33.buzz/_utils/";
};
}
{
ntfy = {
description = "Notification service";
icon = "ntfy.svg";
href = "https://ntfy-sh.fi33.buzz/";
};
}
{
Radicale = {
description = "CalDAV/CardDAV service";
icon = "radicale.svg";
href = "https://radicale.fi33.buzz";
};
}
{
Syncthing = {
description = "Decentralised file synchronisation";
icon = "syncthing.svg";
href = "https://syncthing.fi33.buzz/";
};
}
{
Vaultwarden = {
description = "Password manager";
icon = "vaultwarden.svg";
href = "https://vaultwarden.fi33.buzz/";
};
}
];
}
{ {
Utilities = [ Utilities = [
{ {
@ -288,14 +300,21 @@ in
headerStyle = "clean"; headerStyle = "clean";
layout = [ layout = [
{ {
"Media Streaming" = { "Public Services" = {
style = "row"; style = "row";
columns = 3; columns = 3;
useEqualHeights = true; useEqualHeights = true;
}; };
} }
{ {
Services = { "Private Services" = {
style = "row";
columns = 3;
useEqualHeights = true;
};
}
{
"Media Streaming" = {
style = "row"; style = "row";
columns = 3; columns = 3;
useEqualHeights = true; useEqualHeights = true;

View file

@ -0,0 +1,28 @@
let
port = 5020;
certloc = "/var/lib/acme/fi33.buzz";
in
{
services = {
send = {
enable = true;
inherit port;
baseUrl = "https://send.fi33.buzz";
environment = {
DEFAULT_EXPIRE_SECONDS = 360;
EXPIRE_TIMES_SECONDS = "360";
DOWNLOAD_COUNTS = "1";
MAX_DOWNLOADS = 1;
MAX_EXPIRE_SECONDS = 1024;
MAX_FILE_SIZE = 134217728;
};
};
caddy.virtualHosts."send.fi33.buzz".extraConfig = ''
reverse_proxy localhost:${toString port}
tls ${certloc}/cert.pem ${certloc}/key.pem {
protocols tls1.3
}
'';
};
}