remove soulseek from music container

This commit is contained in:
chaos 2024-05-25 14:42:52 +01:00
parent 973a9967fc
commit 8517b65845
No known key found for this signature in database
9 changed files with 1 additions and 254 deletions

View file

@ -4,6 +4,4 @@
mpd-opus-medium = 4243; mpd-opus-medium = 4243;
mpd-opus-high = 4244; mpd-opus-high = 4244;
mpd-flac = 4245; mpd-flac = 4245;
slskd = 5000;
slskd-web = 5001;
} }

View file

@ -76,8 +76,8 @@ in {
++ (with hosts.hetzner-arm.containers.music.profiles; [ ++ (with hosts.hetzner-arm.containers.music.profiles; [
mpd mpd
#musicMount #musicMount
#soulseek # takes up too much ram :(
]); ]);
home-manager.users.root.imports = with tree; [home.apps.musicutil]; home-manager.users.root.imports = with tree; [home.apps.musicutil];
networking.firewall.allowedTCPPorts = with ports; [ networking.firewall.allowedTCPPorts = with ports; [
@ -86,8 +86,6 @@ in {
mpd-opus-medium mpd-opus-medium
mpd-opus-high mpd-opus-high
mpd-flac mpd-flac
slskd
slskd-web
]; ];
home-manager.users.root.home.stateVersion = "23.05"; home-manager.users.root.home.stateVersion = "23.05";
@ -95,15 +93,6 @@ in {
}; };
}; };
services.nginx.virtualHosts."soulseek.owo.monster" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${containerIP}:${toString ports.slskd-web}";
proxyWebsockets = true;
};
};
services.nginx.virtualHosts."mpd.owo.monster" = let services.nginx.virtualHosts."mpd.owo.monster" = let
extraConfig = '' extraConfig = ''
auth_basic "Music Password"; auth_basic "Music Password";
@ -134,15 +123,10 @@ in {
sourcePort = ports.mpd; sourcePort = ports.mpd;
destination = "${containerIP}\:${toString ports.mpd}"; destination = "${containerIP}\:${toString ports.mpd}";
} }
{
sourcePort = ports.slskd;
destination = "${containerIP}\:${toString ports.slskd}";
}
]; ];
firewall.allowedTCPPorts = with ports; [ firewall.allowedTCPPorts = with ports; [
mpd mpd
slskd
]; ];
}; };
} }

View file

@ -1,5 +1,4 @@
{ {
self,
pkgs, pkgs,
config, config,
... ...
@ -7,8 +6,6 @@
inherit (pkgs) writeShellScriptBin; inherit (pkgs) writeShellScriptBin;
inherit (builtins) toFile; inherit (builtins) toFile;
backupSchedules = import "${self}/data/backupSchedules.nix";
rcloneConfig = toFile "rclone.conf" '' rcloneConfig = toFile "rclone.conf" ''
[Music] [Music]
type = webdav type = webdav

View file

@ -1,43 +0,0 @@
{
lib,
config,
...
}: let
ports = import ../data/ports.nix;
inherit (config.services.secrets) secrets;
inherit (lib.modules) mkForce;
in {
services.slskd = {
enable = true;
openFirewall = true;
environmentFile = secrets.slskd_env.path;
settings = {
remote_configuration = false;
remote_file_management = true;
soulseek = {
username = "chaoticryptidz";
description = "chaos's soulseek";
listen_port = ports.slskd;
};
web = {
port = ports.slskd-web;
authentication = {
username = "chaos";
};
};
shares.directories = [
"/Music"
];
};
nginx = {
enable = true; # I don't think this is even cheked
domainName = "soulseek.owo.monster";
};
};
services.nginx.virtualHosts."soulseek.owo.monster" = {
forceSSL = mkForce false;
enableACME = mkForce false;
};
}

View file

@ -14,8 +14,6 @@
requiredVaultPaths = [ requiredVaultPaths = [
"api-keys/data/mpd" "api-keys/data/mpd"
"api-keys/data/music-stream" "api-keys/data/music-stream"
"passwords/data/soulseek"
"passwords/data/slskd"
]; ];
packages = with pkgs; [ packages = with pkgs; [
@ -43,15 +41,6 @@
htpasswd -bc "$secretFile" "$username" "$password" 2>/dev/null htpasswd -bc "$secretFile" "$username" "$password" 2>/dev/null
''; '';
}; };
slskd_env = {
fetchScript = ''
soulseek_password=$(simple_get "/passwords/soulseek" .password)
slskd_password=$(simple_get "/passwords/slskd" .password)
echo > "$secretFile"
echo "SLSKD_SLSK_PASSWORD=$soulseek_password" >> "$secretFile"
echo "SLSKD_PASSWORD=$slskd_password" >> "$secretFile"
'';
};
}; };
}; };
} }

View file

@ -1,9 +0,0 @@
{
mpd = 6600;
mpd-opus-low = 4242;
mpd-opus-medium = 4243;
mpd-opus-high = 4244;
mpd-flac = 4245;
slskd = 5000;
slskd-web = 5001;
}

View file

@ -1,69 +0,0 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib.strings) concatStringsSep;
inherit (lib.lists) forEach;
ports = import ../data/ports.nix;
inherit (config.services.secrets) secrets;
in {
environment.systemPackages = with pkgs; [
mpc_cli
];
services.mpd = {
enable = true;
network.listenAddress = "0.0.0.0";
musicDirectory = "/Music";
credentials = [
{
passwordFile = "${secrets.mpd_control_password.path}";
permissions = ["read" "add" "control" "admin"];
}
];
extraConfig =
''
host_permissions "127.0.0.1 read,add,control,admin"
samplerate_converter "0"
metadata_to_use "title,artist"
auto_update "yes"
audio_buffer_size "4096"
replaygain "track"
audio_output_format "44100:16:2"
''
+ concatStringsSep "\n" (forEach ["low" "medium" "high"] (quality: let
bitrates = {
"low" = "64";
"medium" = "96";
"high" = "128";
};
bitrate = bitrates.${quality};
in ''
audio_output {
type "httpd"
name "HTTP Opus ${bitrate}k"
encoder "opus"
port "${toString ports."mpd-opus-${quality}"}"
bitrate "${bitrate}000"
format "44100:16:2"
always_on "yes"
tags "yes"
signal "music"
}
''))
+ ''
audio_output {
type "httpd"
name "HTTP FLAC"
encoder "flac"
port "${toString ports.mpd-flac}"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
}

View file

@ -1,43 +0,0 @@
{
lib,
config,
...
}: let
ports = import ../data/ports.nix;
inherit (config.services.secrets) secrets;
inherit (lib.modules) mkForce;
in {
services.slskd = {
enable = true;
openFirewall = true;
environmentFile = secrets.slskd_env.path;
settings = {
remote_configuration = false;
remote_file_management = true;
soulseek = {
username = "chaoticryptidz";
description = "chaos's soulseek";
listen_port = ports.slskd;
};
web = {
port = ports.slskd-web;
authentication = {
username = "chaos";
};
};
shares.directories = [
"/Music"
];
};
nginx = {
enable = true; # I don't think this is even cheked
domainName = "soulseek.owo.monster";
};
};
services.nginx.virtualHosts."soulseek.owo.monster" = {
forceSSL = mkForce false;
enableACME = mkForce false;
};
}

View file

@ -1,57 +0,0 @@
{pkgs, ...}: {
services.secrets = {
enable = true;
vaultLogin = {
enable = true;
loginUsername = "hetzner-arm-container-music";
};
autoSecrets = {
enable = true;
};
requiredVaultPaths = [
"api-keys/data/mpd"
"api-keys/data/music-stream"
"passwords/data/soulseek"
"passwords/data/slskd"
];
packages = with pkgs; [
apacheHttpd
];
secrets = {
vault_password = {
manual = true;
};
mpd_control_password = {
user = "mpd";
group = "mpd";
fetchScript = ''
simple_get "/api-keys/mpd" .password > "$secretFile"
'';
};
music_stream_passwd = {
user = "nginx";
group = "nginx";
fetchScript = ''
username=$(simple_get "/api-keys/music-stream" .username)
password=$(simple_get "/api-keys/music-stream" .password)
htpasswd -bc "$secretFile" "$username" "$password" 2>/dev/null
'';
};
slskd_env = {
fetchScript = ''
soulseek_password=$(simple_get "/passwords/soulseek" .password)
slskd_password=$(simple_get "/passwords/slskd" .password)
echo > "$secretFile"
echo "SLSKD_SLSK_PASSWORD=$soulseek_password" >> "$secretFile"
echo "SLSKD_PASSWORD=$slskd_password" >> "$secretFile"
'';
};
};
};
}