remove soulseek from music container
This commit is contained in:
parent
973a9967fc
commit
8517b65845
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue