From 30870c20231b50908f915a6de1a7fdb3816dfe77 Mon Sep 17 00:00:00 2001
From: s3rius <s3rius@users.noreply.github.com>
Date: Mon, 28 Mar 2022 10:08:03 +0000
Subject: [PATCH] Docs update

---
 configuration/index.html | 117 +++++++++++++++++++++-
 deploy/index.html        | 203 +++++++++++++++++++++++++++++++++------
 index.html               |   4 +-
 search/search_index.json |   2 +-
 sitemap.xml              |   8 +-
 sitemap.xml.gz           | Bin 241 -> 240 bytes
 6 files changed, 294 insertions(+), 40 deletions(-)

diff --git a/configuration/index.html b/configuration/index.html
index 6367b56..8837a22 100644
--- a/configuration/index.html
+++ b/configuration/index.html
@@ -64,6 +64,11 @@
     <label class="md-overlay" for="__drawer"></label>
     <div data-md-component="skip">
       
+        
+        <a href="#configuring-data-storage" class="md-skip">
+          Skip to content
+        </a>
+      
     </div>
     <div data-md-component="announce">
       
@@ -247,10 +252,60 @@
       
       
       
+        <label class="md-nav__link md-nav__link--active" for="__toc">
+          Configuration
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
       <a href="./" class="md-nav__link md-nav__link--active">
         Configuration
       </a>
       
+        
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+  
+    <label class="md-nav__title" for="__toc">
+      <span class="md-nav__icon md-icon"></span>
+      Table of contents
+    </label>
+    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-data-storage" class="md-nav__link">
+    Configuring data storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-info-storage" class="md-nav__link">
+    Configuring info storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-hooks-storage" class="md-nav__link">
+    Configuring hooks storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-tus" class="md-nav__link">
+    Configuring TUS
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+      
     </li>
   
 
@@ -292,6 +347,58 @@
               </div>
             
             
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+  
+    <label class="md-nav__title" for="__toc">
+      <span class="md-nav__icon md-icon"></span>
+      Table of contents
+    </label>
+    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-data-storage" class="md-nav__link">
+    Configuring data storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-info-storage" class="md-nav__link">
+    Configuring info storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-hooks-storage" class="md-nav__link">
+    Configuring hooks storage
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
+  <a href="#configuring-tus" class="md-nav__link">
+    Configuring TUS
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
           
           <div class="md-content" data-md-component="content">
             <article class="md-content__inner md-typeset">
@@ -301,7 +408,15 @@
 
   <h1>Configuration</h1>
 
-
+<p>Rustus is highly configurable you can configure rustus with CLI or you can use environment variables.</p>
+<div class="admonition info">
+<p class="admonition-title">Info</p>
+<p>Some options can be passed only through as CLI parameters</p>
+</div>
+<h2 id="configuring-data-storage">Configuring data storage</h2>
+<h2 id="configuring-info-storage">Configuring info storage</h2>
+<h2 id="configuring-hooks-storage">Configuring hooks storage</h2>
+<h2 id="configuring-tus">Configuring TUS</h2>
 
               
             </article>
diff --git a/deploy/index.html b/deploy/index.html
index cb94d01..7117b4b 100644
--- a/deploy/index.html
+++ b/deploy/index.html
@@ -6,6 +6,8 @@
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width,initial-scale=1">
       
+        <meta name="description" content="How to deploy rustus">
+      
       
       
         <link rel="canonical" href="https://s3rius.github.io/rustus/deploy/">
@@ -294,38 +296,51 @@
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
         <li class="md-nav__item">
-  <a href="#f" class="md-nav__link">
-    F
+  <a href="#docker-compose" class="md-nav__link">
+    Docker compose
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#binary" class="md-nav__link">
-    Binary
+  <a href="#kubernetes" class="md-nav__link">
+    Kubernetes
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#docker" class="md-nav__link">
-    Docker
+  <a href="#helm" class="md-nav__link">
+    Helm
+  </a>
+  
+    <nav class="md-nav" aria-label="Helm">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#configuration" class="md-nav__link">
+    Configuration
   </a>
   
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#kubernetes" class="md-nav__link">
-    Kubernetes
+        
+          <li class="md-nav__item">
+  <a href="#persistence" class="md-nav__link">
+    Persistence
   </a>
   
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#helm" class="md-nav__link">
-    Helm
+        
+          <li class="md-nav__item">
+  <a href="#subcharts" class="md-nav__link">
+    Subcharts
   </a>
   
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
     </ul>
@@ -378,38 +393,51 @@
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
         <li class="md-nav__item">
-  <a href="#f" class="md-nav__link">
-    F
+  <a href="#docker-compose" class="md-nav__link">
+    Docker compose
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#binary" class="md-nav__link">
-    Binary
+  <a href="#kubernetes" class="md-nav__link">
+    Kubernetes
   </a>
   
 </li>
       
         <li class="md-nav__item">
-  <a href="#docker" class="md-nav__link">
-    Docker
+  <a href="#helm" class="md-nav__link">
+    Helm
+  </a>
+  
+    <nav class="md-nav" aria-label="Helm">
+      <ul class="md-nav__list">
+        
+          <li class="md-nav__item">
+  <a href="#configuration" class="md-nav__link">
+    Configuration
   </a>
   
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#kubernetes" class="md-nav__link">
-    Kubernetes
+        
+          <li class="md-nav__item">
+  <a href="#persistence" class="md-nav__link">
+    Persistence
   </a>
   
 </li>
-      
-        <li class="md-nav__item">
-  <a href="#helm" class="md-nav__link">
-    Helm
+        
+          <li class="md-nav__item">
+  <a href="#subcharts" class="md-nav__link">
+    Subcharts
   </a>
   
+</li>
+        
+      </ul>
+    </nav>
+  
 </li>
       
     </ul>
@@ -427,12 +455,123 @@
 
 
 <h1 id="deployment">Deployment</h1>
-<p>Deploying application is lways a challenge. Rustus was made to</p>
-<h2 id="f">F</h2>
-<h2 id="binary">Binary</h2>
-<h2 id="docker">Docker</h2>
+<p>Deploying an application is always a challenge. Rustus was made to make deployment as easy as possible.
+Since this application works with files so if you want to scale number of rustus instances you
+have to somehow make different rustus instances to work with the same data or info directory.</p>
+<h2 id="docker-compose">Docker compose</h2>
+<div class="highlight"><span class="filename">docker-compose.yml</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1"># This is super simple configuration</span><span class="w"></span>
+<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;3.7&quot;</span><span class="w"></span>
+<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>
+<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="nt">services</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w">  </span><span class="nt">rustus</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">s3rius/rustus</span><span class="w"></span>
+<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w">    </span><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="w">    </span><span class="c1"># Volume mouted to default data directory</span><span class="w"></span>
+<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="w">    </span><span class="c1"># So it&#39;s available across multiple containers.</span><span class="w"></span>
+<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rustus_data_volume:/app/data</span><span class="w"></span>
+<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a>
+<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a><span class="w">  </span><span class="nt">rustus_data_volume</span><span class="p">:</span><span class="w"></span>
+</code></pre></div>
+<p>After running <code>docker compose up</code> you will see rustus startup logs.</p>
+<p>If you want to deploy multiple rustus instances you can simply
+use config as this one:</p>
+<div class="highlight"><span class="filename">docker-compose.yml</span><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;3.7&quot;</span><span class="w"></span>
+<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
+<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="nt">services</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w">  </span><span class="nt">proxy</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">jwilder/nginx-proxy:alpine</span><span class="w"></span>
+<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w">    </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">proxy</span><span class="w"></span>
+<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w">    </span><span class="c1"># Actual proxy ports.</span><span class="w"></span>
+<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w">    </span><span class="nt">ports</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">8080:80</span><span class="w"></span>
+<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w">    </span><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w">    </span><span class="c1"># This thing helps to locate containers</span><span class="w"></span>
+<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w">    </span><span class="c1"># within this composition to generate nginx config.</span><span class="w"></span>
+<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/var/run/docker.sock:/tmp/docker.sock:ro</span><span class="w"></span>
+<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a>
+<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w">  </span><span class="nt">rustus</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">s3rius/rustus</span><span class="w"></span>
+<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w">    </span><span class="nt">ports</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w">    </span><span class="c1"># Ports definition</span><span class="w"></span>
+<a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w">    </span><span class="c1"># To generate correct nginx config.</span><span class="w"></span>
+<a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1081</span><span class="w"></span>
+<a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w">    </span><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="w">    </span><span class="c1"># Volume mouted to default data directory</span><span class="w"></span>
+<a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w">    </span><span class="c1"># So it&#39;s available across multiple containers.</span><span class="w"></span>
+<a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rustus_data_volume:/app/data</span><span class="w"></span>
+<a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="w">    </span><span class="nt">environment</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="w">        </span><span class="c1"># Idk why but without this variable</span><span class="w"></span>
+<a id="__codelineno-1-27" name="__codelineno-1-27" href="#__codelineno-1-27"></a><span class="w">        </span><span class="c1"># load balancing with jwilder/nginx-proxy doesn&#39;t work.</span><span class="w"></span>
+<a id="__codelineno-1-28" name="__codelineno-1-28" href="#__codelineno-1-28"></a><span class="w">        </span><span class="nt">VIRTUAL_HOST</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">localhost</span><span class="w"></span>
+<a id="__codelineno-1-29" name="__codelineno-1-29" href="#__codelineno-1-29"></a>
+<a id="__codelineno-1-30" name="__codelineno-1-30" href="#__codelineno-1-30"></a><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-1-31" name="__codelineno-1-31" href="#__codelineno-1-31"></a><span class="w">  </span><span class="nt">rustus_data_volume</span><span class="p">:</span><span class="w"> </span><span class="c1"># This is named volume</span><span class="w"></span>
+</code></pre></div>
+<p>The main idea is that traffic that comes into nginx-proxy
+is routed in one of multiple rustus containers.
+Here I used <code>jwilder/nginx-proxy</code> but you can use other
+reverse-proxies such as raw <code>nginx proxy</code> or <code>traefik</code>.</p>
+<p>Now you can run multiple rustus instnaces like this.</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>docker compose up --scale <span class="nv">rustus</span><span class="o">=</span><span class="m">3</span>
+</code></pre></div>
+<p>After that you can upload files to <code>http://localhost:8080/files</code></p>
 <h2 id="kubernetes">Kubernetes</h2>
+<p>Configuration for kubernetes is almost the same as docker.
+But the most preferable way is an official helm chart.</p>
+<p>Load balancing is done by kubernetes so you just have to
+create volume to mount data and info directories.</p>
 <h2 id="helm">Helm</h2>
+<p>You can install rustus by running this set of commands:
+<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>helm repo add <span class="s2">&quot;rustus&quot;</span> <span class="s2">&quot;https://s3rius.github.io/rustus/helm_releases&quot;</span>
+<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>helm repo update
+<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>helm repo install <span class="s2">&quot;rustus/rustus&quot;</span>
+</code></pre></div></p>
+<h3 id="configuration">Configuration</h3>
+<p>But of course it can be configured.</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1"># You can download basic configuration by running</span>
+<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>helm show values <span class="s2">&quot;rustus/rustus&quot;</span> &gt; values.yml
+</code></pre></div>
+<p>By editing values.yml you can configure many different options.</p>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>For production use you must provide and mount PersistentVolumeClaim
+in order to scale rustus.</p>
+<p>This helm chart has only one replica by default.</p>
+</div>
+<h3 id="persistence">Persistence</h3>
+<p>You can add pvc mount by editing <code>persistence</code> section.
+The most preferable way is to create <code>PersistentVolume</code> and <code>PersistentVolumeClaim</code>
+before installing this chart.</p>
+<p>After you created claim you can apply this values file to mount your claim into rustus.
+<div class="highlight"><span class="filename">values.yml</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="nt">persistence</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w">  </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
+<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w">  </span><span class="nt">existingClaim</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;rustus-pvc&quot;</span><span class="w"></span>
+</code></pre></div></p>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Currently there's no ability to create multiple mounts
+and if you use file info storage you must specify the same direcotry
+as you specified for data storage.</p>
+<p>But it would be better to use other type of info-storage.</p>
+</div>
+<h3 id="subcharts">Subcharts</h3>
+<p>For example if you want to use redis as your info storage.</p>
+<div class="highlight"><span class="filename">values.yml</span><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nt">env</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w">  </span><span class="nt">RUSTUS_INFO_STORAGE</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">redis-info-storage</span><span class="w"></span>
+<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w">  </span><span class="nt">RUSTUS_INFO_DB_DSN</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">redis://:pass@rustus-redis-master/0</span><span class="w"></span>
+<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>
+<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="nt">redis</span><span class="p">:</span><span class="w"></span>
+<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w">  </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
+</code></pre></div>
+<p><code>redis</code>, <code>postgersql</code> and <code>mysql</code> are subcharts.</p>
+<p>You can find information about configuration these subcharts here:</p>
+<ul>
+<li><a href="https://github.com/bitnami/charts/tree/master/bitnami/redis">Repo</a> for redis;</li>
+<li><a href="https://github.com/bitnami/charts/tree/master/bitnami/mysql">Repo</a> for mysql;</li>
+<li><a href="https://github.com/bitnami/charts/tree/master/bitnami/postgresql">Repo</a> for postgresql.</li>
+</ul>
+<p>In production you may ignore these subcharts to deploy your own redis or mysql or postgresql.</p>
 
               
             </article>
diff --git a/index.html b/index.html
index c45a17d..fb1df39 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width,initial-scale=1">
       
-        <meta name="description" content="memes">
+        <meta name="description" content="Rustus docs">
       
       
       
@@ -446,7 +446,7 @@
     </div>
 </div>
 
-<p>Rustus is a tus protocol implementation that helps you handle file uploads.</p>
+<p>Rustus is a <a href="https://tus.io">TUS</a> protocol implementation that helps you handle file uploads.</p>
 <p>This project has many features that makes it easy to integrate in your service.</p>
 <h2 id="installation">Installation</h2>
 <p>You can install rustus by 4 different ways.</p>
diff --git a/search/search_index.json b/search/search_index.json
index cb5ee58..b43ffcb 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Rustus is a tus protocol implementation that helps you handle file uploads. This project has many features that makes it easy to integrate in your service. Installation You can install rustus by 4 different ways. From source To build it from source rust must be installed. Preferred version is 1.59.0. git clone https://github.com/s3rius/rustus.git cd rustus cargo install --path . --features = all Also you can speedup build by disabling some features. Available features: amqp_notifier - adds amqp protocol support for notifying about upload status; db_info_storage - adds support for storing information about upload in different databases (Postgres, MySQL, SQLite); http_notifier - adds support for notifying about upload status via http protocol; redis_info_storage - adds support for storing information about upload in redis database; hashers - adds support for checksum verification; all - enables all rustus features. All precompiled binaries have all features enabled. With cargo If you have cargo installed maybe it would be easier to install it directly from crates.io. cargo install rustus --features = all Binaries All precompiled binaries available on github releases page. You can download binaries from here , unpack it and run. ./rustus Make sure that you download version for your cpu and os. Using docker One of the most simple ways to run rustus is docker. Rustus has two containers for each version. 1. debian based image 2. alpine based image Alpine based images are more lightweight than debian To run rustus you just need to run this command docker run --rm -p \"1081:1081\" -d s3rius/rustus --log-level \"DEBUG\"","title":"Welcome page"},{"location":"#installation","text":"You can install rustus by 4 different ways.","title":"Installation"},{"location":"#from-source","text":"To build it from source rust must be installed. Preferred version is 1.59.0. git clone https://github.com/s3rius/rustus.git cd rustus cargo install --path . --features = all Also you can speedup build by disabling some features. Available features: amqp_notifier - adds amqp protocol support for notifying about upload status; db_info_storage - adds support for storing information about upload in different databases (Postgres, MySQL, SQLite); http_notifier - adds support for notifying about upload status via http protocol; redis_info_storage - adds support for storing information about upload in redis database; hashers - adds support for checksum verification; all - enables all rustus features. All precompiled binaries have all features enabled.","title":"From source"},{"location":"#with-cargo","text":"If you have cargo installed maybe it would be easier to install it directly from crates.io. cargo install rustus --features = all","title":"With cargo"},{"location":"#binaries","text":"All precompiled binaries available on github releases page. You can download binaries from here , unpack it and run. ./rustus Make sure that you download version for your cpu and os.","title":"Binaries"},{"location":"#using-docker","text":"One of the most simple ways to run rustus is docker. Rustus has two containers for each version. 1. debian based image 2. alpine based image Alpine based images are more lightweight than debian To run rustus you just need to run this command docker run --rm -p \"1081:1081\" -d s3rius/rustus --log-level \"DEBUG\"","title":"Using docker"},{"location":"configuration/","text":"","title":"Configuration"},{"location":"deploy/","text":"Deployment Deploying application is lways a challenge. Rustus was made to F Binary Docker Kubernetes Helm","title":"Deployment"},{"location":"deploy/#deployment","text":"Deploying application is lways a challenge. Rustus was made to","title":"Deployment"},{"location":"deploy/#f","text":"","title":"F"},{"location":"deploy/#binary","text":"","title":"Binary"},{"location":"deploy/#docker","text":"","title":"Docker"},{"location":"deploy/#kubernetes","text":"","title":"Kubernetes"},{"location":"deploy/#helm","text":"","title":"Helm"},{"location":"hooks/","text":"","title":"Hooks"}]}
\ No newline at end of file
+{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Rustus is a TUS protocol implementation that helps you handle file uploads. This project has many features that makes it easy to integrate in your service. Installation You can install rustus by 4 different ways. From source To build it from source rust must be installed. Preferred version is 1.59.0. git clone https://github.com/s3rius/rustus.git cd rustus cargo install --path . --features = all Also you can speedup build by disabling some features. Available features: amqp_notifier - adds amqp protocol support for notifying about upload status; db_info_storage - adds support for storing information about upload in different databases (Postgres, MySQL, SQLite); http_notifier - adds support for notifying about upload status via http protocol; redis_info_storage - adds support for storing information about upload in redis database; hashers - adds support for checksum verification; all - enables all rustus features. All precompiled binaries have all features enabled. With cargo If you have cargo installed maybe it would be easier to install it directly from crates.io. cargo install rustus --features = all Binaries All precompiled binaries available on github releases page. You can download binaries from here , unpack it and run. ./rustus Make sure that you download version for your cpu and os. Using docker One of the most simple ways to run rustus is docker. Rustus has two containers for each version. 1. debian based image 2. alpine based image Alpine based images are more lightweight than debian To run rustus you just need to run this command docker run --rm -p \"1081:1081\" -d s3rius/rustus --log-level \"DEBUG\"","title":"Welcome page"},{"location":"#installation","text":"You can install rustus by 4 different ways.","title":"Installation"},{"location":"#from-source","text":"To build it from source rust must be installed. Preferred version is 1.59.0. git clone https://github.com/s3rius/rustus.git cd rustus cargo install --path . --features = all Also you can speedup build by disabling some features. Available features: amqp_notifier - adds amqp protocol support for notifying about upload status; db_info_storage - adds support for storing information about upload in different databases (Postgres, MySQL, SQLite); http_notifier - adds support for notifying about upload status via http protocol; redis_info_storage - adds support for storing information about upload in redis database; hashers - adds support for checksum verification; all - enables all rustus features. All precompiled binaries have all features enabled.","title":"From source"},{"location":"#with-cargo","text":"If you have cargo installed maybe it would be easier to install it directly from crates.io. cargo install rustus --features = all","title":"With cargo"},{"location":"#binaries","text":"All precompiled binaries available on github releases page. You can download binaries from here , unpack it and run. ./rustus Make sure that you download version for your cpu and os.","title":"Binaries"},{"location":"#using-docker","text":"One of the most simple ways to run rustus is docker. Rustus has two containers for each version. 1. debian based image 2. alpine based image Alpine based images are more lightweight than debian To run rustus you just need to run this command docker run --rm -p \"1081:1081\" -d s3rius/rustus --log-level \"DEBUG\"","title":"Using docker"},{"location":"configuration/","text":"Rustus is highly configurable you can configure rustus with CLI or you can use environment variables. Info Some options can be passed only through as CLI parameters Configuring data storage Configuring info storage Configuring hooks storage Configuring TUS","title":"Configuration"},{"location":"configuration/#configuring-data-storage","text":"","title":"Configuring data storage"},{"location":"configuration/#configuring-info-storage","text":"","title":"Configuring info storage"},{"location":"configuration/#configuring-hooks-storage","text":"","title":"Configuring hooks storage"},{"location":"configuration/#configuring-tus","text":"","title":"Configuring TUS"},{"location":"deploy/","text":"Deployment Deploying an application is always a challenge. Rustus was made to make deployment as easy as possible. Since this application works with files so if you want to scale number of rustus instances you have to somehow make different rustus instances to work with the same data or info directory. Docker compose docker-compose.yml # This is super simple configuration version : \"3.7\" services : rustus : image : s3rius/rustus volumes : # Volume mouted to default data directory # So it's available across multiple containers. - rustus_data_volume:/app/data volumes : rustus_data_volume : After running docker compose up you will see rustus startup logs. If you want to deploy multiple rustus instances you can simply use config as this one: docker-compose.yml version : \"3.7\" services : proxy : image : jwilder/nginx-proxy:alpine container_name : proxy # Actual proxy ports. ports : - 8080:80 volumes : # This thing helps to locate containers # within this composition to generate nginx config. - /var/run/docker.sock:/tmp/docker.sock:ro rustus : image : s3rius/rustus ports : # Ports definition # To generate correct nginx config. - 1081 volumes : # Volume mouted to default data directory # So it's available across multiple containers. - rustus_data_volume:/app/data environment : # Idk why but without this variable # load balancing with jwilder/nginx-proxy doesn't work. VIRTUAL_HOST : localhost volumes : rustus_data_volume : # This is named volume The main idea is that traffic that comes into nginx-proxy is routed in one of multiple rustus containers. Here I used jwilder/nginx-proxy but you can use other reverse-proxies such as raw nginx proxy or traefik . Now you can run multiple rustus instnaces like this. docker compose up --scale rustus = 3 After that you can upload files to http://localhost:8080/files Kubernetes Configuration for kubernetes is almost the same as docker. But the most preferable way is an official helm chart. Load balancing is done by kubernetes so you just have to create volume to mount data and info directories. Helm You can install rustus by running this set of commands: helm repo add \"rustus\" \"https://s3rius.github.io/rustus/helm_releases\" helm repo update helm repo install \"rustus/rustus\" Configuration But of course it can be configured. # You can download basic configuration by running helm show values \"rustus/rustus\" > values.yml By editing values.yml you can configure many different options. Warning For production use you must provide and mount PersistentVolumeClaim in order to scale rustus. This helm chart has only one replica by default. Persistence You can add pvc mount by editing persistence section. The most preferable way is to create PersistentVolume and PersistentVolumeClaim before installing this chart. After you created claim you can apply this values file to mount your claim into rustus. values.yml persistence : enabled : true existingClaim : \"rustus-pvc\" Warning Currently there's no ability to create multiple mounts and if you use file info storage you must specify the same direcotry as you specified for data storage. But it would be better to use other type of info-storage. Subcharts For example if you want to use redis as your info storage. values.yml env : RUSTUS_INFO_STORAGE : redis-info-storage RUSTUS_INFO_DB_DSN : redis://:pass@rustus-redis-master/0 redis : enabled : true redis , postgersql and mysql are subcharts. You can find information about configuration these subcharts here: Repo for redis; Repo for mysql; Repo for postgresql. In production you may ignore these subcharts to deploy your own redis or mysql or postgresql.","title":"Deployment"},{"location":"deploy/#deployment","text":"Deploying an application is always a challenge. Rustus was made to make deployment as easy as possible. Since this application works with files so if you want to scale number of rustus instances you have to somehow make different rustus instances to work with the same data or info directory.","title":"Deployment"},{"location":"deploy/#docker-compose","text":"docker-compose.yml # This is super simple configuration version : \"3.7\" services : rustus : image : s3rius/rustus volumes : # Volume mouted to default data directory # So it's available across multiple containers. - rustus_data_volume:/app/data volumes : rustus_data_volume : After running docker compose up you will see rustus startup logs. If you want to deploy multiple rustus instances you can simply use config as this one: docker-compose.yml version : \"3.7\" services : proxy : image : jwilder/nginx-proxy:alpine container_name : proxy # Actual proxy ports. ports : - 8080:80 volumes : # This thing helps to locate containers # within this composition to generate nginx config. - /var/run/docker.sock:/tmp/docker.sock:ro rustus : image : s3rius/rustus ports : # Ports definition # To generate correct nginx config. - 1081 volumes : # Volume mouted to default data directory # So it's available across multiple containers. - rustus_data_volume:/app/data environment : # Idk why but without this variable # load balancing with jwilder/nginx-proxy doesn't work. VIRTUAL_HOST : localhost volumes : rustus_data_volume : # This is named volume The main idea is that traffic that comes into nginx-proxy is routed in one of multiple rustus containers. Here I used jwilder/nginx-proxy but you can use other reverse-proxies such as raw nginx proxy or traefik . Now you can run multiple rustus instnaces like this. docker compose up --scale rustus = 3 After that you can upload files to http://localhost:8080/files","title":"Docker compose"},{"location":"deploy/#kubernetes","text":"Configuration for kubernetes is almost the same as docker. But the most preferable way is an official helm chart. Load balancing is done by kubernetes so you just have to create volume to mount data and info directories.","title":"Kubernetes"},{"location":"deploy/#helm","text":"You can install rustus by running this set of commands: helm repo add \"rustus\" \"https://s3rius.github.io/rustus/helm_releases\" helm repo update helm repo install \"rustus/rustus\"","title":"Helm"},{"location":"deploy/#configuration","text":"But of course it can be configured. # You can download basic configuration by running helm show values \"rustus/rustus\" > values.yml By editing values.yml you can configure many different options. Warning For production use you must provide and mount PersistentVolumeClaim in order to scale rustus. This helm chart has only one replica by default.","title":"Configuration"},{"location":"deploy/#persistence","text":"You can add pvc mount by editing persistence section. The most preferable way is to create PersistentVolume and PersistentVolumeClaim before installing this chart. After you created claim you can apply this values file to mount your claim into rustus. values.yml persistence : enabled : true existingClaim : \"rustus-pvc\" Warning Currently there's no ability to create multiple mounts and if you use file info storage you must specify the same direcotry as you specified for data storage. But it would be better to use other type of info-storage.","title":"Persistence"},{"location":"deploy/#subcharts","text":"For example if you want to use redis as your info storage. values.yml env : RUSTUS_INFO_STORAGE : redis-info-storage RUSTUS_INFO_DB_DSN : redis://:pass@rustus-redis-master/0 redis : enabled : true redis , postgersql and mysql are subcharts. You can find information about configuration these subcharts here: Repo for redis; Repo for mysql; Repo for postgresql. In production you may ignore these subcharts to deploy your own redis or mysql or postgresql.","title":"Subcharts"},{"location":"hooks/","text":"","title":"Hooks"}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 14f5db5..336f48e 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,22 +2,22 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
          <loc>https://s3rius.github.io/rustus/</loc>
-         <lastmod>2022-03-27</lastmod>
+         <lastmod>2022-03-28</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://s3rius.github.io/rustus/configuration/</loc>
-         <lastmod>2022-03-27</lastmod>
+         <lastmod>2022-03-28</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://s3rius.github.io/rustus/deploy/</loc>
-         <lastmod>2022-03-27</lastmod>
+         <lastmod>2022-03-28</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://s3rius.github.io/rustus/hooks/</loc>
-         <lastmod>2022-03-27</lastmod>
+         <lastmod>2022-03-28</lastmod>
          <changefreq>daily</changefreq>
     </url>
 </urlset>
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index 90a1b3d71e89742cbf329f329808fa2ab9671bba..c094516dbc671749ab268eab616bc362392d2323 100644
GIT binary patch
literal 240
zcmV<M01y8kiwFn-i9uol|8r?{Wo=<_E_iKh0L_v?Zo?oDMfW*{#omnLY|;voT~E*+
zfMNoum~k1Xo7)#BQRQ_PRc15H*XQdAMx4H<(0rLh9^=6Fykm`t8b=@Pz}{Y8+9Ny3
zohT`g$xSs!8koy@eg;^Ug_F-_QZsQ(7D&4~5Zp!R_!E=6rq&v8J6%fz)N)Os8bgQV
z3vuhSEAQMRq(Zq62v}X)ON#P@qwKrBZ@WX=AFJiAZEV`9Xw5m9PdO?dE&?{njRt;k
q{sN{kp1mze<@#uki#eJ(;N@}o9OB16{PMNc<&{5O@65gI0ssK~*mHvb

literal 241
zcmV<N01p2jiwFoj%|K!T|8r?{Wo=<_E_iKh0L_w3Zo?oDh4(py#omnLEczo%c0ECR
z0E!8qV#Z~lZf;+kM3vWFRGG~%PmiZhFyi<<h33m7@)!rU=N)TI)HwQR2ln>*(mt}I
z+=-F`ncP%!q=C7d=VyRrSvdJ@CN&esWP!A+1Hny%jz2NEYig|l*VCm$KrPo4sxfp(
zz7V%QyYkLGLMoICfq>Puy`(5lILf~3`?fo@{X@0fw2e(W6|FfX^C?H=!&$&axzfNd
r&R@VZ#*?=tsazlJelbTg2Rz>|pF{lkhhM(5y1eoSd&9{C>;eD)Wvq4u

-- 
GitLab