Sunshine: Difference between revisions

Klinger (talk | contribs)
Tags: Mobile edit Mobile web edit
Devusb (talk | contribs)
m fix formatting error
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page is intended to explain how to use Sunshine, an open-source implementation of Nvidia’s Moonlight game streaming application.
This page is intended to explain how to use Sunshine, an open-source implementation of NVIDIA’s GameStream protocol.


== Install ==
== Install ==
To install Sunshine, you will need to open up firewall ports, install udev rules and provide a setuid wrapper,
 
so that sunshine can capture the display:
 
To install Sunshine and enable it you can use the following snippet:


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{ pkgs, ... }: {
   services.sunshine = {
  environment.systemPackages = [
    pkgs.sunshine
    pkgs.moonlight-qt #for testing purposes.
  ];
   services.udev.packages = [ pkgs.sunshine ]; # allow access to create virtual input interfaces.
  networking.firewall = {
     enable = true;
     enable = true;
     allowedTCPPorts = [ 47984 47989 47990 48010 ];
     autoStart = true;
     allowedUDPPortRanges = [
     capSysAdmin = true; # only needed for Wayland -- omit this when using with Xorg
      { from = 47998; to = 48000; }
    openFirewall = true;
      { from = 8000; to = 8010; }
    ];
   };
   };
  # Prevents this error:
</nowiki>}}
  # Fatal: You must run [sudo setcap cap_sys_admin+p $(readlink -f sunshine)] for KMS display capture to work!
 
  security.wrappers.sunshine = {
 
    owner = "root";
For manual Firewall configuration you can open network ports as shown here:
    group = "root";
 
     capabilities = "cap_sys_admin+p";
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
    source = "${pkgs.sunshine}/bin/sunshine";
networking.firewall = {
  };
  enable = true;
  # Needed for network discovery
  allowedTCPPorts = [ 47984 47989 47990 48010 ];
  services.avahi.enable = true;
  allowedUDPPortRanges = [
  services.avahi.publish.enable = true;
     { from = 47998; to = 48000; }
   services.avahi.publish.userServices = true;
    { from = 8000; to = 8010; }
}
   ];
};
</nowiki>}}
</nowiki>}}


== Connecting to the host ==
== Connecting to the host ==


Sunshine needs to be started with the <pre>sunshine</pre> command.
When installed via the NixOS module, Sunshine is configured as a Systemd user unit, and will start automatically on login to a graphical session. Note that a logout/login or restart may be required for Sunshine to start after initially adding it to your configuration due to limitations of NixOS' handling of user units with <code>nixos-rebuild</code>. 
 
If <code>services.sunshine.autoStart</code> is set to <code>false</code>, Sunshine needs to be started with the <pre>sunshine</pre> command.


You may have to manually add the host running Sunshine to your Moonlight client. This, thankfully, is not hard to do.
You may have to manually add the host running Sunshine to your Moonlight client. This, thankfully, is not hard to do.