mirror of
https://github.com/fergalmoran/dockerfiless.git
synced 2025-12-22 09:18:58 +00:00
Initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
12
Dockerfile.alpine.podnoms
Normal file
12
Dockerfile.alpine.podnoms
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime-alpine AS runtime
|
||||
|
||||
RUN apk add --no-cache --update \
|
||||
python \
|
||||
ffmpeg \
|
||||
libuv \
|
||||
curl \
|
||||
curl-dev && \
|
||||
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
|
||||
chmod a+rx /usr/local/bin/youtube-dl && \
|
||||
youtube-dl -U
|
||||
|
||||
25
Dockerfile.mssql.tools
Normal file
25
Dockerfile.mssql.tools
Normal file
@@ -0,0 +1,25 @@
|
||||
# SQL Server Command Line Tools
|
||||
FROM ubuntu:16.04
|
||||
MAINTAINER SQL Server Engineering Team
|
||||
|
||||
# apt-get and system utilities
|
||||
RUN apt-get update && apt-get install -y \
|
||||
curl apt-transport-https debconf-utils \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# adding custom MS repository
|
||||
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
|
||||
|
||||
# install SQL Server drivers and tools
|
||||
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools python-pip libunwind8 libicu55
|
||||
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin:/scripts/"' >> ~/.bashrc
|
||||
RUN /bin/bash -c "source ~/.bashrc"
|
||||
|
||||
RUN apt-get -y install locales
|
||||
RUN locale-gen en_US.UTF-8
|
||||
RUN update-locale LANG=en_US.UTF-8
|
||||
RUN pip install mssql-scripter
|
||||
|
||||
CMD /bin/bash
|
||||
|
||||
11
Dockerfile.podnoms
Normal file
11
Dockerfile.podnoms
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS runtime
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install \
|
||||
python \
|
||||
ffmpeg \
|
||||
curl && \
|
||||
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
|
||||
chmod a+rx /usr/local/bin/youtube-dl && \
|
||||
youtube-dl -U
|
||||
|
||||
19
angular-cli/Dockerfile
Normal file
19
angular-cli/Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
FROM alpine
|
||||
MAINTAINER fergalmoran <Ferg@lMoran/me>
|
||||
|
||||
ENV CONTAINER_USER_ID="1000"
|
||||
ENV CONTAINER_GROUP_ID="1000"
|
||||
|
||||
RUN apk update && apk upgrade
|
||||
RUN apk add --update nodejs nodejs-npm
|
||||
|
||||
RUN adduser -D -u ${CONTAINER_USER_ID} -g ${CONTAINER_GROUP_ID} -h /home/user -s /bin/sh user
|
||||
|
||||
RUN mkdir -p /opt/npm-global && chown user:user /opt/npm-global
|
||||
|
||||
USER user
|
||||
|
||||
ENV NPM_CONFIG_PREFIX=/opt/npm-global
|
||||
ENV PATH=$NPM_CONFIG_PREFIX/bin/:$PATH
|
||||
|
||||
RUN npm install -g npm@latest @angular/cli yarn
|
||||
30
devbox/Dockerfile
Normal file
30
devbox/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y mercurial \
|
||||
git \
|
||||
python \
|
||||
curl \
|
||||
mongodb \
|
||||
vim \
|
||||
vim-nox \
|
||||
vim-scripts \
|
||||
strace \
|
||||
diffstat \
|
||||
pkg-config \
|
||||
cmake \
|
||||
build-essential \
|
||||
tcpdump \
|
||||
screen \
|
||||
python-setuptools \
|
||||
exuberant-ctags \
|
||||
build-essential \
|
||||
cmake \
|
||||
python-dev
|
||||
|
||||
#Set up git
|
||||
RUN git clone https://github.com/fergalmoran/dotfiles.git ${HOME}/dotfiles \
|
||||
&& cd ${HOME}/dotfiles \
|
||||
&& ./install.sh
|
||||
|
||||
CMD /bin/zsh
|
||||
2
devbox/README.md
Normal file
2
devbox/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# docker.devbox
|
||||
Docker image for development box
|
||||
20
docker-icecast/Dockerfile
Normal file
20
docker-icecast/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu:wily
|
||||
|
||||
MAINTAINER Fergal Moran "fergal.moran@gmail.com"
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
RUN apt-get -y update && \
|
||||
apt-get -y install icecast2 python-setuptools && \
|
||||
apt-get clean
|
||||
|
||||
RUN easy_install supervisor && \
|
||||
easy_install supervisor-stdout
|
||||
|
||||
CMD ["/start.sh"]
|
||||
EXPOSE 8000
|
||||
VOLUME ["/config", "/var/log/icecast2", "/etc/icecast2"]
|
||||
|
||||
ADD ./start.sh /start.sh
|
||||
ADD ./etc /etc
|
||||
RUN chown -R icecast2 /etc/icecast2
|
||||
22
docker-icecast/LICENSE.md
Normal file
22
docker-icecast/LICENSE.md
Normal file
@@ -0,0 +1,22 @@
|
||||
The MIT License
|
||||
===============
|
||||
|
||||
Copyright (c) **2013-2015 Manfred Touron <m@42.am> ([@moul](https://twitter.com/moul))**
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
60
docker-icecast/README.md
Normal file
60
docker-icecast/README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Icecast in Docker [](https://travis-ci.org/moul/docker-icecast)
|
||||
|
||||
Icecast2 Dockerfile
|
||||
|
||||
[](https://index.docker.io/u/moul/icecast/)
|
||||
|
||||
## Run
|
||||
|
||||
Run with default password, export port 8000
|
||||
|
||||
```bash
|
||||
docker run -p 8000:8000 moul/icecast
|
||||
$BROWSER localhost:8000
|
||||
```
|
||||
|
||||
Run with custom password
|
||||
|
||||
```bash
|
||||
docker run -p 8000:8000 -e ICECAST_SOURCE_PASSWORD=aaaa -e ICECAST_ADMIN_PASSWORD=bbbb -e ICECAST_PASSWORD=cccc -e ICECAST_RELAY_PASSWORD=dddd moul/icecast
|
||||
```
|
||||
|
||||
Run with custom configuration
|
||||
|
||||
```bash
|
||||
docker run -p 8000:8000 -v /local/path/to/icecast/config:/etc/icecast2 moul/icecast
|
||||
docker run -p 8000:8000 -v /local/path/to/icecast.xml:/etc/icecast2/icecast.xml moul/icecast
|
||||
```
|
||||
|
||||
Extends Dockerfile
|
||||
|
||||
```Dockerfile
|
||||
FROM moul/icecast
|
||||
ADD ./icecast.xml /etc/icecast2
|
||||
```
|
||||
|
||||
Docker-compose
|
||||
|
||||
```yaml
|
||||
icecast:
|
||||
image: moul/icecast
|
||||
volumes:
|
||||
- logs:/var/log/icecast2
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- ICECAST_SOURCE_PASSWORD=aaa
|
||||
- ICECAST_ADMIN_PASSWORD=bbb
|
||||
- ICECAST_PASSWORD=ccc
|
||||
- ICECAST_RELAY_PASSWORD=ddd
|
||||
ports:
|
||||
- 8000:8000
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
- https://github.com/ultreme/scc-radio/
|
||||
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/moul/docker-icecast/blob/master/LICENSE.md)
|
||||
101
docker-icecast/etc/icecast2/admin/listclients.xsl
Normal file
101
docker-icecast/etc/icecast2/admin/listclients.xsl
Normal file
@@ -0,0 +1,101 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
||||
|
||||
<h1>Listener Stats</h1>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<xsl:for-each select="source">
|
||||
<div class="streamheader">
|
||||
<table cellspacing="0" cellpadding="0" >
|
||||
<colgroup align="left" />
|
||||
<colgroup align="right" width="300" />
|
||||
<tr>
|
||||
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="authenticator">
|
||||
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td align="right">
|
||||
<a href="{@mount}.m3u">M3U</a>
|
||||
<a href="{@mount}.xspf">XSPF</a></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr></table>
|
||||
</div>
|
||||
|
||||
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<br />
|
||||
<table cellspacing="0" cellpadding="5" border="1" bordercolor="#C0C0C0" >
|
||||
<tr>
|
||||
<td ><center><b>IP</b></center></td>
|
||||
<td ><center><b>Seconds Connected</b></center></td>
|
||||
<td ><center><b>User Agent</b></center></td>
|
||||
<td ><center><b>Action</b></center></td>
|
||||
</tr>
|
||||
<xsl:variable name = "themount" ><xsl:value-of select="@mount" /></xsl:variable>
|
||||
<xsl:for-each select="listener">
|
||||
<tr>
|
||||
<td align="center"><xsl:value-of select="IP" /><xsl:if test="username"> (<xsl:value-of select="username" />)</xsl:if></td>
|
||||
<td align="center"><xsl:value-of select="Connected" /></td>
|
||||
<td align="center"><xsl:value-of select="UserAgent" /></td>
|
||||
<td align="center"><a href="killclient.xsl?mount={$themount}&id={ID}">Kick</a></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
84
docker-icecast/etc/icecast2/admin/listmounts.xsl
Normal file
84
docker-icecast/etc/icecast2/admin/listmounts.xsl
Normal file
@@ -0,0 +1,84 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
||||
<h1>Active Mountpoints</h1>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<xsl:for-each select="source">
|
||||
<div class="streamheader">
|
||||
<table cellspacing="0" cellpadding="0" >
|
||||
<colgroup align="left" />
|
||||
<colgroup align="right" width="300" />
|
||||
<tr>
|
||||
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="authenticator">
|
||||
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td align="right">
|
||||
<a href="{@mount}.m3u">M3U</a>
|
||||
<a href="{@mount}.xspf">XSPF</a></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr></table>
|
||||
</div>
|
||||
|
||||
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||
<xsl:if test="authenticator"><a class="nav2" href="manageauth.xsl?mount={@mount}">Manage Authentication</a></xsl:if>
|
||||
</td></tr>
|
||||
</table>
|
||||
<br />
|
||||
<p><xsl:value-of select="listeners" /> Listener(s)</p>
|
||||
<br></br>
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
98
docker-icecast/etc/icecast2/admin/manageauth.xsl
Normal file
98
docker-icecast/etc/icecast2/admin/manageauth.xsl
Normal file
@@ -0,0 +1,98 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<xsl:for-each select="iceresponse">
|
||||
<xsl:value-of select="message" />
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="source">
|
||||
<h3>
|
||||
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||
(<xsl:value-of select="@mount" />)</h3>
|
||||
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<br></br>
|
||||
<form method="GET" action="manageauth.xsl">
|
||||
<table cellpadding="2" cellspacing="4" border="0" >
|
||||
<tr>
|
||||
<td ><b>User Id</b></td>
|
||||
<td ></td>
|
||||
</tr>
|
||||
<xsl:variable name = "themount" ><xsl:value-of select="@mount" /></xsl:variable>
|
||||
<xsl:for-each select="User">
|
||||
<tr>
|
||||
<td><xsl:value-of select="username" /></td>
|
||||
<td><a class="nav2" href="manageauth.xsl?mount={$themount}&username={username}&action=delete">delete</a></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
<table cellpadding="2" cellspacing="4" border="0" >
|
||||
<tr>
|
||||
<td ><b>User Id</b></td>
|
||||
<td ><b>Password</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><input type="text" name="username" /></td>
|
||||
<td ><input type="text" name="password" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><input type="Submit" name="Submit" value="Add New User" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="mount" value="{@mount}"/>
|
||||
<input type="hidden" name="action" value="add"/>
|
||||
</form>
|
||||
<br />
|
||||
<br />
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
63
docker-icecast/etc/icecast2/admin/moveclients.xsl
Normal file
63
docker-icecast/etc/icecast2/admin/moveclients.xsl
Normal file
@@ -0,0 +1,63 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<xsl:variable name = "currentmount" ><xsl:value-of select="current_source" /></xsl:variable>
|
||||
<h1>Moving Listeners From (<xsl:value-of select="current_source" />)</h1>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<h3>Move to which mountpoint ?</h3>
|
||||
<xsl:for-each select="source">
|
||||
<table border="0" cellpadding="1" cellspacing="5" >
|
||||
<tr>
|
||||
<td>Move from (<xsl:copy-of select="$currentmount" />) to (<xsl:value-of select="@mount" />)</td>
|
||||
<td><xsl:value-of select="listeners" /> Listeners</td>
|
||||
<td><a class="nav2" href="moveclients.xsl?mount={$currentmount}&destination={@mount}">Move Clients</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
56
docker-icecast/etc/icecast2/admin/response.xsl
Normal file
56
docker-icecast/etc/icecast2/admin/response.xsl
Normal file
@@ -0,0 +1,56 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/iceresponse" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<img align="left" src="/icecast.png" /><h2><center>Icecast2 Admin</center></h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a> |
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a> |
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a> |
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<h1>Icecast Server Response</h1>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<h3>Response</h3>
|
||||
<xsl:for-each select="/iceresponse">
|
||||
Message : <xsl:value-of select="message" /><br></br>
|
||||
Return Code: <xsl:value-of select="return" /><br></br>
|
||||
</xsl:for-each>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
124
docker-icecast/etc/icecast2/admin/stats.xsl
Normal file
124
docker-icecast/etc/icecast2/admin/stats.xsl
Normal file
@@ -0,0 +1,124 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
<!--header menu -->
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<!--end header menu -->
|
||||
|
||||
<!--global server stats-->
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<h3>Global Server Stats</h3>
|
||||
<table border="0" cellpadding="4">
|
||||
<xsl:for-each select="/icestats">
|
||||
<xsl:for-each select="*">
|
||||
<xsl:if test = "name()!='source'">
|
||||
<tr>
|
||||
<td width="130"><xsl:value-of select="name()" /></td>
|
||||
<td class="streamdata"><xsl:value-of select="." /></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<!--end global server stats-->
|
||||
|
||||
<!--mount point stats-->
|
||||
<xsl:for-each select="source">
|
||||
<xsl:if test = "listeners!=''">
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<div class="streamheader">
|
||||
<table cellspacing="0" cellpadding="0" >
|
||||
<colgroup align="left" />
|
||||
<colgroup align="right" width="300" />
|
||||
<tr>
|
||||
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="authenticator">
|
||||
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td align="right">
|
||||
<a href="{@mount}.m3u">M3U</a>
|
||||
<a href="{@mount}.xspf">XSPF</a></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr></table>
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move MountPoints</a>
|
||||
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||
<xsl:if test="authenticator"><a class="nav2" href="manageauth.xsl?mount={@mount}">Manage Authentication</a></xsl:if>
|
||||
</td></tr>
|
||||
</table>
|
||||
<br />
|
||||
<table cellpadding="5" cellspacing="0" border="0">
|
||||
<xsl:for-each select="*">
|
||||
<tr>
|
||||
<td width="130"><xsl:value-of select="name()" /></td>
|
||||
<td class="streamdata"><xsl:value-of select="." /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
|
||||
|
||||
<!--end mount point stats-->
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
67
docker-icecast/etc/icecast2/admin/updatemetadata.xsl
Normal file
67
docker-icecast/etc/icecast2/admin/updatemetadata.xsl
Normal file
@@ -0,0 +1,67 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Admin</h2>
|
||||
<br />
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" cellpadding="1" cellspacing="3">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||
<a class="nav" href="/status.xsl">Index</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<h1>Update Metadata</h1>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<xsl:for-each select="source">
|
||||
<h3>
|
||||
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||
(<xsl:value-of select="@mount" />)</h3>
|
||||
|
||||
<form method="GET" action="/admin/metadata.xsl">
|
||||
<table border="0" cellpadding="4">
|
||||
<tr><td>Metadata : <input type="text" name="song"/></td></tr>
|
||||
<tr><td><input type="Submit" value="Update"/></td></tr>
|
||||
</table>
|
||||
<input type="hidden" name="mount" value="{@mount}"/>
|
||||
<input type="hidden" name="mode" value="updinfo"/>
|
||||
<input type="hidden" name="charset" value="UTF-8"/>
|
||||
</form>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
74
docker-icecast/etc/icecast2/admin/xspf.xsl
Normal file
74
docker-icecast/etc/icecast2/admin/xspf.xsl
Normal file
@@ -0,0 +1,74 @@
|
||||
<!--
|
||||
XSPF xslt stylesheet for Icecast 2.3.2 and above
|
||||
Copyright (C) 2007 Thomas B. Ruecker, tbr@ruecker-itk.de
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the
|
||||
Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" media-type="application/xspf+xml"
|
||||
method="xml" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<playlist version="1" xmlns="http://xspf.org/ns/0/">
|
||||
<title><xsl:value-of select="server" /></title>
|
||||
<creator><xsl:value-of select="server" /></creator>
|
||||
<trackList >
|
||||
<!-- end of "header" -->
|
||||
|
||||
<xsl:for-each select="source">
|
||||
|
||||
<track>
|
||||
<location><xsl:value-of select="listenurl" /></location>
|
||||
|
||||
|
||||
<xsl:if test="artist"><creator><xsl:value-of select="artist" /></creator></xsl:if>
|
||||
<title><xsl:value-of select="title" /></title>
|
||||
<!-- The <xsl:text>\n</xsl:text> elements in the following part are used
|
||||
to enforce linebreaks this format seems to be expected by clients -->
|
||||
<annotation>
|
||||
<xsl:if test="server_name">Stream Title: <xsl:value-of select="server_name" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="server_description">Stream Description: <xsl:value-of select="server_description" /></xsl:if>
|
||||
Content Type:<xsl:value-of select="server_type" /><xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:if test="bitrate">Bitrate: <xsl:value-of select="bitrate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="quality">Quality: <xsl:value-of select="quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="video_quality">Video Quality: <xsl:value-of select="video_quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_size">Framesize: <xsl:value-of select="frame_size" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_rate">Framerate: <xsl:value-of select="frame_rate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listeners">Current Listeners: <xsl:value-of select="listeners" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listener_peak">Peak Listeners: <xsl:value-of select="listener_peak" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="genre">Stream Genre: <xsl:value-of select="genre" /></xsl:if>
|
||||
</annotation>
|
||||
|
||||
<xsl:if test="server_url"><info><xsl:value-of select="server_url" /></info></xsl:if>
|
||||
|
||||
</track>
|
||||
|
||||
</xsl:for-each>
|
||||
</trackList>
|
||||
</playlist>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
43
docker-icecast/etc/icecast2/icecast.xml
Normal file
43
docker-icecast/etc/icecast2/icecast.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<icecast>
|
||||
<limits>
|
||||
<clients>1000</clients>
|
||||
<sources>42</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>RDzNlgqmj67vk</source-password>
|
||||
<relay-password>9PmUbI1mLne9o</relay-password>
|
||||
<admin-user>admin</admin-user>
|
||||
<admin-password>CrVuP5evoJZ0.</admin-password>
|
||||
</authentication>
|
||||
|
||||
<hostname>radio.deepsouthsounds.com</hostname>
|
||||
<listen-socket>
|
||||
<port>8351</port>
|
||||
<shoutcast-mount>/dss</shoutcast-mount>
|
||||
</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="/" destination="/status.xsl"/>
|
||||
</paths>
|
||||
<logging>
|
||||
<accesslog>access.log</accesslog>
|
||||
<errorlog>error.log</errorlog>
|
||||
<loglevel>3</loglevel>
|
||||
<logsize>10000</logsize>
|
||||
</logging>
|
||||
<security>
|
||||
<chroot>0</chroot>
|
||||
</security>
|
||||
</icecast>
|
||||
57
docker-icecast/etc/icecast2/web/auth.xsl
Normal file
57
docker-icecast/etc/icecast2/web/auth.xsl
Normal file
@@ -0,0 +1,57 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<table border="0" width="100%%">
|
||||
<tr>
|
||||
<td width="50"></td>
|
||||
<td>
|
||||
<h2>Authorization Page</h2>
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<xsl:if test="authenticator">
|
||||
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||
<h3>(<xsl:value-of select="@mount" />)</h3>
|
||||
<form method="GET" action="/admin/buildm3u">
|
||||
<table border="0" cellpadding="4">
|
||||
<tr><td>Username : <input type="text" name="username"/></td></tr>
|
||||
<tr><td>Password : <input type="password" name="password"/></td></tr>
|
||||
<tr><td><input type="Submit" value="Login"/></td></tr>
|
||||
</table>
|
||||
<input type="hidden" name="mount" value="{@mount}"/>
|
||||
</form>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<br></br>
|
||||
<br></br>
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br></br><br></br>
|
||||
</td>
|
||||
<td width="25"></td></tr>
|
||||
</table>
|
||||
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
91
docker-icecast/etc/icecast2/web/server_version.xsl
Normal file
91
docker-icecast/etc/icecast2/web/server_version.xsl
Normal file
@@ -0,0 +1,91 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Server Information</h2>
|
||||
<br />
|
||||
<!--index header menu -->
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
|
||||
<tr>
|
||||
<td bgcolor="#656565">
|
||||
<a class="nav" href="admin/">Administration</a>
|
||||
<a class="nav" href="status.xsl">Server Status</a>
|
||||
<a class="nav" href="server_version.xsl">Version</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<!--end index header menu -->
|
||||
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<h3>Server Information</h3>
|
||||
<table border="0" cellpadding="4">
|
||||
<xsl:for-each select="/icestats">
|
||||
<tr>
|
||||
<td width="130">Location</td>
|
||||
<td class="streamdata"><xsl:value-of select="location" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Admin</td>
|
||||
<td class="streamdata"><xsl:value-of select="admin" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Host</td>
|
||||
<td class="streamdata"><xsl:value-of select="host" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Version</td>
|
||||
<td class="streamdata"><xsl:value-of select="server_id" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
<tr>
|
||||
<td width="130">Download</td>
|
||||
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/download.php">icecast.org</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Subversion</td>
|
||||
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/svn.php">click here</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Documentation</td>
|
||||
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/docs.php">click here</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Stream Directory </td>
|
||||
<td class="streamdata"><a class="nav" target="_blank" href="http://dir.xiph.org/index.php">dir.xiph.org</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="130">Community</td>
|
||||
<td class="streamdata"><a class="nav" target="_blank" href="http://forum.icecast.org/">forum.icecast.org</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
122
docker-icecast/etc/icecast2/web/status.xsl
Normal file
122
docker-icecast/etc/icecast2/web/status.xsl
Normal file
@@ -0,0 +1,122 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
<title>Icecast Streaming Media Server</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||
<h2>Icecast2 Status</h2>
|
||||
<br />
|
||||
<!--index header menu -->
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
|
||||
<tr>
|
||||
<td bgcolor="#656565">
|
||||
<a class="nav" href="admin/">Administration</a>
|
||||
<a class="nav" href="status.xsl">Server Status</a>
|
||||
<a class="nav" href="server_version.xsl">Version</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<!--end index header menu -->
|
||||
<!--mount point stats-->
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<div class="roundcont">
|
||||
<div class="roundtop">
|
||||
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
<div class="newscontent">
|
||||
<div class="streamheader">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<colgroup align="left" />
|
||||
<colgroup align="right" width="300" />
|
||||
<tr>
|
||||
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="authenticator">
|
||||
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td align="right"> <a href="{@mount}.m3u">M3U</a> <a href="{@mount}.xspf">XSPF</a></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr></table>
|
||||
</div>
|
||||
|
||||
<table border="0" cellpadding="4">
|
||||
<xsl:if test="server_name">
|
||||
<tr><td>Stream Title:</td><td class="streamdata"> <xsl:value-of select="server_name" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="server_description">
|
||||
<tr><td>Stream Description:</td><td class="streamdata"> <xsl:value-of select="server_description" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="server_type">
|
||||
<tr><td>Content Type:</td><td class="streamdata"><xsl:value-of select="server_type" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="stream_start">
|
||||
<tr><td>Mount started:</td><td class="streamdata"><xsl:value-of select="stream_start" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="bitrate">
|
||||
<tr><td>Bitrate:</td><td class="streamdata"> <xsl:value-of select="bitrate" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="quality">
|
||||
<tr><td>Quality:</td><td class="streamdata"> <xsl:value-of select="quality" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="video_quality">
|
||||
<tr><td>Video Quality:</td><td class="streamdata"> <xsl:value-of select="video_quality" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="frame_size">
|
||||
<tr><td>Framesize:</td><td class="streamdata"> <xsl:value-of select="frame_size" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="frame_rate">
|
||||
<tr><td>Framerate:</td><td class="streamdata"> <xsl:value-of select="frame_rate" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="listeners">
|
||||
<tr><td>Current Listeners:</td><td class="streamdata"> <xsl:value-of select="listeners" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="listener_peak">
|
||||
<tr><td>Peak Listeners:</td><td class="streamdata"> <xsl:value-of select="listener_peak" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="genre">
|
||||
<tr><td>Stream Genre:</td><td class="streamdata"> <xsl:value-of select="genre" /></td></tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="server_url">
|
||||
<tr><td>Stream URL:</td><td class="streamdata"> <a target="_blank" href="{server_url}"><xsl:value-of select="server_url" /></a></td></tr>
|
||||
</xsl:if>
|
||||
<tr><td>Current Song:</td><td class="streamdata">
|
||||
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="roundbottom">
|
||||
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:for-each>
|
||||
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||
|
||||
|
||||
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
12
docker-icecast/etc/icecast2/web/status2.xsl
Normal file
12
docker-icecast/etc/icecast2/web/status2.xsl
Normal file
@@ -0,0 +1,12 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<pre>
|
||||
MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL
|
||||
Global,Client:<xsl:value-of select="connections" /> Source: <xsl:value-of select="source_connections" />,,<xsl:value-of select="listeners" />,,
|
||||
<xsl:for-each select="source">
|
||||
<xsl:value-of select="@mount" />,,<xsl:value-of select="name" />,<xsl:value-of select="listeners" />,<xsl:value-of select="description" />,<xsl:value-of select="artist" /> - <xsl:value-of select="title" />,<xsl:value-of select="url" />
|
||||
</xsl:for-each>
|
||||
</pre>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
250
docker-icecast/etc/icecast2/web/style.css
Normal file
250
docker-icecast/etc/icecast2/web/style.css
Normal file
@@ -0,0 +1,250 @@
|
||||
/******************************************************************************
|
||||
|
||||
This file styles the bar that goes across the top of all Xiph.Org
|
||||
pages.
|
||||
|
||||
The style that comes from this was first (to my knowledge) at
|
||||
http://alistapart.com/stories/practicalcss/ in the
|
||||
"Splitting the Difference" section.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
/* This effect doesn't work at all if all content is pinched in a bit. */
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-left: 50px;
|
||||
margin-right: 25px;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.xiphnav {
|
||||
font-family: Verdana, sans-serif;
|
||||
font-weight: normal;
|
||||
padding: .25em;
|
||||
margin-bottom: .5em;
|
||||
border-bottom: 1px solid #000;
|
||||
color: #000;
|
||||
background: #aaa;
|
||||
}
|
||||
h2 {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 3em;
|
||||
color: #fff;
|
||||
padding: 10px 0px 10px 80px;
|
||||
margin-top:3px;
|
||||
background: transparent url(/icecast.png) no-repeat scroll left center
|
||||
}
|
||||
h1 {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 100%;
|
||||
color: #fff;
|
||||
margin-top:3px;
|
||||
}
|
||||
.nav {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: #fff;
|
||||
}
|
||||
.nav:hover {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.xiphnav_a {
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
color: #000;
|
||||
}
|
||||
.news {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
}
|
||||
.newsheader {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
font-size: 110%;
|
||||
color: #f8ef64;
|
||||
background: #444;
|
||||
}
|
||||
.streamtd {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
font-size: 85%;
|
||||
color: #fff;
|
||||
padding:15px;
|
||||
}
|
||||
.streamtd_alt {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
font-size: 85%;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.streamtd_alt_2 {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: underline;
|
||||
font-weight: normal;
|
||||
font-size: 85%;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
td {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
}
|
||||
.roundcont {
|
||||
width: 90%;
|
||||
background-color: #656565;
|
||||
color: #fff;
|
||||
}
|
||||
.roundcont a {
|
||||
margin: 0px 10px;
|
||||
}
|
||||
.newscontent {
|
||||
margin: 0 20px;
|
||||
}
|
||||
h3 {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.newscontent h3 {
|
||||
margin-bottom: 10px;
|
||||
border-bottom: 1px groove #ACACAC;
|
||||
}
|
||||
.newscontent h4 {
|
||||
margin: 10px 0px;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.newscontent p {
|
||||
margin: 0 0;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: none;
|
||||
font-size: 90%;
|
||||
}
|
||||
.newscontent td {
|
||||
margin: 0 0;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: none;
|
||||
font-size: 90%;
|
||||
}
|
||||
.newscontent td.streamdata {
|
||||
margin: 0 0;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: none;
|
||||
font-size: 90%;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.streamheader table {
|
||||
width: 100%;
|
||||
margin-bottom: 5px;
|
||||
border-bottom: 1px groove #ACACAC;
|
||||
}
|
||||
.streamheader td {
|
||||
margin: 0px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding: 10 5 10 5;
|
||||
border: 0px solid white;
|
||||
}
|
||||
.streamheader h3 {
|
||||
border: 0px;
|
||||
}
|
||||
.streamheader a {
|
||||
padding: 8px 5px 3px 30px;
|
||||
text-decoration: none;
|
||||
background: transparent url("/tunein.png") no-repeat left center;
|
||||
}
|
||||
.streamheader a.auth {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 32px;
|
||||
background: transparent url("/key.png") no-repeat left center;
|
||||
}
|
||||
.newscontent a {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
margin: 0px;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.newscontent a:hover {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
}
|
||||
.newscontent a.nav2 {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
padding: 2px 9px;
|
||||
background: #444;
|
||||
color: #f8ef64;
|
||||
}
|
||||
.newscontent a.nav2:hover {
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
background: #777;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
}
|
||||
.poster {
|
||||
font-family: Verdana, sans-serif;
|
||||
margin: 50px 120px 20px 0px;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
color: #f8ef64;
|
||||
padding: 5px;
|
||||
border-top: 1px groove #ACACAC;
|
||||
}
|
||||
.roundcont p {
|
||||
margin: 10px 50px;
|
||||
}
|
||||
|
||||
.roundtop {
|
||||
background: url(/corner_topright.jpg) no-repeat top right;
|
||||
}
|
||||
|
||||
.roundbottom {
|
||||
background: url(/corner_bottomright.jpg) no-repeat top right;
|
||||
}
|
||||
|
||||
img.corner {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
border: none;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
|
||||
33
docker-icecast/etc/supervisord.conf
Normal file
33
docker-icecast/etc/supervisord.conf
Normal file
@@ -0,0 +1,33 @@
|
||||
[unix_http_server]
|
||||
file=/tmp/supervisor.sock
|
||||
|
||||
[supervisord]
|
||||
logfile=/tmp/supervisord.log
|
||||
logfile_maxbytes=50MB
|
||||
logfile_backups=10
|
||||
loglevel=info
|
||||
pidfile=/tmp/supervisord.pid
|
||||
nodaemon=false
|
||||
minfds=1024
|
||||
minprocs=200
|
||||
user=icecast2
|
||||
|
||||
[rpcinterface:supervisor]
|
||||
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix:///tmp/supervisor.sock
|
||||
|
||||
[program:icecast2]
|
||||
user=icecast2
|
||||
command=icecast2 -n -c /etc/icecast2/icecast.xml
|
||||
stopsignal=6
|
||||
stdout_events_enabled=true
|
||||
stderr_events_enabled=true
|
||||
autorestart=true
|
||||
|
||||
[eventlistener:stdout]
|
||||
command=supervisor_stdout
|
||||
buffer_size=100
|
||||
events=PROCESS_LOG
|
||||
result_hander=supervisor_stdout:event_handler
|
||||
12
docker-icecast/examples/docker-compose.yml
Normal file
12
docker-icecast/examples/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
icecast:
|
||||
image: moul/icecast:latest
|
||||
volumes:
|
||||
- logs:/var/log/icecast2
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- ICECAST_SOURCE_PASSWORD=changeme
|
||||
- ICECAST_ADMIN_PASSWORD=changeme
|
||||
- ICECAST_PASSWORD=changeme
|
||||
- ICECAST_RELAY_PASSWORD=changeme
|
||||
ports:
|
||||
- 8000:8000
|
||||
25
docker-icecast/start.sh
Normal file
25
docker-icecast/start.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
env
|
||||
|
||||
set -x
|
||||
|
||||
if [ -n "$ICECAST_SOURCE_PASSWORD" ]; then
|
||||
sed -i "s/<source-password>[^<]*<\/source-password>/<source-password>$ICECAST_SOURCE_PASSWORD<\/source-password>/g" /etc/icecast2/icecast.xml
|
||||
fi
|
||||
|
||||
if [ -n "$ICECAST_RELAY_PASSWORD" ]; then
|
||||
sed -i "s/<relay-password>[^<]*<\/relay-password>/<relay-password>$ICECAST_RELAY_PASSWORD<\/relay-password>/g" /etc/icecast2/icecast.xml
|
||||
fi
|
||||
|
||||
if [ -n "$ICECAST_ADMIN_PASSWORD" ]; then
|
||||
sed -i "s/<admin-password>[^<]*<\/admin-password>/<admin-password>$ICECAST_ADMIN_PASSWORD<\/admin-password>/g" /etc/icecast2/icecast.xml
|
||||
fi
|
||||
|
||||
if [ -n "$ICECAST_PASSWORD" ]; then
|
||||
sed -i "s/<password>[^<]*<\/password>/<password>$ICECAST_PASSWORD<\/password>/g" /etc/icecast2/icecast.xml
|
||||
fi
|
||||
|
||||
cat /etc/icecast2/icecast.xml
|
||||
|
||||
supervisord -n -c /etc/supervisord.conf
|
||||
23
elkarbackup/docker-compose.yml
Normal file
23
elkarbackup/docker-compose.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
version: '2'
|
||||
services:
|
||||
db:
|
||||
image: mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: changeme
|
||||
#volumes:
|
||||
# - /srv/mysql:/var/lib/mysql
|
||||
|
||||
elkarbackup:
|
||||
image: elkarbackup/elkarbackup
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
links:
|
||||
- db
|
||||
depends_on:
|
||||
- db
|
||||
#volumes:
|
||||
# - /srv/elkarbackup/config:/etc/elkarbackup
|
||||
# - /srv/elkarbackup/data:/var/spool/elkarbackup
|
||||
environment:
|
||||
EB_DB_PASSWORD: topSecret
|
||||
21
pgadmin4/Dockerfile
Normal file
21
pgadmin4/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM ubuntu
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN \
|
||||
export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get -qy update && apt-get -qy dist-upgrade \
|
||||
&& apt-get -qy install --no-install-recommends python3 python3-pip libpq5 libpq-dev build-essential libpython3-all-dev git python-setuptools \
|
||||
&& pip3 install --upgrade pip \
|
||||
&& pip install setuptools \
|
||||
&& git clone git://git.postgresql.org/git/pgadmin4.git \
|
||||
# && rm -rf pgadmin4/.git \
|
||||
&& pip install -r pgadmin4/requirements.txt \
|
||||
&& apt-get -qy purge libpq-dev build-essential libpython3-all-dev git \
|
||||
&& apt-get -qy --purge autoremove && apt-get -qy clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
|
||||
&& rm -rf /usr/share/doc /usr/share/doc-base /usr/share/man /usr/share/locale /usr/share/zoneinfo
|
||||
|
||||
EXPOSE 5050
|
||||
|
||||
ADD run_pgadmin4.sh /
|
||||
RUN chmod +x /run_pgadmin4.sh
|
||||
ENTRYPOINT ["./run_pgadmin4.sh"]
|
||||
21
pgadmin4/LICENSE.md
Normal file
21
pgadmin4/LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Fergal Moran
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
8
pgadmin4/README.md
Normal file
8
pgadmin4/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Docker container for pgadmin4
|
||||
|
||||
Create a folder for settings and run the container
|
||||
|
||||
```
|
||||
mkdir -p ~/pgadmin-data
|
||||
docker run -it --rm -v ~/pgadmin-data:/pgadmin-data --net=host fergalmoran/pgadmin4:latest
|
||||
```
|
||||
27
pgadmin4/run_pgadmin4.sh
Normal file
27
pgadmin4/run_pgadmin4.sh
Normal file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
export USER_ID=${DATA_USER_ID:-1000}
|
||||
export GROUP_ID=${DATA_GROUP_ID:-1000}
|
||||
|
||||
#Link configuration volume
|
||||
mkdir -p /pgadmin-data
|
||||
ln -s /pgadmin-data /root/.pgadmin
|
||||
chmod a+x /root
|
||||
|
||||
#Create unprivileged user
|
||||
groupadd -g $GROUP_ID -o pgadmin
|
||||
useradd --shell /usr/sbin/nologin -u $USER_ID -o -c "" -g $GROUP_ID pgadmin --home /pgadmin-data
|
||||
chown pgadmin:pgadmin /pgadmin-data
|
||||
|
||||
#Create persistent config file on volume
|
||||
if [ ! -f /pgadmin-data/config_local.py ]; then
|
||||
cat /pgadmin4/web/config.py \
|
||||
| sed "s/DEFAULT_SERVER = 'localhost'/DEFAULT_SERVER = '0.0.0.0'/" \
|
||||
> /pgadmin-data/config_local.py
|
||||
chown pgadmin:pgadmin /pgadmin-data/config_local.py
|
||||
fi
|
||||
ln -s /pgadmin-data/config_local.py /pgadmin4/web/config_local.py
|
||||
|
||||
|
||||
#Run unprivileged
|
||||
chroot --userspec pgadmin:pgadmin / python3 pgadmin4/web/pgAdmin4.py
|
||||
|
||||
12
sql-server/Dockerfile
Normal file
12
sql-server/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM ubuntu:16.04
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y curl apt-transport-https sudo
|
||||
|
||||
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list > /etc/apt/sources.list.d/mssql-server.list
|
||||
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/msprod.list
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y mssql-server mssql-tools
|
||||
|
||||
|
||||
26
transmission/Dockerfile
Normal file
26
transmission/Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
||||
FROM lsiobase/alpine.armhf:3.7
|
||||
LABEL maintainer="Ferg@lMoran.me"
|
||||
|
||||
RUN \
|
||||
echo "**** install packages ****" && \
|
||||
apk add --no-cache \
|
||||
curl \
|
||||
jq \
|
||||
openssh \
|
||||
openssl \
|
||||
p7zip \
|
||||
rsync \
|
||||
tar \
|
||||
transmission-cli \
|
||||
transmission-daemon \
|
||||
unrar \
|
||||
unzip
|
||||
|
||||
# copy local files
|
||||
COPY root/ /
|
||||
|
||||
RUN rc-update add sshd
|
||||
# ports and volumes
|
||||
EXPOSE 9091 30006 22
|
||||
VOLUME /config /watch
|
||||
|
||||
11
tvheadend/start.sh
Executable file
11
tvheadend/start.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#! /usr/bin/env bash
|
||||
docker run \
|
||||
-e PUID=1000 \
|
||||
-e PGID=1000 \
|
||||
-e TZ=Europe/London \
|
||||
-p 9981:9981 \
|
||||
-p 9982:9982 \
|
||||
-v /mnt/niles/kubes/configs/tvheadend:/config \
|
||||
-v /mnt/niles/kubes/configs/tvheadend/recordings:/recordings \
|
||||
linuxserver/tvheadend
|
||||
|
||||
Reference in New Issue
Block a user