aboutsummaryrefslogtreecommitdiffhomepage
path: root/config/production.yaml.example
blob: f1ebf90950a5bd86ef5ba7555b0ea702d60bccc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
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: 'example.com'
  port: 443

# Secrets you need to generate the first time you run PeerTube
secrets:
  # Generate one using `openssl rand -hex 32`
  peertube: ''

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:
    # 10 attempts in 10 min
    window: 10 minutes
    max: 10

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: 'localhost'
  port: 5432
  ssl: false
  suffix: '_prod'
  username: 'peertube'
  password: 'peertube'
  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: 'localhost'
  port: 6379
  auth: null
  db: 0

# SMTP server to send emails
smtp:
  # smtp or sendmail
  transport: smtp
  # Path to sendmail command. Required if you use sendmail transport
  sendmail: null
  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]'

# 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

    comments_enabled: true

    # 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...
  bin: '/var/www/peertube/storage/bin/'
  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/'
  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
  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

  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: ''

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: true

  prettify_sql: false

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

# Support of Open Telemetry metrics and tracing
# For more information: https://docs.joinpeertube.org/maintain-observability
open_telemetry:
  metrics:
    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:
    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

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'

    ip_view_expiration: '1 hour'

# 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'

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'

federation:
  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

###############################################################################
#
# 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

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

  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:
  # Default value of maximum video bytes the user can upload (does not take into account transcoded files)
  # Byte format is supported ("1GB" etc)
  # -1 == unlimited
  video_quota: -1
  video_quota_daily: -1

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

  # 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

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

  # Choose the 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 WebTorrent format (what we do since the first PeerTube release)
  # If you also enabled the hls format, it will multiply videos storage by 2
  # If disabled, breaks federation with PeerTube instances < 2.1
  webtorrent:
    enabled: 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)
  # If you also enabled the webtorrent 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
    threads: 2

    # Choose the 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

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?id=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?id=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

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:
    '# 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
      # 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, so users only use the search index
    disable_local_search: false
    # If you did not disable local search, 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