Remove dj-beets project
No longer in use. Drops the beets containers (cli/web), build + autoimport services and timer, the beet CLI wrapper, /opt/dj-beets tmpfiles entry, firewall port 8337, the Makefile copy step, and the src/dj-beets tree (which contained a Beatport token) so the repo can be made public safely. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-114
@@ -152,9 +152,6 @@
|
||||
|
||||
# Secrets
|
||||
"d /data/secrets 0700 root root -"
|
||||
|
||||
# dj-beets project
|
||||
"d /opt/dj-beets 0755 root root -"
|
||||
];
|
||||
|
||||
########################################
|
||||
@@ -199,35 +196,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.dj-beets-cli = {
|
||||
image = "dj-beets:latest";
|
||||
autoStart = false; # Run manually or via systemd service
|
||||
volumes = [
|
||||
"/data/daten/DJing:/data/daten/DJing"
|
||||
"/opt/dj-beets/config.yaml:/etc/beets/config.yaml:ro"
|
||||
"/opt/dj-beets/beatport_token.json:/opt/dj-beets/beatport_token.json"
|
||||
];
|
||||
environment = {
|
||||
BEETS_CONFIG = "/etc/beets/config.yaml";
|
||||
};
|
||||
cmd = [ "tail" "-f" "/dev/null" ]; # Keep container alive
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.dj-beets-web = {
|
||||
image = "dj-beets:latest";
|
||||
autoStart = true;
|
||||
ports = [ "8337:8337" ];
|
||||
volumes = [
|
||||
"/data/daten/DJing:/data/daten/DJing"
|
||||
"/opt/dj-beets/config.yaml:/etc/beets/config.yaml:ro"
|
||||
"/opt/dj-beets/beatport_token.json:/opt/dj-beets/beatport_token.json"
|
||||
];
|
||||
environment = {
|
||||
BEETS_CONFIG = "/etc/beets/config.yaml";
|
||||
};
|
||||
cmd = [ "beet" "web" ];
|
||||
};
|
||||
|
||||
########################################
|
||||
# Backup Services
|
||||
########################################
|
||||
@@ -262,94 +230,13 @@
|
||||
pkgs.tmux
|
||||
pkgs.htop
|
||||
pkgs.podman-compose
|
||||
|
||||
# Beets CLI wrapper
|
||||
(pkgs.writeShellScriptBin "beet" ''
|
||||
exec ${pkgs.podman}/bin/podman run --rm -it \
|
||||
-v /data/daten/DJing:/data/daten/DJing \
|
||||
-v /opt/dj-beets/config.yaml:/etc/beets/config.yaml:ro \
|
||||
-v /opt/dj-beets/beatport_token.json:/opt/dj-beets/beatport_token.json \
|
||||
-e BEETS_CONFIG=/etc/beets/config.yaml \
|
||||
-u $(id -u):$(id -g) \
|
||||
dj-beets:latest \
|
||||
beet "$@"
|
||||
'')
|
||||
];
|
||||
|
||||
########################################
|
||||
# DJ-Beets Services
|
||||
########################################
|
||||
# Systemd service to build dj-beets image on deploy
|
||||
systemd.services.dj-beets-build = {
|
||||
description = "Build dj-beets Docker image";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
before = [ "podman-dj-beets-web.service" ];
|
||||
after = [ "podman.service" ];
|
||||
wants = [ "podman.service" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = pkgs.writeShellScript "build-dj-beets" ''
|
||||
set -euo pipefail
|
||||
if [ ! -f /opt/dj-beets/Dockerfile ]; then
|
||||
echo "ERROR: Dockerfile not found at /opt/dj-beets" >&2
|
||||
echo "Deploy with 'make deploy-fileserver' first" >&2
|
||||
exit 1
|
||||
fi
|
||||
cd /opt/dj-beets
|
||||
${pkgs.podman}/bin/podman build -t dj-beets:latest .
|
||||
echo "dj-beets image built successfully"
|
||||
'';
|
||||
User = "root";
|
||||
};
|
||||
};
|
||||
|
||||
# Auto-import service using Docker container
|
||||
systemd.services.dj-beets-autoimport = {
|
||||
description = "Auto-import music into beets library via Docker";
|
||||
after = [ "dj-beets-build.service" ];
|
||||
wants = [ "dj-beets-build.service" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.writeShellScript "beets-autoimport" ''
|
||||
set -euo pipefail
|
||||
INBOX="/data/daten/DJing/Inbox"
|
||||
LOG="/data/daten/DJing/Data/BeetsAutoImport.log"
|
||||
|
||||
# Check if inbox has files
|
||||
if ! find "$INBOX" -mindepth 1 -maxdepth 1 -type f -print -quit | grep -q .; then
|
||||
echo "[$(date)] No files in Inbox, skipping" >> "$LOG"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[$(date)] Starting beets import" >> "$LOG"
|
||||
${pkgs.podman}/bin/podman run --rm \
|
||||
-v /data/daten/DJing:/data/daten/DJing \
|
||||
-v /opt/dj-beets/config.yaml:/etc/beets/config.yaml:ro \
|
||||
-v /opt/dj-beets/beatport_token.json:/opt/dj-beets/beatport_token.json \
|
||||
-e BEETS_CONFIG=/etc/beets/config.yaml \
|
||||
localhost/dj-beets:latest \
|
||||
beet import -q /data/daten/DJing/Inbox >> "$LOG" 2>&1
|
||||
'';
|
||||
# Use root so the service can access the root Podman image storage
|
||||
User = "root";
|
||||
Group = "root";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.dj-beets-autoimport = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig = {
|
||||
OnCalendar = "*:0/10"; # Every 10 minutes
|
||||
Persistent = true;
|
||||
};
|
||||
};
|
||||
|
||||
########################################
|
||||
# Firewall
|
||||
########################################
|
||||
networking.firewall.enable = true;
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 22 139 445 8080 8337 5357 3000 2222 ]; # 5357 WSD
|
||||
networking.firewall.allowedTCPPorts = [ 22 139 445 8080 5357 3000 2222 ]; # 5357 WSD
|
||||
networking.firewall.allowedUDPPorts = [ 137 138 3702 5353 ]; # NetBIOS + WSD (3702) + mDNS (5353)
|
||||
}
|
||||
Reference in New Issue
Block a user