Can't establish a connection to the server wss://angeltales.angellive.ru/tracker/socket

Hi all, PeerTube 6.2.1, nginx/1.27.0, postgres 15. node 18, yarn 1.22. pip 3 are installed. The terminal can’t connect to the web socket with errors. I don’t see any errors in the logs, the share button is enabled, I turn it off, nothing changes, how can I fix this? Thanks
https://angeltales.angellive.ru/

chunk-ODKBFOSP.js:1 WebSocket connection to 'wss://angeltales.angellive.ru/tracker/socket' failed: 
s	@	index.js:10557
_openSocket	@	index.js:10866
Zc	@	index.js:10750
(anonymous)	@	index.js:11131
s	@	index.js:11108
ZI.createClient	@	index.js:11601
ZI.setStreamSwarmId	@	index.js:11577
(anonymous)	@	index.js:12027
(anonymous)	@	chunk-ODKBFOSP.js:1
I	@	zone.js:2529
F	@	chunk-ODKBFOSP.js:1
load	@	index.js:12021
(anonymous)	@	index.js:2223
(anonymous)	@	chunk-ODKBFOSP.js:1
I	@	zone.js:2529
F	@	chunk-ODKBFOSP.js:1
loadSegments	@	index.js:2196
(anonymous)	@	index.js:2124
(anonymous)	@	chunk-ODKBFOSP.js:1
I	@	zone.js:2529
F	@	chunk-ODKBFOSP.js:1
loadSegment	@	index.js:2054
(anonymous)	@	index.js:2375
(anonymous)	@	chunk-ODKBFOSP.js:1
I	@	zone.js:2529
F	@	chunk-ODKBFOSP.js:1
load	@	index.js:2352
(anonymous)	@	index.js:2506
(anonymous)	@	chunk-ODKBFOSP.js:1
I	@	zone.js:2529
F	@	chunk-ODKBFOSP.js:1
load	@	index.js:2500
(anonymous)	@	hls.light.mjs:10568
I	@	zone.js:2529
load	@	hls.light.mjs:10542
_doFragLoad	@	hls.light.mjs:12324
_loadFragForPlayback	@	hls.light.mjs:12024
loadFragment	@	hls.light.mjs:12012
loadFragment	@	hls.light.mjs:18739
doTickIdle	@	hls.light.mjs:18725
doTick	@	hls.light.mjs:18614
tick	@	hls.light.mjs:11157
completeInitSegmentLoad	@	hls.light.mjs:12177
(anonymous)	@	hls.light.mjs:12156
invoke	@	zone.js:331
run	@	zone.js:111
(anonymous)	@	zone.js:2366
invokeTask	@	zone.js:356
runTask	@	zone.js:157
F	@	zone.js:527
invokeTask	@	zone.js:436
M	@	zone.js:1054
R	@	zone.js:1084
b	@	zone.js:1115
Show less


  1. Network Issues: Ensure no firewall or network blocks the WebSocket.
  2. WebSocket URL: Verify the URL and server configuration.
  3. Nginx Config: Confirm Nginx is set up for WebSocket support.
  4. Logs: Recheck server and application logs.
  5. Dependencies: Ensure all dependencies are up-to-date.

Hope this helps!

  1. I have closed all ports except 89 and 443, disabled nothing has changed, what else should I open? File2ban does not block any connections
  2. where can I see it?
  3. Nginx standard config that was during installation, it is something separately added to the manual?
  4. The logs
Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:09 +0000] "POST /api/v1/videos/03a38acd-ff10-4db3-a107-4d61f810791b/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/1s4zrQm9apJstkHWRJD4Ec" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:12 +0000] "GET /static/streaming-playlists/hls/private/03a38acd-ff10-4db3-a107-4d61f810791b/6bfd468b-df7e-4d44-b339-f19a41e1a304-720-fragmented.mp4 HTTP/2.0" 206 71690 "https://angeltales.angellive.ru/w/1s4zrQm9apJstkHWRJD4Ec" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:14 +0000] "POST /api/v1/videos/03a38acd-ff10-4db3-a107-4d61f810791b/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/1s4zrQm9apJstkHWRJD4Ec" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:15 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:16 +0000] "GET /static/streaming-playlists/hls/private/03a38acd-ff10-4db3-a107-4d61f810791b/6bfd468b-df7e-4d44-b339-f19a41e1a304-720-fragmented.mp4 HTTP/2.0" 206 71123 "https://angeltales.angellive.ru/w/1s4zrQm9apJstkHWRJD4Ec" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:18 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:30:19 +0000] "POST /api/v1/videos/03a38acd-ff10-4db3-a107-4d61f810791b/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/1s4zrQm9apJstkHWRJD4Ec" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:30:43 +0000] "GET /tracker/socket HTTP/1.1" 101 197 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:31:20 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:31:33 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.162.61 - - [02/Aug/2024:22:31:47 +0000] "GET /tracker/socket HTTP/1.1" 101 184 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/25.0 Chrome/121.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:32:14 +0000] "GET /tracker/socket HTTP/1.1" 101 186 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:32:27 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.162.61 - - [02/Aug/2024:22:32:58 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/25.0 Chrome/121.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:34:06 +0000] "GET /tracker/socket HTTP/1.1" 101 197 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:34:26 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:34:29 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:34:41 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:35:51 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:38:55 +0000] "GET /socket.io/?accessToken=052a09fc72c858acc932c974b8173b9560b474da&EIO=4&transport=websocket&sid=ZY_ziawc896Pwfs9AABC HTTP/1.1" 101 874 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
1.1.1.1 - - [02/Aug/2024:22:39:13 +0000] "GET /tracker/socket HTTP/1.1" 101 0 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.163.75 - - [02/Aug/2024:22:41:07 +0000] "GET /tracker/socket HTTP/1.1" 101 197 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
95.153.162.61 - - [02/Aug/2024:22:42:04 +0000] "GET /tracker/socket HTTP/1.1" 101 188 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/25.0 Chrome/121.0.0.0 Mobile Safari/537.36"
  1. all dependencies are installed according to the installation instructions, and all are up-to-date
  2. Configs are not changed only telemetry is disabled
# Minimum Nginx version required:  1.13.0 (released Apr 25, 2017)
# Please check your Nginx installation features the following modules via 'nginx -V':
# STANDARD HTTP MODULES: Core, Proxy, Rewrite, Access, Gzip, Headers, HTTP/2, Log, Real IP, SSL, Thread Pool, Upstream, AIO Multithreading.
# THIRD PARTY MODULES:   None.

server {
  listen 80;
  listen [::]:80;
  server_name angeltales.angellive.ru;

  location /.well-known/acme-challenge/ {
    default_type "text/plain";
    root /var/www/certbot;
  }
  location / { return 301 https://$host$request_uri; }
}

upstream backend {
  server 127.0.0.1:9000;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  http2 on;
  server_name angeltales.angellive.ru;

  access_log /var/log/nginx/peertube.access.log; # reduce I/0 with buffer=10m flush=5m
  error_log  /var/log/nginx/peertube.error.log;

  ##
  # Certificates
  # you need a certificate to run in production. see https://letsencrypt.org/
  ##
  ssl_certificate     /etc/letsencrypt/live/angeltales.angellive.ru/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/angeltales.angellive.ru/privkey.pem;

  location ^~ '/.well-known/acme-challenge' {
    default_type "text/plain";
    root /var/www/certbot;
  }

  ##
  # Security hardening (as of Nov 15, 2020)
  # based on Mozilla Guideline v5.6
  ##

  ssl_protocols             TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  ssl_ciphers               ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256; # add ECDHE-RSA-AES256-SHA if you want compatibility with Android 4
  ssl_session_timeout       1d; # defaults to 5m
  ssl_session_cache         shared:SSL:10m; # estimated to 40k sessions
  ssl_session_tickets       off;
  ssl_stapling              on;
  ssl_stapling_verify       on;
  # HSTS (https://hstspreload.org), requires to be copied in 'location' sections that have add_header directives
  #add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";

  ##
  # Application
  ##

  location @api {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host            $host;
    proxy_set_header X-Real-IP       $remote_addr;

    client_max_body_size  100k; # default is 1M

    proxy_connect_timeout 10m;
    proxy_send_timeout    10m;
    proxy_read_timeout    10m;
    send_timeout          10m;

    proxy_pass http://backend;
  }

  location / {
    try_files /dev/null @api;
  }

  location ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
    client_max_body_size    0;
    proxy_request_buffering off;

    try_files /dev/null @api;
  }

  location ~ ^/api/v1/users/[^/]+/imports/import-resumable$ {
    client_max_body_size    0;
    proxy_request_buffering off;

    try_files /dev/null @api;
  }

  location ~ ^/api/v1/videos/(upload|([^/]+/studio/edit))$ {
    limit_except POST HEAD { deny all; }

    # This is the maximum upload size, which roughly matches the maximum size of a video file.
    # Note that temporary space is needed equal to the total size of all concurrent uploads.
    # This data gets stored in /var/lib/nginx by default, so you may want to put this directory
    # on a dedicated filesystem.
    client_max_body_size                      12G; # default is 1M
    add_header            X-File-Maximum-Size 8G always; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size)

    try_files /dev/null @api;
  }

  location ~ ^/api/v1/runners/jobs/[^/]+/(update|success)$ {
    client_max_body_size                      12G; # default is 1M
    add_header            X-File-Maximum-Size 8G always; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size)

    try_files /dev/null @api;
  }

  location ~ ^/api/v1/(videos|video-playlists|video-channels|users/me) {
    client_max_body_size                      6M; # default is 1M
    add_header            X-File-Maximum-Size 4M always; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size)

    try_files /dev/null @api;
  }

  ##
  # Websocket
  ##

  location @api_websocket {
    proxy_http_version 1.1;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host            $host;
    proxy_set_header   X-Real-IP       $remote_addr;
    proxy_set_header   Upgrade         $http_upgrade;
    proxy_set_header   Connection      "upgrade";

    proxy_pass http://backend;
  }

  location /socket.io {
    try_files /dev/null @api_websocket;
  }

  location /tracker/socket {
    # Peers send a message to the tracker every 15 minutes
    # Don't close the websocket before then
    proxy_read_timeout 15m; # default is 60s

    try_files /dev/null @api_websocket;
  }

  # Plugin websocket routes
  location ~ ^/plugins/[^/]+(/[^/]+)?/ws/ {
    try_files /dev/null @api_websocket;
  }

  ##
  # Performance optimizations
  # For extra performance please refer to https://github.com/denji/nginx-tuning
  ##

  root /var/www/peertube/storage;

  # Enable compression for JS/CSS/HTML, for improved client load times.
  # It might be nice to compress JSON/XML as returned by the API, but
  # leaving that out to protect against potential BREACH attack.
  gzip              on;
  gzip_vary         on;
  gzip_types        # text/html is always compressed by HttpGzipModule
                    text/css
                    application/javascript
                    font/truetype
                    font/opentype
                    application/vnd.ms-fontobject
                    image/svg+xml;
  gzip_min_length   1000; # default is 20 bytes
  gzip_buffers      16 8k;
  gzip_comp_level   2; # default is 1

  client_body_timeout       30s; # default is 60
  client_header_timeout     10s; # default is 60
  send_timeout              10s; # default is 60
  keepalive_timeout         10s; # default is 75
  resolver_timeout          10s; # default is 30
  reset_timedout_connection on;
  proxy_ignore_client_abort on;

  tcp_nopush                on; # send headers in one piece
  tcp_nodelay               on; # don't buffer data sent, good for small data bursts in real time

  # If you have a small /var/lib partition, it could be interesting to store temp nginx uploads in a different place
  # See https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path
  #client_body_temp_path /var/www/peertube/storage/nginx/;

  # Bypass PeerTube for performance reasons. Optional.
  # Should be consistent with client-overrides assets list in client.ts server controller
  location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png|default-playlist\.jpg|default-avatar-account\.png|default-avatar-account-48x48\.png|default-avatar-video-channel\.png|default-avatar-video-channel-48x48\.png))$ {
    add_header Cache-Control "public, max-age=31536000, immutable"; # Cache 1 year

    root /var/www/peertube;

    try_files /storage/client-overrides/$1 /peertube-latest/client/dist/$1 @api;
  }

  # Bypass PeerTube for performance reasons. Optional.
  location ~ ^/client/(.*\.(js|css|png|svg|woff2|otf|ttf|woff|eot))$ {
    add_header Cache-Control "public, max-age=31536000, immutable"; # Cache 1 year

    alias /var/www/peertube/peertube-latest/client/dist/$1;
  }

  location ~ ^(/static/(webseed|web-videos|streaming-playlists/hls)/private/)|^/download {
    # We can't rate limit a try_files directive, so we need to duplicate @api

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host            $host;
    proxy_set_header X-Real-IP       $remote_addr;

    proxy_limit_rate 5M;

    proxy_pass http://backend;
  }

  # Bypass PeerTube for performance reasons. Optional.
  location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {
    limit_rate_after            5M;

    set $peertube_limit_rate  5M;

    # Use this line with nginx >= 1.17.0
    limit_rate $peertube_limit_rate;
    # Or this line with nginx < 1.17.0
    # set $limit_rate $peertube_limit_rate;

    if ($request_method = 'OPTIONS') {
      add_header Access-Control-Allow-Origin  '*';
      add_header Access-Control-Allow-Methods 'GET, OPTIONS';
      add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
      add_header Access-Control-Max-Age       1728000; # Preflight request can be cached 20 days
      add_header Content-Type                 'text/plain charset=UTF-8';
      add_header Content-Length               0;
      return 204;
    }

    if ($request_method = 'GET') {
      add_header Access-Control-Allow-Origin  '*';
      add_header Access-Control-Allow-Methods 'GET, OPTIONS';
      add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

      # Don't spam access log file with byte range requests
      access_log off;
    }

    # Enabling the sendfile directive eliminates the step of copying the data into the buffer
    # and enables direct copying data from one file descriptor to another.
    sendfile on;
    sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k.
    aio threads;

    # web-videos is the name of the directory mapped to the `storage.web_videos` key in your PeerTube configuration
    rewrite ^/static/webseed/(.*)$ /web-videos/$1 break;
    rewrite ^/static/(.*)$         /$1        break;

    try_files $uri @api;
  }
}
listen:
  hostname: '127.0.0.1'
  port: 9000
# Correspond to your reverse proxy server_name/listen configuration (i.e., your public PeerTube instance URL)
webserver:
  https: true
  hostname: 'angeltales.angellive.ru'
  port: 443
# Secrets you need to generate the first time you run PeerTube
secrets:
  # Generate one using `openssl rand -hex 32`
  peertube: 'kl;lkjjkl;kj'

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
  receive_client_log:
    # 1 attempt every 2 seconds
    window: 1 minute
    max: 30
  plugins:
    # 500 attempts in 10 seconds (we also serve plugin static files)
    window: 10 seconds
    max: 500
  well_known:
    # 200 attempts in 10 seconds
    window: 10 seconds
    max: 200
  feeds:
    # 50 attempts in 10 seconds
    window: 10 seconds
    max: 50
  activity_pub:
    # 500 attempts in 10 seconds (we can have many AP requests)
    window: 10 seconds
    max: 500
  client: # HTML files generated by PeerTube
    # 500 attempts in 10 seconds (to not break crawlers)
    window: 10 seconds
    max: 500

oauth2:
  token_lifetime:
    access_token: '1 day'
    refresh_token: '2 weeks'

# 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 database.name OR 'peertube'+database.suffix
database:
  hostname: '127.0.0.1'
  port: 5432
  ssl: false
  suffix: '_prod'
  username: 'klkjkl'
  password: '';lkkl;lkjhgjkl''
  pool:
    max: 5

# Redis server for short time storage
# You can also specify a 'socket' path to a unix socket but first need to
# set 'hostname' and 'port' to null
redis:
  hostname: '127.0.0.1'
  port: 6379
  auth: null # Used by both standalone and sentinel
  db: 0
  sentinel:
    enabled: false
    enable_tls: false
    master_name: ''
    sentinels:
      - hostname: ''
        port: 26379

# SMTP server to send emails
smtp:
  # smtp or sendmail
  transport: smtp
  # Path to sendmail command. Required if you use sendmail transport
  sendmail: null
  hostname: smtp.gmail.com
  port: 465 # If you use StartTLS: 587
  username: lghjklk@gmail.com
  password: jghkl;kjhghjk
  tls: true # If you use StartTLS: false
  disable_starttls: false
  ca_file: null # Used for self signed certificates
  from_address: lghjkjhhj@gmail.com
email:
  body:
    signature: angeltales
  subject:
    prefix: [Angeltales]
# Update default PeerTube values
# Set by API when the field is not provided and put as default value in client

defaults:
  # Change default values when publishing a video (upload/import/go Live)
  publish:
    download_enabled: true

    # enabled = 1, disabled = 2, requires_approval = 3
    comments_policy: 1

    # public = 1, unlisted = 2, private = 3, internal = 4
    privacy: 1

    # CC-BY = 1, CC-SA = 2, CC-ND = 3, CC-NC = 4, CC-NC-SA = 5, CC-NC-ND = 6, Public Domain = 7
    # You can also choose a custom licence value added by a plugin
    # No licence by default
    licence: null

  p2p:
    # Enable P2P by default in PeerTube client
    # Can be enabled/disabled by anonymous users and logged in users
    webapp:
      enabled: true

    # Enable P2P by default in PeerTube embed
    # Can be enabled/disabled by URL option
    embed:
      enabled: true

# From the project root directory
storage:
  tmp: '/var/www/peertube/storage/tmp/' # Use to download data (imports etc), store uploaded files before and during processing...
  tmp_persistent: '/var/www/peertube/storage/tmp-persistent/' # As tmp but the directory is not cleaned up between PeerTube restarts
  bin: '/var/www/peertube/storage/bin/'
  avatars: '/var/www/peertube/storage/avatars/'
  web_videos: '/var/www/peertube/storage/web-videos/'
  streaming_playlists: '/var/www/peertube/storage/streaming-playlists/'
  original_video_files: '/var/www/peertube/storage/original-video-files/'
  redundancy: '/var/www/peertube/storage/redundancy/'
  logs: '/var/www/peertube/storage/logs/'
  previews: '/var/www/peertube/storage/previews/'
  thumbnails: '/var/www/peertube/storage/thumbnails/'
  storyboards: '/var/www/peertube/storage/storyboards/'
  torrents: '/var/www/peertube/storage/torrents/'
  captions: '/var/www/peertube/storage/captions/'
  cache: '/var/www/peertube/storage/cache/'
  plugins: '/var/www/peertube/storage/plugins/'
  well_known: '/var/www/peertube/storage/well-known/'
  # Overridable client files in client/dist/assets/images:
  # - logo.svg
  # - favicon.png
  # - default-playlist.jpg
  # - default-avatar-account.png
  # - default-avatar-video-channel.png
  # - and icons/*.png (PWA)
  # Could contain for example assets/images/favicon.png
  # If the file exists, peertube will serve it
  # If not, peertube will fallback to the default file
  client_overrides: '/var/www/peertube/storage/client-overrides/'

static_files:
  # Require and check user authentication when accessing private files (internal/private video files)
  private_files_require_auth: true

object_storage:
  enabled: false

  # Without protocol, will default to HTTPS
  # Your S3 provider must support virtual hosting of buckets as PeerTube doesn't support path style requests
  endpoint: '' # 's3.amazonaws.com' or 's3.fr-par.scw.cloud' for example

  region: 'us-east-1'

  upload_acl:
    # Set this ACL on each uploaded object of public/unlisted videos
    # Use null if your S3 provider does not support object ACL
    public: 'public-read'
    # Set this ACL on each uploaded object of private/internal videos
    # PeerTube can proxify requests to private objects so your users can access them
    # Use null if your S3 provider does not support object ACL
    private: 'private'

  proxy:
    # If private files (private/internal video files) have a private ACL, users can't access directly the ressource
    # PeerTube can proxify requests between your object storage service and your users
    # If you disable PeerTube proxy, ensure you use your own proxy that is able to access the private files
    # Or you can also set a public ACL for private files in object storage if you don't want to use a proxy
    proxify_private_files: true

  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: 100MB

  # Maximum number of attempts to make a request to object storage
  # Some object storage providers (for instance Backblaze) expects the client to retry upload upon 5xx errors
  # If you're using such a provider then you can increase this value
  max_request_attempts: 3

  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'

    # PeerTube makes many small requests to the object storage provider to upload/delete/update live chunks
    # which can be a problem depending on your object storage provider
    # You can also choose to disable this feature to reduce live streams latency
    # Live stream replays are not affected by this setting, so they are uploaded in object storage as regular VOD videos
    store_live_streams: true

  web_videos:
    bucket_name: 'web-videos'
    prefix: ''
    base_url: ''

  user_exports:
    bucket_name: 'user-exports'
    prefix: ''
    base_url: ''

  # Same settings but for original video files
  original_video_files:
    bucket_name: 'original-video-files'
    prefix: ''
    base_url: ''

log:
  level: 'info' # 'debug' | 'info' | 'warn' | 'error'

  rotation:
    enabled: true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
    max_file_size: 12MB
    max_files: 20

  anonymize_ip: false

  log_ping_requests: true
  log_tracker_unknown_infohash: false

  # If you have many concurrent requests, you can disable HTTP requests logging to reduce PeerTube CPU load
  log_http_requests: true

  prettify_sql: false

  # Accept warn/error logs coming from the client
  accept_client_log: false

# Support of Open Telemetry metrics and tracing
# For more information: https://docs.joinpeertube.org/maintain/observability
open_telemetry:
  metrics:
    enabled: false

    # How often viewers send playback stats to server
    playback_stats_interval: '15 seconds'

    http_request_duration:
      # You can disable HTTP request duration metric that can have a high tag cardinality
      enabled: false

    # Create a prometheus exporter server on this port so prometheus server can scrape PeerTube metrics
    prometheus_exporter:
      hostname: '127.0.0.1'
      port: 9091

  tracing:
    # If tracing is enabled, you must provide --experimental-loader=@opentelemetry/instrumentation/hook.mjs flag to the node binary
    enabled: false

    # Send traces to a Jaeger compatible endpoint
    jaeger_exporter:
      endpoint: ''

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

    algorithms:
      enabled:
        - 'hot' # Adaptation of Reddit's 'Hot' algorithm
        - 'most-viewed' # Number of views in the last x days
        - 'most-liked' # Global views since the upload of the video

      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

# Other instances that duplicate your content
remote_redundancy:
  videos:
    # 'nobody': Do not accept remote redundancies
    # 'anybody': Accept remote redundancies from anybody
    # 'followings': Accept redundancies from instance followings
    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:

security:
  # Set the X-Frame-Options header to help to mitigate clickjacking attacks
  frameguard:
    enabled: true

  # Set x-powered-by HTTP header to "PeerTube"
  # Can help remote software to know this is a PeerTube instance
  powered_by_header:
    enabled: true

tracker:
  # If you disable the tracker, you disable the P2P on your PeerTube instance
  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'

    # PeerTube buffers local video views before updating and federating the video
    local_buffer_update_interval: '30 minutes'

    # How long does it take to count again a view from the same user
    view_expiration: '1 hour'

    # Minimum amount of time the viewer has to watch the video before PeerTube adds a view
    count_view_after: '10 seconds'

    # Player can send a session id string to track the user
    # Since this can be spoofed by users to create fake views, you have the option to disable this feature
    # If disabled, PeerTube will use the IP address to track the same user (default behavior before PeerTube 6.1)
    trust_viewer_session_id: true

    # How often the web browser sends "is watching" information to the server
    # Increase the value or set null to disable it if you plan to have many viewers
    watching_interval:
      # Non logged-in viewers
      anonymous: '5 seconds'

      # Logged-in users of your instance
      # Unlike anonymous viewers, this endpoint is also used to store the "last watched video timecode" for your users
      # Increasing this value reduces the accuracy of the video resume
      users: '5 seconds'

# Used to get country location of views of local videos
geo_ip:
  enabled: true

  country:
    database_url: 'https://dbip.mirror.framasoft.org/files/dbip-country-lite-latest.mmdb'

  city:
    database_url: 'https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb'

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: '4 hours' # How often you want to check new plugins/themes versions
    url: 'https://packages.joinpeertube.org'

federation:
  # Some federated software such as Mastodon may require an HTTP signature to access content
  sign_federated_fetches: true

  videos:
    federate_unlisted: false

    # Add a weekly job that cleans up remote AP interactions on local videos (shares, rates and comments)
    # It removes objects that do not exist anymore, and potentially fix their URLs
    cleanup_remote_interactions: true

peertube:
  check_latest_version:
    # Check and notify admins of new PeerTube versions
    enabled: true
    # You can use a custom URL if your want, that respect the format behind https://joinpeertube.org/api/v1/versions.json
    url: 'https://joinpeertube.org/api/v1/versions.json'

webadmin:
  configuration:
    edition:
      # Set this to false if you don't want to allow config edition in the web interface by instance admins
      allowed: true

# XML, Atom or JSON feeds
feeds:
  videos:
    # Default number of videos displayed in feeds
    count: 20

  comments:
    # Default number of comments displayed in feeds
    count: 20

remote_runners:
  # Consider jobs that are processed by a remote runner as stalled after this period of time without any update
  stalled_jobs:
    live: '30 seconds'
    vod: '2 minutes'

thumbnails:
  # When automatically generating a thumbnail from the video
  generation_from_video:
    # How many frames to analyze at the middle of the video to select the most appropriate one
    # Increasing this value will increase CPU and memory usage when generating the thumbnail, especially for high video resolution
    # Minimum value is 2
    frames_to_analyze: 50

  # Only two sizes are currently supported for now (not less, not more)
  # 1 size for the thumbnail (displayed in video miniatures)
  # 1 size for the preview (displayed in the video player)
  sizes:
    -
      width: 280
      height: 157

    -
      width: 850
      height: 480

stats:
  # Display registration requests stats (average response time, total requests...)
  registration_requests:
    enabled: true

  # Display abuses stats (average response time, total abuses...)
  abuses:
    enabled: true

  total_moderators:
    enabled: true

  total_admins:
    enabled: true

###############################################################################
#
# From this point, almost all 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, modification of some 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 # Max number of video torrents you want to cache
  storyboards:
    size: 500 # Max number of video storyboards you want to cache

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

contact_form:
  enabled: true

signup:
  enabled: false

  limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited

  minimum_age: 16 # Used to configure the signup form

  # Users fill a form to register so moderators can accept/reject the registration
  requires_approval: true
  requires_email_verification: false

  filters:
    cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist
      whitelist: []
      blacklist: []

user:
  history:
    videos:
      # Enable or disable video history by default for new users.
      enabled: true

  # Default value of maximum video bytes the user can upload
  # Does not take into account transcoded files or account export archives (that can include user uploaded files)
  # Byte format is supported ("1GB" etc)
  # -1 == unlimited
  video_quota: -1
  video_quota_daily: -1

  default_channel_name: 'Main $1 channel' # The placeholder $1 is used to represent the user's username

video_channels:
  max_per_user: 20 # Allows each user to create up to 20 video channels.

# 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

  original_file:
    # If false the uploaded file is deleted after transcoding
    # If yes it is not deleted but moved in a dedicated folder or object storage
    keep: false

  # Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
  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

  # Enable remote runners to transcode your videos
  # If enabled, your instance won't transcode the videos itself
  # At least 1 remote runner must be configured to transcode your videos
  remote_runners:
    enabled: false

  # Amount of threads used by ffmpeg for 1 local transcoding job
  threads: 1
  # Amount of local transcoding jobs to execute in parallel
  concurrency: 1

  # Choose the local transcoding profile
  # New profiles can be added by plugins
  # Available in core PeerTube: 'default'
  profile: 'default'

  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)
    144p: false
    240p: false
    360p: false
    480p: false
    720p: false
    1080p: false
    1440p: false
    2160p: false

  # Transcode and keep original resolution, even if it's above your maximum enabled resolution
  always_transcode_original_resolution: true

  # Generate videos in a web compatible format
  # If you also enabled the hls format, it will multiply videos storage by 2
  # If disabled, breaks federation with PeerTube instances < 2.1
  web_videos:
    enabled: false

  # /!\ Requires ffmpeg >= 4.1
  # Generate HLS playlists and fragmented MP4 files. Better playback than with Web Videos:
  #     * Resolution change is smoother
  #     * Faster playback in particular with long videos
  #     * More stable playback (less bugs/infinite loading)
  # If you also enabled the web videos format, it will multiply videos storage by 2
  hls:
    enabled: true

live:
  enabled: false

  # Limit lives duration
  # -1 == unlimited
  max_duration: -1 # For example: '5 hours'

  # Limit max number of live videos created on your instance
  # -1 == unlimited
  max_instance_lives: 20

  # Limit max number of live videos created by a user on your instance
  # -1 == unlimited
  max_user_lives: 3

  # Allow your users to save a replay of their live
  # PeerTube will transcode segments in a video file
  # If the user daily/total quota is reached, PeerTube will stop the live
  # /!\ transcoding.enabled (and not live.transcoding.enabled) has to be true to create a replay
  allow_replay: true

  # Allow your users to change latency settings (small latency/default/high latency)
  # Small latency live streams cannot use P2P
  # High latency live streams can increase P2P ratio
  latency_setting:
    enabled: true

  # Your firewall should accept traffic from this port in TCP if you enable live
  rtmp:
    enabled: true

    # Listening hostname/port for RTMP server
    # '::' to listen on IPv6 and IPv4, '0.0.0.0' to listen on IPv4
    # Use null to automatically listen on '::' if IPv6 is available, or '0.0.0.0' otherwise
    hostname: null
    port: 1935

    # Public hostname of your RTMP server
    # Use null to use the same value than `webserver.hostname`
    public_hostname: null

  rtmps:
    enabled: false

    # Listening hostname/port for RTMPS server
    # '::' to listen on IPv6 and IPv4, '0.0.0.0' to listen on IPv4
    # Use null to automatically listen on '::' if IPv6 is available, or '0.0.0.0' otherwise
    hostname: null
    port: 1936

    # Absolute paths
    key_file: ''
    cert_file: ''

    # Public hostname of your RTMPS server
    # Use null to use the same value than `webserver.hostname`
    public_hostname: null

  # Allow to transcode the live streaming in multiple live resolutions
  transcoding:
    enabled: true

    # Enable remote runners to transcode your videos
    # If enabled, your instance won't transcode the videos itself
    # At least 1 remote runner must be configured to transcode your videos
    remote_runners:
      enabled: false

    # Amount of threads used by ffmpeg per live when using local transcoding
    threads: 2

    # Choose the local transcoding profile
    # New profiles can be added by plugins
    # Available in core PeerTube: 'default'
    profile: 'default'

    resolutions:
      144p: false
      240p: false
      360p: false
      480p: false
      720p: false
      1080p: false
      1440p: false
      2160p: false

    # Also transcode original resolution, even if it's above your maximum enabled resolution
    always_transcode_original_resolution: true

video_studio:
  # Enable video edition by users (cut, add intro/outro, add watermark etc)
  # If enabled, users can create transcoding tasks as they wish
  enabled: false

  # Enable remote runners to transcode studio tasks
  # If enabled, your instance won't transcode the videos itself
  # At least 1 remote runner must be configured to transcode your videos
  remote_runners:
    enabled: false

video_transcription:
  # Enable automatic transcription of videos
  enabled: false

  # Choose engine for local transcription
  # Supported: 'openai-whisper' or 'whisper-ctranslate2'
  engine: 'whisper-ctranslate2'

  # You can set a custom engine path for local transcription
  # If not provided, PeerTube will try to automatically install it in the PeerTube bin directory
  engine_path: null

  # Choose engine model for local transcription
  # Available for 'openai-whisper' and 'whisper-ctranslate2': 'tiny', 'base', 'small', 'medium', 'large-v2' or 'large-v3'
  model: 'small'

  # Or specify the model path:
  #  * PyTorch model file path for 'openai-whisper'
  #  * CTranslate2 Whisper model directory path for 'whisper-ctranslate2'
  # If not provided, PeerTube will automatically download the model
  model_path: null

  # Enable remote runners to transcribe videos
  # If enabled, your instance won't transcribe the videos itself
  # At least 1 remote runner must be configured to transcribe your videos
  remote_runners:
    enabled: false

video_file:
  update:
    # Add ability for users to replace the video file of an existing video
    enabled: false

import:
  # Add ability for your users to import remote videos (from YouTube, torrent...)
  videos:
    # Amount of import jobs to execute in parallel
    concurrency: 1

    # Set a custom video import timeout to not block import queue
    timeout: '2 hours'

    # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
    http:
      # We recommend to use a HTTP proxy if you enable HTTP import to prevent private URL access from this server
      # See https://docs.joinpeertube.org/maintain/configuration#security for more information
      enabled: false

      youtube_dl_release:
        # Direct download URL to youtube-dl binary
        # Github releases API is also supported
        # Examples:
        #   * https://api.github.com/repos/ytdl-org/youtube-dl/releases
        #   * https://api.github.com/repos/yt-dlp/yt-dlp/releases
        #   * https://yt-dl.org/downloads/latest/youtube-dl
        url: 'https://api.github.com/repos/yt-dlp/yt-dlp/releases'

        # Release binary name: 'yt-dlp' or 'youtube-dl'
        name: 'yt-dlp'

        # Path to the python binary to execute for youtube-dl or yt-dlp
        python_path: '/usr/bin/python3'

      # IPv6 is very strongly rate-limited on most sites supported by youtube-dl
      force_ipv4: false

    # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
    torrent:
      # We recommend to only enable magnet URI/torrent import if you trust your users
      # See https://docs.joinpeertube.org/maintain/configuration#security for more information
      enabled: false

  # Add ability for your users to synchronize their channels with external channels, playlists, etc
  video_channel_synchronization:
    enabled: false

    max_per_user: 10

    check_interval: 1 hour

    # Number of latest published videos to check and to potentially import when syncing a channel
    videos_limit_per_synchronization: 10

    # Max number of videos to import when the user asks for full sync
    full_sync_videos_limit: 1000

  users:
    # Video quota is checked on import so the user doesn't upload a too big archive file
    # Video quota (daily quota is not taken into account) is also checked for each video when PeerTube is processing the import
    enabled: true

export:
  users:
    # Allow users to export their PeerTube data in a .zip for backup or re-import
    # Only one export at a time is allowed per user
    enabled: true

    # Max size of the current user quota to accept or not the export
    # Goal of this setting is to not store too big archive file on your server disk
    max_user_video_quota: 10GB

    # How long PeerTube should keep the user export
    export_expiration: '2 days'

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, an ActivityPub-federated video streaming platform using P2P directly in your web browser.'
  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: '' # Supports Markdown

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

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

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

  # 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:
  # /.well-known/security.txt rules. This endpoint is cached, so you may have to wait a few hours before viewing your changes
  # To discourage researchers from testing your instance and disable security.txt integration, set this to an empty string
  securitytxt: |
    Contact: https://github.com/Chocobozzz/PeerTube/blob/develop/SECURITY.md
    Expires: 2025-12-31T11:00:00.000Z'

services:
  # Cards configuration to format video in Twitter/X
  # All other social media (Facebook, Mastodon, etc.) are supported out of the box
  twitter:
    # Indicates the Twitter/X account for the website or platform where the content was published
    # This is just an information injected in HTML that is required by Twitter/X
    username: '@Chocobozzz'

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
      # Host your own using https://framagit.org/framasoft/peertube/instances-peertube#peertube-auto-follow
      index_url: ''

theme:
  default: 'default'

broadcast_message:
  enabled: false
  message: '' # Support markdown
  level: 'info' # 'info' | 'warning' | 'error'
  dismissable: 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

  # Use a third party index instead of your local index, only for search results
  # Useful to discover content outside of your instance
  # If you enable search_index, you must enable remote_uri search for users
  # If you do not enable remote_uri search for anonymous user, your instance will redirect the user on the origin instance
  # instead of loading the video locally
  search_index:
    enabled: false
    # URL of the search index, that should use the same search API and routes
    # than PeerTube: https://docs.joinpeertube.org/api-rest-reference.html
    # You should deploy your own with https://framagit.org/framasoft/peertube/search-index,
    # and can use https://search.joinpeertube.org/ for tests, but keep in mind the latter is an unmoderated search index
    url: ''
    # You can disable local search in the client, so users only use the search index
    disable_local_search: false
    # If you did not disable local search in the client, you can decide to use the search index by default
    is_default_search: false

# PeerTube client/interface configuration
client:
  videos:
    miniature:
      # By default PeerTube client displays author username
      prefer_author_display_name: false
      display_author_avatar: false

    resumable_upload:
      # Max size of upload chunks, e.g. '90MB'
      # If null, it will be calculated based on network speed
      max_chunk_size: null

  menu:
    login:
      # If you enable only one external auth plugin
      # You can automatically redirect your users on this external platform when they click on the login button
      redirect_on_single_external_auth: false

storyboards:
  # Generate storyboards of local videos using ffmpeg so users can see the video preview in the player while scrubbing the video
  enabled: true

I myself understand how to solve it, perhaps the co-founders of PeerTube will take a minute and help me solve this problem. I found this Websocket communication is failing · Issue #4929 · Chocobozzz/PeerTube · GitHub, but even here the solution remained unanswered

2.2.2.2 - - [03/Aug/2024:06:10:07 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 181170 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:10:11 +0000] "POST /api/v1/videos/dd56e7e3-7c4d-4629-be3d-8deef77630a6/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:10:11 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 208542 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:11:37 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:12:11 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:13:18 +0000] "GET /tracker/socket HTTP/1.1" 101 206 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:15:20 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:15:21 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:16:34 +0000] "GET /tracker/socket HTTP/1.1" 101 198 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:12 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:32 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 201783 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:32 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 201889 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:32 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 202210 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:32 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 196178 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:33 +0000] "POST /api/v1/server/logs/client HTTP/2.0" 403 9 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:17:36 +0000] "POST /api/v1/videos/dd56e7e3-7c4d-4629-be3d-8deef77630a6/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:18:12 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:18:57 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:20:03 +0000] "GET /tracker/socket HTTP/1.1" 101 185 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:20:46 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
208.110.70.42 - - [03/Aug/2024:06:22:41 +0000] "GET /restore.php HTTP/1.1" 200 18610 "-" "-"
2.2.2.2 - - [03/Aug/2024:06:23:00 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:24:29 +0000] "GET /tracker/socket HTTP/1.1" 101 185 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:25:03 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:25:51 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:27:13 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:29:29 +0000] "GET /tracker/socket HTTP/1.1" 101 185 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:29:48 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:30:02 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:33:18 +0000] "GET /tracker/socket HTTP/1.1" 101 185 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:34:36 +0000] "GET /socket.io/?accessToken=932581a724bb75e4c3b5c456dffc2f85c10a6d87&EIO=4&transport=websocket&sid=1sDt4kopU77jTpq1AAAK HTTP/1.1" 101 526 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:40:01 +0000] "GET /socket.io/?accessToken=932581a724bb75e4c3b5c456dffc2f85c10a6d87&EIO=4&transport=polling&t=P4Mzs-X HTTP/2.0" 200 118 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:40:01 +0000] "POST /socket.io/?accessToken=932581a724bb75e4c3b5c456dffc2f85c10a6d87&EIO=4&transport=polling&t=P4Mzt1i&sid=TUH2gisCgtxiuMKhAAAM HTTP/2.0" 200 2 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:40:01 +0000] "GET /socket.io/?accessToken=932581a724bb75e4c3b5c456dffc2f85c10a6d87&EIO=4&transport=polling&t=P4Mzt1r&sid=TUH2gisCgtxiuMKhAAAM HTTP/2.0" 200 52 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:40:01 +0000] "GET /socket.io/?accessToken=932581a724bb75e4c3b5c456dffc2f85c10a6d87&EIO=4&transport=polling&t=P4Mzt3u&sid=TUH2gisCgtxiuMKhAAAM HTTP/2.0" 200 1 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:40:06 +0000] "GET /tracker/socket HTTP/1.1" 101 206 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:41:10 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:41:15 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:42:09 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:42:50 +0000] "GET /tracker/socket HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:43 +0000] "POST /api/v1/server/logs/client HTTP/2.0" 403 9 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:43 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 188294 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:43 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 187334 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:43 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 187803 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:43 +0000] "GET /static/streaming-playlists/hls/private/dd56e7e3-7c4d-4629-be3d-8deef77630a6/fde00643-42a0-4360-89a8-2fc58adbd6cb-720-fragmented.mp4 HTTP/2.0" 206 188354 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:45 +0000] "POST /api/v1/server/logs/client HTTP/2.0" 403 9 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:46 +0000] "POST /api/v1/videos/dd56e7e3-7c4d-4629-be3d-8deef77630a6/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:51 +0000] "POST /api/v1/videos/dd56e7e3-7c4d-4629-be3d-8deef77630a6/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:43:56 +0000] "POST /api/v1/videos/dd56e7e3-7c4d-4629-be3d-8deef77630a6/views HTTP/2.0" 204 0 "https://angeltales.angellive.ru/w/p/fAebmBQg35EjkpVoMTwKcU?playlistPosition=3" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"
2.2.2.2 - - [03/Aug/2024:06:44:00 +0000] "GET /tracker/socket HTTP/1.1" 101 185 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"

Hello!
Please check if this related to the issue I reported Refreshing page after upload is done triggers unknown infoHash error in logs. · Issue #6516 · Chocobozzz/PeerTube · GitHub

It was just fixed in 6.2.1 but requires video privacy change in order to fix tracker IP ban.

I visited your website and whatched public videos without issue you mentioned.

Hi, I saw your topic, and I did so with my latest videos. When you watched my videos, you didn’t have any errors in the browser console. It turns out that only authorized users encounter this? But I have about 600 videos there, well, it turns out that they should be changed from Internal to Public and back?)
I looked at it now without authorization, I didn’t see any errors, I logged in and started running, and how can I fix this?


Although a little later I got errors without authorization

Indeed, no errors in browser console when I whatched your videos unathorized. If you have videos available for registered users only, then you should try changing pricacy video settings to private and back to whatever it was. This should trigger infoHash check & update and fix the problem. So you will end up with correct infoHash.

Reason you get websocket error is because Perrtube blocks peers sending unknown infoHashes. This is security mechanism which helps prevent internal tracker flood with unrelated peers. You may take a look at peertube trackers source code to see this.

1 « J'aime »

I tried it in different ways, now both without authorization errors are flying, and with authorization. Also, the method does not help, nothing changes)

Update video privacy from ‹ publictoprivate › and then private ' to public` should fix the existing videos in version 6.2.1.

Have you found a solution to the batch method of the above method, or did you manually do all the videos?)

I had to do everything manually. There is no way to batch change privacy in settings.

Once you open video with bad infoHash in order to change it’s privacy settings you immediately send wrong infoHash to Peertube Tracker and it bans you for 3 minutes.

Make sure to:

  1. Change privacy settings for 1 video: go private and public again.
  2. Close all Peertube Instance tabs in your browser.
  3. Go back after 4-5 minutes, open changed video, check console for websocket errors.
1 « J'aime »