PeerTube
A decentralised streaming video platform
Declared in: projects/PeerTube/default.nix
Try the service in a VM
-
Install Nix
- Bash
-
$ apt install --yes curl git jq nix
- Bash
-
$ apt install --yes curl git jq nix
- Bash
-
$ pacman --sync --refresh --noconfirm curl git jq nix
-
Download a configuration file
# default.nix { ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { }, }: ngipkgs.demo-vm ( { config, pkgs, ... }: { services.peertube = { enable = true; # Configure locally-running instances of redis server & database. database.createLocally = true; redis.createLocally = true; # Where we're running localDomain = "localhost"; listenWeb = 9000; # Example settings, adjust as desired settings = { listen.hostname = "0.0.0.0"; instance.name = "My Lovely PeerTube Instance"; # Enable livestreaming live.enabled = true; }; plugins = { enable = true; plugins = with pkgs; [ peertube-theme-dark peertube-plugin-video-annotation peertube-plugin-livechat ]; }; # Do *NOT* use this in production, follow the docs and properly generate a secret here! i.e. using the output of: # openssl rand -hex 32 # https://docs.joinpeertube.org/install/any-os#peertube-configuration secrets.secretsFile = pkgs.writeText "secrets.txt" "secrets"; # Set the initial password of the root user to a fixed value. Make sure to change the password afterwards! serviceEnvironmentFile = "/etc/peertube-envvars"; }; environment.etc."peertube-envvars".text = '' PT_INITIAL_ROOT_PASSWORD=changeme ''; networking.firewall.allowedTCPPorts = [ config.services.peertube.listenWeb # Livestreaming port 1935 ]; } )
-
Enable binary substituters
- Bash
-
$ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/ trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= ngi.cachix.org-1:n+CAL72ROC3qQuLxIHpV+Tw5t42WhXmMhprAGkRSrOw='
-
Build and run a virtual machine
- Bash
-
$ nix-build ./default.nix && ./result
- Bash
-
$ nix-build ./default.nix && ./result
- Bash
-
$ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)$ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result"
- Bash
-
$ nix-build ./default.nix && ./result
-
Usage Instructions
-
The web UI is available at http://localhost:9000/.
-
You can log in with:
- username:
root - password:
changeme
- username:
-
Options
programs.peertube-cli
-
Whether to enable peertube-cli.
- Type:
boolean- Default:
false- Declared in:
- projects/PeerTube/programs/peertube-cli/module.nix
programs.peertube-cli.enable
services.peertube
-
Whether to enable declarative plugin management for PeerTube .
- Type:
boolean- Default:
false- Declared in:
- projects/PeerTube/services/peertube/module.nix
-
Base PeerTube package to use when using declarative plugin management. This overrides
services.peertube.package.- Type:
package- Default:
pkgs.peertube- Declared in:
- projects/PeerTube/services/peertube/module.nix
- Notes:
- Missing update script An update script is required for automatically tracking the latest release.
-
List of packages with peertube plugins that should be added.
- Type:
list of package- Default:
[ ]- Declared in:
- projects/PeerTube/services/peertube/module.nix
services.peertube.plugins.enable
services.peertube.plugins.package
services.peertube.plugins.plugins
services.peertube-runner
-
Whether to enable peertube-runner.
- Type:
boolean- Default:
false- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
Job types that this runner will execute.
- Type:
non-empty (list of string)- Default:
[ "vod-web-video-transcoding" "vod-hls-transcoding" "vod-audio-merge-transcoding" "live-rtmp-hls-transcoding" "video-studio-transcoding" "video-transcription" ]- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
Group under which peertube-runner runs.
- Type:
string- Default:
"prunner"- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
PeerTube instances to register this runner with.
- Type:
attribute set of (submodule)- Default:
{ }- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
Path to a file containing a registration token for the PeerTube instance.
See how to generate registration tokens at https://docs.joinpeertube.org/admin/remote-runners#manage-remote-runners.
- Type:
absolute path- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
Runner description declared to the PeerTube instance.
- Type:
null or string- Default:
null- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
Runner name declared to the PeerTube instance.
- Type:
string- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
URL of the PeerTube instance.
- Type:
string- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
The runner package to use.
- Type:
package- Default:
pkgs.peertube.runner- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
- Notes:
- Missing update script An update script is required for automatically tracking the latest release.
-
Configuration for peertube-runner.
See available configuration options at https://docs.joinpeertube.org/maintain/tools#configuration.
- Type:
TOML value- Default:
{ }- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
-
User account under which peertube-runner runs.
- Type:
string- Default:
"prunner"- Declared in:
- nixos/modules/services/web-apps/peertube-runner.nix
services.peertube-runner.enable
services.peertube-runner.enabledJobTypes
services.peertube-runner.group
services.peertube-runner.instancesToRegister
services.peertube-runner.instancesToRegister..registrationTokenFile
services.peertube-runner.instancesToRegister..runnerDescription
services.peertube-runner.instancesToRegister..runnerName
services.peertube-runner.instancesToRegister..url
services.peertube-runner.package
services.peertube-runner.settings
services.peertube-runner.user
Examples
basic-cli
{ programs.peertube-cli.enable = true; }
Declared in: projects/PeerTube/programs/peertube-cli/examples/basic.nix
basic-runner
{ services.peertube-runner = { enable = true; instancesToRegister = { # All instances must be registered here. They can't be registered using the CLI. # personal = { # url = "https://mypeertubeinstance.com"; # # See how to generate registration tokens at https://docs.joinpeertube.org/admin/remote-runners#manage-remote-runners. # registrationTokenFile = "/run/secrets/my-peertube-instance-registration-token"; # runnerName = "Main"; # }; }; }; }
Declared in: projects/PeerTube/services/peertube-runner/examples/basic.nix
basic-server
{ config, pkgs, ... }: { services.peertube = { enable = true; # Configure locally-running instances of redis server & database. database.createLocally = true; redis.createLocally = true; # Where we're running localDomain = "localhost"; listenWeb = 9000; # Example settings, adjust as desired settings = { listen.hostname = "0.0.0.0"; instance.name = "My Lovely PeerTube Instance"; # Enable livestreaming live.enabled = true; }; plugins = { enable = true; plugins = with pkgs; [ peertube-theme-dark peertube-plugin-video-annotation peertube-plugin-livechat ]; }; # Do *NOT* use this in production, follow the docs and properly generate a secret here! i.e. using the output of: # openssl rand -hex 32 # https://docs.joinpeertube.org/install/any-os#peertube-configuration secrets.secretsFile = pkgs.writeText "secrets.txt" "secrets"; # Set the initial password of the root user to a fixed value. Make sure to change the password afterwards! serviceEnvironmentFile = "/etc/peertube-envvars"; }; environment.etc."peertube-envvars".text = '' PT_INITIAL_ROOT_PASSWORD=changeme ''; networking.firewall.allowedTCPPorts = [ config.services.peertube.listenWeb # Livestreaming port 1935 ]; }
Declared in: projects/PeerTube/services/peertube/examples/basic.nix
Metadata
This project is funded by NLnet through these subgrants:
- Entrust
- Peertube-Transcode
- Peertube-Livechat
- PeerTube-mobile
- Review
- PeerTube
- PeerTubeSearch
- PeerTubeDesktop
Related links: