Hi,
I’m trying to add my personal files on my Mopidy Iris library.
Using mopidy as a service, I’ve added in my /etc/mopidy/mopidy.conf files the following lines :
[local]
enabled = true
library = json
media_dir = /media/NAS/music/Music/2018/
scan_timeout = 100000
scan_flush_threshold = 100
scan_follow_symlinks = false
excluded_file_extensions =
.directory
.html
.jpeg
.jpg
.log
.nfo
.png
.txt
And the scan seems to work because Mopidy returns theses lines :
"service mopidy run" is deprecated. Use "mopidyctl" instead.
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf local scan" as user root
INFO [MainThread] mopidy.__main__ Starting Mopidy 3.0.1
INFO [MainThread] mopidy.config Loading config from builtin defaults
INFO [MainThread] mopidy.config Loading config from file:///usr/share/mopidy/conf.d/mopidy.conf
INFO [MainThread] mopidy.config Loading config from file:///etc/mopidy/mopidy.conf
INFO [MainThread] mopidy.config Loading config from command line options
INFO [MainThread] mopidy.__main__ Enabled extensions: local, spotify, local-images, file, musicbox_webclient, iris, softwaremixer, m3u, http, stream, soundcloud
INFO [MainThread] mopidy.__main__ Disabled extensions: none
ERROR [MainThread] mopidy.__main__ Extension local-images failed during setup. This might have left the registry in a bad state.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mopidy/__main__.py", line 129, in main
extension.setup(registry)
File "/usr/local/lib/python3.7/dist-packages/mopidy_local_images/__init__.py", line 31, in setup
from .library import ImageLibrary
File "/usr/local/lib/python3.7/dist-packages/mopidy_local_images/library.py", line 12, in <module>
from mopidy import local
ImportError: cannot import name 'local' from 'mopidy' (/usr/lib/python3/dist-packages/mopidy/__init__.py)
INFO [MainThread] mopidy_local.commands Finding files in file:///media/NAS/music/Music/2018 ...
INFO [MainThread] mopidy_local.commands Found 5 files in file:///media/NAS/music/Music/2018
INFO [MainThread] mopidy_local.commands Checking 5 tracks from library
INFO [MainThread] mopidy_local.commands Removing 0 missing tracks
INFO [MainThread] mopidy_local.commands Found 0 tracks which need to be updated
INFO [MainThread] mopidy_local.commands Scanning...
INFO [MainThread] mopidy_local.commands Scanned 0 of 0 files in 0.000s.
INFO [MainThread] mopidy_local.commands Done scanning
INFO [MainThread] mopidy_local.storage Cleaning up image directory
But, whether on Iris or MusicBox webclient, my library does not display any music from my library …
Do you have a solution for me? Thank you in advance
Your installation is broken. From 3.x release changelog
In other news, the Mopidy-MPD and Mopidy-Local extensions have grown up and moved out to flourish as independent extension projects. After the move, Mopidy-Local merged with Mopidy-Local-SQLite and Mopidy-Local-Images, which are now both a part of the Mopidy-Local extension.
So:
- Remove Mopidy-Local-images, it no longer exists
- Use
sudo mopidyctl deps
to ensure you have installed the latest version of of Mopidy-Local, other versions will not work properly. Install it with sudo apt install mopidy-local
.
- Fix your config to remove the local settings which no longer exist (see docs)
For bonus points:
- If possible, stop running the Mopidy service as your
root
user.
Thanks for your fast reply.
I’ve done what you said but It’s still not working, however theses changes had some effects because the local library is completely removed from the Iris interface (It’s not possible to search in the local files too, which was possible before theses changes despite the fact Mopidy doesn’t show my files). Before, I was able to search in my files on this page :
sudo mopidyctl deps output :
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf deps" as user mopidy
Executable: /usr/bin/mopidy
Platform: Linux-4.19.97-v7+-armv7l-with-debian-10.2
Python: CPython 3.7.3 from /usr/lib/python3.7
Mopidy: 3.0.1 from /usr/lib/python3/dist-packages
Mopidy-SoundCloud: 3.0.0 from /usr/local/lib/python3.7/dist-packages
Mopidy: 3.0.1 from /usr/lib/python3/dist-packages
requests: 2.21.0 from /usr/lib/python3/dist-packages
setuptools: 40.8.0 from /usr/lib/python3/dist-packages
Pykka: 2.0.2 from /usr/lib/python3/dist-packages
Mopidy-Iris: 3.44.0 from /usr/local/lib/python3.7/dist-packages
setuptools: 40.8.0 from /usr/lib/python3/dist-packages
Pykka: 2.0.2 from /usr/lib/python3/dist-packages
Mopidy: 3.0.1 from /usr/lib/python3/dist-packages
Mopidy-MusicBox-Webclient: 3.0.1 from /usr/local/lib/python3.7/dist-packages
Mopidy: 3.0.1 from /usr/lib/python3/dist-packages
setuptools: 40.8.0 from /usr/lib/python3/dist-packages
Pykka: 2.0.2 from /usr/lib/python3/dist-packages
Mopidy-Local: 3.1.1 from /usr/local/lib/python3.7/dist-packages
Mopidy: 3.0.1 from /usr/lib/python3/dist-packages
uritools: 3.0.0 from /usr/local/lib/python3.7/dist-packages
setuptools: 40.8.0 from /usr/lib/python3/dist-packages
Pykka: 2.0.2 from /usr/lib/python3/dist-packages
Mopidy-Spotify: 4.0.1 from /usr/lib/python3/dist-packages
GStreamer: 1.14.4.0 from /usr/lib/python3/dist-packages/gi
Detailed information:
Python wrapper: python-gi 3.30.4
Relevant elements:
Found:
uridecodebin
souphttpsrc
appsrc
alsasink
osssink
oss4sink
pulsesink
id3demux
id3v2mux
lamemp3enc
mpegaudioparse
mpg123audiodec
vorbisdec
vorbisenc
vorbisparse
oggdemux
oggmux
oggparse
flacdec
flacparse
shout2send
Not found:
flump3dec
mad
"service mopidy run" is deprecated. Use "mopidyctl" instead.
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf local scan" as user mopidy
INFO [MainThread] mopidy.__main__ Starting Mopidy 3.0.1
INFO [MainThread] mopidy.config Loading config from builtin defaults
INFO [MainThread] mopidy.config Loading config from file:///usr/share/mopidy/conf.d/mopidy-local.conf
INFO [MainThread] mopidy.config Loading config from file:///usr/share/mopidy/conf.d/mopidy.conf
INFO [MainThread] mopidy.config Loading config from file:///etc/mopidy/mopidy.conf
INFO [MainThread] mopidy.config Loading config from command line options
INFO [MainThread] mopidy.__main__ Enabled extensions: spotify, iris, soundcloud, m3u, softwaremixer, musicbox_webclient, stream, local, http
INFO [MainThread] mopidy.__main__ Disabled extensions: file
INFO [MainThread] mopidy_local.commands Finding files in file:///media/NAS/music/Music/2018 ...
INFO [MainThread] mopidy_local.commands Found 0 files in file:///media/NAS/music/Music/2018
WARNING [MainThread] mopidy_local.commands Encountered 1 errors while finding files in file:///media/NAS/music/Music/2018
WARNING [MainThread] mopidy_local.commands Error for file:///media/NAS/music/Music/2018: ('Permission denied', 13)
INFO [MainThread] mopidy_local.commands Checking 0 tracks from library
INFO [MainThread] mopidy_local.commands Removing 0 missing tracks
INFO [MainThread] mopidy_local.commands Found 0 tracks which need to be updated
INFO [MainThread] mopidy_local.commands Scanning...
INFO [MainThread] mopidy_local.commands Scanned 0 of 0 files in 0.000s.
INFO [MainThread] mopidy_local.commands Done scanning
INFO [MainThread] mopidy_local.storage Cleaning up image directory
In addition to that, I’ve removed 1 line in the mopidy.conf files which was a config value that no longer exist.
I’m aware using root user is not a good way to do but when I use the mopidy user, It cause some permission issues (‘permission denied’, 13).
Thanks you
The log says you need to fix the permissions for user moidy. Sounds like you are on the right track.
Do you have an idea on how I can fix it ? Seems that using chown mopidy on the specified directory and its files does nothing.
I don’t know anything about your filesystem so I’m not very well placed to help. If I assume it’s a network mount then that’s not going to work. With a cifs mount you’d normally have to set the uid
argument else the default is that root is given ownership. Have a read of https://linux.die.net/man/8/mount.cifs
I don’t think it’s the problem anyway because running the sudo mopidyctl local scan
command as root user giving me the same behaviour (without the error message related to permissions). No trace of the local library whether on Iris or Musicbox Webclient. In addition to that, the Run local scan
button on Iris does nothing and local disappeared of the source priority options.
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf local scan" as user root
INFO [MainThread] mopidy.__main__ Starting Mopidy 3.0.1
INFO [MainThread] mopidy.config Loading config from builtin defaults
INFO [MainThread] mopidy.config Loading config from file:///usr/share/mopidy/conf.d/mopidy-local.conf
INFO [MainThread] mopidy.config Loading config from file:///usr/share/mopidy/conf.d/mopidy.conf
INFO [MainThread] mopidy.config Loading config from file:///etc/mopidy/mopidy.conf
INFO [MainThread] mopidy.config Loading config from command line options
INFO [MainThread] mopidy.__main__ Enabled extensions: http, spotify, soundcloud, m3u, stream, local, musicbox_webclient, softwaremixer, iris
INFO [MainThread] mopidy.__main__ Disabled extensions: file
INFO [MainThread] mopidy_local.commands Finding files in file:///media/NAS/music/Music/2018 ...
INFO [MainThread] mopidy_local.commands Found 5 files in file:///media/NAS/music/Music/2018
INFO [MainThread] mopidy_local.commands Checking 5 tracks from library
INFO [MainThread] mopidy_local.commands Removing 0 missing tracks
INFO [MainThread] mopidy_local.commands Found 0 tracks which need to be updated
INFO [MainThread] mopidy_local.commands Scanning...
INFO [MainThread] mopidy_local.commands Scanned 0 of 0 files in 0.000s.
INFO [MainThread] mopidy_local.commands Done scanning
INFO [MainThread] mopidy_local.storage Cleaning up image directory
I’m a little bit lost
Anyway, thanks for your help !
That’s right.
How can I know which user is using the Mopidy service ?
In my terminal I’m logged as root when I launch the service mopidy start
command.
All I know is I change the mopidy user in my /usr/sbin/mopidyctl file (Seems to be a way to fix a similar permission issue in this thread : Local scan fails)
It’s normally the mopidy
user but when people start hacking around with files it’s hard to be sure any more. In this case, if that is the only file you have edited, I would think you’re still running the service as the mopidy
user, which probably can’t read a database file owned by root
. You can check the service with sudo systemctl status
and see the Main PID or by running ps aux | grep mopidy
:
$ sudo systemctl status mopidy
● mopidy.service - Mopidy music server
Loaded: loaded (/lib/systemd/system/mopidy.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-07 11:33:01 BST; 1s ago
Process: 7488 ExecStartPre=/bin/mkdir -p /var/cache/mopidy (code=exited, status=0/SUCCESS)
Process: 7494 ExecStartPre=/bin/chown mopidy:audio /var/cache/mopidy (code=exited, status=0/SUCCESS)
Main PID: 7503 (mopidy)
You would probably see a message in the log during service startup if there was a permission problem reading the database. Did you check the Mopidy logs for anything like that (journalctl -u mopidy
) ? In fact, it would be pretty much exactly what is happening in the thread you have linked to…
For the record, that user in the linked thread was using dietpi (a bastardised distribution where someone thought running all the random software on a system as root
was a good idea - it is a bad idea. PiMusicbox has always done it and it’s a horrible idea there too). To be clear, scanning as root is not a fix, it’s a hacky workaround for some other problem. In your case the network mount is perhaps not configured correctly.
Understood !
Indeed, I run the local scan as mopidy user on a /home/pi/
directory (without using a mounted folder) and It’s works like a charm (Iris is able to play all the songs founded).
I thought it was the mopidy-local module that was not working completely and I hadn’t really figured out that using the process as root was not a solution in itself.
As you recommended, I will look at how my storage is mounted. I’ve used this line on my /etc/fstab file to mount my Music folder stored on the NAS : 192.168.0.23:/volume2/music/ /media/NAS/music nfs defaults,user,auto,noatime,intr 0 0
, going to read the mount.cifs manual to fix this problem
Thanks you !
Simply adding the UID=1000 argument and a recursive 755 chmod seems to be a solution !
Thanks you !