production.yaml.example 18.4 KB
Newer Older
1
listen:
2
  hostname: 'localhost'
3
4
  port: 9000

Chocobozzz's avatar
Chocobozzz committed
5
# Correspond to your reverse proxy server_name/listen configuration (i.e., your public PeerTube instance URL)
Chocobozzz's avatar
Chocobozzz committed
6
webserver:
7
  https: true
8
  hostname: 'example.com'
9
  port: 443
10

11
rates_limit:
12
13
14
15
  api:
    # 50 attempts in 10 seconds
    window: 10 seconds
    max: 50
16
17
18
19
  login:
    # 15 attempts in 5 min
    window: 5 minutes
    max: 15
20
21
22
23
  signup:
    # 2 attempts in 5 min (only succeeded attempts are taken into account)
    window: 5 minutes
    max: 2
24
25
26
27
28
  ask_send_email:
    # 3 attempts in 5 min
    window: 5 minutes
    max: 3

Chocobozzz's avatar
Chocobozzz committed
29
30
31
32
33
34
# 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'

35
# Your database name will be database.name OR "peertube"+database.suffix
36
database:
37
38
  hostname: 'localhost'
  port: 5432
Chocobozzz's avatar
Chocobozzz committed
39
  ssl: false
Chocobozzz's avatar
Chocobozzz committed
40
  suffix: '_prod'
Chocobozzz's avatar
Chocobozzz committed
41
42
  username: 'peertube'
  password: 'peertube'
Rigel Kent's avatar
Rigel Kent committed
43
44
  pool:
    max: 5
45

46
# Redis server for short time storage
Rigel Kent's avatar
Rigel Kent committed
47
48
# You can also specify a 'socket' path to a unix socket but first need to
# comment out hostname and port
Chocobozzz's avatar
Chocobozzz committed
49
50
51
52
redis:
  hostname: 'localhost'
  port: 6379
  auth: null
Rigel Kent's avatar
Rigel Kent committed
53
  db: 0
Chocobozzz's avatar
Chocobozzz committed
54

55
# SMTP server to send emails
Chocobozzz's avatar
Chocobozzz committed
56
smtp:
Ismaël Bouya's avatar
Ismaël Bouya committed
57
58
59
60
  # smtp or sendmail
  transport: smtp
  # Path to sendmail command. Required if you use sendmail transport
  sendmail: null
Chocobozzz's avatar
Chocobozzz committed
61
  hostname: null
62
  port: 465 # If you use StartTLS: 587
Chocobozzz's avatar
Chocobozzz committed
63
64
  username: null
  password: null
65
  tls: true # If you use StartTLS: false
Chocobozzz's avatar
Chocobozzz committed
66
  disable_starttls: false
Chocobozzz's avatar
Chocobozzz committed
67
68
69
  ca_file: null # Used for self signed certificates
  from_address: 'admin@example.com'

70
71
72
email:
  body:
    signature: "PeerTube"
Chocobozzz's avatar
Chocobozzz committed
73
  subject:
74
75
    prefix: "[PeerTube]"

76
77
# From the project root directory
storage:
78
  tmp: '/var/www/peertube/storage/tmp/' # Use to download data (imports etc), store uploaded files before and during processing...
79
80
  avatars: '/var/www/peertube/storage/avatars/'
  videos: '/var/www/peertube/storage/videos/'
Chocobozzz's avatar
Chocobozzz committed
81
  streaming_playlists: '/var/www/peertube/storage/streaming-playlists/'
82
  redundancy: '/var/www/peertube/storage/redundancy/'
83
84
85
86
  logs: '/var/www/peertube/storage/logs/'
  previews: '/var/www/peertube/storage/previews/'
  thumbnails: '/var/www/peertube/storage/thumbnails/'
  torrents: '/var/www/peertube/storage/torrents/'
Chocobozzz's avatar
Chocobozzz committed
87
  captions: '/var/www/peertube/storage/captions/'
88
  cache: '/var/www/peertube/storage/cache/'
89
  plugins: '/var/www/peertube/storage/plugins/'
90
91
92
93
94
  # Overridable client files : logo.svg, favicon.png and icons/*.png (PWA) in client/dist/assets/images
  # Could contain for example assets/images/favicon.png
  # If the file exists, peertube will serve it
  # If not, peertube will fallback to the default fil
  client_overrides: '/var/www/peertube/storage/client-overrides/'
Chocobozzz's avatar
Chocobozzz committed
95

96
log:
Chocobozzz's avatar
Chocobozzz committed
97
  level: 'info' # 'debug' | 'info' | 'warn' | 'error'
Nassim Bounouas's avatar
Nassim Bounouas committed
98
  rotation:
99
    enabled : true # Enabled by default, if disabled make sure that 'storage.logs' is pointing to a folder handled by logrotate
100
101
102
    maxFileSize: 12MB
    maxFiles: 20
  anonymizeIP: false
103
  log_ping_requests: true
Chocobozzz's avatar
Chocobozzz committed
104
  prettify_sql: false
105

Chocobozzz's avatar
Chocobozzz committed
106
107
108
trending:
  videos:
    interval_days: 7 # Compute trending videos for the last x days
109
110
    algorithms:
      enabled:
111
112
        - 'best' # adaptation of Reddit's 'Best' algorithm (Hot minus History)
        - 'hot' # adaptation of Reddit's 'Hot' algorithm
113
114
115
        - 'most-viewed' # default, used initially by PeerTube as the trending page
        - 'most-liked'
      default: 'most-viewed'
Chocobozzz's avatar
Chocobozzz committed
116

117
118
119
120
121
# 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:
122
    check_interval: '1 hour' # How often you want to check new videos to cache
123
    strategies: # Just uncomment strategies you want
124
125
#      -
#        size: '10GB'
126
127
#        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
#        min_lifetime: '48 hours'
128
129
130
#        strategy: 'most-views' # Cache videos that have the most views
#      -
#        size: '10GB'
131
132
#        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
#        min_lifetime: '48 hours'
133
134
135
#        strategy: 'trending' # Cache trending videos
#      -
#        size: '10GB'
136
137
#        # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances)
#        min_lifetime: '48 hours'
138
#        strategy: 'recently-added' # Cache recently added videos
139
#        min_views: 10 # Having at least x views
140

141
142
143
144
145
146
147
148
# 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'

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

Chocobozzz's avatar
Chocobozzz committed
154
155
156
157
158
security:
  # Set the X-Frame-Options header to help to mitigate clickjacking attacks
  frameguard:
    enabled: true

Chocobozzz's avatar
Chocobozzz committed
159
160
161
162
163
164
165
166
167
168
tracker:
  # If you disable the tracker, you disable the P2P aspect of PeerTube
  enabled: true
  # Only handle requests on your videos.
  # If you set this to false it means you have a public tracker.
  # Then, it is possible that clients overload your instance with external torrents
  private: true
  # Reject peers that do a lot of announces (could improve privacy of TCP/UDP peers)
  reject_too_many_announces: false

169
170
171
172
173
174
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
175

176
177
178
179
180
181
182
183
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:
Chocobozzz's avatar
Chocobozzz committed
184
      max_age: '30 days'
185

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

194
195
federation:
  videos:
196
    federate_unlisted: false
197

198
199
200
201
202
203
    # 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
    # This setting is opt-in because due to an old bug in PeerTube, remote rates sent by instance before PeerTube 3.0 will be deleted
    # We still suggest you to enable this setting even if your users will loose most of their video's likes/dislikes
    cleanup_remote_interactions: false

204
205
206
207
208
209
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'
210

Chocobozzz's avatar
Chocobozzz committed
211
212
###############################################################################
#
luz.paz's avatar
luz.paz committed
213
# From this point, all the following keys can be overridden by the web interface
Chocobozzz's avatar
Chocobozzz committed
214
215
216
217
218
219
220
221
222
# (local-production.json file). If you need to change some values, prefer to
# use the web interface because the configuration will be automatically
# reloaded without any need to restart PeerTube.
#
# /!\ If you already have a local-production.json file, the modification of the
# following keys will have no effect /!\.
#
###############################################################################

223
224
cache:
  previews:
Chocobozzz's avatar
Chocobozzz committed
225
226
227
    size: 500 # Max number of previews you want to cache
  captions:
    size: 500 # Max number of video captions/subtitles you want to cache
228
229
  torrents:
    size: 500 # Max number of video torrents you want to cache
230

Chocobozzz's avatar
Chocobozzz committed
231
admin:
232
233
  # Used to generate the root user at first startup
  # And to receive emails from the contact form
Chocobozzz's avatar
Chocobozzz committed
234
  email: 'admin@example.com'
Chocobozzz's avatar
Chocobozzz committed
235

236
237
238
contact_form:
  enabled: true

Chocobozzz's avatar
Chocobozzz committed
239
240
signup:
  enabled: false
241
  limit: 10 # When the limit is reached, registrations are disabled. -1 == unlimited
242
  mimimum_age: 16
243
  requires_email_verification: false
244
  filters:
245
246
247
    cidr: # You can specify CIDR ranges to whitelist (empty = no filtering) or blacklist
      whitelist: []
      blacklist: []
248

Chocobozzz's avatar
Chocobozzz committed
249
250
251
252
user:
  # Default value of maximum video BYTES the user can upload (does not take into account transcoded files).
  # -1 == unlimited
  video_quota: -1
Felix's avatar
Felix committed
253
  video_quota_daily: -1
Chocobozzz's avatar
Chocobozzz committed
254

255
# If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
Chocobozzz's avatar
Chocobozzz committed
256
257
# 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
258
transcoding:
259
  enabled: true
260

261
  # Allow your users to upload .mkv, .mov, .avi, .wmv, .flv, .f4v, .3g2, .3gp, .mts, m2ts, .mxf, .nut videos
262
  allow_additional_extensions: true
263

Chocobozzz's avatar
Chocobozzz committed
264
265
  # 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
266

267
  # Amount of threads used by ffmpeg for 1 transcoding job
268
  threads: 1
269
270
  # Amount of transcoding jobs to execute in parallel
  concurrency: 1
271
272
273
274
275
276

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

Chocobozzz's avatar
Chocobozzz committed
277
  resolutions: # Only created if the original video has a higher resolution, uses more storage!
278
    0p: false # audio-only (creates mp4 without video stream, always created when enabled)
279
280
281
282
283
    240p: false
    360p: false
    480p: false
    720p: false
    1080p: false
284
    1440p: false
285
    2160p: false
Chocobozzz's avatar
Chocobozzz committed
286
287
288

  # 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
289
  # If disabled, breaks federation with PeerTube instances < 2.1
Chocobozzz's avatar
Chocobozzz committed
290
  webtorrent:
Chocobozzz's avatar
Chocobozzz committed
291
    enabled: false
Chocobozzz's avatar
Chocobozzz committed
292

293
  # /!\ Requires ffmpeg >= 4.1
Chocobozzz's avatar
Chocobozzz committed
294
  # Generate HLS playlists and fragmented MP4 files. Better playback than with WebTorrent:
Chocobozzz's avatar
Chocobozzz committed
295
296
297
  #     * Resolution change is smoother
  #     * Faster playback in particular with long videos
  #     * More stable playback (less bugs/infinite loading)
Chocobozzz's avatar
Chocobozzz committed
298
  # If you also enabled the webtorrent format, it will multiply videos storage by 2
Chocobozzz's avatar
Chocobozzz committed
299
  hls:
Chocobozzz's avatar
Chocobozzz committed
300
    enabled: true
301

Chocobozzz's avatar
Chocobozzz committed
302
303
304
305
live:
  enabled: false

  # Limit lives duration
306
  # -1 == unlimited
307
  max_duration: -1 # For example: '5 hours'
Chocobozzz's avatar
Chocobozzz committed
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322

  # 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

323
  # Your firewall should accept traffic from this port in TCP if you enable live
Chocobozzz's avatar
Chocobozzz committed
324
325
326
327
328
  rtmp:
    port: 1935

  # Allow to transcode the live streaming in multiple live resolutions
  transcoding:
329
    enabled: true
Chocobozzz's avatar
Chocobozzz committed
330
331
    threads: 2

332
333
334
335
336
    # Choose the transcoding profile
    # New profiles can be added by plugins
    # Available in core PeerTube: 'default'
    profile: 'default'

Chocobozzz's avatar
Chocobozzz committed
337
338
339
340
341
342
    resolutions:
      240p: false
      360p: false
      480p: false
      720p: false
      1080p: false
343
      1440p: false
Chocobozzz's avatar
Chocobozzz committed
344
345
      2160p: false

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

352
353
    http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
      enabled: false
Chocobozzz's avatar
Chocobozzz committed
354

355
      # IPv6 is very strongly rate-limited on most sites supported by youtube-dl
Chocobozzz's avatar
Chocobozzz committed
356
357
      force_ipv4: false

358
359
360
361
      # You can use an HTTP/HTTPS/SOCKS proxy with youtube-dl
      proxy:
        enabled: false
        url: ""
362
363
    torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
      enabled: false
364

365
366
367
368
auto_blacklist:
  # New videos automatically blacklisted so moderators can review before publishing
  videos:
    of_users:
Chocobozzz's avatar
Chocobozzz committed
369
370
      enabled: false

371
# Instance settings
372
373
instance:
  name: 'PeerTube'
Chocobozzz's avatar
Chocobozzz committed
374
  short_description: 'PeerTube, an ActivityPub-federated video streaming platform using P2P directly in your web browser.'
Chocobozzz's avatar
Chocobozzz committed
375
376
377
378
379
380
381
382
  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?
383
  creation_reason: '' # Supports Markdown
Chocobozzz's avatar
Chocobozzz committed
384
385

  # Who is behind the instance? A single person? A non profit?
386
  administrator: '' # Supports Markdown
Chocobozzz's avatar
Chocobozzz committed
387
388

  # How long do you plan to maintain this instance?
389
  maintenance_lifetime: '' # Supports Markdown
Chocobozzz's avatar
Chocobozzz committed
390

391
  # How will you pay the PeerTube instance server? With your own funds? With users donations? Advertising?
392
  business_model: '' # Supports Markdown
Chocobozzz's avatar
Chocobozzz committed
393

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

Chocobozzz's avatar
Chocobozzz committed
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
  # 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

429
  default_client_route: '/videos/trending'
Chocobozzz's avatar
Chocobozzz committed
430

431
432
433
434
  # 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
435
436
437
  # 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'
Chocobozzz's avatar
Chocobozzz committed
438

439
440
441
  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
Chocobozzz's avatar
Chocobozzz committed
442
  # Robot.txt rules. To disallow robots to crawl your instance and disallow indexation of your site, add '/' to "Disallow:'
Rigel Kent's avatar
Rigel Kent committed
443
444
  robots: |
    User-agent: *
445
    Disallow:
446
447
  # Security.txt rules. To discourage researchers from testing your instance and disable security.txt integration, set this to an empty string.
  securitytxt:
448
    "# 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:"
449
450
451
452

services:
  # Cards configuration to format video in Twitter
  twitter:
Chocobozzz's avatar
Chocobozzz committed
453
    username: '@Chocobozzz' # Indicates the Twitter account for the website or platform on which the content was published
454
455
    # 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
456
    # Change it to "true", and then test on https://cards-dev.twitter.com/validator to see if you are whitelisted
Rigel Kent's avatar
Rigel Kent committed
457
    whitelisted: false
Chocobozzz's avatar
Chocobozzz committed
458
459
460
461
462

followers:
  instance:
    # Allow or not other instances to follow yours
    enabled: true
463
464
    # Whether or not an administrator must manually validate a new follower
    manual_approval: false
Chocobozzz's avatar
Chocobozzz committed
465

466
467
468
469
470
471
472
473
474
475
476
477
478
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
479
480
      # Host your own using https://framagit.org/framasoft/peertube/instances-peertube#peertube-auto-follow
      index_url: ''
481

Chocobozzz's avatar
Chocobozzz committed
482
483
theme:
  default: 'default'
Chocobozzz's avatar
Chocobozzz committed
484
485
486
487
488
489

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

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