PeerTube

Packages

peertube-plugin-akismet-0.1.1
Version: 0.1.1
peertube-plugin-auth-ldap-0.0.12
Version: 0.0.12
peertube-plugin-auth-openid-connect-0.1.1
Version: 0.1.1
peertube-plugin-auth-saml2-0.0.8
Version: 0.0.8
peertube-plugin-auto-block-videos-0.0.2
Version: 0.0.2
peertube-plugin-auto-mute-0.0.6
Version: 0.0.6
peertube-plugin-hello-world-0.0.22
Version: 0.0.22
peertube-plugin-livechat-10.1.2
Version: 10.1.2
peertube-plugin-logo-framasoft-0.0.1
Version: 0.0.1
peertube-plugin-matomo-1.0.2
Version: 1.0.2
peertube-plugin-privacy-remover-0.0.1
Version: 0.0.1
peertube-plugin-transcoding-custom-quality-0.1.0
Version: 0.1.0
peertube-plugin-transcoding-profile-debug-0.0.5
Version: 0.0.5
peertube-plugin-video-annotation-0.0.8
Version: 0.0.8
peertube-theme-background-red-0.0.4
Version: 0.0.4
peertube-theme-dark-2.5.0
Version: 2.5.0
peertube-theme-framasoft-0.0.1
Version: 0.0.1

Options

services.peertube.configureNginx

Configure nginx as a reverse proxy for peertube.

Type:
boolean
Default:
false
services.peertube.dataDirs

Allow access to custom data locations.

Type:
list of absolute path
Default:
[ ]
services.peertube.database.createLocally

Configure local PostgreSQL database server for PeerTube.

Type:
boolean
Default:
false
services.peertube.database.host

Database host address or unix socket.

Type:
string
Default:
if config.services.peertube.database.createLocally then "/run/postgresql" else null
services.peertube.database.name

Database name.

Type:
string
Default:
"peertube"
services.peertube.database.passwordFile

Password for PostgreSQL database.

Type:
null or absolute path
Default:
null
services.peertube.database.port

Database host port.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
5432
services.peertube.database.user

Database user.

Type:
string
Default:
"peertube"
services.peertube.enable

Whether to enable Peertube.

Type:
boolean
Default:
false
services.peertube.enableWebHttps

Whether clients will access your PeerTube instance with HTTPS. Does NOT configure the PeerTube webserver itself to listen for incoming HTTPS connections.

Type:
boolean
Default:
false
services.peertube.group

Group under which Peertube runs.

Type:
string
Default:
"peertube"
services.peertube.listenHttp

The port that the local PeerTube web server will listen on.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9000
services.peertube.listenWeb

The public-facing port that PeerTube will be accessible at (likely 80 or 443 if running behind a reverse proxy). Clients will try to access PeerTube at this port.

Type:
16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
9000
services.peertube.localDomain

The domain serving your PeerTube instance.

Type:
string
services.peertube.package

PeerTube package to use.

Type:
package
Default:
pkgs.peertube
services.peertube.plugins.enable

Whether to enable declarative plugin management for PeerTube .

Type:
boolean
Default:
false
services.peertube.plugins.package

Base PeerTube package to use when using declarative plugin management. This overrides services.peertube.package.

Type:
package
Default:
pkgs.peertube
services.peertube.plugins.plugins

List of packages with peertube plugins that should be added.

Type:
list of package
Default:
[ ]
services.peertube.redis.createLocally

Configure local Redis server for PeerTube.

Type:
boolean
Default:
false
services.peertube.redis.enableUnixSocket

Use Unix socket.

Type:
boolean
Default:
config.services.peertube.redis.createLocally
services.peertube.redis.host

Redis host.

Type:
null or string
Default:
if config.services.peertube.redis.createLocally && !config.services.peertube.redis.enableUnixSocket then "127.0.0.1" else null
services.peertube.redis.passwordFile

Password for redis database.

Type:
null or absolute path
Default:
null
services.peertube.redis.port

Redis port.

Type:
null or 16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default:
if config.services.peertube.redis.createLocally && config.services.peertube.redis.enableUnixSocket then null else 6379
services.peertube.secrets.secretsFile

Secrets to run PeerTube. Generate one using openssl rand -hex 32

Type:
null or absolute path
Default:
null
services.peertube.serviceEnvironmentFile

Set environment variables for the service. Mainly useful for setting the initial root password. For example write to file: PT_INITIAL_ROOT_PASSWORD=changeme

Type:
null or absolute path
Default:
null
services.peertube.settings

Configuration for peertube.

Type:
JSON value
services.peertube.smtp.createLocally

Configure local Postfix SMTP server for PeerTube.

Type:
boolean
Default:
false
services.peertube.smtp.passwordFile

Password for smtp server.

Type:
null or absolute path
Default:
null
services.peertube.user

User account under which Peertube runs.

Type:
string
Default:
"peertube"

Examples

  • Basic configuration, mainly used for testing purposes.
    {
      config,
      pkgs,
      ...
    }:
    let
      storageBase = "/var/lib/peertube";
      storageDir = subdir: "${storageBase}/${subdir}/";
    in
    {
      environment = {
        # Sets the initial password of the root user to a fixed value. Make sure to change the password afterwards!
        etc."peertube-envvars".text = ''
          PT_INITIAL_ROOT_PASSWORD=changeme
        '';
      };
    
      services.peertube = {
        enable = true;
    
        # The system user & their group under which peertube will run
        user = "peertube";
        group = "peertube";
    
        # 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";
    
        # 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";
          };
          log = {
            level = "debug";
          };
          storage = {
            tmp = storageDir "tmp";
            logs = storageDir "logs";
            cache = storageDir "cache";
            plugins = storageDir "plugins";
          };
        };
    
        plugins = {
          enable = true;
    
          # The plugins you wish to use.
          plugins = with pkgs; [
            peertube-plugin-akismet
            peertube-plugin-auth-ldap
            peertube-plugin-auth-openid-connect
            peertube-plugin-auth-saml2
            peertube-plugin-auto-block-videos
            peertube-plugin-auto-mute
            peertube-plugin-hello-world
            peertube-plugin-logo-framasoft
            peertube-plugin-matomo
            peertube-plugin-privacy-remover
            peertube-plugin-transcoding-custom-quality
            peertube-plugin-transcoding-profile-debug
            peertube-plugin-video-annotation
            peertube-theme-background-red
            peertube-theme-dark
            peertube-theme-framasoft
    
            peertube-plugin-livechat
          ];
        };
    
        # For initial password
        serviceEnvironmentFile = "/etc/peertube-envvars";
      };
    
      systemd.tmpfiles.settings =
        let
          dirArgs = {
            mode = "0700";
            inherit (config.services.peertube) user group;
          };
        in
        {
          "99-peertube-plugins-test-setup" = {
            "${storageBase}".d = dirArgs;
            "${storageDir "tmp"}".d = dirArgs;
            "${storageDir "logs"}".d = dirArgs;
            "${storageDir "cache"}".d = dirArgs;
            "${storageDir "plugins"}".d = dirArgs;
          };
        };
    }