Files
documentation/opensource/installation-advanced/index.html
2021-07-12 08:10:23 +00:00

118 lines
26 KiB
HTML

<!doctype html><html lang=en-us><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=stylesheet href=https://doc.kerberos.io/main.5aa8061fdddcae33bf9aae606a659f783fca649c2a6c915897a14d1088493ae547064045e7ca5a43d69061955d449757d1bcb708760ae71f478384770974e798.css integrity="sha512-WqgGH93crjO/mq5gamWfeD/KZJwqbJFYl6FNEIhJOuVHBkBF58paQ9aQYZVdRJdX0by3CHYK5x9Hg4R3CXTnmA==" crossorigin=anonymous><noscript><style>img.lazyload{display:none}</style></noscript><meta name=robots content="index, follow"><meta name=googlebot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><meta name=bingbot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><title>Advanced Installation - Kerberos Docs</title><meta name=description content="More flexibility and control over your Kerberos Open Source agents."><link rel=canonical href=https://doc.kerberos.io/opensource/installation-advanced/><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="/doks.png"><meta name=twitter:title content="Advanced Installation"><meta name=twitter:description content="More flexibility and control over your Kerberos Open Source agents."><meta name=twitter:site content="@kerberosio"><meta name=twitter:creator content="@kerberosio"><meta property="og:title" content="Advanced Installation"><meta property="og:description" content="More flexibility and control over your Kerberos Open Source agents."><meta property="og:type" content="article"><meta property="og:url" content="/opensource/installation-advanced/"><meta property="og:image" content="/doks.png"><meta property="article:published_time" content="2020-10-06T08:49:31+00:00"><meta property="article:modified_time" content="2020-10-06T08:49:31+00:00"><meta property="og:site_name" content="Kerberos Docs"><meta property="article:publisher" content="https://www.facebook.com/"><meta property="article:author" content="https://www.facebook.com/"><meta property="og:locale" content="en_US"><script type=application/ld+json>{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/doc.kerberos.io\/"},{"@type":"ListItem","position":3,"name":"Opensource","item":"https:\/\/doc.kerberos.io\/\/opensource\/"},{"@type":"ListItem","position":4,"name":"Installation Advanced","item":"https:\/\/doc.kerberos.io\/\/opensource\/installation-advanced\/"}]}</script><meta name=theme-color content="#fff"><link rel=apple-touch-icon sizes=180x180 href=https://doc.kerberos.io/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=https://doc.kerberos.io/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=https://doc.kerberos.io/favicons/favicon-16x16.png><link rel=manifest href=https://doc.kerberos.io/site.webmanifest><script async defer data-domain=doc.kerberos.io src=https://plausible.kerberos.io/js/plausible.js></script></head><body class="opensource single"><div class="header-bar fixed-top"></div><header class="navbar fixed-top navbar-expand-md navbar-light"><div class=container><input class="menu-btn order-0" type=checkbox id=menu-btn>
<label class="menu-icon d-md-none" for=menu-btn><span class=navicon></span></label><a class="navbar-brand order-1 order-md-0 me-auto" href=https://doc.kerberos.io/><img src=https://doc.kerberos.io/images/kerberos-logo.svg class=logo>
Kerberos Docs</a>
<button id=mode class="btn btn-link order-2 order-md-4" type=button aria-label="Toggle mode">
<span class=toggle-dark><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg></span><span class=toggle-light><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></span></button><div class="collapse navbar-collapse order-4 order-md-1"><ul class="navbar-nav main-nav me-auto order-5 order-md-2"><li class=nav-item><a class=nav-link href=https://kerberos.io>Homepage</a></li></ul><div class="break order-6 d-md-none"></div><form class="navbar-form flex-grow-1 order-7 order-md-3"><input id=userinput class="form-control is-search" type=search placeholder="Search docs..." aria-label="Search docs..." autocomplete=off><div id=suggestions class="shadow bg-white rounded"></div></form></div></div></header><div class="wrap container" role=document><div class=content><div class="row flex-xl-nowrap"><div class="col-lg-5 col-xl-4 docs-sidebar"><nav class=docs-links aria-label="Main navigation"><h3>Prologue</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/>Introduction</a></li><li><a class=docs-link href=https://doc.kerberos.io/prologue/how/>How it works</a></li><li><a class=docs-link href=https://doc.kerberos.io/prologue/deployments/>Deployments</a></li><li><a class=docs-link href=https://doc.kerberos.io/prologue/glossary/>Glossary</a></li></ul><h3>Opensource v2</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/opensource/first-things-first/>First things first</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/get-started/>Get started</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/installation/>Installation</a></li><li><a class="docs-link active" href=https://doc.kerberos.io/opensource/installation-advanced/>Advanced Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/releases/>Release notes</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/license/>License</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/upgrade/>Upgrade</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/contribute/>Contribute</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/machinery/>Machinery</a></li><li><a class=docs-link href=https://doc.kerberos.io/opensource/web/>Web</a></li></ul><h3>Opensource v3</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/opensourcev3/announcement/>Announcement</a></li></ul><h3>Enterprise</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/enterprise/first-things-first/>First things first</a></li><li><a class=docs-link href=https://doc.kerberos.io/enterprise/get-started/>Get Started</a></li><li><a class=docs-link href=https://doc.kerberos.io/enterprise/installation/>Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/enterprise/installation-cloud/>Cloud Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/enterprise/installation-edge/>Edge Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/enterprise/releases/>Releases</a></li></ul><h3>Vault</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/vault/first-things-first/>First things first</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/get-started/>Get Started</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/installation/>Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/installation-cloud/>Cloud Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/installation-edge/>Edge Installation</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/providers/>Providers</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/recycle/>Recycle</a></li><li><a class=docs-link href=https://doc.kerberos.io/vault/releases/releases/>Releases</a></li></ul><h3>Hub</h3><ul class=list-unstyled><li><a class=docs-link href=https://doc.kerberos.io/hub/first-things-first/>First things first</a></li></ul></nav></div><nav class="docs-toc d-none d-xl-block col-xl-4" aria-label="Secondary navigation"><div class=page-links><h3>On this page</h3><nav id=TableOfContents><ul><li><a href=#raspbian>Raspbian</a><ul><li><a href=#update-os>Update OS</a></li><li><a href=#machinery>Machinery</a></li><li><a href=#web>Web</a></li><li><a href=#auto-removal>Auto removal</a></li></ul></li><li><a href=#generic>Generic</a><ul><li><a href=#machinery-1>Machinery</a></li><li><a href=#web-1>Web</a></li><li><a href=#auto-removal-1>Auto removal</a></li></ul></li></ul></nav></div></nav><main class="docs-content col-lg-11 col-xl-8"><h1>Advanced Installation</h1><p class=lead>More flexibility and control over your Kerberos Open Source agents.</p><p>Following installation methods are only for advanced users, who need to have more control over the Kerberos Open Source environment.</p><h2 id=raspbian>Raspbian<a href=#raspbian class=anchor aria-hidden=true>#</a></h2><p>If you have already an OS (e.g. Raspbian Buster) flashed to your Raspberry Pi, then it makes sense to install the Kerberos agent on top of your existing OS. There are two ways to achieve this:</p><ol><li>Install the Kerberos agent using Docker (more info below),</li><li>or you can install the Kerberos agent manually (machinery + web).</li></ol><p>This section will focus on option 2, and will show you how to install the Kerberos agent manually.</p><h3 id=update-os>Update OS<a href=#update-os class=anchor aria-hidden=true>#</a></h3><p>Let&rsquo;s start with updating the OS, and installing a couple of packages.</p><blockquote><p>We have tested the Raspbian installation on <code>Raspbian GNU/Linux 10 (buster)</code>. It might be that if you have a different version of Raspbian, you will need to install additional/different packages.</p></blockquote><pre><code class=language-ts>sudo apt-get update &amp;&amp; sudo apt-get install -y ffmpeg
</code></pre><h3 id=machinery>Machinery<a href=#machinery class=anchor aria-hidden=true>#</a></h3><p>Download the debian file from the machinery repository.</p><blockquote><p>https://github.com/kerberos-io/machinery/releases</p></blockquote><p>A <code>.deb</code> file is available for every version of the Raspberry Pi. For example if you are using a Raspberry Pi 4 for version 2.8.0, execute following command. You can change the version and Raspberry Pi board to your needs.</p><blockquote><p>Please make sure you pick the right board (rpi, rpi2, rpi3 or rpi4), and choose the version you want (e.g. 2.8.0). Replace below url, with your preferences.</p></blockquote><pre><code class=language-ts>wget https://github.com/kerberos-io/machinery/releases/download/v2.8.0/rpi4-machinery-kerberosio-armhf-2.8.0.deb
sudo dpkg -i rpi4-machinery-kerberosio-armhf-2.8.0.deb
</code></pre><p>Download the x265 library (version 160) from the machinery repository, as Raspbian Buster 10 only ships with version 165. Make sure you select the right board.</p><blockquote><p><code>v2.8.0/rpi4-libx265.so.160</code> this will download the libx265 shared library for the Raspberry Pi 4.</p></blockquote><pre><code class=language-ts>wget https://github.com/kerberos-io/machinery/releases/download/v2.8.0/rpi4-libx265.so.160
sudo mv rpi4-libx265.so.160 /usr/lib/arm-linux-gnueabihf/libx265.so.160
</code></pre><p>Same applies for the libx264 library, download the right shared library.</p><blockquote><p><code>v2.8.0/rpi4-libx264.so.148</code> this will download the libx264 shared library for the Raspberry Pi 4.</p></blockquote><pre><code class=language-ts>wget https://github.com/kerberos-io/machinery/releases/download/v2.8.0/rpi4-libx264.so.148
sudo mv rpi4-libx264.so.148 /usr/lib/arm-linux-gnueabihf/libx264.so.148
</code></pre><p>If you wish to use the Raspberry Pi Camera Module, make sure <a href=https://www.raspberrypi.org/documentation/configuration/camera.md>to enable it</a> using <code>sudo raspi-config</code>.</p><pre><code class=language-ts>sudo raspi-config
</code></pre><p>Enable machinery to start on boot, and start the service.</p><pre><code>sudo systemctl enable kerberosio
sudo service kerberosio start
</code></pre><h3 id=web>Web<a href=#web class=anchor aria-hidden=true>#</a></h3><p>Before you can run the web interface, you&rsquo;ll need to download and configure a webserver. We recommend to use Nginx, as it is a light-weight and fast webserver. The web interface is written in PHP, so we also need to download PHP and some packages. Update the packages and kernel.</p><p>Install Nginx and PHP (+extensions).</p><pre><code class=language-ts>sudo apt-get install -y nginx php7.1 php7.1-curl php7.1-gd php7.1-fpm php7.1-cli php7.1-opcache php7.1-mbstring php7.1-xml php7.1-zip php7.1-mcrypt php7.1-readline
</code></pre><p>Creating a Nginx config.</p><pre><code class=language-ts>sudo rm -f /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-enabled/kerberosio.conf
</code></pre><p>Copy and paste following config file; this file tells nginx where the web will be installed and that it requires PHP.</p><pre><code class=language-ts>server
{
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/web/public;
server_name kerberos.rpi;
index index.php index.html index.htm;
location /
{
autoindex on;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$
{
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
</code></pre><p>Restart nginx</p><pre><code class=language-ts>sudo service nginx restart
</code></pre><p>Now we have installed all the dependencies, we can download the web interface source code.</p><pre><code class=language-ts>sudo mkdir -p /var/www/web &amp;&amp; sudo chown www-data:www-data /var/www/web
cd /var/www/web
sudo -u www-data wget https://github.com/kerberos-io/web/releases/download/v2.8.0/web.tar.gz
sudo -u www-data tar xvf web.tar.gz .
sudo chown www-data -R storage bootstrap/cache config/kerberos.php
sudo chmod -R 775 storage bootstrap/cache
sudo chmod 0600 config/kerberos.php
</code></pre><p>Once everything is setup correctly, you should be able to browse towards the ip-address of your Raspberry Pi and see the Kerberos web interface.</p><h3 id=auto-removal>Auto removal<a href=#auto-removal class=anchor aria-hidden=true>#</a></h3><p>By default images or videos aren&rsquo;t removed automatically. This means that the Kerberos agent will keep writing to disk, even if there is no more space available on your SD card. When your SD card is full you&rsquo;ll be experiencing strange errors: a corrupt web interface, blank images or corrupt videos.</p><p>To resolve this your should install a simple bash script and initiate a cronjob which continuously poll your filesystem, and start removing media when your disk is getting full.</p><p>Create a bash script and copy following script.</p><pre><code class=language-bash>nano /home/pi/autoremoval.sh
</code></pre><p>Copy following script (make sure the partition is correct, this is the default one for a Raspberry Pi).</p><pre><code class=language-bash>partition=/dev/root
imagedir=/etc/opt/kerberosio/capture/
if [[ $(df -h | grep $partition | head -1 | awk -F' ' '{ print $5/1 }' | tr ['%'] [&quot;0&quot;]) -gt 90 ]];
then
echo &quot;Cleaning disk&quot;
find $imagedir -type f | sort | head -n 100 | xargs -r rm -rf;
fi;
</code></pre><p>Make the script executable.</p><pre><code class=language-bash>chmod +x /home/pi/autoremoval.sh
</code></pre><p>Initiate a cronjob, and select the nano editor.</p><pre><code class=language-bash>crontab -e
</code></pre><p>Append following line, to execute the autoremoval.sh script every 5min.</p><pre><code class=language-bash>*/5 * * * * /bin/bash /home/pi/autoremoval.sh
</code></pre><h2 id=generic>Generic<a href=#generic class=anchor aria-hidden=true>#</a></h2><p>If you want to install the Kerberos agent from source on your working station or server, either for development or running the software, this is the preferred installation procedure. We are assuming that you use a Linux OS, when using Mac OSX the installation is slightly different.</p><blockquote><p>This was tested on a Ubuntu VM (18.04.3 (LTS) x64).</p></blockquote><h3 id=machinery-1>Machinery<a href=#machinery-1 class=anchor aria-hidden=true>#</a></h3><p>Update the packages and kernel, and install some development tools.</p><pre><code class=language-ts>sudo apt-get -y update
sudo apt-get install -y git cmake subversion dh-autoreconf libcurl4-openssl-dev yasm libx264-dev pkg-config libssl-dev
</code></pre><p>Install the FFmpeg library with x264 support.</p><blockquote><p>It&rsquo;s recommended to install FFmpeg 3.1. Later versions might give issues at compilation or run time.</p></blockquote><pre><code class=language-ts>git clone https://github.com/FFmpeg/FFmpeg ffmpeg
cd ffmpeg &amp;&amp; git checkout remotes/origin/release/3.1
./configure --enable-gpl --enable-libx264 --enable-shared --prefix=/usr
make &amp;&amp; sudo make install
</code></pre><p>Go to your home directory, or any place your prefer and pull the machinery from Github. Afterwards create a build directory and start the compilation.</p><blockquote><p>You can change the <code>-j</code> attribute of <code>make -j8</code>to the number of cores of your compilation host.</p></blockquote><pre><code class=language-ts>cd &amp;&amp; git clone https://github.com/kerberos-io/machinery
cd machinery &amp;&amp; mkdir build &amp;&amp; cd build
cmake .. &amp;&amp; make -j8 &amp;&amp; make check &amp;&amp; sudo make install
</code></pre><p>After the machinery is build and installed succesfully, you can enable <code>kerberosio</code> to start on boot.</p><pre><code class=language-ts>sudo systemctl enable kerberosio
sudo systemctl start kerberosio
</code></pre><h3 id=web-1>Web<a href=#web-1 class=anchor aria-hidden=true>#</a></h3><p>If you want to install the web, you&rsquo;ll need to have a webserver (e.g. Nginx) and PHP running with some extensions. You&rsquo;ll also need NodeJS and npm installed, to install Bower.</p><pre><code class=language-ts>cd ~
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-add-repository -y ppa:ondrej/php
sudo apt-get -y update
sudo apt-get install -y git php7.1-cli php7.1-gd php7.1-mcrypt php7.1-curl php7.1-mbstring php7.1-dom php7.1-zip php7.1-fpm nodejs
sudo npm -g install bower
</code></pre><p>Next we&rsquo;ll need to install Nginx, and create a config file.</p><pre><code class=language-ts>sudo apt-get -y install nginx
sudo rm -f /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-enabled/default
</code></pre><p>Assign Nginx to our web interface (which we will soon create).</p><pre><code class=language-ts>server
{
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/web/public;
server_name kerberos.rpi;
index index.php index.html index.htm;
location /
{
autoindex on;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$
{
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
</code></pre><p>Now we have all the dependencies installed we can clone the web repository to our working station.</p><pre><code class=language-ts>mkdir -p /var/www
cd /var/www &amp;&amp; sudo git clone https://github.com/kerberos-io/web &amp;&amp; cd web
</code></pre><p>Install the PHP dependency manager, <code>composer</code>, the install all the needed dependencies.</p><pre><code class=language-ts>curl -sS https://getcomposer.org/installer | sudo php
sudo mv composer.phar /usr/bin/composer
sudo composer install
</code></pre><p>Change some permissions, to make sure we can write logging and caching files.</p><pre><code class=language-ts>sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
sudo chmod 777 config/kerberos.php
</code></pre><p>We will need to install a couple of more JavaScript libraries using bower.</p><pre><code class=language-ts>cd public
sudo bower --allow-root install
service nginx restart
</code></pre><p>Once everything is setup correctly, you should be able to browse towards the ip-address of your Raspberry Pi and see the Kerberos web interface.</p><h3 id=auto-removal-1>Auto removal<a href=#auto-removal-1 class=anchor aria-hidden=true>#</a></h3><p>By default images or videos aren&rsquo;t removed automatically. This means that the Kerberos agent will keep writing to disk, even if there is no more space available on your SD card. When your SD card is full you&rsquo;ll be experiencing strange errors: a corrupt web interface, blank images or corrupt videos.</p><p>To resolve this your should install a simple bash script and initiate a cronjob which continuously poll your filesystem, and start removing media when your disk is getting full.</p><p>Create a bash script and copy following script.</p><pre><code class=language-bash>nano /home/[user]/autoremoval.sh
</code></pre><p>Copy following script (make sure the partition is correct, this is the default one for a Raspberry Pi).</p><pre><code class=language-bash>partition=/dev/root
imagedir=/etc/opt/kerberosio/capture/
if [[ $(df -h | grep $partition | head -1 | awk -F' ' '{ print $5/1 }' | tr ['%'] [&quot;0&quot;]) -gt 90 ]];
then
echo &quot;Cleaning disk&quot;
find $imagedir -type f | sort | head -n 100 | xargs -r rm -rf;
fi;
</code></pre><p>Make the script executable.</p><pre><code class=language-bash>chmod +x /home/[user]/autoremoval.sh
</code></pre><p>Initiate a cronjob, and select the nano editor.</p><pre><code class=language-bash>crontab -e
</code></pre><p>Append following line, to execute the autoremoval.sh script every 5min.</p><pre><code class=language-bash>*/5 * * * * /bin/bash /home/[user]/autoremoval.sh
</code></pre><p class=edit-page><a href=https://github.com/kerberos-io/documentation/blob/master/content/opensource/installation-advanced/index.md><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit-2"><path d="M17 3a2.828 2.828.0 114 4L7.5 20.5 2 22l1.5-5.5L17 3z"/></svg>Edit this page on GitHub</a></p><div class="docs-navigation d-flex justify-content-between"><a href=https://doc.kerberos.io/opensource/installation/><div class="card my-1"><div class="card-body py-2">&larr; Installation</div></div></a><a class=ms-auto href=https://doc.kerberos.io/opensource/releases/><div class="card my-1"><div class="card-body py-2">Release notes &rarr;</div></div></a></div></main></div></div></div><footer class="footer text-muted"><div class=container><div class=row><div class="col-lg-6 order-last order-lg-first"><ul class="navbar-nav social-nav"><li class=copyright>&copy;&nbsp;2014&ndash;2021
<a href=https://kerberos.io>Kerberos.io</a></li><li class=nav-item><a class=link href=https://twitter.com/kerberosio title=Twitter><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-twitter"><path d="M23 3a10.9 10.9.0 01-3.14 1.53 4.48 4.48.0 00-7.86 3v1A10.66 10.66.0 013 4s-4 9 5 13a11.64 11.64.0 01-7 2c9 5 20 0 20-11.5a4.5 4.5.0 00-.08-.83A7.72 7.72.0 0023 3z"/></svg><span class="ms-2 visually-hidden">Twitter</span></a></li><li class=nav-item><a class=link href=https://github.com/kerberos-io title=GitHub><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-github"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg><span class="ms-2 visually-hidden">GitHub</span></a></li><li class=nav-item><a class=link href=https://www.reddit.com/r/kerberos_io/ title=Reddit><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-message-circle"><path d="M21 11.5a8.38 8.38.0 01-.9 3.8A8.5 8.5.0 0112.5 20a8.38 8.38.0 01-3.8-.9L3 21l1.9-5.7A8.38 8.38.0 014 11.5a8.5 8.5.0 014.7-7.6 8.38 8.38.0 013.8-.9h.5a8.48 8.48.0 018 8v.5z"/></svg><span class="ms-2 visually-hidden">Reddit</span></a></li></ul></div><div class="col-lg-10 order-first order-lg-last text-lg-end"><ul class=list-inline><li class=list-inline-item>Learn more about</li><li class=list-inline-item><a href=https://kerberos.io/product/enterprise-agent/>Enterprise Agent</a></li><li class=list-inline-item><a href=https://kerberos.io/product/hub/>Hub</a></li><li class=list-inline-item><a href=https://kerberos.io/product/open-source/>Kerberos Opensource</a></li><li class=list-inline-item><a href=https://kerberos.io/product/vault/>Vault</a></li></ul></div></div></div></footer><script src=https://doc.kerberos.io/js/highlight.min.13bf6b39f28cd07b0780c0c154bf050bad1e7b73231c15e43b993504cca3fa814222ded3c525f429528451fe039a5078c71ae4d000486d26f9b920cc7db474da.js integrity="sha512-E79rOfKM0HsHgMDBVL8FC60ee3MjHBXkO5k1BMyj+oFCIt7TxSX0KVKEUf4DmlB4xxrk0ABIbSb5uSDMfbR02g==" crossorigin=anonymous defer></script><script src=https://doc.kerberos.io/main.min.89223fc6eee34e2dc10266cff3c7fc87949c595388f775ec6e93132410cef77e5ff7f24a81db03c9b9eb6d2e6d75ea5a7d22945c574b65dfeb426f65af771230.js integrity="sha512-iSI/xu7jTi3BAmbP88f8h5ScWVOI93XsbpMTJBDO935f9/JKgdsDybnrbS5tdepafSKUXFdLZd/rQm9lr3cSMA==" crossorigin=anonymous defer></script><script src=https://doc.kerberos.io/index.min.71e05784bf5441c378e8824d18e4b5a057f28cde2bd06f927216eb278586f7ea7d96309df4600474b3b928ef2b635a64248e2cf3a7a023136087ed4050162608.js integrity="sha512-ceBXhL9UQcN46IJNGOS1oFfyjN4r0G+SchbrJ4WG9+p9ljCd9GAEdLO5KO8rY1pkJI4s86egIxNgh+1AUBYmCA==" crossorigin=anonymous defer></script></body></html>