GithubHelp home page GithubHelp logo

raveberry / raveberry Goto Github PK

View Code? Open in Web Editor NEW
704.0 25.0 44.0 4.24 MB

A multi-user music server with a focus on participation

License: GNU Lesser General Public License v3.0

Python 71.70% Shell 3.03% JavaScript 0.31% HTML 6.69% Dockerfile 0.72% SCSS 2.58% TypeScript 14.97%
raspberry-pi music youtube spotify django python mopidy bootstrap social-jukebox music-player

raveberry's People

Contributors

8sd avatar dependabot[bot] avatar evilantishad0w avatar raveberry avatar stappjno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raveberry's Issues

Preload light.css

When switching to the light theme the .css-file has to be loaded and the site is broken for a short time.
After the page was successfully loaded, the file could be pre-cached.

Support Playback of Local Files

Mopidy can play files from the local filesystem, so support a local music library.
Add an option to specify a folder containing the desired music and add it during installation.
Make it modifiable at least via cli, possibly a dedicated script to parse folders.
Songs will be added into the database with their filepath as key.

Feature request: Setting for choosing how many results to show

Since the recent update we no only get one search result per service - it would be nice to have a setting to choose how many results to show per service ie 4 for Spotify and 1 for YouTube.
Furthermore it'd be useful if when searching you could choose a specific service to search that it then shows say 8 results for.

Stream mount point disappeared after update

I updated the install on my Pi 3b+ to 0.6.4, using:

pip3 install -U raveberry
raveberry system-install

For some reason the stream stopped working after the update; no sound.
I checked the icecast2 interface, and it only shows the /silence.mp3 mount point.

Not sure how I can fix this.
The /etc/icecast2/icecast.xml looks fine. It includes this section:

<mount>
<mount-name>/stream</mount-name>
<stream-name>MyRaveberry</stream-name>
<stream-description>MyRaveberry</stream-description>
<fallback-mount>/silence.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>

Volume changes only affect output, not cava

When changing the volume on the web page both the audio output and the volume for cava (animation) are changed.
Thus the effects of cava are influenced by the volume settings.

Path to local library doesn't get saved

I justed installed a fresh instance of waveberry. Every time I open the settings page, the path to the local library is set to / instead of the folder I entered before.

Volume normalization

aacgain takes ages to build…
Since we are using gstreamer now there might be an easier possibility, maybe even without using replaygain?

TV Mode

[enhancement]TV Mode that is designed to look good on your computer, notebook, TV, or projector. With nginx. Fan art of each playing artist from Fanart.TV
Something like Festify
0755ABBE-2C36-4781-8242-102A0D3356CC

issue with bluetooth

Hi, i'm using raveberry on raspberry Pi 3 B+, I've connect my bluetooth speaker to my Pi but no sound is emitted currently.
before installing raveberry the bluetooth was working correctly but after installation no sound is transmitted. hoping to get some help.
Mageunic

Feature Request: Manual install documentation

So I already have a redis and postgres dedicated server so If it would be possible at some point in the future to break down the manual install into configuration sections. The bash scripts are well written so just the actual documentation into how and what to edit is missing. Absolutely no rush, everything is working and if I dive down into the bash scripts I can extract the steps and write up the documentation myself and post it back here, i'm just too lazy right now.

ModuleNotFoundError: No module named 'sass'

So I've been using Raveberry for a while now without issue. I recently upgraded my NAS and reinstalled it from scratch. When I try and goto to raveberry I get '502 Bad Gateway'. Looking in the logs it looks like its trying to load a module called sass without luck.

daphne_1      | Operations to perform:
daphne_1      |   Apply all migrations: admin, auth, contenttypes, core, sessions, watson
daphne_1      | Running migrations:
daphne_1      |   Applying contenttypes.0001_initial... OK
daphne_1      |   Applying auth.0001_initial... OK
daphne_1      |   Applying admin.0001_initial... OK
daphne_1      |   Applying admin.0002_logentry_remove_auto_add... OK
daphne_1      |   Applying admin.0003_logentry_add_action_flag_choices... OK
daphne_1      |   Applying contenttypes.0002_remove_content_type_name... OK
daphne_1      |   Applying auth.0002_alter_permission_name_max_length... OK
daphne_1      |   Applying auth.0003_alter_user_email_max_length... OK
daphne_1      |   Applying auth.0004_alter_user_username_opts... OK
daphne_1      |   Applying auth.0005_alter_user_last_login_null... OK
daphne_1      |   Applying auth.0006_require_contenttypes_0002... OK
daphne_1      |   Applying auth.0007_alter_validators_add_error_messages... OK
daphne_1      |   Applying auth.0008_alter_user_username_max_length... OK
daphne_1      |   Applying auth.0009_alter_user_last_name_max_length... OK
daphne_1      |   Applying auth.0010_alter_group_name_max_length... OK
daphne_1      |   Applying auth.0011_update_proxy_permissions... OK
daphne_1      |   Applying core.0001_initial... OK
daphne_1      |   Applying core.0002_auto_20190909_1707... OK
daphne_1      |   Applying core.0003_auto_20190912_2219... OK
daphne_1      |   Applying core.0004_archivedplaylist_created... OK
daphne_1      |   Applying core.0005_auto_20190913_1730... OK
daphne_1      |   Applying core.0006_auto_20200129_2252... OK
daphne_1      |   Applying core.0007_remove_playlistentry_song... OK
daphne_1      |   Applying core.0008_auto_20200514_1213... OK
daphne_1      |   Applying sessions.0001_initial... OK
daphne_1      |   Applying watson.0001_initial... OK
daphne_1      | Starting: bash -c DJANGO_MOCK=1 python manage.py compilescss && DJANGO_MOCK=1 python manage.py migrate --noinput && scripts/create_users.sh && /usr/local/bin/daphne --bind 0.0.0.0 --port 9000 main.asgi:application
daphne_1      | Traceback (most recent call last):
daphne_1      |   File "manage.py", line 21, in <module>
daphne_1      |     main()
daphne_1      |   File "manage.py", line 17, in main
daphne_1      |     execute_from_command_line(sys.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
daphne_1      |     utility.execute()
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
daphne_1      |     self.fetch_command(subcommand).run_from_argv(self.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 224, in fetch_command
daphne_1      |     klass = load_command_class(app_name, subcommand)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 36, in load_command_class
daphne_1      |     module = import_module('%s.management.commands.%s' % (app_name, name))
daphne_1      |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
daphne_1      |     return _bootstrap._gcd_import(name[level:], package, level)
daphne_1      |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
daphne_1      |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
daphne_1      |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
daphne_1      |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/sass_processor/management/commands/compilescss.py", line 5, in <module>
daphne_1      |     import sass
daphne_1      | ModuleNotFoundError: No module named 'sass'
daphne_1      | Operations to perform:
daphne_1      |   Apply all migrations: admin, auth, contenttypes, core, sessions, watson
daphne_1      | Running migrations:
daphne_1      |   No migrations to apply.
daphne_1      | Starting: bash -c DJANGO_MOCK=1 python manage.py compilescss && DJANGO_MOCK=1 python manage.py migrate --noinput && scripts/create_users.sh && /usr/local/bin/daphne --bind 0.0.0.0 --port 9000 main.asgi:application
daphne_1      | Traceback (most recent call last):
daphne_1      |   File "manage.py", line 21, in <module>
daphne_1      |     main()
daphne_1      |   File "manage.py", line 17, in main
daphne_1      |     execute_from_command_line(sys.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
daphne_1      |     utility.execute()
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
daphne_1      |     self.fetch_command(subcommand).run_from_argv(self.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 224, in fetch_command
daphne_1      |     klass = load_command_class(app_name, subcommand)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 36, in load_command_class
daphne_1      |     module = import_module('%s.management.commands.%s' % (app_name, name))
daphne_1      |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
daphne_1      |     return _bootstrap._gcd_import(name[level:], package, level)
daphne_1      |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
daphne_1      |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
daphne_1      |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
daphne_1      |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/sass_processor/management/commands/compilescss.py", line 5, in <module>
daphne_1      |     import sass
daphne_1      | ModuleNotFoundError: No module named 'sass'
daphne_1      | Operations to perform:
daphne_1      |   Apply all migrations: admin, auth, contenttypes, core, sessions, watson
daphne_1      | Running migrations:
daphne_1      |   No migrations to apply.
daphne_1      | Starting: bash -c DJANGO_MOCK=1 python manage.py compilescss && DJANGO_MOCK=1 python manage.py migrate --noinput && scripts/create_users.sh && /usr/local/bin/daphne --bind 0.0.0.0 --port 9000 main.asgi:application
daphne_1      | Traceback (most recent call last):
daphne_1      |   File "manage.py", line 21, in <module>
daphne_1      |     main()
daphne_1      |   File "manage.py", line 17, in main
daphne_1      |     execute_from_command_line(sys.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
daphne_1      |     utility.execute()
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
daphne_1      |     self.fetch_command(subcommand).run_from_argv(self.argv)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 224, in fetch_command
daphne_1      |     klass = load_command_class(app_name, subcommand)
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 36, in load_command_class
daphne_1      |     module = import_module('%s.management.commands.%s' % (app_name, name))
daphne_1      |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
daphne_1      |     return _bootstrap._gcd_import(name[level:], package, level)
daphne_1      |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
daphne_1      |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
daphne_1      |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
daphne_1      |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
daphne_1      |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
daphne_1      |   File "/usr/local/lib/python3.8/site-packages/sass_processor/management/commands/compilescss.py", line 5, in <module>
daphne_1      |     import sass

/stream disconnects randomly but refresh reconnects

Once connected to /stream it will randomly disconnect and will have to hit refresh and play to start stream again. It always happens at the end of a song but not every song. This happens in chrome on PC and phone. I haven't tried other browsers yet. The timer carries on incrementing as if it is still playing but no sound as if its falling back to silence.mp3 but not recovering. I know this is likely an issue with icecast itself and will do some digging but wanted to raise it in case its an easy fix.

500 Internal Server Error after manual install on Pi4

Hey, very nice project, thanks for sharing!

Unfortunatelly I am struggeling a bit with the installation, although it seems pretty straight froward.

I followed the manual install instructions on a Pi 1 4 with a fresh Raspberry Pi OS (32-bit) Lite Minimal image based on Debian Buster (Version: May 2020, Release date: 2020-05-27, Kernel version: 4.19), no problems during installation.

***** Configuring Webserver *****
nginx...
daphne...
gunicorn...

***** Finished *****

Raveberry was installed on this system!
You can now visit http://raveberry/
A reboot might be necessary for all features to be active.

After finishing, I did the recommended restart.

I can reach the server, but it only shows

500 Internal Server Error
Exception inside application.
Daphne

I checked all the suggested status and logs from the debugging section, but it all seems to be up and running without errors. Are there any other suggestions where I could look for problems?

Thanks and best regards,
CC

Configure CI

Use CI for testing and publishing releases to PiPy

Audio streaming with non-default icecast password

Hello! I moved over from reddit so it's easier to track the problem. So from what I see in my logs the problem seems to be related to gstreamer? Here are relevant logs:

This is an unprivileged container.

Icecast2:

[2020-05-03  21:27:58] INFO connection/_handle_source_request Source (/stream) attempted to login with invalid or missing password
[2020-05-03  21:27:58] INFO connection/_handle_source_request Source logging in at mountpoint "/stream" from 127.0.0.1
[2020-05-03  21:27:58] INFO connection/_handle_source_request Source (/stream) attempted to login with invalid or missing password
[2020-05-03  21:33:53] INFO source/source_shutdown Source at "/silence.mp3" exiting
[2020-05-03  21:33:53] INFO main/_server_proc Caught halt request, shutting down...
[2020-05-03  21:33:53] INFO main/main Shutting down
[2020-05-03  21:33:53] INFO fserve/fserve_shutdown file serving stopped
[2020-05-03  21:33:53] INFO slave/_slave_thread shutting down current relays
[2020-05-03  21:33:53] INFO slave/_slave_thread Slave thread shutdown complete
[2020-05-03  21:33:53] INFO auth/auth_shutdown Auth shutdown
[2020-05-03  21:33:53] INFO yp/yp_shutdown YP thread down
[2020-05-03  21:33:54] INFO stats/stats_shutdown stats thread finished
[2020-05-03  21:33:54] INFO auth/auth_run_thread Authenication thread shutting down
[2020-05-03  21:34:04] INFO main/main Icecast 2.4.4 server started
[2020-05-03  21:34:04] INFO connection/get_ssl_certificate No SSL capability
[2020-05-03  21:34:04] INFO yp/yp_update_thread YP update thread started
[2020-05-03  21:34:04] INFO stats/_stats_thread stats thread started
[2020-05-03  21:34:04] INFO auth/auth_run_thread Authentication thread started
[2020-05-03  21:34:04] INFO source/source_fallback_file mountpoint /silence.mp3 is reserved
[2020-05-03  21:34:04] WARN format/format_get_type Unsupported or legacy stream type: "audio/mpeg". Falling back to generic minimal handler for best effort.
[2020-05-03  21:34:04] INFO source/source_main listener count on /silence.mp3 now 0
[2020-05-03  21:34:19] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:34:19] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:34:19] INFO source/source_main listener count on /silence.mp3 now 1
[2020-05-03  21:34:19] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:34:19] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:34:19] INFO source/source_main listener count on /silence.mp3 now 2
[2020-05-03  21:34:20] INFO source/source_main listener count on /silence.mp3 now 1
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source logging in at mountpoint "/stream" from 127.0.0.1
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source (/stream) attempted to login with invalid or missing password
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source logging in at mountpoint "/stream" from 127.0.0.1
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source (/stream) attempted to login with invalid or missing password
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source logging in at mountpoint "/stream" from 127.0.0.1
[2020-05-03  21:34:20] INFO connection/_handle_source_request Source (/stream) attempted to login with invalid or missing password
[2020-05-03  21:35:10] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:35:10] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:40:24] INFO fserve/fserve_client_create checking for file /admin (/usr/share/icecast2/web/admin)
[2020-05-03  21:40:24] WARN fserve/fserve_client_create req for file "/usr/share/icecast2/web/admin" No such file or directory
[2020-05-03  21:40:34] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:40:34] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:40:40] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:40:40] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:40:40] INFO source/source_main listener count on /silence.mp3 now 0
[2020-05-03  21:40:40] INFO source/source_main listener count on /silence.mp3 now 1
[2020-05-03  21:41:27] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:41:27] INFO auth/queue_auth_client auth on /stream has 1 pending
[2020-05-03  21:41:27] INFO auth/auth_add_listener adding client for authentication
[2020-05-03  21:41:27] INFO auth/queue_auth_client auth on /stream has 1 pending

Mopidy:

INFO     2020-05-03 21:50:25,969 [754:MainThread] mopidy.__main__
  Starting Mopidy 3.0.2
INFO     2020-05-03 21:50:25,994 [754:MainThread] mopidy.config
  Loading config from builtin defaults
INFO     2020-05-03 21:50:25,996 [754:MainThread] mopidy.config
  Loading config from file:///root/.config/mopidy/mopidy.conf
INFO     2020-05-03 21:50:25,997 [754:MainThread] mopidy.config
  Loading config from command line options
INFO     2020-05-03 21:50:26,237 [754:MainThread] mopidy.__main__
  Enabled extensions: http, softwaremixer, file, stream, m3u
INFO     2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
  Disabled extensions: spotify
WARNING  2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
  Found spotify configuration errors. The extension has been automatically disabled:
WARNING  2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
    spotify/username must be set.
WARNING  2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
    spotify/password must be set.
WARNING  2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
    spotify/client_id must be set.
WARNING  2020-05-03 21:50:26,238 [754:MainThread] mopidy.__main__
    spotify/client_secret must be set.
WARNING  2020-05-03 21:50:26,239 [754:MainThread] mopidy.__main__
  Please fix the extension configuration errors or disable the extensions to silence these messages.
INFO     2020-05-03 21:50:26,403 [754:MainThread] mopidy.commands
  Starting Mopidy mixer: SoftwareMixer
INFO     2020-05-03 21:50:26,405 [754:MainThread] mopidy.commands
  Starting Mopidy audio
INFO     2020-05-03 21:50:26,407 [754:MainThread] mopidy.commands
  Starting Mopidy backends: FileBackend, M3UBackend, StreamBackend
INFO     2020-05-03 21:50:26,415 [754:Audio-2] mopidy.audio.actor
  Audio output set to "autoaudiosink"
INFO     2020-05-03 21:50:26,437 [754:MainThread] mopidy.commands
  Starting Mopidy core
INFO     2020-05-03 21:50:26,447 [754:MainThread] mopidy.commands
  Starting Mopidy frontends: HttpFrontend
INFO     2020-05-03 21:50:26,449 [754:HttpFrontend-8] mopidy.http.actor
  HTTP server running at [::ffff:127.0.0.1]:6680
INFO     2020-05-03 21:50:26,449 [754:MainThread] mopidy.commands
  Starting GLib mainloop
AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': Connection refused
WARNING  2020-05-03 21:50:26,713 [754:MainThread] mopidy.audio.gst
  GStreamer warning: Failed to connect: Access denied

Daphne:

May 03 21:34:04 raveberry systemd[1]: Started daphne daemon.
May 03 21:34:06 raveberry daphne[159]: 2020-05-03 23:34:06,266 INFO     Starting server at tcp:port=9000:interface=0.0.0.0
May 03 21:34:06 raveberry daphne[159]: 2020-05-03 23:34:06,267 INFO     HTTP/2 support not enabled (install the http2 and tls Twisted extras)
May 03 21:34:06 raveberry daphne[159]: 2020-05-03 23:34:06,268 INFO     Configuring endpoint tcp:port=9000:interface=0.0.0.0
May 03 21:34:06 raveberry daphne[159]: 2020-05-03 23:34:06,269 INFO     Listening on TCP address 0.0.0.0:9000
May 03 21:34:09 raveberry daphne[159]: ping: socket: Operation not permitted
May 03 21:34:09 raveberry daphne[159]: 2020-05-03 23:34:09,339 INFO     Creating Mopidy Websocket connection...

Stream Stopping After Every Song

So after getting this working on my NAS and managed to get it to stream to a web browser or VLC I have 2 isues which I think are related:

  1. Currently after everysong the stream stops. To start again you have to refresh stream and press play. and it then picks up at the point the song is in within Raveberry

  2. Playing on multiple browsers the music goes out of sync which is made worse if a client pauses and then resumes a song

I am guessing both are related to Icecast and a setting of some sort but I can't currently get on to their website to check it out as it seems to be down and struggling finding an answer elsewhere. Thanks again

Consider running via docker image

I'm in the process of provisioning my Pi3 with raveberry, and the installation is a little mundane. Is there a plan to host a raveberry image?

Cant configure hotspot

If server is running, a click on "Enable hotspot" does not toggle the boolean / has no effect.

make raveberry kubernetes ready

I've been patching raveberry and the docker setup bit by bit to make it suitable to run in kubernetes. Some changes are kubernetes specific and some could be easily upstreamed anyway imho. Here is a list of things I changed to get it working in kubernetes:

  • Since nginx serves the static files, there has to be a shared filesystem between the daphne and nginx containers. Obviously this could be dealt with with shared volumes across kubernetes pods, if that was available. To keep things simple, I added nginx to the daphne pod and created an entrypoint script for the daphne container to copy all static files to an emptyDir volume that was mounted on both the nginx and daphne container. This worked quite well, except for the compressed/cached javascript bundle in CACHE/js/output.gibberish.js which I couldn't directly figure out how to generate before copying the static files. I ended up enabling static file serving in django and removing the location /static part from the nginx config. This way I could separate the nginx container from the daphne container. This make scheduling and scaling both containers easier, if need might ever be. I kept the entrypoint file because I think this kind of logic (calling migrate and compiling the CSS) shouldn't be part of how you start the container.

  • Using the youtube provider, most of the time the EmbedThumbnail postprocessor failed when I requested songs. I ended up disabling this and this works just fine. Not sure where these thumbnails would've been used anyway, but that said: I've only used the web interface so far.

  • For using icecast, I removed the docker specific resolving part of the nginx config. I'm no nginx config expert, but perhaps by checking if nginx is running in kubernetes (for instance by checking of the KUBERNETES_SERVICE_HOST environment variable is set, you could have both solutions in one file for maintenance convenience.

  • I'm in the process of creating a helm chart for easily deploying raveberry in kubernetes

Let me know if you want any of these changes backported to raveberry!

Docker Set-up on NAS

Original post from REDDIT:

First, congrats on a fantastic app, love this idea, and with all the madness happening right now, I can see this being used a lot for online gatherings. I wonder if you could help me. I am trying to get this running on my NAS using docker-compose. I managed to get Raveberry running and it seems to work fine. I also installed Icecast and I can get to the web interface. When I try to enable streaming in Raveberry it doesn't find Icecast. The 2 are in the same docker-compose.yml file and therefore run in the same network but I think I need to install Icecast as part of the Raveberry install, not separately, however, I'm not sure how to go about this. Any pointers would be much appreciated :)

Response from RAVEBERRY :)

Thank you!

If you want to make streaming work with the docker setup, you probably need to change mopidy's config. The configuration the container uses by default can be found in docker/mopidy.conf. Change the output variable to something like this:

output = lamemp3enc ! shout2send async=false mount=stream ip= port=8000 password=

Then map the config into the mopidy container as described in the compose file. If mopidy is then able to stream to icecast, you probably have to access the stream at :8000/stream, as the nginx container does not yet redirect this url.

If you get it working, please let me know so others can profit from your effort as well!

Also, feel free to move the discussion to Github if you have further questions.

Edit: here is a link to mopidy's documentation about icecast

Include stream controls in dropdown

Instead of having to goto /stream to listen to the stream would it be possible to add a switch to the main playlist screen to turn the stream on and off?

Playlists and Robot Head not working

When I enable playlist (icon next to dice) it finds a playlist and when i click it it says queuing but never adds it to list. Also when I enable playlists and press the robot head to get a suggestion i get 'Getting radio info' overlayed by Server Error (500) see picture:
image

Trying to test on Ubuntu 18.04.4 LTS, wont start as a service/at boot

I've installed raveberry and can run the basic version. But am having the following issues:

--No idea where the config file is hiding, so I can't add any local music that way (my main focus will be local music as connectivity is sparse where I plan to deploy)

-- when I run 'raveberry system-install, it does it's thing and says I'm good to go, but I can no longer access the web interface, refuses connections. I looks to have changed my linux host name to 'raveberry' (used to be 'hermes'). Either way my router/dns server gets me there.. I can see other webui's running on the machine. Just not raveberry.

I'm a little stuck... Just checked via lsof, and nothing is running on port 8000

Add Soundcloud support

Mopidy already supports Soundcloud playback, so supporting it should not be too complicated.
Implementation should be similar to Spotify, a mixture between mopidy's provided functionality and custom web-api calls.

Music scan skips some files in docker setup

When I scanned my music folder then searched for a track I noticed it was ignoring folders with special characters in. For instance Guns N' Roses didn't import and couldn't be found in the search as a local file. However, when I manually entered the Guns N' Roses folder it picked up the songs inside.

Screen visualization on Raspberry Pi 3

my raveberry will not chage rom debug server, or atleast think so, cuz i keep getting that message everytime i starrt it. and i cant figure out how to get cava working either.
might just be me being stupid xD

Spotify Error: Unsupported URL:

Getting the following whenever I try to stream anything from Spotify:

image

This was working fine but not sure what changed. I did update to latest version but I was sure this was working after that. I've re authorized mopidy with spotify and still the same

Fallback Playlists

[enhancement]Select a (Spotify) Playlist as fallback playlist if there are no votes

Add online suggestions

Currently, all suggestions that are presented to the user come from the local database. Add suggestions from Youtube and Spotify, as they would appear when searching their page.

Problems setting up hotspot

Hi, I try the hotspot function but doesn't work with me. I have edit raveberry.ini to enable hotspot.
When I'm searching RPI wifi with my phone, I see only the wifi of my router. On the site, nothing happens when I click on Enable Hotspot button.

iframe support

I want to enable iframe support for raveberry so I can include it as part of my website and also add the streaming to the same page. I tried mapping the volume and copying the nginx.conf file over to my local storage but it crashed nginx. Guessing you append or change during install. Can you help?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.