128 lines
3.5 KiB
HCL
128 lines
3.5 KiB
HCL
job "dcufm" {
|
|
datacenters = ["aperture"]
|
|
|
|
type = "service"
|
|
|
|
group "icecast" {
|
|
count = 1
|
|
network {
|
|
port "http" {
|
|
static = 2333
|
|
}
|
|
}
|
|
|
|
constraint {
|
|
attribute = "${attr.unique.hostname}"
|
|
value = "wheatley"
|
|
}
|
|
|
|
service {
|
|
port = "http"
|
|
name = "icecast-stream"
|
|
check {
|
|
type = "http"
|
|
path = "/"
|
|
interval = "10s"
|
|
timeout = "2s"
|
|
}
|
|
|
|
tags = [
|
|
"traefik.enable=true",
|
|
"traefik.http.routers.icecast-stream.rule=Host(`dcufm.redbrick.dcu.ie`)",
|
|
"traefik.http.routers.icecast-stream.entrypoints=web,websecure",
|
|
"traefik.http.routers.icecast-stream.service=icecast-stream",
|
|
"traefik.http.routers.icecast-stream.tls=true",
|
|
"traefik.tcp.services.icecast-stream.loadbalancer.server.port=${NOMAD_PORT_http}",
|
|
"traefik.tcp.routers.icecast-stream.service=icecast-stream",
|
|
"traefik.tcp.routers.icecast-stream.rule=HostSNI(`dcufm.redbrick.dcu.ie`)",
|
|
"traefik.tcp.routers.icecast-stream.entrypoints=web,websecure",
|
|
"traefik.tcp.routers.icecast-stream.tls=true",
|
|
"traefik.tcp.routers.icecast-stream.tls.certresolver=lets-encrypt",
|
|
]
|
|
}
|
|
|
|
task "icecast2" {
|
|
driver = "docker"
|
|
config {
|
|
image = "moul/icecast"
|
|
ports = ["http"]
|
|
volumes = [
|
|
"local/icecast_dcufm.xml:/etc/icecast2/icecast.xml"
|
|
]
|
|
}
|
|
|
|
template {
|
|
data = <<EOH
|
|
<icecast>
|
|
<limits>
|
|
<clients>500</clients>
|
|
<sources>5</sources>
|
|
<threadpool>5</threadpool>
|
|
<queue-size>524288</queue-size>
|
|
<client-timeout>30</client-timeout>
|
|
<header-timeout>15</header-timeout>
|
|
<source-timeout>10</source-timeout>
|
|
<burst-on-connect>1</burst-on-connect>
|
|
<burst-size>65535</burst-size>
|
|
</limits>
|
|
|
|
<authentication>
|
|
<source-password>{{ key "dcufm/passwords/source" }}</source-password>
|
|
<relay-password>{{ key "dcufm/passwords/relay" }}</relay-password>
|
|
|
|
<admin-user>{{ key "dcufm/users/admin" }}</admin-user>
|
|
<admin-password>{{ key "dcufm/passwords/admin" }}</admin-password>
|
|
</authentication>
|
|
|
|
<hostname>dcufm.redbrick.dcu.ie</hostname>
|
|
|
|
<listen-socket>
|
|
<port>{{ env "NOMAD_PORT_http" }}</port>
|
|
<bind-address>0.0.0.0</bind-address>
|
|
</listen-socket>
|
|
|
|
<fileserve>1</fileserve>
|
|
|
|
<paths>
|
|
<basedir>/usr/share/icecast2</basedir>
|
|
|
|
<logdir>/var/log/icecast2</logdir>
|
|
<webroot>/usr/share/icecast2/web</webroot>
|
|
<adminroot>/usr/share/icecast2/admin</adminroot>
|
|
|
|
<alias source="/" dest="/status.xsl"/>
|
|
</paths>
|
|
|
|
<mount>
|
|
<mount-name>/stream.mp3</mount-name>
|
|
<fallback-mount>/fallback.mp3</fallback-mount>
|
|
<fallback-override>1</fallback-override>
|
|
<fallback-when-full>1</fallback-when-full>
|
|
</mount>
|
|
|
|
<logging>
|
|
<accesslog>access.log</accesslog>
|
|
<errorlog>error.log</errorlog>
|
|
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
|
|
<logsize>10000</logsize> <!-- Max size of a logfile -->
|
|
</logging>
|
|
</icecast>
|
|
EOH
|
|
|
|
destination = "local/icecast_dcufm.xml"
|
|
perms = "755"
|
|
}
|
|
|
|
template {
|
|
data = <<EOH
|
|
ICECAST_SOURCE_PASSWORD="{{ key "dcufm/passwords/source" }}"
|
|
ICECAST_ADMIN_PASSWORD="{{ key "dcufm/passwords/admin" }}"
|
|
ICECAST_RELAY_PASSOWRD="{{ key "dcufm/passwords/relay" }}"
|
|
ICECAST_HOSTNAME="dcufm.redbrick.dcu.ie"
|
|
EOH
|
|
destination = "local/file.env"
|
|
env = true
|
|
}
|
|
}
|
|
}
|
|
}
|