Add a user systemd script (from @deuchnord )

This commit is contained in:
F. Duncanh
2025-05-13 03:52:14 -04:00
parent 2cade77f76
commit 31309a316c
5 changed files with 109 additions and 21 deletions

View File

@@ -58,7 +58,8 @@ target_link_libraries( uxplay
install( TARGETS uxplay RUNTIME DESTINATION bin ) install( TARGETS uxplay RUNTIME DESTINATION bin )
install( FILES uxplay.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 ) install( FILES uxplay.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
install( FILES README.md README.txt README.html LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR} ) install( FILES README.md README.txt README.html LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR} )
install( FILES lib/llhttp/LICENSE-MIT DESTINATION ${CMAKE_INSTALL_DOCDIR}/llhttp ) install( FILES lib/llhttp/LICENSE-MIT DESTINATION ${CMAKE_INSTALL_DOCDIR}/llhttp )
install( FILES uxplay.service DESTINATION ${CMAKE_INSTALL_DOCDIR}/systemd )
# uninstall target # uninstall target
if(NOT TARGET uninstall) if(NOT TARGET uninstall)

View File

@@ -86,8 +86,12 @@ href="https://github.com/FDH2/UxPlay/releases">releases</a> (see their
the section on using this specfile for <a the section on using this specfile for <a
href="#building-an-installable-rpm-package">building an installable RPM href="#building-an-installable-rpm-package">building an installable RPM
package</a>.</p></li> package</a>.</p></li>
<li><p>If your distribution does not supply UxPlay, or you want the
latest version, it is very easy to build it yourself: see the very <a
href="#building-uxplay-from-source">detailed instructions for building
UxPlay from source</a>. later in this document.</p></li>
</ul> </ul>
<p>After installation:</p> <h2 id="after-installation">After installation:</h2>
<ul> <ul>
<li><p>(On Linux and *BSD): if a firewall is active on the server <li><p>(On Linux and *BSD): if a firewall is active on the server
hosting UxPlay, make sure the default network port (UDP 5353) for hosting UxPlay, make sure the default network port (UDP 5353) for
@@ -104,6 +108,9 @@ also install.</p></li>
<li><p>For Audio-only mode (Apple Music, etc.) best quality is obtained <li><p>For Audio-only mode (Apple Music, etc.) best quality is obtained
with the option “uxplay -async”, but there is then a 2 second latency with the option “uxplay -async”, but there is then a 2 second latency
imposed by iOS.</p></li> imposed by iOS.</p></li>
<li><p>If you are using UxPlay just to mirror the clients screen
(without showing videos that need audio synchronized with video), it is
best to use the option “uxplay -vsync no”.</p></li>
<li><p>Add any UxPlay options you want to use as defaults to a startup <li><p>Add any UxPlay options you want to use as defaults to a startup
file <code>~/.uxplayrc</code> (see “<code>man uxplay</code>” or file <code>~/.uxplayrc</code> (see “<code>man uxplay</code>” or
<code>uxplay -h</code>” for format and other possible locations). In <code>uxplay -h</code>” for format and other possible locations). In
@@ -112,6 +119,24 @@ you may wish to add “as pipewiresink” or “vs waylandsink” as defaults to
the file. <em>(Output from terminal commands “ps waux | grep pulse” or the file. <em>(Output from terminal commands “ps waux | grep pulse” or
“pactl info” will contain “pipewire” if your Linux/BSD system uses “pactl info” will contain “pipewire” if your Linux/BSD system uses
it).</em></p></li> it).</em></p></li>
<li><p>For Linux systems using systemd, there is a
<strong>systemd</strong> service file <strong>uxplay.service</strong>
found in the UxPlay top directory of the distribution, and also
installed in <code>&lt;DOCDIR&gt;/uxplay/systemd/</code> (where DOCDIR
is usually <code>/usr/local/share/doc</code>), that allows users to
start their own instance of UxPlay as a rootless daemon: it should
either be added to the directory /etc/systemd/user, or the user can just
create their own systemd directory <code>~/.config/systemd/user/</code>
and then copy uxplay.service into it. To save uxplay terminal output to
a file ~/uxplay.log, uncomment the StandardOutput entry in
uxplay.service. Then</p>
<p><code>systemctl --user [start/stop/enable/disable/status] uxplay</code></p>
<p>can be used to control the daemon. If it is enabled, the daemon will
start at the users first login and stop when they no longer have any
open sessions. See
https://www.baeldung.com/linux/systemd-create-user-services for more
about systemd user services. <strong>Note: it is NOT recommended to run
UxPlay as a root service.</strong></p></li>
<li><p>On Raspberry Pi: models using hardware h264 video decoding by the <li><p>On Raspberry Pi: models using hardware h264 video decoding by the
Broadcom GPU (models 4B and earlier) may require the uxplay option Broadcom GPU (models 4B and earlier) may require the uxplay option
-bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be <a -bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be <a
@@ -120,9 +145,12 @@ to use hardware video decoding by the Broadcom GPU (also recommended but
optional for Raspberry Pi OS (Bullseye): the patched GStreamer does not optional for Raspberry Pi OS (Bullseye): the patched GStreamer does not
need option ” -bt709`“. The need for -bt709 when hardware video decoding need option ” -bt709`“. The need for -bt709 when hardware video decoding
is used seems to have reappeared starting with GStreamer-1.22.</p></li> is used seems to have reappeared starting with GStreamer-1.22.</p></li>
<li><p>If UxPlay is used in a public space, there are security options
for requiring an AppleTV-style one-time pin (displayed on the terminal)
to be entered, or a password, and for barring/permitting client access
by their device ID. See options -pin, -reg, -pw, -restrict, -allow,
-block.</p></li>
</ul> </ul>
<p>To (easily) compile the latest UxPlay from source, see the section <a
href="#getting-uxplay">Getting UxPlay</a>.</p>
<h1 id="detailed-description-of-uxplay">Detailed description of <h1 id="detailed-description-of-uxplay">Detailed description of
UxPlay</h1> UxPlay</h1>
<p>This project is a GPLv3 open source unix AirPlay2 Mirror server for <p>This project is a GPLv3 open source unix AirPlay2 Mirror server for
@@ -261,7 +289,7 @@ can be regarded as a “System Library”, which it is in *BSD). Many Linux
distributions treat OpenSSL as a “System Library”, but some distributions treat OpenSSL as a “System Library”, but some
(e.g. Debian) do not: in this case, the issue is solved by linking with (e.g. Debian) do not: in this case, the issue is solved by linking with
OpenSSL-3.0.0 or later.</p> OpenSSL-3.0.0 or later.</p>
<h1 id="getting-uxplay">Getting UxPlay</h1> <h1 id="building-uxplay-from-source">Building UxPlay from source</h1>
<p>Either download and unzip <a <p>Either download and unzip <a
href="https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip">UxPlay-master.zip</a>, href="https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip">UxPlay-master.zip</a>,
or (if git is installed): “git clone https://github.com/FDH2/UxPlay”. or (if git is installed): “git clone https://github.com/FDH2/UxPlay”.
@@ -526,7 +554,7 @@ href="#usage">Usage</a> for details, if you wish to use it. <em>Some
clients with MDM (Mobile Device Management, often present on clients with MDM (Mobile Device Management, often present on
employer-owned devices) are required to use pin-authentication: UxPlay employer-owned devices) are required to use pin-authentication: UxPlay
will provide this even when running without the pin option.</em> will provide this even when running without the pin option.</em>
Password authentication (-pw <em>pwd</em>)is also offered as an Password authentication (-pw <em>pwd</em>) is also offered as an
alternative solution to pin codes: users need to know the password alternative solution to pin codes: users need to know the password
<em>pwd</em> and enter it on their iOS/macOS device to access UxPlay, <em>pwd</em> and enter it on their iOS/macOS device to access UxPlay,
when prompted (if <em>pwd</em> is not set, a displayed random pin code when prompted (if <em>pwd</em> is not set, a displayed random pin code

View File

@@ -72,7 +72,12 @@ status](https://repology.org/badge/vertical-allrepos/uxplay.svg)](https://repolo
See the section on using this specfile for [building an installable See the section on using this specfile for [building an installable
RPM package](#building-an-installable-rpm-package). RPM package](#building-an-installable-rpm-package).
After installation: - If your distribution does not supply UxPlay, or you want the latest version,
it is very easy to build it yourself: see the very
[detailed instructions for building UxPlay from source](#building-uxplay-from-source).
later in this document.
## After installation:
- (On Linux and \*BSD): if a firewall is active on the server hosting - (On Linux and \*BSD): if a firewall is active on the server hosting
UxPlay, make sure the default network port (UDP 5353) for UxPlay, make sure the default network port (UDP 5353) for
@@ -90,6 +95,10 @@ After installation:
with the option "uxplay -async", but there is then a 2 second with the option "uxplay -async", but there is then a 2 second
latency imposed by iOS. latency imposed by iOS.
- If you are using UxPlay just to mirror the client's screen (without
showing videos that need audio synchronized with video), it is best to
use the option "uxplay -vsync no".
- Add any UxPlay options you want to use as defaults to a startup file - Add any UxPlay options you want to use as defaults to a startup file
`~/.uxplayrc` (see "`man uxplay`" or "`uxplay -h`" for format and `~/.uxplayrc` (see "`man uxplay`" or "`uxplay -h`" for format and
other possible locations). In particular, if your system uses other possible locations). In particular, if your system uses
@@ -98,6 +107,22 @@ After installation:
from terminal commands "ps waux \| grep pulse" or "pactl info" will from terminal commands "ps waux \| grep pulse" or "pactl info" will
contain "pipewire" if your Linux/BSD system uses it).* contain "pipewire" if your Linux/BSD system uses it).*
- For Linux systems using systemd, there is a **systemd** service file **uxplay.service**
found in the UxPlay top directory of the distribution, and also installed
in `<DOCDIR>/uxplay/systemd/` (where DOCDIR is usually ``/usr/local/share/doc``), that allows users to start
their own instance of UxPlay as a rootless daemon: it should either be added to the
directory /etc/systemd/user, or the user can just create their own
systemd directory `~/.config/systemd/user/` and then copy uxplay.service into it. To save
uxplay terminal output to a file ~/uxplay.log, uncomment the StandardOutput entry in
uxplay.service. Then
`systemctl --user [start/stop/enable/disable/status] uxplay`
can be used to control the daemon. If it is enabled, the daemon will start
at the user's first login and stop when they no longer have any open sessions. See
https://www.baeldung.com/linux/systemd-create-user-services for more about
systemd user services. **Note: it is NOT recommended to run UxPlay as a root service.**
- On Raspberry Pi: models using hardware h264 video decoding by the - On Raspberry Pi: models using hardware h264 video decoding by the
Broadcom GPU (models 4B and earlier) may require the uxplay option -bt709. Broadcom GPU (models 4B and earlier) may require the uxplay option -bt709.
If you use Ubuntu 22.10 or earlier, GStreamer must If you use Ubuntu 22.10 or earlier, GStreamer must
@@ -108,9 +133,10 @@ After installation:
decoding is used seems to have reappeared decoding is used seems to have reappeared
starting with GStreamer-1.22. starting with GStreamer-1.22.
To (easily) compile the latest UxPlay from source, see the section - If UxPlay is used in a public space, there are security options for requiring an AppleTV-style
[Getting UxPlay](#getting-uxplay). one-time pin (displayed on the terminal) to be entered, or a password, and for barring/permitting
client access by their device ID. See options -pin, -reg, -pw, -restrict, -allow, -block.
# Detailed description of UxPlay # Detailed description of UxPlay
This project is a GPLv3 open source unix AirPlay2 Mirror server for This project is a GPLv3 open source unix AirPlay2 Mirror server for
@@ -252,7 +278,7 @@ clause incompatible with the GPL unless OpenSSL can be regarded as a
OpenSSL as a "System Library", but some (e.g. Debian) do not: in this OpenSSL as a "System Library", but some (e.g. Debian) do not: in this
case, the issue is solved by linking with OpenSSL-3.0.0 or later. case, the issue is solved by linking with OpenSSL-3.0.0 or later.
# Getting UxPlay # Building UxPlay from source
Either download and unzip Either download and unzip
[UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip), [UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip),
@@ -512,7 +538,7 @@ below for help with this or other problems.
with MDM (Mobile Device Management, often present on employer-owned with MDM (Mobile Device Management, often present on employer-owned
devices) are required to use pin-authentication: UxPlay will provide devices) are required to use pin-authentication: UxPlay will provide
this even when running without the pin option.* Password authentication this even when running without the pin option.* Password authentication
(-pw _pwd_)is also offered as an alternative solution to pin codes: (-pw _pwd_) is also offered as an alternative solution to pin codes:
users need to know the password _pwd_ and enter it on their iOS/macOS device users need to know the password _pwd_ and enter it on their iOS/macOS device
to access UxPlay, when prompted (if _pwd_ is not set, a displayed random to access UxPlay, when prompted (if _pwd_ is not set, a displayed random
pin code must be entered at **each** new connection.) pin code must be entered at **each** new connection.)

View File

@@ -79,7 +79,12 @@ status](https://repology.org/badge/vertical-allrepos/uxplay.svg)](https://repolo
See the section on using this specfile for [building an installable See the section on using this specfile for [building an installable
RPM package](#building-an-installable-rpm-package). RPM package](#building-an-installable-rpm-package).
After installation: - If your distribution does not supply UxPlay, or you want the latest
version, it is very easy to build it yourself: see the very
[detailed instructions for building UxPlay from
source](#building-uxplay-from-source). later in this document.
## After installation:
- (On Linux and \*BSD): if a firewall is active on the server hosting - (On Linux and \*BSD): if a firewall is active on the server hosting
UxPlay, make sure the default network port (UDP 5353) for UxPlay, make sure the default network port (UDP 5353) for
@@ -97,6 +102,10 @@ After installation:
with the option "uxplay -async", but there is then a 2 second with the option "uxplay -async", but there is then a 2 second
latency imposed by iOS. latency imposed by iOS.
- If you are using UxPlay just to mirror the client's screen (without
showing videos that need audio synchronized with video), it is best
to use the option "uxplay -vsync no".
- Add any UxPlay options you want to use as defaults to a startup file - Add any UxPlay options you want to use as defaults to a startup file
`~/.uxplayrc` (see "`man uxplay`" or "`uxplay -h`" for format and `~/.uxplayrc` (see "`man uxplay`" or "`uxplay -h`" for format and
other possible locations). In particular, if your system uses other possible locations). In particular, if your system uses
@@ -105,6 +114,26 @@ After installation:
from terminal commands "ps waux \| grep pulse" or "pactl info" will from terminal commands "ps waux \| grep pulse" or "pactl info" will
contain "pipewire" if your Linux/BSD system uses it).* contain "pipewire" if your Linux/BSD system uses it).*
- For Linux systems using systemd, there is a **systemd** service file
**uxplay.service** found in the UxPlay top directory of the
distribution, and also installed in `<DOCDIR>/uxplay/systemd/`
(where DOCDIR is usually `/usr/local/share/doc`), that allows users
to start their own instance of UxPlay as a rootless daemon: it
should either be added to the directory /etc/systemd/user, or the
user can just create their own systemd directory
`~/.config/systemd/user/` and then copy uxplay.service into it. To
save uxplay terminal output to a file \~/uxplay.log, uncomment the
StandardOutput entry in uxplay.service. Then
`systemctl --user [start/stop/enable/disable/status] uxplay`
can be used to control the daemon. If it is enabled, the daemon will
start at the user's first login and stop when they no longer have
any open sessions. See
https://www.baeldung.com/linux/systemd-create-user-services for more
about systemd user services. **Note: it is NOT recommended to run
UxPlay as a root service.**
- On Raspberry Pi: models using hardware h264 video decoding by the - On Raspberry Pi: models using hardware h264 video decoding by the
Broadcom GPU (models 4B and earlier) may require the uxplay option Broadcom GPU (models 4B and earlier) may require the uxplay option
-bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be -bt709. If you use Ubuntu 22.10 or earlier, GStreamer must be
@@ -115,8 +144,11 @@ After installation:
video decoding is used seems to have reappeared starting with video decoding is used seems to have reappeared starting with
GStreamer-1.22. GStreamer-1.22.
To (easily) compile the latest UxPlay from source, see the section - If UxPlay is used in a public space, there are security options for
[Getting UxPlay](#getting-uxplay). requiring an AppleTV-style one-time pin (displayed on the terminal)
to be entered, or a password, and for barring/permitting client
access by their device ID. See options -pin, -reg, -pw, -restrict,
-allow, -block.
# Detailed description of UxPlay # Detailed description of UxPlay
@@ -259,7 +291,7 @@ clause incompatible with the GPL unless OpenSSL can be regarded as a
OpenSSL as a "System Library", but some (e.g. Debian) do not: in this OpenSSL as a "System Library", but some (e.g. Debian) do not: in this
case, the issue is solved by linking with OpenSSL-3.0.0 or later. case, the issue is solved by linking with OpenSSL-3.0.0 or later.
# Getting UxPlay # Building UxPlay from source
Either download and unzip Either download and unzip
[UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip), [UxPlay-master.zip](https://github.com/FDH2/UxPlay/archive/refs/heads/master.zip),
@@ -519,11 +551,11 @@ below for help with this or other problems.
with MDM (Mobile Device Management, often present on employer-owned with MDM (Mobile Device Management, often present on employer-owned
devices) are required to use pin-authentication: UxPlay will provide devices) are required to use pin-authentication: UxPlay will provide
this even when running without the pin option.* Password this even when running without the pin option.* Password
authentication (-pw *pwd*)is also offered as an alternative solution authentication (-pw *pwd*) is also offered as an alternative
to pin codes: users need to know the password *pwd* and enter it on solution to pin codes: users need to know the password *pwd* and
their iOS/macOS device to access UxPlay, when prompted (if *pwd* is enter it on their iOS/macOS device to access UxPlay, when prompted
not set, a displayed random pin code must be entered at **each** new (if *pwd* is not set, a displayed random pin code must be entered at
connection.) **each** new connection.)
- By default, UxPlay is locked to its current client until that client - By default, UxPlay is locked to its current client until that client
drops the connection; since UxPlay-1.58, the option `-nohold` drops the connection; since UxPlay-1.58, the option `-nohold`

View File

@@ -7,6 +7,7 @@ After=avahi-daemon
Type=simple Type=simple
ExecStart=uxplay ExecStart=uxplay
Restart=on-failure Restart=on-failure
#StandardOutput=file:%h/uxplay.log
[Install] [Install]
WantedBy=default.target WantedBy=default.target