Comba is a modular server-side system for automation of broadcast and rebroadcasts for community radio.
E.g. Comba can record live broadcasts from the sound card at fixed times and rebroadcast them again at defined times.
Comba needs access to a radio programme calendar via webservice such like Jimtawl. It provides a web interface for montoring and to upload audio files for broadcasting.
docker run --name comba --privileged comba/comba -d
USERID ""
COMBA_WEB_ADMIN "comba"
COMBA_WEB_ADMIN_PASSWORD "comba"
ADMINMAILTO "admin@mydomain.tld"
ADMINMAILFROM "comba@mydomain.tld"
ALSA_BUFFER "16384"
CALENDERURL "http://your.jimtawl.calender.tld/index.php?option=com_jimtawl&view=calendar&format=json&from=#datefrom#&to=#dateto#"
RECORDERINPUT "soundcard"
RECORDERDEVICE "default"
PLAYERDEVICE "default"
MAILHUB "mail.server.tld"
MAILUSER "itsyou"
MAILPASSWORD "secret"
MAILUSETLS "YES"
MAILUSESTARTTLS "YES"
- USERID: map host user id to user comba, to have access to files in /var/audio
- COMBA_WEB_ADMIN: admin username
- COMBA_WEB_ADMIN_PASSWORD: admin password
- CALENDERURL: Url of webservice providing your radio programme calendar - usually jimtawl
Attention: Comba will not work without a valid calendar web service
- ALSA_BUFFER: Optimize your alsa buffer settings according to your sound card
- PLAYERDEVICE: Sound card device for playback
- RECORDERDEVICE: Sound card device for capturing
- RECORDERINPUT: Usually "soundcard" - you may also record from a stream
- MAILHUB: your mailserver host
- MAILUSER: email account username
- MAILPASSWORD: email account password
- MAILUSETLS: does your server use tls - YES/NO
- MAILUSESTARTTLS: does your server use starttls - YES/NO
- ADMINMAILTO: Recipient of service mails
- ADMINMAILFROM: From address for service mails
mkdir -p /var/comba/sqlite && mkdir -p /var/comba/mongo-data/db && mkdir -p /var/comba/redis-data && mkdir -p /var/comba/audio
User of sqlite directory and file must be user comba inside the docker container
So you can chown this way:
-
Detect the container name or id, e.g
combacontainer=$(docker ps | grep comba | awk '{ print $1 }')
-
Get comba uid from container and chown the directory /var/comba/sqlite
combauid=$(docker exec -it $combacontainer id comba | awk '{ print $1 }' | sed -n "s/^uid=\(.*\)(.*/\1/p") \
&& chown -R $combauid /var/comba/sqlite
Note: To get full control of the audio storage for your local user, you can use the environment variable $USERID
chown localuser /var/comba/sqlite && chown localuser /var/comba/audio
mkdir -p /var/comba/plugins-custom
version: '2'
services:
comba:
privileged: true
image: comba/comba
environment:
# link to the calendar service below:
CALENDERURL: http://calendar/index.php?option=com_jimtawl&view=calendar&format=json&from=#datefrom#&to=#dateto#
COMBA_WEB_ADMIN: comba-admin
COMBA_WEB_ADMIN_PASSWORD: comba-secret
# assumed your local user has uid 1022 and he owns /var/comba/audio and /var/comba/sqlite on docker host
USERID: 1022
volumes:
- /var/comba/sqlite:/opt/comba/var/sqlite:rw
- /var/comba/mongo-data:/data:rw
- /var/comba/redis-data:/var/redis/data:rw
- /var/comba/audio:/var/audio:rw
- /var/comba/plugins-custom:/opt/comba/plugins/custom
ulimits:
nofile:
hard: 40000
soft: 20000
ports:
- 80:8000/tcp
calendar:
image: comba/jimtawl
environment:
JOOMLA_ADMINMAIL: admin@somewhere.tld
JOOMLA_DB_HOST: joomladb
JOOMLA_DB_NAME: jimtawl
JOOMLA_DB_PASSWORD: secret
JOOMLA_DB_USER: root
JOOMLA_ADMIN_USERNAME: combaadmin
JOOMLA_ADMIN_PASSWORD: comba123
LOAD_JIMTAWL_SAMPLEDATA: "Yes"
links:
- joomladb
ports:
- 81:80/tcp
joomladb:
image: mariadb
environment:
MYSQL_DATABASE: jimtawl
MYSQL_ROOT_PASSWORD: secret