From b9fffa297f49a84df8ffd0d7b842599bc88a8e3e Mon Sep 17 00:00:00 2001
From: Chocobozzz <me@florianbigard.com>
Date: Tue, 4 Dec 2018 17:08:55 +0100
Subject: Create redundancy endpoint

---
 support/nginx/peertube | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

(limited to 'support/nginx')

diff --git a/support/nginx/peertube b/support/nginx/peertube
index b00031133..e0b006088 100644
--- a/support/nginx/peertube
+++ b/support/nginx/peertube
@@ -105,7 +105,7 @@ server {
   }
 
   # Bypass PeerTube for performance reasons. Could be removed
-  location /static/webseed {
+  location ~ ^/static/(webseed|redundancy)/ {
     # Clients usually have 4 simultaneous webseed connections, so the real limit is 3MB/s per client
     limit_rate 800k;
 
@@ -128,7 +128,12 @@ server {
       access_log off;
     }
 
-    alias /var/www/peertube/storage/videos;
+    root /var/www/peertube/storage;
+
+    rewrite ^/static/webseed/(.*)$ /videos/$1 break;
+    rewrite ^/static/redundancy/(.*)$ /redundancy/$1 break;
+
+    try_files $uri /;
   }
 
   # Websocket tracker
-- 
cgit v1.2.3


From 4b49385892b25aea5aa9e605fbcb66074bcb49b0 Mon Sep 17 00:00:00 2001
From: Micah Elizabeth Scott <beth@scanlime.org>
Date: Fri, 7 Dec 2018 05:58:17 -0800
Subject: Remove hard-coded 8GB upload limit in client (#1293)

* Remove hard-coded 8GB upload limit in client

Ideally we'd know what the specific server's configured upload limit
is before starting, but this 8GB limit is not useful if an administrator
has changed the nginx post limit on the server.

* Better docs for admins about client_max_body_size

Seems like some admins already tweak this value up or down to allow
for different maximum video upload sizes. The current codebase has no
other server-side limits that I'm aware of, and I've been routinely
uploading quite large videos to my instance.

This patch replaces the somewhat incorrect (or outdated?) 'hard limit'
comment with some advice about allocating enough space for nginx and
communicating the limit with your users.

Of course it would be better if this configuration could be unified with
PeerTube's config somehow. I'm not sure whether the best option there is
to turn off nginx's buffering here and let PeerTube handle the entire upload
(can we do this only for the video upload API endpoint?) or whether we want
PeerTube to generate nginx configs in a more automated way layer. In any case,
this patch is intended as an incremental improvement.
---
 support/nginx/peertube | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

(limited to 'support/nginx')

diff --git a/support/nginx/peertube b/support/nginx/peertube
index e0b006088..914ca3741 100644
--- a/support/nginx/peertube
+++ b/support/nginx/peertube
@@ -96,8 +96,18 @@ server {
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
-    # Hard limit, PeerTube does not support videos > 8GB
+    # This is the maximum upload size, which roughly matches the maximum size of a video file
+    # you can send via the API or the web interface. By default this is 8GB, but administrators
+    # can increase or decrease the limit. Currently there's no way to communicate this limit
+    # to users automatically, so you may want to leave a note in your instance 'about' page if
+    # you change this.
+    #
+    # 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 8G;
+
     proxy_connect_timeout       600;
     proxy_send_timeout          600;
     proxy_read_timeout          600;
-- 
cgit v1.2.3


From 4a57b65cc5a3cea50c30c0e93eee7490845a170d Mon Sep 17 00:00:00 2001
From: Chocobozzz <me@florianbigard.com>
Date: Tue, 29 Jan 2019 09:10:24 +0100
Subject: Support socket.io in nginx template

---
 support/nginx/peertube | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'support/nginx')

diff --git a/support/nginx/peertube b/support/nginx/peertube
index 914ca3741..54ffdcc32 100644
--- a/support/nginx/peertube
+++ b/support/nginx/peertube
@@ -158,4 +158,16 @@ server {
     proxy_set_header Host $host;
     proxy_pass http://localhost:9000;
   }
+
+  location /socket.io {
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header Host $host;
+
+    proxy_pass http://localhost:9000;
+
+    # enable WebSockets
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+  }
 }
-- 
cgit v1.2.3


From 7eeb6a0ba4028d0e20847b846332dd0b7747c7f8 Mon Sep 17 00:00:00 2001
From: Benjamin Bouvier <public@benj.me>
Date: Sun, 10 Feb 2019 21:36:41 +0100
Subject: Nginx config file: remove text/html from gzip_types

As stated by https://nginx.org/en/docs/http/ngx_http_gzip_module.html, text/html is always part of the gzip_types. This removes a warning when checking the Nginx configuration files.
---
 support/nginx/peertube | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'support/nginx')

diff --git a/support/nginx/peertube b/support/nginx/peertube
index 54ffdcc32..fee0f5d1c 100644
--- a/support/nginx/peertube
+++ b/support/nginx/peertube
@@ -41,7 +41,7 @@ server {
   # It might be nice to compress JSON, but leaving that out to protect against potential
   # compression+encryption information leak attacks like BREACH.
   gzip on;
-  gzip_types text/css text/html application/javascript;
+  gzip_types text/css application/javascript;
   gzip_vary on;
 
   # Enable HSTS
-- 
cgit v1.2.3