Initial commit — DRB client (edge node) stack

Includes edge-node (FastAPI/MQTT/Discord voice), op25-container (SDR decoder),
and icecast (audio streaming).
This commit is contained in:
Logan
2026-04-05 19:01:51 -04:00
commit 1a9c92b6db
47 changed files with 2496 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
icecast2 \
gettext-base \
gosu \
&& rm -rf /var/lib/apt/lists/* \
&& id icecast 2>/dev/null || adduser --system --group --no-create-home icecast
COPY icecast.xml.template /etc/icecast2/icecast.xml.template
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 8000
ENTRYPOINT ["/entrypoint.sh"]
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
set -e
ICECAST_SOURCE_PASSWORD="${ICECAST_SOURCE_PASSWORD:-hackme}"
ICECAST_ADMIN_PASSWORD="${ICECAST_ADMIN_PASSWORD:-admin}"
export ICECAST_SOURCE_PASSWORD ICECAST_ADMIN_PASSWORD
envsubst < /etc/icecast2/icecast.xml.template > /tmp/icecast.xml
exec gosu icecast icecast2 -c /tmp/icecast.xml
+49
View File
@@ -0,0 +1,49 @@
<icecast>
<location>server</location>
<admin>admin@localhost</admin>
<limits>
<clients>100</clients>
<sources>10</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>${ICECAST_SOURCE_PASSWORD}</source-password>
<relay-password>${ICECAST_SOURCE_PASSWORD}</relay-password>
<admin-user>admin</admin-user>
<admin-password>${ICECAST_ADMIN_PASSWORD}</admin-password>
</authentication>
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*"/>
</http-headers>
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/tmp</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
</paths>
<logging>
<accesslog>icecast-access.log</accesslog>
<errorlog>icecast-error.log</errorlog>
<loglevel>3</loglevel>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>