Re: audio/navidrome: use a config file
Morning Stuart, Thanks for the fast reply. On Thu, Nov 30, 2023 at 09:28:17AM +, Stuart Henderson wrote: > I think in this case, if the user has overridden flags it should stay > working, and the installed file seems to match what the old default > flags do, ... This is correct to my knowledge, so no need for a mention. > > +# To allow other hosts to connect, change to "localhost". > > 0.0.0.0 rather than localhost. But according to > https://www.navidrome.org/docs/usage/configuration-options/ the default > is to bind to 0.0.0.0 _and_ ::, so it might be better for users to > comment this out if they want to allow connections from other hosts. > (Check that though, in case they really mean "listen to :: and hope it > sees v4 too", like so many other programs). I can confirm that when commenting out the `Addresss` line, other hosts can connect via IPv4. Updated diff (OK?): Index: Makefile === RCS file: /cvs/ports/audio/navidrome/Makefile,v diff -u -p -r1.14 Makefile --- Makefile28 Nov 2023 06:22:47 - 1.14 +++ Makefile30 Nov 2023 09:48:45 - @@ -2,6 +2,7 @@ COMMENT = modern music server and stream MODGO_MODNAME =github.com/navidrome/navidrome MODGO_VERSION =v0.49.3 +REVISION = 0 DISTNAME = navidrome-${MODGO_VERSION} @@ -31,11 +32,14 @@ RUN_DEPENDS = graphics/ffmpeg MODULES = lang/go -SUBST_VARS = LOCALSTATEDIR - post-extract: cd ${WRKSRC} && tar -C ${WRKSRC}/ui/ -zxf \ ${FULLDISTDIR}/navidrome-build-${MODGO_VERSION}.tar.gz + +post-install: + ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/navidrome + ${SUBST_CMD} -c -m 755 ${FILESDIR}/navidrome.toml \ + ${PREFIX}/share/examples/navidrome/navidrome.toml .include "modules.inc" Index: files/navidrome.toml === RCS file: files/navidrome.toml diff -N files/navidrome.toml --- /dev/null 1 Jan 1970 00:00:00 - +++ files/navidrome.toml30 Nov 2023 09:49:39 - @@ -0,0 +1,15 @@ +# The address to bind to. +# +# To allow other hosts to connect, comment this line out. +Address = "127.0.0.1" + +# Where Navidrome finds music. +# +# Make sure the _navidrome user has read access to the music files. +MusicFolder = "${LOCALSTATEDIR}/navidrome/music" + +# Where Navidrome stores its database etc. +DataFolder = "${LOCALSTATEDIR}/navidrome/" + +# Uncomment to make logging more verbose. +#LogLevel = 'DEBUG' Index: pkg/PLIST === RCS file: /cvs/ports/audio/navidrome/pkg/PLIST,v diff -u -p -r1.4 PLIST --- pkg/PLIST 28 Nov 2023 06:22:47 - 1.4 +++ pkg/PLIST 30 Nov 2023 10:08:53 - @@ -6,6 +6,9 @@ @group _navidrome @sample ${LOCALSTATEDIR}/navidrome/ @sample ${LOCALSTATEDIR}/navidrome/music/ +share/examples/navidrome/ +share/examples/navidrome/navidrome.toml +@sample ${SYSCONFDIR}/navidrome.toml @mode @owner @group Index: pkg/README === RCS file: /cvs/ports/audio/navidrome/pkg/README,v diff -u -p -r1.2 README --- pkg/README 11 Mar 2022 18:20:21 - 1.2 +++ pkg/README 30 Nov 2023 09:50:07 - @@ -2,20 +2,24 @@ | Running ${PKGSTEM} on OpenBSD +--- +Config File +=== + +When using the included rc.d(8) script, ${PKGSTEM} uses the config file at +`${SYSCONFDIR}/navidrome.toml`. + Adding Music = -Music can be added by copying it to ${VARBASE}/navidrome/music/ or by changing -the `--datafolder` directory used. +Music can be added by copying it to `${LOCALSTATEDIR}/navidrome/music/` or +by changing `MusicFolder` in the config file. Web Interface = -${PKGSTEM} serves up a web interface on: - -http://localhost:4533 +By default, ${PKGSTEM} serves up a web interface on: -If you wish to listen on a different interface or change the location -${PKGSTEM} looks for music, you can modify it via rcctl: +http://127.0.0.1:4533 - # rcctl set navidrome flags -a 0.0.0.0 --datafolder /home/music +If you wish to listen on a different address, change the `Address` setting in +the config file. Index: pkg/navidrome.rc === RCS file: /cvs/ports/audio/navidrome/pkg/navidrome.rc,v diff -u -p -r1.2 navidrome.rc --- pkg/navidrome.rc11 Mar 2022 18:20:21 - 1.2 +++ pkg/navidrome.rc30 Nov 2023 09:48:30 - @@ -2,7 +2,7 @@ daemon="${TRUEPREFIX}/bin/navidrome" daemon_user="_navidrome" -daemon_flags="-a localhost --datafolder ${VARBASE}/navidrome --musicfolder ${VARBASE}/navidrome/music" +daemon_flags="-c ${SYSCONFDIR}/navidrome.toml" . /etc/rc.d/rc.subr -- Best Regards Edd Barrett https://www.theunixzoo.co.uk
Re: audio/navidrome: use a config file
On 2023/11/30 08:51, Edd Barrett wrote: > Hi, > > At the moment we encourage users to configure navidrome via command line > arguments in the rc script. > > Besides that being a bit crusty, the next version of navidrome supports > subsonic "jukebox mode" which can't be configured via the command line (only > via a config file). > > This diff therefore makes the port install and use a config file. > > While here, remove adding LOCALSTATEDIR to SUBST_VARS (it's already there), > and > update a straggling VARBASE in the pkg README. > > Questions: > - Did I use LOCALSTATEDIR correctly? I would avoid overriding it. It's not "wrong" but is a bit unusual. Specifically: drop the LOCALSTATEDIR setting in Makefile, use ${LOCALSTATEDIR}/navidrome in the toml file, keep the existing ${LOCALSTATEDIR}/navidrome in PLIST and use it in README. > - Do we need to mention this change on -current.html? My rule of thumb: If the average user of the old version needs to make changes for it to stay working, and it's not fairly obvious what to do from the errors they'll see, and it's not part of normal upstream documentation, then it may be worth adding to current.html. (If the user has to make changes _before_ upgrading, then it's definitely worth adding). I think in this case, if the user has overridden flags it should stay working, and the installed file seems to match what the old default flags do, so probably no need to mention. But I don't run this software myself so that's just from reading the diff. > (Once this is in, I'll post a diff to update to the latest version) > > Comments, OK? see inline about the toml file > > Index: Makefile > === > RCS file: /cvs/ports/audio/navidrome/Makefile,v > diff -u -p -r1.14 Makefile > --- Makefile 28 Nov 2023 06:22:47 - 1.14 > +++ Makefile 29 Nov 2023 19:20:26 - > @@ -2,6 +2,7 @@ COMMENT = modern music server and stream > > MODGO_MODNAME = github.com/navidrome/navidrome > MODGO_VERSION = v0.49.3 > +REVISION = 0 > > DISTNAME = navidrome-${MODGO_VERSION} > > @@ -31,11 +32,16 @@ RUN_DEPENDS = graphics/ffmpeg > > MODULES =lang/go > > -SUBST_VARS = LOCALSTATEDIR > +LOCALSTATEDIR = ${BASELOCALSTATEDIR}/navidrome > > post-extract: > cd ${WRKSRC} && tar -C ${WRKSRC}/ui/ -zxf \ > ${FULLDISTDIR}/navidrome-build-${MODGO_VERSION}.tar.gz > + > +post-install: > + ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/navidrome > + ${SUBST_CMD} -c -m 755 ${FILESDIR}/navidrome.toml \ > + ${PREFIX}/share/examples/navidrome/navidrome.toml > > .include "modules.inc" > > Index: files/navidrome.toml > === > RCS file: files/navidrome.toml > diff -N files/navidrome.toml > --- /dev/null 1 Jan 1970 00:00:00 - > +++ files/navidrome.toml 30 Nov 2023 08:25:59 - > @@ -0,0 +1,15 @@ > +# The address to bind to. > +# > +# To allow other hosts to connect, change to "localhost". 0.0.0.0 rather than localhost. But according to https://www.navidrome.org/docs/usage/configuration-options/ the default is to bind to 0.0.0.0 _and_ ::, so it might be better for users to comment this out if they want to allow connections from other hosts. (Check that though, in case they really mean "listen to :: and hope it sees v4 too", like so many other programs). > +Address = "127.0.0.1" > + > +# Where Navidrome finds music. > +# > +# Make sure the _navidrome user has read access to the music files. > +MusicFolder = "${LOCALSTATEDIR}/music" > + > +# Where Navidrome stores its database etc. > +DataFolder = "${LOCALSTATEDIR}" > + > +# Uncomment to make logging more verbose. > +#LogLevel = 'DEBUG' > Index: pkg/PLIST > === > RCS file: /cvs/ports/audio/navidrome/pkg/PLIST,v > diff -u -p -r1.4 PLIST > --- pkg/PLIST 28 Nov 2023 06:22:47 - 1.4 > +++ pkg/PLIST 29 Nov 2023 19:19:35 - > @@ -4,8 +4,11 @@ > @mode 755 > @owner _navidrome > @group _navidrome > -@sample ${LOCALSTATEDIR}/navidrome/ > -@sample ${LOCALSTATEDIR}/navidrome/music/ > +@sample ${LOCALSTATEDIR}/ > +@sample ${LOCALSTATEDIR}/music/ > +share/examples/navidrome/ > +share/examples/navidrome/navidrome.toml > +@sample ${SYSCONFDIR}/navidrome.toml > @mode > @owner > @group > Index: pkg/README > === > RCS file: /cvs/ports/audio/navidrome/pkg/README,v > diff -u -p -r1.2 README > --- pkg/README11 Mar 2022 18:20:21 - 1.2 > +++ pkg/README30 Nov 2023 08:34:11 - > @@ -2,20 +2,24 @@ > | Running ${PKGSTEM} on OpenBSD > +--- > > +Config File > +=== > + > +When using the included rc.d(8) script, ${PKGSTEM} uses the config file at >