apiVersion: v1
data:
  production.yaml: |
    listen:
      hostname: 0.0.0.0 # inside a container, this is best.
      port: 9000

    # Correspond to your reverse proxy server_name/listen configuration
    webserver:
      https: true
      hostname: 'videos.martyn.berlin'
      port: 443

    rates_limit:
      api:
        # 50 attempts in 10 seconds
        window: 10 seconds
        max: 50
      login:
        # 15 attempts in 5 min
        window: 5 minutes
        max: 15
      signup:
        # 2 attempts in 5 min (only succeeded attempts are taken into account)
        window: 5 minutes
        max: 2
      ask_send_email:
        # 3 attempts in 5 min
        window: 5 minutes
        max: 3

    # Proxies to trust to get real client IP
    # If you run PeerTube just behind a local proxy (nginx), keep 'loopback'
    # If you run PeerTube behind a remote proxy, add the proxy IP address (or subnet)
    trust_proxy:
      - 'loopback'

    # Your database name will be "peertube"+database.suffix
    database:
      hostname: postgres4peertube-postgresql
      port: 5432
      suffix: ''
      username: postgres
      password: peertube
      pool:
        max: 5
      ssl: false

    # Redis server for short time storage
    # You can also specify a 'socket' path to a unix socket but first need to
    # comment out hostname and port
    redis:
      hostname: redis4peertube-master
      port: 6379
      auth: null
      db: 0

    # SMTP server to send emails
    smtp:
      hostname: null
      port: 465 # If you use StartTLS: 587
      username: null
      password: null
      tls: true # If you use StartTLS: false
      disable_starttls: false
      ca_file: null # Used for self signed certificates
      from_address: 'admin@example.com'

    email:
      body:
        signature: "PeerTube"
      subject:
        prefix: "[PeerTube]"

    # From the project root directory
    storage:
      tmp: '/var/www/peertube/storage/tmp/' # Use to download data (imports etc), store uploaded files before processing...
      avatars: '/var/www/peertube/storage/avatars/'
      videos: '/var/www/peertube/storage/videos/'
      streaming_playlists: '/var/www/peertube/storage/streaming-playlists/'
      redundancy: '/var/www/peertube/storage/redundancy/'
      logs: '/var/www/peertube/storage/logs/'
      previews: '/var/www/peertube/storage/previews/'
      thumbnails: '/var/www/peertube/storage/thumbnails/'
      torrents: '/var/www/peertube/storage/torrents/'
      captions: '/var/www/peertube/storage/captions/'
      cache: '/var/www/peertube/storage/cache/'
      plugins: '/var/www/peertube/storage/plugins/'
      client_overrides: '/var/www/peertube/storage/client-overrides/'

    log:
      level: 'info' # debug/info/warning/error
      rotation:
        enabled : true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
        maxFileSize: 12MB
        maxFiles: 20
      anonymizeIP: false
      log_ping_requests: false
      prettify_sql: false

    federation:
      videos:
        federate_unlisted: false
        cleanup_remote_interactions: false

    search:
      # Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance
      # If enabled, the associated group will be able to "escape" from the instance follows
      # That means they will be able to follow channels, watch videos, list videos of non followed instances
      remote_uri:
        users: true
        anonymous: false
      search_index:
        enabled: false
        url: ''
        disable_local_search: false
        is_default_search: false

    trending:
      videos:
        interval_days: 7 # Compute trending videos for the last x days
        algorithms:
          enabled: 
            - 'most-viewed'
          default: 'most-viewed'

    # Cache remote videos on your server, to help other instances to broadcast the video
    # You can define multiple caches using different sizes/strategies
    # Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
    redundancy:
      videos:
        check_interval: '1 hour' # How often you want to check new videos to cache
        strategies: # Just uncomment strategies you want
    #      -
    #        size: '10GB'
    #        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
    #        min_lifetime: '48 hours'
    #        strategy: 'most-views' # Cache videos that have the most views
    #      -
    #        size: '10GB'
    #        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
    #        min_lifetime: '48 hours'
    #        strategy: 'trending' # Cache trending videos
    #      -
    #        size: '10GB'
    #        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
    #        min_lifetime: '48 hours'
    #        strategy: 'recently-added' # Cache recently added videos
    #        min_views: 10 # Having at least x views
    remote_redundancy:
      videos:
        accept_from: 'anybody'

    csp:
      enabled: false
      report_only: true # CSP directives are still being tested, so disable the report only mode at your own risk!
      report_uri:

    tracker:
      # If you disable the tracker, you disable the P2P aspect of PeerTube
      enabled: true
      # Only handle requests on your videos.
      # If you set this to false it means you have a public tracker.
      # Then, it is possible that clients overload your instance with external torrents
      private: true
      # Reject peers that do a lot of announces (could improve privacy of TCP/UDP peers)
      reject_too_many_announces: false

    history:
      videos:
        # If you want to limit users videos history
        # -1 means there is no limitations
        # Other values could be '6 months' or '30 days' etc (PeerTube will periodically delete old entries from database)
        max_age: -1

    views:
      videos:
        # PeerTube creates a database entry every hour for each video to track views over a period of time
        # This is used in particular by the Trending page
        # PeerTube could remove old remote video views if you want to reduce your database size (video view counter will not be altered)
        # -1 means no cleanup
        # Other values could be '6 months' or '30 days' etc (PeerTube will periodically delete old entries from database)
        remote:
          max_age: '30 days'

    plugins:
      # The website PeerTube will ask for available PeerTube plugins and themes
      # This is an unmoderated plugin index, so only install plugins/themes you trust
      index:
        enabled: true
        check_latest_versions_interval: '12 hours' # How often you want to check new plugins/themes versions
        url: 'https://packages.joinpeertube.org'


    ###############################################################################
    #
    # From this point, all the following keys can be overridden by the web interface
    # (local-production.json file). If you need to change some values, prefer to
    # use the web interface because the configuration will be automatically
    # reloaded without any need to restart PeerTube.
    #
    # /!\ If you already have a local-production.json file, the modification of the
    # following keys will have no effect /!\.
    #
    ###############################################################################

    cache:
      previews:
        size: 500 # Max number of previews you want to cache
      captions:
        size: 500 # Max number of video captions/subtitles you want to cache
      torrents:
        size: 500

    admin:
      # Used to generate the root user at first startup
      # And to receive emails from the contact form
      email: 'admin@example.com'

    contact_form:
      enabled: true

    signup:
      enabled: false
      minimum_age: 18
      limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited
      requires_email_verification: false
      filters:
        cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist
          whitelist: []
          blacklist: []

    user:
      # Default value of maximum video BYTES the user can upload (does not take into account transcoded files).
      # -1 == unlimited
      video_quota: -1
      video_quota_daily: -1

    # If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
    # In addition, if some resolutions are enabled the mp4 video file will be transcoded to these new resolutions.
    # Please, do not disable transcoding since many uploaded videos will not work
    transcoding:
      enabled: true
      # Allow your users to upload .mkv, .mov, .avi, .flv videos
      concurrency: 1
      profile: 'default'
      allow_additional_extensions: true
      # If a user uploads an audio file, PeerTube will create a video by merging the preview file and the audio file
      allow_audio_files: true
      threads: 1
      resolutions: # Only created if the original video has a higher resolution, uses more storage!
        0p: false # audio-only (creates mp4 without video stream, always created when enabled)
        240p: false
        360p: false
        480p: false
        720p: false
        1080p: false
        1440p: false
        2160p: false
      # /!\ Requires ffmpeg >= 4.1
      # Generate HLS playlists and fragmented MP4 files. Better playback than with WebTorrent:
      #     * Resolution change is smoother
      #     * Faster playback in particular with long videos
      #     * More stable playback (less bugs/infinite loading)
      # /!\ Multiplies videos storage by 2 /!\
      hls:
        enabled: false
      webtorrent:
        enabled: true

    security:
      frameguard:
        enabled: false

    import:
      # Add ability for your users to import remote videos (from YouTube, torrent...)
      videos:
        concurrency: 1
        http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
          enabled: false
        torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
          enabled: false


    live:
      enabled: false

      max_duration: -1 # For example: '5 hours'

      max_instance_lives: 20

      max_user_lives: 3

      allow_replay: true

      rtmp:
        port: 1935

      transcoding:
        enabled: true
        threads: 2
        profile: 'default'

        resolutions:
          240p: false
          360p: false
          480p: false
          720p: false
          1080p: false
          1440p: false
          2160p: false
    auto_blacklist:
      # New videos automatically blacklisted so moderators can review before publishing
      videos:
        of_users:
          enabled: false

    # Instance settings
    instance:
      name: 'PeerTube'
      short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.'
      description: 'Welcome to this PeerTube instance!' # Support markdown
      terms: 'No terms for now.' # Support markdown
      code_of_conduct: '' # Supports markdown

      # Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc
      moderation_information: '' # Supports markdown

      # Why did you create this instance?
      creation_reason: ''

      # Who is behind the instance? A single person? A non profit?
      administrator: ''

      # How long do you plan to maintain this instance?
      maintenance_lifetime: ''

      # How will you pay the PeerTube instance server? With you own funds? With users donations? Advertising?
      business_model: ''

      # If you want to explain on what type of hardware your PeerTube instance runs
      # Example: "2 vCore, 2GB RAM..."
      hardware_information: '' # Supports Markdown

      # What are the main languages of your instance? To interact with your users for example
      # Uncomment or add the languages you want
      # List of supported languages: https://peertube.cpy.re/api/v1/videos/languages
      languages:
    #    - en
    #    - es
    #    - fr

      # You can specify the main categories of your instance (dedicated to music, gaming or politics etc)
      # Uncomment or add the category ids you want
      # List of supported categories: https://peertube.cpy.re/api/v1/videos/categories
      categories:
    #    - 1  # Music
    #    - 2  # Films
    #    - 3  # Vehicles
    #    - 4  # Art
    #    - 5  # Sports
    #    - 6  # Travels
    #    - 7  # Gaming
    #    - 8  # People
    #    - 9  # Comedy
    #    - 10 # Entertainment
    #    - 11 # News & Politics
    #    - 12 # How To
    #    - 13 # Education
    #    - 14 # Activism
    #    - 15 # Science & Technology
    #    - 16 # Animals
    #    - 17 # Kids
    #    - 18 # Food

      default_client_route: '/videos/trending'

      # Whether or not the instance is dedicated to NSFW content
      # Enabling it will allow other administrators to know that you are mainly federating sensitive content
      # Moreover, the NSFW checkbox on video upload will be automatically checked by default
      is_nsfw: false
      # By default, "do_not_list" or "blur" or "display" NSFW videos
      # Could be overridden per user with a setting
      default_nsfw_policy: 'do_not_list'

      customizations:
        javascript: '' # Directly your JavaScript code (without <script> tags). Will be eval at runtime
        css: '' # Directly your CSS code (without <style> tags). Will be injected at runtime
      # Robot.txt rules. To disallow robots to crawl your instance and disallow indexation of your site, add '/' to "Disallow:'
      robots: |
        User-agent: *
        Disallow:
      # Security.txt rules. To discourage researchers from testing your instance and disable security.txt integration, set this to an empty string.
      securitytxt:
        "# If you would like to report a security issue\n# you may report it to:\nContact: https://github.com/Chocobozzz/PeerTube/blob/develop/SECURITY.md\nContact: mailto:"

    services:
      # Cards configuration to format video in Twitter
      twitter:
        username: '@Chocobozzz' # Indicates the Twitter account for the website or platform on which the content was published
        # If true, a video player will be embedded in the Twitter feed on PeerTube video share
        # If false, we use an image link card that will redirect on your PeerTube instance
        # Change it to "true", and then test on https://cards-dev.twitter.com/validator to see if you are whitelisted
        whitelisted: false

    followers:
      instance:
        # Allow or not other instances to follow yours
        enabled: true
        # Whether or not an administrator must manually validate a new follower
        manual_approval: false

    followings:
      instance:
        # If you want to automatically follow back new instance followers
        # If this option is enabled, use the mute feature instead of deleting followings
        # /!\ Don't enable this if you don't have a reactive moderation team /!\
        auto_follow_back:
          enabled: false

        # If you want to automatically follow instances of the public index
        # If this option is enabled, use the mute feature instead of deleting followings
        # /!\ Don't enable this if you don't have a reactive moderation team /!\
        auto_follow_index:
          enabled: false
          index_url: 'https://instances.joinpeertube.org'

    theme:
      default: 'default'


    broadcast_message:
      enabled: false
      message: '' # Support markdown
      level: 'info' # 'info' | 'warning' | 'error'
      dismissable: false

    peertube:
      check_latest_version:
        enabled: false
        url: 'https://joinpeertube.org/api/v1/versions.json'

    secrets:
      peertube: "255c592a4e6aaf9f41e4e0d47a379efd79e35b0c2e5ca9e0dc009a495659dfa4"

    object_storage:
      enabled: false

      # Without protocol, will default to HTTPS
      endpoint: '' # 's3.amazonaws.com' or 's3.fr-par.scw.cloud' for example

      region: 'us-east-1'

      credentials:
        # You can also use AWS_ACCESS_KEY_ID env variable
        access_key_id: ''
        # You can also use AWS_SECRET_ACCESS_KEY env variable
        secret_access_key: ''

      # Maximum amount to upload in one request to object storage
      max_upload_part: 2GB

      streaming_playlists:
        bucket_name: 'streaming-playlists'

        # Allows setting all buckets to the same value but with a different prefix
        prefix: '' # Example: 'streaming-playlists:'

        # Base url for object URL generation, scheme and host will be replaced by this URL
        # Useful when you want to use a CDN/external proxy
        base_url: '' # Example: 'https://mirror.example.com'

      # Same settings but for webtorrent videos
      videos:
        bucket_name: 'videos'
        prefix: ''
        base_url: ''



kind: ConfigMap
metadata:
  name: peertube-production-config
  namespace: peertube