INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: installJRMC - MC installer for Linux  (Read 1274 times)

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
installJRMC - MC installer for Linux
« on: August 22, 2024, 02:43:02 pm »

installJRMC

This program will install JRiver Media Center and associated services on most major Linux distros.

You can always find the latest version of installJRMC, changelog, and documentation in my repository.

tl;dr one-line MC install
Code: [Select]
curl https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC|bash
Instructions

Download and unzip installJRMC from the attachment below or grab the latest stable version directly:
Code: [Select]
curl -O https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC &&
chmod +x ./installJRMC &&
./installJRMC [--option [ARGUMENT]]

Running `installJRMC` without any options will install the latest version of JRiver Media Center from the official JRiver repository (Ubuntu/Debian) or my unofficial repository (Fedora/CentOS) using the system package manager (i.e. --install repo). If any other option is passed, then the install method (--install repo or --install local) must be specified, to make it possible to install services and containers independent of MC.

Options

Code: [Select]
$ installJRMC --help
--install, -i repo|local
    repo: Install MC from repository, future updates will be handled by the system package manager
    local: Build and install MC package from official source package
--build[=suse|fedora|centos]
    Build RPM from source DEB but do not install
    Optionally, specify a target distro for cross-building (ex. --build=suse, note the '=')
--compat
    Build/install MC without minimum dependency version requirements
--mcversion VERSION
    Build or install a specific MC version, ex. "33.0.13"
--arch ARCH
    Specify the MC architecture, ex. "amd64", "arm64", etc (default: host architecture)
--mcrepo REPO
    Specify the MC repository, ex. "bullseye", "bookworm", "noble", etc (default: latest official)
--outputdir PATH
    Generate rpmbuild output in this PATH (default: ./output)
--restorefile RESTOREFILE
    Restore file location for automatic license registration
--betapass PASSWORD
    Enter beta team password for access to beta builds
--service, -s SERVICE
    See SERVICES section below for the list of services to deploy
  --service-type user|system
      Starts services at boot (system) or user login (user) (default: per-service, see SERVICES)
--container, -c CONTAINER (TODO: Under construction)
    See CONTAINERS section below for a list of containers to deploy
--createrepo[=suse|fedora|centos]
    Build rpm, copy to webroot, and run createrepo.
    Optionally, specify a target distro for non-native repo (ex. --createrepo=fedora, note the '=')
  --createrepo-webroot PATH
      The webroot directory to install the repo (default: /var/www/jriver/)
  --createrepo-user USER
      The web server user if different from the current user
--yes, -y, --auto
    Always assumes yes for questions
--version, -v
    Print this script version and exit
--debug, -d
    Print debug output
--help, -h
    Print help dialog and exit
--uninstall, -u
    Uninstall JRiver MC, service files, and firewall rules (does not remove library or media files)

Services

Code: [Select]
jriver-mediaserver (user)
    Enable and start a mediaserver systemd service (requires an existing X server)
jriver-mediacenter (user)
    Enable and start a mediacenter systemd service (requires an existing X server)
jriver-x11vnc (user)
    Enable and start x11vnc for the local desktop (requires an existing X server, does NOT support Wayland)
  --vncpass and --display are also valid options (see below)
jriver-xvnc (system)
    Enable and start a new Xvnc session running JRiver Media Center
  --vncpass PASSWORD
    Set vnc password for x11vnc/Xvnc access. If no password is set, the script will either use existing password stored in ~/.vnc/jrmc_passwd or use no password
  --display DISPLAY
    Manually specify display to use for x11vnc/Xvnc (ex. ':1')
jriver-createrepo (system)
    Install hourly service to build latest MC RPM and run createrepo
    By default installs as root service to handle www permissions more gracefully

By default, MC services use a sane `--service-type` listed next to the service name in the Services description. User services can be manipulated as an unprivileged user, for example: systemctl --user stop jriver-mediacenter and begin at user login. System services are manipulable as root, for example: sudo systemctl stop jriver-servicename@username.service and begin at system boot. Note that it is possible to run all services of a particular user at boot using sudo loginctl enable-linger username.

Multiple services (but not --service-types) can be installed at one time using multiple --service blocks:
Code: [Select]
installJRMC --install repo --service jriver-x11vnc --service jriver-mediacenter
jriver-x11vnc versus jriver-xvnc

jriver-x11vnc shares your existing X display via VNC and can be combined with additional services to start Media Center or Media Server. Conversely, jriver-xvnc creates a new Xvnc display and starts a JRiver Media Center service in the foreground of the new VNC display.

Containers

Coming soon!

Firewall

`installJRMC` automatically creates port forwarding firewall rules for remote access to Media Network (52100-52200/tcp, 1900/udp DLNA) and Xvnc/x11vnc (if selected), using `firewall-cmd` or `ufw`.
Note: `ufw` is not installed by default on Debian but will be installed by `installJRMC`. To prevent SSH lock-out, Debian users that have not already enabled `ufw` will need to `sudo ufw enable` after running `installJRMC` and inspecting their configuration.

Examples

Code: [Select]
installJRMCInstall the latest version of MC from the best available repository.
Code: [Select]
installJRMC --install local --compatInstall a more widely-compatible version of the latest MC version.
Code: [Select]
installJRMC --install repo --service jriver-mediacenter --service-type userInstall MC from the repository and start/enable jriver-mediacenter.service as a user service.
Code: [Select]
installJRMC --install local --compat --restorefile /path/to/license.mjr --mcversion 33.0.13Build and install an MC 33.0.13 comptability RPM locally and activate it using the /path/to/license.mjr
Code: [Select]
installJRMC --createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-userBuild an RPM locally for the current distro, move it to the webroot, and run createrepo as www-user.
Code: [Select]
installJRMC --service jriver-createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-userInstall the jriver-createrepo timer and service to build the RPM, move it to the webroot, and run createrepo as www-user hourly.
Code: [Select]
installJRMC --install repo --service jriver-x11vnc --service jriver-mediacenter --vncpass "letmein"Install services to share the existing local desktop via VNC and automatically run MC on startup.
Code: [Select]
installJRMC --install repo --service jriver-xvnc --display ":2"Install an Xvnc server on display ':2' that starts MC.
Code: [Select]
installJRMC --uninstallUninstall MC, services, and firewall rules. This will not remove your media, media library/database, or library backup folder.

Additional Info

Did you find installJRMC useful? Buy me a coffee!
Logged

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #1 on: August 22, 2024, 02:45:46 pm »

I've disabled the library migration step in installJRMC v1.2.0 since I have not run into (nor heard reports of) any lingering issues with the built-in migration.
Logged

Awesome Donkey

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 7670
  • August and everything after...
Re: installJRMC - MC installer for Linux
« Reply #2 on: August 22, 2024, 02:52:05 pm »

Nice! Though for me on Ubuntu 24.04 it appears to me that it sets to the noble repo then tries to switch to the bullseye repo. How does --mcrepo noble work? It says it switches to noble then says a few lines below it switches to the bullseye repo. Unless I'm missing something obvious here?

Code: [Select]
/home/michael/Git/installJRMC/installJRMC --mcrepo noble -d
Debug: Running: main --mcrepo noble -d
Debug: Running: init
Starting installJRMC
Debug: Detected host platform: ubuntu 24.04 amd64
Debug: Switching to noble repo for *buntu 24
Debug: Using host platform: ubuntu 24.04
Debug: Running: parseInput
Debug: Debugging on
Debug: installJRMC version: 1.2.0
Debug: Running: setMCVersion
Debug: Running: installPackage --silent buildah
Debug: buildah already installed, skipping installation
Debug: buildah rm alpine-working-container-1
d65a54a16adb042a0684a6ee31678104bf765f063878a6e4ad65c0e91a444347
Using the bullseye repository
Using MC version 33.0.13 from the bullseye repo determined by containerized package manager
To override, use --mcversion
Debug: MC_VERSION=33.0.13, MC_REPO=bullseye, MC_PKG=mediacenter33, MC_RPM=/home/michael/Git/installJRMC/output/RPMS/x86_64/mediacenter33-33.0.13.x86_64.rpm
...
[code]
Logged
I don't work for JRiver... I help keep the forums safe from Viagra and other sources of sketchy pharmaceuticals.

Windows 11 2024 Update (24H2) 64-bit + Ubuntu 24.04.1 LTS Noble Numbat 64-bit | Windows 11 2024 Update (24H2) 64-bit (Intel N305 Fanless NUC 16GB RAM/500GB M.2 NVMe SSD)
JRiver Media Center 33 (Windows + Linux) | iFi ZEN DAC 3 | JBL 306P MkII Studio Monitors | Audio-Technica ATH-M50x Headphones

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #3 on: August 22, 2024, 03:23:10 pm »

Nice! Though for me on Ubuntu 24.04 it appears to me that it sets to the noble repo then tries to switch to the bullseye repo. How does --mcrepo noble work? It says it switches to noble then says a few lines below it switches to the bullseye repo. Unless I'm missing something obvious here?

Code: [Select]
/home/michael/Git/installJRMC/installJRMC --mcrepo noble -d
Debug: Running: main --mcrepo noble -d
Debug: Running: init
Starting installJRMC
Debug: Detected host platform: ubuntu 24.04 amd64
Debug: Switching to noble repo for *buntu 24
Debug: Using host platform: ubuntu 24.04
Debug: Running: parseInput
Debug: Debugging on
Debug: installJRMC version: 1.2.0
Debug: Running: setMCVersion
Debug: Running: installPackage --silent buildah
Debug: buildah already installed, skipping installation
Debug: buildah rm alpine-working-container-1
d65a54a16adb042a0684a6ee31678104bf765f063878a6e4ad65c0e91a444347
Using the bullseye repository
Using MC version 33.0.13 from the bullseye repo determined by containerized package manager
To override, use --mcversion
Debug: MC_VERSION=33.0.13, MC_REPO=bullseye, MC_PKG=mediacenter33, MC_RPM=/home/michael/Git/installJRMC/output/RPMS/x86_64/mediacenter33-33.0.13.x86_64.rpm
...
[code]

Thanks! Could you try again (I re-released the same version)?

Also note that:
Code: [Select]
installJRMC --mcrepo noble -d
...won't install MC (you'll also need an install switch since you've specified the repo).

There's also already a workaround in install MC for *buntu >= 24 (as you can see in the debug output). So you shouldn't need to specify --mcrepo at all if you want the noble version to be automatically installed on those platforms.

Logged

Awesome Donkey

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 7670
  • August and everything after...
Re: installJRMC - MC installer for Linux
« Reply #4 on: August 22, 2024, 03:27:13 pm »

Sure, pulled the newest from the repo and same result. It tries to use noble then switches to bullseye.

Code: [Select]
./installJRMC -d
Debug: Running: main -d
Debug: Running: init
Starting installJRMC
Debug: Detected host platform: ubuntu 24.04 amd64
Debug: Switching to noble repo for *buntu 24
Debug: Using host platform: ubuntu 24.04
Debug: Running: parseInput
Debug: Debugging on
Debug: installJRMC version: 1.2.0
Debug: Running: setMCVersion
Debug: Running: installPackage --silent buildah
Debug: buildah already installed, skipping installation
Debug: buildah rm alpine-working-container-1
1e47dbc3fc575212a0b54acd7e9b3fa8bcda626d4b431764da43906e698ae0b8
Using the bullseye repository
Using MC version 33.0.13 from the bullseye repo determined by containerized package manager
To override, use --mcversion
Debug: MC_VERSION=33.0.13, MC_REPO=bullseye, MC_PKG=mediacenter33, MC_RPM=/home/michael/Git/installJRMC/output/RPMS/x86_64/mediacenter33-33.0.13.x86_64.rpm
...

I seem to also recall asking at some point in the past why it's trying to do a .rpm on Ubuntu but I forgot why, heh. Likely not important though.
Logged
I don't work for JRiver... I help keep the forums safe from Viagra and other sources of sketchy pharmaceuticals.

Windows 11 2024 Update (24H2) 64-bit + Ubuntu 24.04.1 LTS Noble Numbat 64-bit | Windows 11 2024 Update (24H2) 64-bit (Intel N305 Fanless NUC 16GB RAM/500GB M.2 NVMe SSD)
JRiver Media Center 33 (Windows + Linux) | iFi ZEN DAC 3 | JBL 306P MkII Studio Monitors | Audio-Technica ATH-M50x Headphones

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #5 on: August 22, 2024, 03:32:55 pm »

Sure, pulled the newest from the repo and same result. It tries to use noble then switches to bullseye.

Code: [Select]
./installJRMC -d
Debug: Running: main -d
Debug: Running: init
Starting installJRMC
Debug: Detected host platform: ubuntu 24.04 amd64
Debug: Switching to noble repo for *buntu 24
Debug: Using host platform: ubuntu 24.04
Debug: Running: parseInput
Debug: Debugging on
Debug: installJRMC version: 1.2.0
Debug: Running: setMCVersion
Debug: Running: installPackage --silent buildah
Debug: buildah already installed, skipping installation
Debug: buildah rm alpine-working-container-1
1e47dbc3fc575212a0b54acd7e9b3fa8bcda626d4b431764da43906e698ae0b8
Using the bullseye repository
Using MC version 33.0.13 from the bullseye repo determined by containerized package manager
To override, use --mcversion
Debug: MC_VERSION=33.0.13, MC_REPO=bullseye, MC_PKG=mediacenter33, MC_RPM=/home/michael/Git/installJRMC/output/RPMS/x86_64/mediacenter33-33.0.13.x86_64.rpm
...

I seem to also recall asking at some point in the past why it's trying to do a .rpm on Ubuntu but I forgot why, heh. Likely not important though.

Thank you, should be fixed now.

MC_RPM is just a placeholder variable, it isn't actually used on the other platforms.
Logged

Awesome Donkey

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 7670
  • August and everything after...
Re: installJRMC - MC installer for Linux
« Reply #6 on: August 22, 2024, 03:53:39 pm »

Yep, works great now, thanks a lot! :D
Logged
I don't work for JRiver... I help keep the forums safe from Viagra and other sources of sketchy pharmaceuticals.

Windows 11 2024 Update (24H2) 64-bit + Ubuntu 24.04.1 LTS Noble Numbat 64-bit | Windows 11 2024 Update (24H2) 64-bit (Intel N305 Fanless NUC 16GB RAM/500GB M.2 NVMe SSD)
JRiver Media Center 33 (Windows + Linux) | iFi ZEN DAC 3 | JBL 306P MkII Studio Monitors | Audio-Technica ATH-M50x Headphones

Awesome Donkey

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 7670
  • August and everything after...
Re: installJRMC - MC installer for Linux
« Reply #7 on: August 24, 2024, 08:45:19 pm »

This might need to be checked for Linux Mint 22. It needs to use the noble repo and needs the libwebkit2gtk dependency from it. I don't use Mint so I can't test it.

https://yabb.jriver.com/interact/index.php/topic,139566.0.html
Logged
I don't work for JRiver... I help keep the forums safe from Viagra and other sources of sketchy pharmaceuticals.

Windows 11 2024 Update (24H2) 64-bit + Ubuntu 24.04.1 LTS Noble Numbat 64-bit | Windows 11 2024 Update (24H2) 64-bit (Intel N305 Fanless NUC 16GB RAM/500GB M.2 NVMe SSD)
JRiver Media Center 33 (Windows + Linux) | iFi ZEN DAC 3 | JBL 306P MkII Studio Monitors | Audio-Technica ATH-M50x Headphones

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #8 on: August 25, 2024, 02:44:18 pm »

This might need to be checked for Linux Mint 22. It needs to use the noble repo and needs the libwebkit2gtk dependency from it. I don't use Mint so I can't test it.

https://yabb.jriver.com/interact/index.php/topic,139566.0.html

Thanks, I think it was just the missing --install switch. I will add a blurb to the OP and simplify this in the future if more distros begin outpacing bullseye.
Logged

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #9 on: August 31, 2024, 08:20:12 pm »

In v1.2.2 I've added automatic repository detection for DEB distros to select the correct --mcrepo based on the VERSION_CODENAME.
Logged

Awesome Donkey

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 7670
  • August and everything after...
Re: installJRMC - MC installer for Linux
« Reply #10 on: September 03, 2024, 10:09:08 am »

I'll probably get Mint 22 and double check it later.

Been meaning to ask but can any sort of script auto-update be implemented? Like it checks for script updates on start then downloads/applies/restarts the script to run the new one sort of deal? I would imagine there's multiple users who are using older versions without knowing there's an update.
Logged
I don't work for JRiver... I help keep the forums safe from Viagra and other sources of sketchy pharmaceuticals.

Windows 11 2024 Update (24H2) 64-bit + Ubuntu 24.04.1 LTS Noble Numbat 64-bit | Windows 11 2024 Update (24H2) 64-bit (Intel N305 Fanless NUC 16GB RAM/500GB M.2 NVMe SSD)
JRiver Media Center 33 (Windows + Linux) | iFi ZEN DAC 3 | JBL 306P MkII Studio Monitors | Audio-Technica ATH-M50x Headphones

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #11 on: September 03, 2024, 08:26:53 pm »

Been meaning to ask but can any sort of script auto-update be implemented? Like it checks for script updates on start then downloads/applies/restarts the script to run the new one sort of deal? I would imagine there's multiple users who are using older versions without knowing there's an update.

Done in 1.3.1. Thanks for the idea, now I can "push" changes to installJRMC service timers like createrepo.

If installJRMC is in a git repo it will pull and run the new version. If it's not in a git repo, it will download, update, and run the latest version. Hopefully this is the last time anyone will need to download installJRMC! ;D

Also fixed Linux Mint issues and tested on Jammy. 

Required some larger refactoring so testing would be appreciated.
Logged

terrym@tassie

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 498
Re: installJRMC - MC installer for Linux
« Reply #12 on: Yesterday at 12:38:58 am »

Using 1.3.1 to install MC33 on Linux Mint 21.3, I got the following problem with the user service that was created:

The service was constantly restarting and showed the following status:
Code: [Select]
systemctl --user status  jriver-mediacenter
● jriver-mediacenter.service - JRiver Media Center 33
     Loaded: loaded (/usr/lib/systemd/user/jriver-mediacenter.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: core-dump) since Wed 2024-09-18 14:51:17 AEST; 8s ago
    Process: 15701 ExecStart=/usr/bin/mediacenter33 (code=exited, status=0/SUCCESS)
    Process: 15702 ExecStop=/usr/bin/mc33 /MCC 20007 (code=dumped, signal=SEGV)
   Main PID: 15701 (code=exited, status=0/SUCCESS)
        CPU: 101ms

I looked at the service file and commented out the 'Environment=DISPLAY=' line (file shown below) and then the service started normally.

/usr/lib/systemd/user/jriver-mediacenter.service
Code: [Select]
[Unit]
Description=JRiver Media Center 33
After=default.target

[Service]
Type=simple

Environment=XAUTHORITY=/home/terry/.Xauthority
#Environment=DISPLAY=
ExecStart=/usr/bin/mediacenter33
KillMode=none
ExecStop=/usr/bin/mc33 /MCC 20007
Restart=always
RestartSec=10
TimeoutStopSec=30

[Install]
WantedBy=default.target

EDIT:
Looking into this a bit more, neither of the Environment statements are required for Linux Mint 21.3 as they are already set:
Code: [Select]
$ systemctl --user show-environment
HOME=/home/terry
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en
LOGNAME=terry
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u>
SHELL=/bin/bash
SYSTEMD_EXEC_PID=861
USER=terry
XDG_DATA_DIRS=/usr/share/xfce4:/home/terry/.local/share/flatpak/exports/share:/>
XDG_RUNTIME_DIR=/run/user/1000
GTK_MODULES=gail:atk-bridge
QT_ACCESSIBILITY=1
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=xfce
DISPLAY=:0
GDMSESSION=xfce
GDM_LANG=en_AU
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK3_MODULES=xapp-gtk3-module
IM_CONFIG_PHASE=1
PWD=/home/terry
SHLVL=1
SSH_AUTH_SOCK=/tmp/ssh-XXXXXX173Non/agent.1140
XAUTHLOCALHOSTNAME=
XAUTHORITY=/home/terry/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg
XDG_CURRENT_DESKTOP=XFCE
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/terry
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
_=/usr/bin/dbus-update-activation-environment

If Environment=DISPLAY is included, it should be: Environment=DISPLAY=:0 (on my system)
Logged
Good manners cost nothing.
Bad manners can cost you your reputation
― B.D.Hawkey

BryanC

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2620
Re: installJRMC - MC installer for Linux
« Reply #13 on: Yesterday at 08:46:35 am »

Using 1.3.1 to install MC33 on Linux Mint 21.3, I got the following problem with the user service that was created:

*snip*

Thanks, that should be fixed now, it was legacy cruft from old Debian systemd.

Also, since installJRMC is now self-updating I'm dropping versioning from the release zips to simplify things.
Logged

terrym@tassie

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 498
Re: installJRMC - MC installer for Linux
« Reply #14 on: Yesterday at 05:27:27 pm »

Thanks, really appreciate the effort you put into this incredibly useful utility.
Logged
Good manners cost nothing.
Bad manners can cost you your reputation
― B.D.Hawkey
Pages: [1]   Go Up