Compare commits
10 Commits
renovate/c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| eecdfd7a47 | |||
| 36ecf16ea7 | |||
| d5a61855ea | |||
| b3a8052fc4 | |||
| 3bc6495383 | |||
| a404ff8935 | |||
| 4b26c51a66 | |||
| c76dd45875 | |||
| 6060f3f64e | |||
| 26f7f1ae55 |
@ -13,4 +13,8 @@ LETS_ENCRYPT_ENV=production
|
||||
#BAM_VERBOSE=
|
||||
|
||||
SECRET_BAM_CERTIFICATE_VERSION=v1
|
||||
SECRET_MUMBLE_PASSWORD_VERSION=v1
|
||||
SECRET_FLASK_SECRET_VERSION=v1
|
||||
|
||||
|
||||
#SECRET_MUMBLE_PASSWORD_VERSION=v1
|
||||
#COMPOSE=$COMPOSE:compose.password.yml
|
||||
|
||||
16
README.md
16
README.md
@ -5,13 +5,13 @@ Bot to play youtube / soundcloud / radio / local music on Mumble
|
||||
<!-- metadata -->
|
||||
|
||||
* **Category**: Apps
|
||||
* **Status**:
|
||||
* **Image**:
|
||||
* **Healthcheck**:
|
||||
* **Backups**:
|
||||
* **Email**:
|
||||
* **Tests**:
|
||||
* **SSO**:
|
||||
* **Status**: 2, beta
|
||||
* **Image**: algielen/botamusique, 4, upstream
|
||||
* **Healthcheck**: No
|
||||
* **Backups**: No
|
||||
* **Email**: No
|
||||
* **Tests**: No
|
||||
* **SSO**: No
|
||||
|
||||
<!-- endmetadata -->
|
||||
|
||||
@ -35,7 +35,7 @@ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout botamusique.pem -ou
|
||||
and load it into Docker swarm:
|
||||
|
||||
```
|
||||
cat botamusique.pem | DOCKER_CONTEXT=swarm.example.com docker secret create bam_certificate_v1 -
|
||||
cat botamusique.pem | abra app secret insert musicbot.example.com bam_certificate v1
|
||||
```
|
||||
|
||||
[`abra`]: https://git.coopcloud.tech/coop-cloud/abra
|
||||
|
||||
3
abra.sh
3
abra.sh
@ -1 +1,2 @@
|
||||
export ENTRYPOINT_CONF_VERSION=v1
|
||||
export ENTRYPOINT_CONF_VERSION=v8
|
||||
export CONFIGURATION_INI_VERSION=v1
|
||||
|
||||
13
compose.password.yml
Normal file
13
compose.password.yml
Normal file
@ -0,0 +1,13 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
secrets:
|
||||
- mumble_password
|
||||
environment:
|
||||
- BAM_MUMBLE_PASSWORD_FILE=/run/secrets/mumble_password
|
||||
|
||||
secrets:
|
||||
mumble_password:
|
||||
external: true
|
||||
name: ${STACK_NAME}_mumble_password_${SECRET_MUMBLE_PASSWORD_VERSION}
|
||||
58
compose.yml
58
compose.yml
@ -3,51 +3,56 @@ version: "3.8"
|
||||
|
||||
services:
|
||||
app:
|
||||
image: azlux/botamusique:testing
|
||||
image: algielen/botamusique:8.7
|
||||
networks:
|
||||
- proxy
|
||||
user: 0:0
|
||||
configs:
|
||||
- source: configuration_ini
|
||||
target: /botamusique/configuration.ini
|
||||
mode: 0555
|
||||
- source: entrypoint_conf
|
||||
target: /docker-entrypoint.sh
|
||||
mode: 0555
|
||||
entrypoint: /docker-entrypoint.sh
|
||||
environment:
|
||||
BAM_CONFIG_file: /config/botamusique.ini
|
||||
BAM_CERTIFICATE: /run/secrets/bam_certificate
|
||||
BAM_MUSIC_DB: /config/music.db
|
||||
BAM_DB: /config/setting.db
|
||||
BAM_MUMBLE_SERVER:
|
||||
BAM_MUMBLE_PASSWORD_FILE: /run/secrets/mumble_password
|
||||
BAM_USER:
|
||||
BAM_MUMBLE_PORT:
|
||||
BAM_CHANNEL:
|
||||
BAM_VERBOSE:
|
||||
- BAM_CONFIG_FILE=/botamusique/configuration.ini
|
||||
- BAM_CERTIFICATE=/run/secrets/bam_certificate
|
||||
- BAM_MUSIC_DB=/config/music.db
|
||||
- BAM_DB=/config/config.db
|
||||
- BAM_MUMBLE_SERVER
|
||||
- BAM_USER
|
||||
- BAM_MUMBLE_PORT
|
||||
- BAM_CHANNEL
|
||||
- BAM_VERBOSE
|
||||
- DOMAIN
|
||||
volumes:
|
||||
- config:/config
|
||||
- music_folder:/botamusique/music_folder
|
||||
- music_folder:/music
|
||||
secrets:
|
||||
- flask_secret
|
||||
- bam_certificate
|
||||
- mumble_password
|
||||
deploy:
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
condition: any
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy"
|
||||
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8181"
|
||||
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
|
||||
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
|
||||
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
||||
- "coop-cloud.${STACK_NAME}.version=1.0.0+testing"
|
||||
- "coop-cloud.${STACK_NAME}.version=2.0.2+8.7"
|
||||
## Redirect from EXTRA_DOMAINS to DOMAIN
|
||||
#- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect"
|
||||
#- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true"
|
||||
#- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
|
||||
# healthcheck:
|
||||
# test: ["CMD", "curl", "-f", "http://localhost"]
|
||||
# interval: 30s
|
||||
# timeout: 10s
|
||||
# retries: 10
|
||||
# start_period: 1m
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8181/static/js/app.mjs"]
|
||||
interval: 1m
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 1m
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
@ -61,11 +66,16 @@ configs:
|
||||
entrypoint_conf:
|
||||
name: ${STACK_NAME}_entrypoint_conf_${ENTRYPOINT_CONF_VERSION}
|
||||
file: entrypoint.sh
|
||||
configuration_ini:
|
||||
name: ${STACK_NAME}_configuration_ini_${CONFIGURATION_INI_VERSION}
|
||||
file: configuration.ini.tmpl
|
||||
template_driver: golang
|
||||
|
||||
|
||||
secrets:
|
||||
flask_secret:
|
||||
external: true
|
||||
name: ${STACK_NAME}_flask_secret_${SECRET_FLASK_SECRET_VERSION}
|
||||
bam_certificate:
|
||||
external: true
|
||||
name: ${STACK_NAME}_bam_certificate_${SECRET_BAM_CERTIFICATE_VERSION}
|
||||
mumble_password:
|
||||
external: true
|
||||
name: ${STACK_NAME}_mumble_password_${SECRET_MUMBLE_PASSWORD_VERSION}
|
||||
|
||||
139
configuration.ini.tmpl
Normal file
139
configuration.ini.tmpl
Normal file
@ -0,0 +1,139 @@
|
||||
[server]
|
||||
certificate =
|
||||
channel = {{ env "BAM_CHANNEL" }}
|
||||
host = {{ env "BAM_MUMBLE_SERVER" }}
|
||||
password = {{ env "BAM_MUMBLE_PASSWORD" }}
|
||||
port = {{ env "BAM_MUMBLE_PORT" }}
|
||||
tokens =
|
||||
|
||||
|
||||
[bot]
|
||||
admin =
|
||||
allow_other_channel_message = False
|
||||
allow_private_message = True
|
||||
announce_current_music = True
|
||||
auto_check_update = True
|
||||
autoplay_length = 5
|
||||
avatar =
|
||||
bandwidth = 96000
|
||||
clear_when_stop_in_oneshot = False
|
||||
comment = "Hi, I'm here to play radio, local music or youtube/soundcloud music. Have fun!"
|
||||
database_path =
|
||||
delete_allowed = True
|
||||
download_attempts = 2
|
||||
ducking = False
|
||||
ducking_threshold = 3000
|
||||
ducking_volume = 0.05
|
||||
ignored_files = Thumbs.db
|
||||
ignored_folders = tmp
|
||||
language = en_US
|
||||
logfile =
|
||||
max_track_duration = 60
|
||||
max_track_playlist = 20
|
||||
max_volume = 1.0
|
||||
music_database_path = music.db
|
||||
music_folder = music_folder/
|
||||
pip3_path = venv/bin/pip
|
||||
playback_mode = one-shot
|
||||
redirect_stderr = True
|
||||
refresh_cache_on_startup = True
|
||||
save_music_library = True
|
||||
save_playlist = True
|
||||
stereo = True
|
||||
target_version = git
|
||||
tmp_folder = /tmp/
|
||||
tmp_folder_max_size = 10
|
||||
username = botamusique
|
||||
volume = 0.8
|
||||
when_nobody_in_channel = nothing
|
||||
when_nobody_in_channel_ignore =
|
||||
|
||||
[webinterface]
|
||||
access_address = https://{{ env "DOMAIN" }}
|
||||
auth_method = token
|
||||
enabled = True
|
||||
flask_secret = {{ secret "flask_secret" }}
|
||||
is_web_proxified = True
|
||||
listening_addr = 0.0.0.0
|
||||
listening_port = 8181
|
||||
max_attempts = 10
|
||||
max_upload_file_size = 30M
|
||||
password =
|
||||
upload_enabled = True
|
||||
user =
|
||||
web_logfile =
|
||||
|
||||
[debug]
|
||||
ffmpeg = False
|
||||
mumble_connection = False
|
||||
redirect_ffmpeg_log = False
|
||||
web_access_log_level = INFO
|
||||
youtube_dl = False
|
||||
|
||||
[radio]
|
||||
jazz = http://jazz-wr04.ice.infomaniak.ch/jazz-wr04-128.mp3 "Jazz Yeah !"
|
||||
|
||||
[youtube_dl]
|
||||
cookie_file =
|
||||
source_address =
|
||||
user_agent =
|
||||
|
||||
[commands]
|
||||
add_from_shortlist = shortlist, sl
|
||||
add_tag = addtag
|
||||
add_webinterface_user = webuseradd
|
||||
change_user_password = password
|
||||
clear = clear
|
||||
command_symbol = !:!
|
||||
current_music = np, now
|
||||
delete_from_library = delete
|
||||
drop_database = dropdatabase
|
||||
ducking = duck
|
||||
ducking_threshold = duckthres
|
||||
ducking_volume = duckv
|
||||
find_tagged = findtagged, ft
|
||||
help = help
|
||||
joinme = joinme
|
||||
kill = kill
|
||||
last = last
|
||||
list_file = listfile
|
||||
list_webinterface_user = webuserlist
|
||||
max_volume = maxvolume
|
||||
mode = mode
|
||||
pause = pause
|
||||
play = p, play
|
||||
play_file = file, f
|
||||
play_file_match = filematch, fm
|
||||
play_playlist = playlist
|
||||
play_radio = radio
|
||||
play_tag = tag
|
||||
play_url = url
|
||||
queue = queue
|
||||
random = random
|
||||
rb_play = rbplay
|
||||
rb_query = rbquery
|
||||
remove = rm
|
||||
remove_tag = untag
|
||||
remove_webinterface_user = webuserdel
|
||||
repeat = repeat
|
||||
requests_webinterface_access = web
|
||||
rescan = rescan
|
||||
search = search
|
||||
skip = skip
|
||||
split_username_at_space = False
|
||||
stop = stop
|
||||
stop_and_getout = oust
|
||||
update = update
|
||||
url_ban = urlban
|
||||
url_ban_list = urlbanlist
|
||||
url_unban = urlunban
|
||||
url_unwhitelist = urlunwhitelist, urlunw
|
||||
url_whitelist = urlwhitelist, urlw
|
||||
url_whitelist_list = urlwhitelistlist, urlwls
|
||||
user_ban = userban
|
||||
user_unban = userunban
|
||||
version = version
|
||||
volume = volume
|
||||
yt_play = yplay
|
||||
yt_search = ysearch
|
||||
|
||||
@ -35,4 +35,4 @@ main
|
||||
|
||||
# 3wc: upstream ENTRYPOINT
|
||||
# https://github.com/azlux/botamusique/blob/master/Dockerfile
|
||||
/botamusique/entrypoint.sh venv/bin/python mumbleBot.py
|
||||
uv run --locked --no-dev --no-sync botamusique
|
||||
|
||||
1
release/2.0.0+8.7
Normal file
1
release/2.0.0+8.7
Normal file
@ -0,0 +1 @@
|
||||
MANUAL MIGRATION NEEDED! We're fully migrated to a maintained version of botamusique from azlux. However, preserving data from the old one was not a consideration. Probably you can manually move over the downloaded files to the new volume but you're on your own! If someone actually does this pls add it to release notes :3 - knoflook
|
||||
Reference in New Issue
Block a user