feat: stream server for ULFM
May need to set up a reverse proxy once acme is set up
This commit is contained in:
parent
4d6c7a7e9e
commit
c5a440f8b2
2 changed files with 82 additions and 0 deletions
|
@ -95,6 +95,9 @@
|
||||||
# wireguard
|
# wireguard
|
||||||
ash = import ./machines/ash.nix;
|
ash = import ./machines/ash.nix;
|
||||||
|
|
||||||
|
# icecast - ULFM
|
||||||
|
galatea = import ./machines/galatea.nix;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
79
machines/galatea.nix
Normal file
79
machines/galatea.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
Name: https://en.wikipedia.org/wiki/Galatea_(mythology)
|
||||||
|
Why: Created as a product of artistic expression
|
||||||
|
Type: VM
|
||||||
|
Hardware: -
|
||||||
|
From: 2023
|
||||||
|
Role: Icecast server for ULFM
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
{ pkgs, lib, nodes, config, ... }:
|
||||||
|
let
|
||||||
|
# name of the server, sets teh hostname and record for it
|
||||||
|
name = "galatea";
|
||||||
|
ip_pub = "193.1.99.111";
|
||||||
|
#ip_pub = "192.168.1.157";
|
||||||
|
ip_priv = "172.20.20.6";
|
||||||
|
# hostname = "${name}.skynet.ie";
|
||||||
|
hostname = ip_pub;
|
||||||
|
|
||||||
|
# dosent seem to be any otehr way to have it like read from a file
|
||||||
|
feck = "d9J4jDsJPuMPUMAAE4J4tH37HsmxEDze";
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
# applications for this particular server
|
||||||
|
../applications/firewall.nix
|
||||||
|
../applications/dns.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
deployment = {
|
||||||
|
targetHost = hostname;
|
||||||
|
targetPort = 22;
|
||||||
|
targetUser = "root";
|
||||||
|
};
|
||||||
|
|
||||||
|
# these two are to be able to add the rules for firewall and dns
|
||||||
|
# open the firewall for this
|
||||||
|
skynet_firewall.forward = [
|
||||||
|
"ip saddr ${ip_pub} tcp dport 80 counter packets 0 bytes 0 accept"
|
||||||
|
"ip saddr ${ip_pub} tcp dport 443 counter packets 0 bytes 0 accept"
|
||||||
|
"ip saddr ${ip_pub} tcp dport 8000 counter packets 0 bytes 0 accept"
|
||||||
|
];
|
||||||
|
|
||||||
|
skynet_dns.records = {
|
||||||
|
external = [
|
||||||
|
"${name} A ${ip_pub}"
|
||||||
|
];
|
||||||
|
cname = [
|
||||||
|
# this is also the stream server
|
||||||
|
"stream CNAME ${name}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
22
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8000
|
||||||
|
];
|
||||||
|
|
||||||
|
age.secrets.icecast = {
|
||||||
|
file = ../secrets/icecast.age;
|
||||||
|
};
|
||||||
|
|
||||||
|
# config for icecast is smol so can have it in this
|
||||||
|
services.icecast = {
|
||||||
|
enable = true;
|
||||||
|
hostname = hostname;
|
||||||
|
|
||||||
|
admin = {
|
||||||
|
user = "admin";
|
||||||
|
password = feck;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue