mirror of
https://github.com/awesome-selfhosted/awesome-selfhosted.git
synced 2025-04-29 07:24:18 +02:00
Add files via upload
This commit is contained in:
parent
7b6183e9bb
commit
9c49f638df
55 changed files with 13286 additions and 0 deletions
141
docs/404.html
Normal file
141
docs/404.html
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/img/favicon.ico">
|
||||||
|
<title>Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="/css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script src="/js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="/js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="/." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="//search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="/.">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="/awesome-selfhosted/">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="/awesome-selfhosted/non-free/">Proprietary Software</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="#">Info</a>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="/awesome-selfhosted/Info/Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="/awesome-selfhosted/Info/CONTRIBUTING/">Contributing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="/awesome-selfhosted/Info/LICENSE/">License</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href="/.">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href="/.">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="404-page-not-found">404</h1>
|
||||||
|
|
||||||
|
<p><strong>Page not found</strong></p>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '/';</script>
|
||||||
|
<script src="/js/theme.js" defer></script>
|
||||||
|
<script src="/search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
2908
docs/awesome-selfhosted/Info/Authors/index.html
Normal file
2908
docs/awesome-selfhosted/Info/Authors/index.html
Normal file
File diff suppressed because it is too large
Load diff
181
docs/awesome-selfhosted/Info/CONTRIBUTING/index.html
Normal file
181
docs/awesome-selfhosted/Info/CONTRIBUTING/index.html
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../../../img/favicon.ico">
|
||||||
|
<title>Contributing - Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../../../css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="../../../css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Current page data
|
||||||
|
var mkdocs_page_name = "Contributing";
|
||||||
|
var mkdocs_page_input_path = "awesome-selfhosted\\Info\\CONTRIBUTING.md";
|
||||||
|
var mkdocs_page_url = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="../../../js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="../../../js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="../../.." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../..">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../non-free/">Proprietary Software</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1 current"><a class="reference internal current" href="#">Info</a>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2 current"><a class="reference internal current" href="./">Contributing</a>
|
||||||
|
<ul class="current">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../LICENSE/">License</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href="../../..">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href="../../..">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Info »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Awesome selfhosted »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Contributing</li>
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
<h1 id="contributing">Contributing</h1>
|
||||||
|
<p>Please open a new issue to clarify any questions, or post in the <a href="https://github.com/awesome-selfhosted/awesome-selfhosted/issues/89">General discussion issue</a>.</p>
|
||||||
|
<p>All guidelines for adding new software to the list are listed in <a href="PULL_REQUEST_TEMPLATE.md">PULL_REQUEST_TEMPLATE.md</a>.</p>
|
||||||
|
<p>Other recommendations:</p>
|
||||||
|
<ul>
|
||||||
|
<li>To add a new entry, <a href="https://github.com/awesome-selfhosted/awesome-selfhosted/edit/master/README.md">edit the README.md file</a> through Github's web interface or a text editor, and send a Pull Request.</li>
|
||||||
|
<li>See <a href="https://help.github.com/articles/editing-files-in-another-user-s-repository/">Editing files in another user's repository</a>, <a href="https://help.github.com/articles/creating-a-pull-request/">Creating Pull Requests</a>, <a href="https://help.github.com/articles/using-pull-requests/">Using Pull Requests</a> for help on sending your patch.</li>
|
||||||
|
<li>A script to help you format new entries is available at (it requires <code>make</code> to be installed): <code>git clone</code>/<a href="https://github.com/awesome-selfhosted/awesome-selfhosted/archive/master.zip">download</a> and enter the repository, run <code>make add</code> and follow the instructions.</li>
|
||||||
|
<li>A website to help you format new entries is available at https://n8225.github.io/</li>
|
||||||
|
<li>The list of contributors can be updated with <code>make contrib</code>. </li>
|
||||||
|
<li>Software with no development activity for 6-12 months may be removed from the list.</li>
|
||||||
|
<li>Don't know where to start? Check issues labeled <a href="https://github.com/awesome-selfhosted/awesome-selfhosted/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22"><code>help wanted</code></a> and <a href="https://github.com/awesome-selfhosted/awesome-selfhosted/issues?q=is%3Aissue+is%3Aopen+label%3Afix"><code>fix</code></a>.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||||
|
|
||||||
|
<a href="../LICENSE/" class="btn btn-neutral float-right" title="License">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a href="../Authors/" class="btn btn-neutral" title="Authors"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
<span><a href="../Authors/" style="color: #fcfcfc;">« Previous</a></span>
|
||||||
|
|
||||||
|
|
||||||
|
<span style="margin-left: 15px"><a href="../LICENSE/" style="color: #fcfcfc">Next »</a></span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '../../..';</script>
|
||||||
|
<script src="../../../js/theme.js" defer></script>
|
||||||
|
<script src="../../../search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
541
docs/awesome-selfhosted/Info/LICENSE/index.html
Normal file
541
docs/awesome-selfhosted/Info/LICENSE/index.html
Normal file
|
@ -0,0 +1,541 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../../../img/favicon.ico">
|
||||||
|
<title>License - Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../../../css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="../../../css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Current page data
|
||||||
|
var mkdocs_page_name = "License";
|
||||||
|
var mkdocs_page_input_path = "awesome-selfhosted\\Info\\LICENSE.md";
|
||||||
|
var mkdocs_page_url = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="../../../js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="../../../js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="../../.." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../..">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../../non-free/">Proprietary Software</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1 current"><a class="reference internal current" href="#">Info</a>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../CONTRIBUTING/">Contributing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2 current"><a class="reference internal current" href="./">License</a>
|
||||||
|
<ul class="current">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href="../../..">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href="../../..">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Info »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Awesome selfhosted »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>License</li>
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
<h1 id="license">License</h1>
|
||||||
|
<p><code>CC-BY-SA-3.0
|
||||||
|
Creative Commons Attribution-ShareAlike 3.0 Unported
|
||||||
|
.
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||||
|
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE
|
||||||
|
INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||||
|
ITS USE.
|
||||||
|
.
|
||||||
|
License
|
||||||
|
.
|
||||||
|
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||||
|
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||||
|
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||||
|
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||||
|
.
|
||||||
|
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||||
|
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||||
|
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||||
|
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||||
|
CONDITIONS.
|
||||||
|
.
|
||||||
|
1. Definitions
|
||||||
|
.
|
||||||
|
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||||
|
other pre-existing works, such as a translation, adaptation, derivative
|
||||||
|
work, arrangement of music or other alterations of a literary or
|
||||||
|
artistic work, or phonogram or performance and includes cinematographic
|
||||||
|
adaptations or any other form in which the Work may be recast,
|
||||||
|
transformed, or adapted including in any form recognizably derived from
|
||||||
|
the original, except that a work that constitutes a Collection will not
|
||||||
|
be considered an Adaptation for the purpose of this License. For the
|
||||||
|
avoidance of doubt, where the Work is a musical work, performance or
|
||||||
|
phonogram, the synchronization of the Work in timed-relation with a
|
||||||
|
moving image ("synching") will be considered an Adaptation for the
|
||||||
|
purpose of this License.
|
||||||
|
.
|
||||||
|
b. "Collection" means a collection of literary or artistic works, such
|
||||||
|
as encyclopedias and anthologies, or performances, phonograms or
|
||||||
|
broadcasts, or other works or subject matter other than works listed in
|
||||||
|
Section 1(f) below, which, by reason of the selection and arrangement of
|
||||||
|
their contents, constitute intellectual creations, in which the Work is
|
||||||
|
included in its entirety in unmodified form along with one or more other
|
||||||
|
contributions, each constituting separate and independent works in
|
||||||
|
themselves, which together are assembled into a collective whole. A work
|
||||||
|
that constitutes a Collection will not be considered an Adaptation (as
|
||||||
|
defined below) for the purposes of this License.
|
||||||
|
.
|
||||||
|
c. "Creative Commons Compatible License" means a license that is listed
|
||||||
|
at http://creativecommons.org/compatiblelicenses that has been approved
|
||||||
|
by Creative Commons as being essentially equivalent to this License,
|
||||||
|
including, at a minimum, because that license: (i) contains terms that
|
||||||
|
have the same purpose, meaning and effect as the License Elements of
|
||||||
|
this License; and, (ii) explicitly permits the relicensing of
|
||||||
|
adaptations of works made available under that license under this
|
||||||
|
License or a Creative Commons jurisdiction license with the same License
|
||||||
|
Elements as this License.
|
||||||
|
.
|
||||||
|
d. "Distribute" means to make available to the public the original and
|
||||||
|
copies of the Work or Adaptation, as appropriate, through sale or other
|
||||||
|
transfer of ownership.
|
||||||
|
.
|
||||||
|
e. "License Elements" means the following high-level license attributes
|
||||||
|
as selected by Licensor and indicated in the title of this License:
|
||||||
|
Attribution, ShareAlike.
|
||||||
|
.
|
||||||
|
f. "Licensor" means the individual, individuals, entity or entities that
|
||||||
|
offer(s) the Work under the terms of this License.
|
||||||
|
.
|
||||||
|
g. "Original Author" means, in the case of a literary or artistic work,
|
||||||
|
the individual, individuals, entity or entities who created the Work or
|
||||||
|
if no individual or entity can be identified, the publisher; and in
|
||||||
|
addition (i) in the case of a performance the actors, singers,
|
||||||
|
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||||
|
play in, interpret or otherwise perform literary or artistic works or
|
||||||
|
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||||
|
being the person or legal entity who first fixes the sounds of a
|
||||||
|
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||||
|
organization that transmits the broadcast.
|
||||||
|
.
|
||||||
|
h. "Work" means the literary and/or artistic work offered under the
|
||||||
|
terms of this License including without limitation any production in the
|
||||||
|
literary, scientific and artistic domain, whatever may be the mode or
|
||||||
|
form of its expression including digital form, such as a book, pamphlet
|
||||||
|
and other writing; a lecture, address, sermon or other work of the same
|
||||||
|
nature; a dramatic or dramatico-musical work; a choreographic work or
|
||||||
|
entertainment in dumb show; a musical composition with or without words;
|
||||||
|
a cinematographic work to which are assimilated works expressed by a
|
||||||
|
process analogous to cinematography; a work of drawing, painting,
|
||||||
|
architecture, sculpture, engraving or lithography; a photographic work
|
||||||
|
to which are assimilated works expressed by a process analogous to
|
||||||
|
photography; a work of applied art; an illustration, map, plan, sketch
|
||||||
|
or three-dimensional work relative to geography, topography,
|
||||||
|
architecture or science; a performance; a broadcast; a phonogram; a
|
||||||
|
compilation of data to the extent it is protected as a copyrightable
|
||||||
|
work; or a work performed by a variety or circus performer to the extent
|
||||||
|
it is not otherwise considered a literary or artistic work.
|
||||||
|
.
|
||||||
|
i. "You" means an individual or entity exercising rights under this
|
||||||
|
License who has not previously violated the terms of this License with
|
||||||
|
respect to the Work, or who has received express permission from the
|
||||||
|
Licensor to exercise rights under this License despite a previous
|
||||||
|
violation.
|
||||||
|
.
|
||||||
|
j. "Publicly Perform" means to perform public recitations of the Work
|
||||||
|
and to communicate to the public those public recitations, by any means
|
||||||
|
or process, including by wire or wireless means or public digital
|
||||||
|
performances; to make available to the public Works in such a way that
|
||||||
|
members of the public may access these Works from a place and at a place
|
||||||
|
individually chosen by them; to perform the Work to the public by any
|
||||||
|
means or process and the communication to the public of the performances
|
||||||
|
of the Work, including by public digital performance; to broadcast and
|
||||||
|
rebroadcast the Work by any means including signs, sounds or images.
|
||||||
|
.
|
||||||
|
k. "Reproduce" means to make copies of the Work by any means including
|
||||||
|
without limitation by sound or visual recordings and the right of
|
||||||
|
fixation and reproducing fixations of the Work, including storage of a
|
||||||
|
protected performance or phonogram in digital form or other electronic
|
||||||
|
medium.
|
||||||
|
.
|
||||||
|
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||||
|
limit, or restrict any uses free from copyright or rights arising from
|
||||||
|
limitations or exceptions that are provided for in connection with the
|
||||||
|
copyright protection under copyright law or other applicable laws.
|
||||||
|
.
|
||||||
|
3. License Grant. Subject to the terms and conditions of this License,
|
||||||
|
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||||
|
perpetual (for the duration of the applicable copyright) license to
|
||||||
|
exercise the rights in the Work as stated below:
|
||||||
|
.
|
||||||
|
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||||
|
Collections, and to Reproduce the Work as incorporated in the
|
||||||
|
Collections;
|
||||||
|
.
|
||||||
|
b. to create and Reproduce Adaptations provided that any such
|
||||||
|
Adaptation, including any translation in any medium, takes reasonable
|
||||||
|
steps to clearly label, demarcate or otherwise identify that changes
|
||||||
|
were made to the original Work. For example, a translation could be
|
||||||
|
marked "The original work was translated from English to Spanish," or a
|
||||||
|
modification could indicate "The original work has been modified.";
|
||||||
|
.
|
||||||
|
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||||
|
in Collections; and,
|
||||||
|
.
|
||||||
|
d. to Distribute and Publicly Perform Adaptations.
|
||||||
|
.
|
||||||
|
e. For the avoidance of doubt:
|
||||||
|
.
|
||||||
|
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||||
|
which the right to collect royalties through any statutory or compulsory
|
||||||
|
licensing scheme cannot be waived, the Licensor reserves the exclusive
|
||||||
|
right to collect such royalties for any exercise by You of the rights
|
||||||
|
granted under this License;
|
||||||
|
.
|
||||||
|
ii. Waivable Compulsory License Schemes. In those jurisdictions in which
|
||||||
|
the right to collect royalties through any statutory or compulsory
|
||||||
|
licensing scheme can be waived, the Licensor waives the exclusive right
|
||||||
|
to collect such royalties for any exercise by You of the rights granted
|
||||||
|
under this License; and,
|
||||||
|
.
|
||||||
|
iii. Voluntary License Schemes. The Licensor waives the right to collect
|
||||||
|
royalties, whether individually or, in the event that the Licensor is a
|
||||||
|
member of a collecting society that administers voluntary licensing
|
||||||
|
schemes, via that society, from any exercise by You of the rights
|
||||||
|
granted under this License.
|
||||||
|
.
|
||||||
|
The above rights may be exercised in all media and formats whether now
|
||||||
|
known or hereafter devised. The above rights include the right to make
|
||||||
|
such modifications as are technically necessary to exercise the rights
|
||||||
|
in other media and formats. Subject to Section 8(f), all rights not
|
||||||
|
expressly granted by Licensor are hereby reserved.
|
||||||
|
.
|
||||||
|
4. Restrictions. The license granted in Section 3 above is expressly
|
||||||
|
made subject to and limited by the following restrictions:
|
||||||
|
.
|
||||||
|
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||||
|
of this License. You must include a copy of, or the Uniform Resource
|
||||||
|
Identifier (URI) for, this License with every copy of the Work You
|
||||||
|
Distribute or Publicly Perform. You may not offer or impose any terms on
|
||||||
|
the Work that restrict the terms of this License or the ability of the
|
||||||
|
recipient of the Work to exercise the rights granted to that recipient
|
||||||
|
under the terms of the License. You may not sublicense the Work. You
|
||||||
|
must keep intact all notices that refer to this License and to the
|
||||||
|
disclaimer of warranties with every copy of the Work You Distribute or
|
||||||
|
Publicly Perform. When You Distribute or Publicly Perform the Work, You
|
||||||
|
may not impose any effective technological measures on the Work that
|
||||||
|
restrict the ability of a recipient of the Work from You to exercise the
|
||||||
|
rights granted to that recipient under the terms of the License. This
|
||||||
|
Section 4(a) applies to the Work as incorporated in a Collection, but
|
||||||
|
this does not require the Collection apart from the Work itself to be
|
||||||
|
made subject to the terms of this License. If You create a Collection,
|
||||||
|
upon notice from any Licensor You must, to the extent practicable,
|
||||||
|
remove from the Collection any credit as required by Section 4(c), as
|
||||||
|
requested. If You create an Adaptation, upon notice from any Licensor
|
||||||
|
You must, to the extent practicable, remove from the Adaptation any
|
||||||
|
credit as required by Section 4(c), as requested.
|
||||||
|
.
|
||||||
|
b. You may Distribute or Publicly Perform an Adaptation only under the
|
||||||
|
terms of: (i) this License; (ii) a later version of this License with
|
||||||
|
the same License Elements as this License; (iii) a Creative Commons
|
||||||
|
jurisdiction license (either this or a later license version) that
|
||||||
|
contains the same License Elements as this License (e.g.,
|
||||||
|
Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
|
||||||
|
License. If you license the Adaptation under one of the licenses
|
||||||
|
mentioned in (iv), you must comply with the terms of that license. If
|
||||||
|
you license the Adaptation under the terms of any of the licenses
|
||||||
|
mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
|
||||||
|
comply with the terms of the Applicable License generally and the
|
||||||
|
following provisions: (I) You must include a copy of, or the URI for,
|
||||||
|
the Applicable License with every copy of each Adaptation You Distribute
|
||||||
|
or Publicly Perform; (II) You may not offer or impose any terms on the
|
||||||
|
Adaptation that restrict the terms of the Applicable License or the
|
||||||
|
ability of the recipient of the Adaptation to exercise the rights
|
||||||
|
granted to that recipient under the terms of the Applicable License;
|
||||||
|
(III) You must keep intact all notices that refer to the Applicable
|
||||||
|
License and to the disclaimer of warranties with every copy of the Work
|
||||||
|
as included in the Adaptation You Distribute or Publicly Perform; (IV)
|
||||||
|
when You Distribute or Publicly Perform the Adaptation, You may not
|
||||||
|
impose any effective technological measures on the Adaptation that
|
||||||
|
restrict the ability of a recipient of the Adaptation from You to
|
||||||
|
exercise the rights granted to that recipient under the terms of the
|
||||||
|
Applicable License. This Section 4(b) applies to the Adaptation as
|
||||||
|
incorporated in a Collection, but this does not require the Collection
|
||||||
|
apart from the Adaptation itself to be made subject to the terms of the
|
||||||
|
Applicable License.
|
||||||
|
.
|
||||||
|
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||||
|
Collections, You must, unless a request has been made pursuant to
|
||||||
|
Section 4(a), keep intact all copyright notices for the Work and
|
||||||
|
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||||
|
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||||
|
and/or if the Original Author and/or Licensor designate another party or
|
||||||
|
parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||||
|
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||||
|
terms of service or by other reasonable means, the name of such party or
|
||||||
|
parties; (ii) the title of the Work if supplied; (iii) to the extent
|
||||||
|
reasonably practicable, the URI, if any, that Licensor specifies to be
|
||||||
|
associated with the Work, unless such URI does not refer to the
|
||||||
|
copyright notice or licensing information for the Work; and (iv) ,
|
||||||
|
consistent with Ssection 3(b), in the case of an Adaptation, a credit
|
||||||
|
identifying the use of the Work in the Adaptation (e.g., "French
|
||||||
|
translation of the Work by Original Author," or "Screenplay based on
|
||||||
|
original Work by Original Author"). The credit required by this Section
|
||||||
|
4(c) may be implemented in any reasonable manner; provided, however,
|
||||||
|
that in the case of a Adaptation or Collection, at a minimum such credit
|
||||||
|
will appear, if a credit for all contributing authors of the Adaptation
|
||||||
|
or Collection appears, then as part of these credits and in a manner at
|
||||||
|
least as prominent as the credits for the other contributing authors.
|
||||||
|
For the avoidance of doubt, You may only use the credit required by this
|
||||||
|
Section for the purpose of attribution in the manner set out above and,
|
||||||
|
by exercising Your rights under this License, You may not implicitly or
|
||||||
|
explicitly assert or imply any connection with, sponsorship or
|
||||||
|
endorsement by the Original Author, Licensor and/or Attribution Parties,
|
||||||
|
as appropriate, of You or Your use of the Work, without the separate,
|
||||||
|
express prior written permission of the Original Author, Licensor and/or
|
||||||
|
Attribution Parties.
|
||||||
|
.
|
||||||
|
d. Except as otherwise agreed in writing by the Licensor or as may be
|
||||||
|
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||||
|
Publicly Perform the Work either by itself or as part of any Adaptations
|
||||||
|
or Collections, You must not distort, mutilate, modify or take other
|
||||||
|
derogatory action in relation to the Work which would be prejudicial to
|
||||||
|
the Original Author's honor or reputation. Licensor agrees that in those
|
||||||
|
jurisdictions (e.g. Japan), in which any exercise of the right granted
|
||||||
|
in Section 3(b) of this License (the right to make Adaptations) would be
|
||||||
|
deemed to be a distortion, mutilation, modification or other derogatory
|
||||||
|
action prejudicial to the Original Author's honor and reputation, the
|
||||||
|
Licensor will waive or not assert, as appropriate, this Section, to the
|
||||||
|
fullest extent permitted by the applicable national law, to enable You
|
||||||
|
to reasonably exercise Your right under Section 3(b) of this License
|
||||||
|
(right to make Adaptations) but not otherwise.
|
||||||
|
.
|
||||||
|
5. Representations, Warranties and Disclaimer
|
||||||
|
.
|
||||||
|
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
|
||||||
|
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
|
||||||
|
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
|
||||||
|
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
|
||||||
|
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
|
||||||
|
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||||
|
EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||||
|
.
|
||||||
|
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||||
|
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||||
|
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||||
|
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||||
|
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
.
|
||||||
|
7. Termination
|
||||||
|
.
|
||||||
|
a. This License and the rights granted hereunder will terminate
|
||||||
|
automatically upon any breach by You of the terms of this License.
|
||||||
|
Individuals or entities who have received Adaptations or Collections
|
||||||
|
from You under this License, however, will not have their licenses
|
||||||
|
terminated provided such individuals or entities remain in full
|
||||||
|
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||||
|
survive any termination of this License.
|
||||||
|
.
|
||||||
|
b. Subject to the above terms and conditions, the license granted here
|
||||||
|
is perpetual (for the duration of the applicable copyright in the Work).
|
||||||
|
Notwithstanding the above, Licensor reserves the right to release the
|
||||||
|
Work under different license terms or to stop distributing the Work at
|
||||||
|
any time; provided, however that any such election will not serve to
|
||||||
|
withdraw this License (or any other license that has been, or is
|
||||||
|
required to be, granted under the terms of this License), and this
|
||||||
|
License will continue in full force and effect unless terminated as
|
||||||
|
stated above.
|
||||||
|
.
|
||||||
|
8. Miscellaneous
|
||||||
|
.
|
||||||
|
a. Each time You Distribute or Publicly Perform the Work or a
|
||||||
|
Collection, the Licensor offers to the recipient a license to the Work
|
||||||
|
on the same terms and conditions as the license granted to You under
|
||||||
|
this License.
|
||||||
|
.
|
||||||
|
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||||
|
offers to the recipient a license to the original Work on the same terms
|
||||||
|
and conditions as the license granted to You under this License.
|
||||||
|
.
|
||||||
|
c. If any provision of this License is invalid or unenforceable under
|
||||||
|
applicable law, it shall not affect the validity or enforceability of
|
||||||
|
the remainder of the terms of this License, and without further action
|
||||||
|
by the parties to this agreement, such provision shall be reformed to
|
||||||
|
the minimum extent necessary to make such provision valid and
|
||||||
|
enforceable.
|
||||||
|
.
|
||||||
|
d. No term or provision of this License shall be deemed waived and no
|
||||||
|
breach consented to unless such waiver or consent shall be in writing
|
||||||
|
and signed by the party to be charged with such waiver or consent.
|
||||||
|
.
|
||||||
|
e. This License constitutes the entire agreement between the parties
|
||||||
|
with respect to the Work licensed here. There are no understandings,
|
||||||
|
agreements or representations with respect to the Work not specified
|
||||||
|
here. Licensor shall not be bound by any additional provisions that may
|
||||||
|
appear in any communication from You. This License may not be modified
|
||||||
|
without the mutual written agreement of the Licensor and You.
|
||||||
|
.
|
||||||
|
f. The rights granted under, and the subject matter referenced, in this
|
||||||
|
License were drafted utilizing the terminology of the Berne Convention
|
||||||
|
for the Protection of Literary and Artistic Works (as amended on
|
||||||
|
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||||
|
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and
|
||||||
|
the Universal Copyright Convention (as revised on July 24, 1971). These
|
||||||
|
rights and subject matter take effect in the relevant jurisdiction in
|
||||||
|
which the License terms are sought to be enforced according to the
|
||||||
|
corresponding provisions of the implementation of those treaty
|
||||||
|
provisions in the applicable national law. If the standard suite of
|
||||||
|
rights granted under applicable copyright law includes additional rights
|
||||||
|
not granted under this License, such additional rights are deemed to be
|
||||||
|
included in the License; this License is not intended to restrict the
|
||||||
|
license of any rights under applicable law.
|
||||||
|
.
|
||||||
|
Creative Commons Notice
|
||||||
|
.
|
||||||
|
Creative Commons is not a party to this License, and makes no warranty
|
||||||
|
whatsoever in connection with the Work. Creative Commons will not be
|
||||||
|
liable to You or any party on any legal theory for any damages
|
||||||
|
whatsoever, including without limitation any general, special,
|
||||||
|
incidental or consequential damages arising in connection to this
|
||||||
|
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||||
|
Commons has expressly identified itself as the Licensor hereunder, it
|
||||||
|
shall have all rights and obligations of Licensor.
|
||||||
|
.
|
||||||
|
Except for the limited purpose of indicating to the public that the Work
|
||||||
|
is licensed under the CCPL, Creative Commons does not authorize the use
|
||||||
|
by either party of the trademark "Creative Commons" or any related
|
||||||
|
trademark or logo of Creative Commons without the prior written consent
|
||||||
|
of Creative Commons. Any permitted use will be in compliance with
|
||||||
|
Creative Commons' then-current trademark usage guidelines, as may be
|
||||||
|
published on its website or otherwise made available upon request from
|
||||||
|
time to time. For the avoidance of doubt, this trademark restriction
|
||||||
|
does not form part of the License.
|
||||||
|
.
|
||||||
|
Creative Commons may be contacted at http://creativecommons.org/.</code></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||||
|
|
||||||
|
|
||||||
|
<a href="../CONTRIBUTING/" class="btn btn-neutral" title="Contributing"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
<span><a href="../CONTRIBUTING/" style="color: #fcfcfc;">« Previous</a></span>
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '../../..';</script>
|
||||||
|
<script src="../../../js/theme.js" defer></script>
|
||||||
|
<script src="../../../search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
52
docs/awesome-selfhosted/Makefile
Normal file
52
docs/awesome-selfhosted/Makefile
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/make -f
|
||||||
|
SHELL = /bin/bash
|
||||||
|
AWESOME_BOT_OPTIONS = --allow-redirect --skip-save-results --allow 202 --white-list airsonic.github.io/docs/apps
|
||||||
|
|
||||||
|
all: check_all
|
||||||
|
|
||||||
|
# run all checks
|
||||||
|
check_all: check_syntax_full awesome_bot check_github_commit_dates
|
||||||
|
|
||||||
|
# check pull requests
|
||||||
|
check_pr: check_syntax_diff
|
||||||
|
|
||||||
|
# check syntax in whole file
|
||||||
|
check_syntax_full:
|
||||||
|
node tests/test.js -r README.md
|
||||||
|
|
||||||
|
# check syntax in the diff from master to current branch
|
||||||
|
check_syntax_diff:
|
||||||
|
git diff origin/master -U0 README.md | grep --perl-regexp --only-matching "(?<=^\+).*" >> temp.md && \
|
||||||
|
node tests/test.js -r README.md -d temp.md && \
|
||||||
|
awesome_bot -f temp.md $(AWESOME_BOT_OPTIONS)
|
||||||
|
|
||||||
|
# check dead links
|
||||||
|
# https://github.com/dkhamsing/awesome_bot
|
||||||
|
awesome_bot:
|
||||||
|
awesome_bot -f README.md $(AWESOME_BOT_OPTIONS)
|
||||||
|
|
||||||
|
# check date of last commit for github.com repository URLs
|
||||||
|
check_github_commit_dates:
|
||||||
|
pip3 install PyGithub
|
||||||
|
python3 tests/check-github-commit-dates.py
|
||||||
|
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# update the AUTHORS.md file
|
||||||
|
contrib:
|
||||||
|
@mv .github/.mailmap . && printf "|Commits | Author |\n| :---: | --- |\n" > AUTHORS.md && git shortlog -sne | sed -r 's/^\s*([[:digit:]]*?)\s*?(.*?)/|\1|\2|/' >> AUTHORS.md && mv .mailmap .github/.mailmap
|
||||||
|
|
||||||
|
# add a new entry
|
||||||
|
add:
|
||||||
|
@read -r -p "Software name: " Name && [[ ! -z "$$Name" ]] && \
|
||||||
|
read -r -p "Homepage/URL: " Url && [[ ! -z "$$Url" ]] && \
|
||||||
|
read -r -p "Description (max 250 characters, ending with .): " Description && [[ ! -z "$$Description" ]] && \
|
||||||
|
read -r -p "License: " License && [[ ! -z "$$License" ]] && \
|
||||||
|
read -r -p "Main server-side language/platform/requirement: " Language && [[ ! -z "$$Language" ]] && \
|
||||||
|
read -r -p "Demo URL (optional,leave empty): " Demo && \
|
||||||
|
if [[ "$$Demo" == "" ]]; then CDemo=""; else CDemo="[Demo]($$Demo)"; fi; \
|
||||||
|
read -r -p "Source code URL (if different from homepage): " Source && \
|
||||||
|
if [[ "$$Source" == "" ]]; then CSource=""; else CSource="[Source Code]($$Source)"; fi; \
|
||||||
|
if [[ "$$CSource" == "" && "$$Demo" == "" ]]; then Moreinfo=""; else Moreinfo="($$CDemo $$CSource)"; fi; \
|
||||||
|
echo "Copy this entry to your clipboard, paste it in the appropriate category:" ;\
|
||||||
|
echo "- [$$Name]($$Url) - $${Description} $${Moreinfo} \`$$License\` \`$$Language\`"
|
1915
docs/awesome-selfhosted/index.html
Normal file
1915
docs/awesome-selfhosted/index.html
Normal file
File diff suppressed because it is too large
Load diff
315
docs/awesome-selfhosted/non-free/index.html
Normal file
315
docs/awesome-selfhosted/non-free/index.html
Normal file
|
@ -0,0 +1,315 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../../img/favicon.ico">
|
||||||
|
<title>Proprietary Software - Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../../css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="../../css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Current page data
|
||||||
|
var mkdocs_page_name = "Proprietary Software";
|
||||||
|
var mkdocs_page_input_path = "awesome-selfhosted\\non-free.md";
|
||||||
|
var mkdocs_page_url = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="../../js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="../../js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="../.." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../..">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="../">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1 current"><a class="reference internal current" href="./">Proprietary Software</a>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#analytics">Analytics</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#content-management-systems-cms">Content Management Systems (CMS)</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#communication-systems">Communication Systems</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#e-books-and-integrated-library-systems-ils">E-books and Integrated Library Systems (ILS)</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#file-sharing-and-synchronization">File Sharing and Synchronization</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#games">Games</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#ipbx">IPBX</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#maps-gps">Maps & GPS</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#media-streaming">Media Streaming</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#money-budgeting-and-management">Money, Budgeting and Management</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#photo-and-video-galleries">Photo and Video Galleries</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#project-management">Project Management</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#self-hosting-solutions">Self-hosting Solutions</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#software-development">Software Development</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#ticketing">Ticketing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#time-tracking">Time Tracking</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#remote-support">Remote Support</a>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l3"><a class="reference internal" href="#ux-testing">UX testing</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="#">Info</a>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../Info/Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../Info/CONTRIBUTING/">Contributing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="../Info/LICENSE/">License</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href="../..">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href="../..">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Awesome selfhosted »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Proprietary Software</li>
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
<h1 id="proprietary-software">Proprietary Software</h1>
|
||||||
|
<p><strong>Software listed here does not allow you to run it for any purpose, study, modify or distribute the source code.</strong> Some of the software here may not be audited due to its closed source nature, and can therefore contain anti-features, such as but not limited to: undisclosed security vulnerabilities, backdoors, user lock-in, sending personal data to a third party.</p>
|
||||||
|
<h2 id="analytics">Analytics</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.usertrack.net/">userTrack</a> <code>⊘ Proprietary</code> - userTrack is a web analytics platform with heatmaps, session recordings and powerful user segmentation feature. Updated very regularly. (<a href="http://dashboard.usertrack.net/">Demo</a>) <code>PHP/MySQL/ReactJS</code></li>
|
||||||
|
<li><a href="https://uxlens.com/">UXLens</a> <code>⊘ Proprietary</code> - UXLens is a website visitor recording software meant for identifying UI issues and fix them to improve user experience. Formerly known as SessionRecord (<a href="https://console.uxlens.com/test">Demo</a>) <code>Docker Nodejs</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="content-management-systems-cms">Content Management Systems (CMS)</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://craftcms.com/">CraftCMS</a> <code>⊘ Proprietary</code> - Craft is a content-first CMS that aims to make life enjoyable for developers and content managers alike. (<a href="https://demo.craftcms.com/">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="https://github.com/WhatCD/Gazelle">Gazelle</a> - Gazelle is a web framework geared towards private BitTorrent trackers. Although naturally focusing on music, it can be modified for most needs. <code>unlicensed</code> <code>PHP</code></li>
|
||||||
|
<li><a href="https://getkirby.com/">Kirby</a> <code>⊘ Proprietary</code> - File-based CMS. Easy to setup. Easy to use. Flexible as hell. (<a href="https://github.com/getkirby/kirby">Source Code</a>) <code>PHP</code> </li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="communication-systems">Communication Systems</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://dlg.im">Dialog</a> <code>⊘ Proprietary</code> - Handy and feature-rich multi-device solution with native mobile clients, SIP integration, chatbots, 3rd-party integrations. It brings communication efficiency without sacrificing privacy. Works in closed circuit, encrypts push notifications. (<a href="https://dlg.im/en/download">Demo</a>) <code>Scala/Go</code></li>
|
||||||
|
<li><a href="https://www.groupboard.com">Groupboard</a> <code>⊘ Proprietary</code> - Online whiteboard, audio/video conferencing, screen sharing, shared code editing and optional session recording/playback.</li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/hipchat">HipChat</a> <code>⊘ Proprietary</code> - A team chat solution with 1:1 chat audio and video, third party integration and more. <code>PHP/Python</code></li>
|
||||||
|
<li><a href="https://privmx.com">PrivMX WebMail</a> - an alternative private mail system - web-based, end-to-end encrypted by design, self-hosted, decentralized, uses independent PKI. Easy to install and administrate, freeware, open-source. <code>PHP</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="e-books-and-integrated-library-systems-ils">E-books and Integrated Library Systems (ILS)</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://vaemendis.net/ubooquity/">Ubooquity</a> <code>⊘ Proprietary</code> - Ubooquity is a free to use, versatile, lightweight, multi-platform, and secure home server for your comic and e-book library. <code>Java</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="file-sharing-and-synchronization">File Sharing and Synchronization</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.resilio.com/">Resilio Sync</a> <code>⊘ Proprietary</code> - Resilio Sync by Resilio, Inc is a proprietary peer-to-peer file synchronisation tool.</li>
|
||||||
|
<li><a href="http://www.drivevirtual.com/">Drive Virtual</a> <code>⊘ Proprietary</code> - With Drive Virtual you can sync, backup and share your files privately with your own FTP (SFTP) server or account.</li>
|
||||||
|
<li><a href="http://projet.idleman.fr/dropcenter/">Dropcenter</a> - Upload files by simple drag-n-drop. (<a href="https://github.com/ldleman/dropcenter">Source Code</a>) <code>CCBYNCSAv3</code> <code>PHP</code></li>
|
||||||
|
<li><a href="http://www.filerun.com/">FileRun</a> <code>⊘ Proprietary</code> - A complete solution for your files with integration with Google and Office. (<a href="http://www.filerun.com/demo">Demo</a>) <code>PHP</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="games">Games</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://github.com/Kshitij-Banerjee/Cubiks-2048">Cubiks-2048</a> - Clone of 2048 game in 3D. (<a href="https://kshitij-banerjee.github.io/Cubiks-2048/">Demo</a>) <code>CCBYNCv4</code> <code>HTML5</code></li>
|
||||||
|
<li><a href="https://github.com/AlexNisnevich/untrusted">untrusted</a> - Untrusted is a unique puzzle game designed for geeks and developers, where you solve the puzzles in the game by reading and writing Javascript. (<a href="http://alex.nisnevich.com/untrusted/">Demo</a>) <code>CCBYNCSAv3/Custom</code> <code>Nodejs</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="ipbx">IPBX</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.elastix.org">Elastix</a> <code>⊘ Proprietary</code> - Unified communications server software based on 3CX.</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="maps-gps">Maps & GPS</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://openmaptiles.org/">OpenMapTiles Server</a> <code>⊘ Proprietary</code> - Set of tools for self-hosting of OpenStreetMap vector tiles. (<a href="https://github.com/openmaptiles">Partial Source Code</a>) <code>Python/JavaScript</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="media-streaming">Media Streaming</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://getchannels.com/dvr-server/">Channels DVR Server</a> <code>⊘ Proprietary</code> - Flexible server providing a whole home self hosted DVR experience for <a href="https://getchannels.com">Channels</a>.</li>
|
||||||
|
<li><a href="https://emby.media/">Emby</a> <code>⊘ Proprietary</code> - Home media server supporting both DLNA and DIAL (Chromecast) devices out-of-the-box. (<a href="https://github.com/MediaBrowser/Emby">Partial source Code</a>) <code>Proprietary with some GPL-2.0</code> <code>C#</code></li>
|
||||||
|
<li><a href="https://plex.tv/">Plex</a> <code>⊘ Proprietary</code> - Plex is a centralized home media playback system with a powerful central server.</li>
|
||||||
|
<li><a href="http://subsonic.org/">Subsonic</a> - Web-based media streamer and jukebox. (<a href="http://demo.subsonic.org/login.view?user=guest4&password=guest">Demo</a>)</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="money-budgeting-and-management">Money, Budgeting and Management</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://theanchorapp.com/">Anchor</a> - Anchor is an invoicing system that integrates with Stripe and Paypal. Includes features such as: reporting, dashboard and no client limit. (<a href="http://theanchorapp.com/demo/admin-login">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="http://manager.io/server">Manager</a> <code>⊘ Proprietary</code> - Online accounting software for small businesses. <code>Mono</code></li>
|
||||||
|
<li><a href="http://pancakeapp.com/">Pancake</a> <code>⊘ Proprietary</code> - Online invoicing, project management, time tracking and proposal software. <code>PHP</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="photo-and-video-galleries">Photo and Video Galleries</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://codecanyon.net/item/artvenue-image-sharing-community-script/5771542">ArtVenue</a> <code>⊘ Proprietary</code> - Start your own photography community website, platform based on the Laravel PHP Framework. (<a href="http://codecanyon.net/item/artvenue-image-sharing-community-script/full_screen_preview/5771542">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="https://chevereto.com/">Chevereto</a> <code>⊘ Proprietary</code> - A powerful and fast image hosting script that allows you to create your very own full featured image hosting website in just minutes. (<a href="http://demo.chevereto.com/">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="http://koken.me/">Koken</a> <code>⊘ Proprietary</code> - Content management and web site publishing for photographers. <code>PHP</code></li>
|
||||||
|
<li><a href="https://photostructure.com/">PhotoStructure</a> <code>⊘ Proprietary</code> - All your family's photos and videos automatically organized into a fun and beautiful website. Runs via Docker, NodeJS, or native desktop installers. <code>NodeJS</code></li>
|
||||||
|
<li><a href="http://sye.dk/sfpg/">Single File PHP Gallery</a> <code>⊘ Proprietary</code> - is a web gallery in one single PHP file. <code>PHP</code> </li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="project-management">Project Management</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.activecollab.com/">Active Collab</a> <code>⊘ Proprietary</code> - Project management - <code>PHP</code></li>
|
||||||
|
<li><a href="https://duetapp.com/">Duet</a> <code>⊘ Proprietary</code> - Invoicing and project management with an integrated client portal. (<a href="https://duetapp.com/start-demo">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="https://kantree.io">Kantree</a> <code>⊘ Proprietary</code> - Work management and collaboration - <code>Python</code></li>
|
||||||
|
<li><a href="http://www.getsoloapp.com/">Solo</a> - Solo is a free project management app created for freelancers. Create contacts, manage tasks, upload files, track project progress, and keep notes. (<a href="http://www.getsoloapp.com/demo/">Demo</a>) <code>PHP</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="self-hosting-solutions">Self-hosting Solutions</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.axigen.com/mail-server/free/">Axigen</a> <code>⊘ Proprietary</code> - Great alternative to open source. It's a turnkey messaging solution, perfect for small & micro businesses, integration projects or test environments.</li>
|
||||||
|
<li><a href="https://cloudron.io">Cloudron</a> <code>⊘ Proprietary</code> - Open-core software allowing you to effortlessly self-host web apps on your server. (<a href="https://git.cloudron.io/groups/cloudron">Source Code</a>) <code>Nodejs/Docker</code></li>
|
||||||
|
<li><a href="https://www.hmailserver.com">hMailServer</a> <code>⊘ Proprietary</code> - Open source e-mail server for Microsoft Windows. (<a href="https://github.com/hmailserver/hmailserver">Source Code</a>) <code>C++</code></li>
|
||||||
|
<li><a href="https://poste.io">Poste.io</a> <code>⊘ Proprietary</code> - Full featured solution for your Email server. Native implementation of last anti-SPAM methods, webmail and easy administration included. Free tier available. (<a href="https://poste.io/demo">Demo</a>)</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="software-development">Software Development</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://92fiveapp.com/">92five</a> <code>⊘ Proprietary</code> - Self hosted project management application (<a href="https://github.com/chintanbanugaria/92five">Source code</a>) <code>CC BY-NC 4.0</code> <code>PHP</code></li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/bamboo">Bamboo</a> <code>⊘ Proprietary</code> - A continuous integration server <code>Java</code></li>
|
||||||
|
<li><a href="https://buddy.works/">Buddy Enterprise</a> - The Git and Continuous Integration / Delivery Platform. <code>⊘ Proprietary</code> <code>Nodejs/Java</code></li>
|
||||||
|
<li><a href="https://c9.io/">Cloud9</a> <code>⊘ Proprietary</code> - Your development environment, in the cloud (<a href="https://github.com/c9/core">Source code</a>) <code>Nodejs</code></li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/confluence">Confluence</a> <code>⊘ Proprietary</code> - A team collaboration software <code>Java</code></li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/crucible/overview">Crucible</a> <code>⊘ Proprietary</code> - A peer code review application <code>Java</code></li>
|
||||||
|
<li><a href="https://documize.com">Documize</a> <code>⊘ Proprietary</code> - Modern docs & wiki software built for software team collaboration. <code>Go</code></li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/jira">JIRA</a> <code>⊘ Proprietary</code> - A professional and extensible issue tracker <code>Java</code></li>
|
||||||
|
<li><a href="https://kloudless.com">Kloudless</a> <code>⊘ Proprietary</code> - Platform for native, embedded, SaaS integrations using Unified APIs. <code>Python</code></li>
|
||||||
|
<li><a href="https://rhodecode.com">RhodeCode</a> <code>⊘ Proprietary</code> - On-premise Source Code Management for Mercurial, Git & Subversion. <code>Python</code></li>
|
||||||
|
<li><a href="https://www.atlassian.com/software/bitbucket/server">BitBucket Server</a> <code>⊘ Proprietary</code> - An enterprise-level Git solution similar to GitLab <code>Java</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="ticketing">Ticketing</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.fullhelp.com/en/">Full Help</a> <code>⊘ Proprietary</code> - Simple, easy to use help desk & knowledge base software. Custom branding, custom themes, restful API, communication channels, multi-company support, multi-language support, and much more! At least 1 new release per month. <a href="https://www.fullhelp.com/en/changelog">Changelog</a> <code>PHP</code></li>
|
||||||
|
<li><a href="https://www.jitbit.com/helpdesk/">Jitbit Helpdesk</a> <code>⊘ Proprietary</code> - Self-hosted help desk software - simple but powerful. (<a href="https://www.jitbit.com/hosted-helpdesk/trial/">Demo</a>) <code>ASP.NET</code></li>
|
||||||
|
<li><a href="https://www.supportpal.com/">SupportPal</a> <code>⊘ Proprietary</code> - Powerful help desk software - easy, fast and intuitive. (<a href="http://demo.supportpal.com/">Demo</a>) <code>PHP</code></li>
|
||||||
|
<li><a href="http://www.cerberusweb.com/">Cerb</a> - Group-based e-mail management project. (<a href="https://github.com/wgm/cerb">Source Code</a>) <code>DPL</code> <code>PHP</code></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="time-tracking">Time Tracking</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.redcort.com/timeclock">Virtual TimeClock</a> <code>⊘ Proprietary</code> - Powerful, easy-to-use time tracking software. (<a href="https://www.redcort.com/timeclock/free-timeclock-software-trial">Demo</a>)</li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="remote-support">Remote Support</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.screenconnect.com/">ScreenConnect</a> <code>⊘ Proprietary</code> - ScreenConnect offers lightning-fast remote support and remote access to connect instantly and solve problems faster.</li>
|
||||||
|
<li><a href="https://www.remoteutilities.com/">RemoteUtilities</a> <code>⊘ Proprietary</code> - Remote Utilities is self-hosted remote support software for LAN administration and remote support over the Internet.</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="ux-testing">UX testing</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://aerokube.com/moon/">Moon</a> <code>⊘ Proprietary</code> - An efficient Selenium protocol implementation running everything in Kubernetes or Openshift. <code>Go</code></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||||
|
|
||||||
|
<a href="../Info/Authors/" class="btn btn-neutral float-right" title="Authors">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a href="../" class="btn btn-neutral" title="Awesome-Selfhosted"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
<span><a href="../" style="color: #fcfcfc;">« Previous</a></span>
|
||||||
|
|
||||||
|
|
||||||
|
<span style="margin-left: 15px"><a href="../Info/Authors/" style="color: #fcfcfc">Next »</a></span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '../..';</script>
|
||||||
|
<script src="../../js/theme.js" defer></script>
|
||||||
|
<script src="../../search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
39
docs/awesome-selfhosted/tests/Dangerfile
Normal file
39
docs/awesome-selfhosted/tests/Dangerfile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Danger CI configuration file
|
||||||
|
# https://danger.systems/guides/getting_started.html
|
||||||
|
|
||||||
|
# Check for changes to README.md
|
||||||
|
has_readme_changes = git.modified_files.include?("README.md")
|
||||||
|
|
||||||
|
# Ensure there is a summary for a pull request
|
||||||
|
fail 'Please provide a summary in the Pull Request description' if github.pr_body.length < 5
|
||||||
|
|
||||||
|
# Warn if PR guideline boxes are not checked.
|
||||||
|
warn 'Please check PR guidelines and check the boxes.' if github.pr_body.include? '- [ ]'
|
||||||
|
|
||||||
|
# Warn if pull request is not updated
|
||||||
|
warn 'Please provide a descriptive title for the Pull Request' if github.pr_title.include? 'Update README.md'
|
||||||
|
|
||||||
|
# Warn when there are merge commits in the diff
|
||||||
|
warn 'Please rebase to get rid of the merge commits in this Pull Request' if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ }
|
||||||
|
|
||||||
|
# Check links
|
||||||
|
if has_readme_changes
|
||||||
|
require 'json'
|
||||||
|
results = File.read 'ab-results-temp.md-markdown-table.json'
|
||||||
|
j = JSON.parse results
|
||||||
|
if j['error']==true
|
||||||
|
warn j['title']
|
||||||
|
markdown j['message']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check syntax
|
||||||
|
if has_readme_changes
|
||||||
|
require 'json'
|
||||||
|
syntaxresults = File.read 'syntaxcheck.json'
|
||||||
|
sj = JSON.parse syntaxresults
|
||||||
|
if sj['error']==true
|
||||||
|
fail sj['title']
|
||||||
|
markdown sj['message']
|
||||||
|
end
|
||||||
|
end
|
60
docs/awesome-selfhosted/tests/check-github-commit-dates.py
Normal file
60
docs/awesome-selfhosted/tests/check-github-commit-dates.py
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
""" A script to find github repo links and last commit dates in a markdown file
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
- python3 github module (sudo apt install python3-github on Debian)
|
||||||
|
- A personal access token (https://github.com/settings/tokens)
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
- Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would
|
||||||
|
cause the script to abort
|
||||||
|
- Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting
|
||||||
|
- Put the token in your environment variables:
|
||||||
|
export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4
|
||||||
|
- The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there
|
||||||
|
- Put the script in your crontab or run it from time to time. It doesn't make sense to add this
|
||||||
|
script to the CI job that runs every time something is pushed.
|
||||||
|
- To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at
|
||||||
|
with updated_at
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from github import Github
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
__author__ = "nodiscc"
|
||||||
|
__copyright__ = "Copyright 2019, nodiscc"
|
||||||
|
__credits__ = ["https://github.com/awesome-selfhosted/awesome-selfhosted"]
|
||||||
|
__license__ = "MIT"
|
||||||
|
__version__ = "1.0"
|
||||||
|
__maintainer__ = "nodiscc"
|
||||||
|
__email__ = "[email protected]"
|
||||||
|
__status__ = "Production"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
access_token = os.environ['GITHUB_TOKEN']
|
||||||
|
|
||||||
|
""" find all URLs of the form https://github.com/owner/repo """
|
||||||
|
with open('README.md', 'r') as readme:
|
||||||
|
data = readme.read()
|
||||||
|
project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data)
|
||||||
|
|
||||||
|
urls = sorted(set(project_urls))
|
||||||
|
|
||||||
|
""" Uncomment this to debug the list of matched URLs """
|
||||||
|
# print(str(urls))
|
||||||
|
# exit(0)
|
||||||
|
|
||||||
|
""" login to github API """
|
||||||
|
g = Github(access_token)
|
||||||
|
|
||||||
|
""" load project metadata, output last commit date and URL """
|
||||||
|
for url in urls:
|
||||||
|
project = re.sub('https://github.com/', '', url)
|
||||||
|
repo = g.get_repo(project)
|
||||||
|
print(str(repo.pushed_at) + ' https://github.com/' + project)
|
251
docs/awesome-selfhosted/tests/test.js
Normal file
251
docs/awesome-selfhosted/tests/test.js
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
// USAGE:
|
||||||
|
// node test.js -r README.md (Checks whole file)
|
||||||
|
// node test.js -r README.md -d temp.md (Checks just the diff)
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const chalk = require('chalk');
|
||||||
|
let licenses = new Set();
|
||||||
|
let pr = false;
|
||||||
|
let readme;
|
||||||
|
let diff;
|
||||||
|
|
||||||
|
//Parse the command options and set the pr var
|
||||||
|
function parseArgs(args) {
|
||||||
|
if ( args.indexOf('-r', 2) > 0 ) {
|
||||||
|
readme = fs.readFileSync(args[args.indexOf('-r', 2)+1], 'utf8')
|
||||||
|
}
|
||||||
|
if (args.indexOf('-d', 2) > 0) {
|
||||||
|
pr = true;
|
||||||
|
diff = fs.readFileSync(args[args.indexOf('-d', 2)+1], 'utf8');
|
||||||
|
}
|
||||||
|
if ( pr === true) {
|
||||||
|
console.log(chalk.blue(`Running on PR. README.md: ${args[args.indexOf('-r', 2)+1]} diff: ${args[args.indexOf('-d', 2)+1]}`))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to find lines with entries
|
||||||
|
function entryFilter(md) {
|
||||||
|
const linepatt = /^\s{0,2}-\s\[.*`/;
|
||||||
|
return linepatt.test(md);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to find lines with licenses
|
||||||
|
function licenseFilter(md) {
|
||||||
|
const linepatt = /^- `.*` - .*/;
|
||||||
|
return linepatt.test(md)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to split lines into array
|
||||||
|
function split(text) {
|
||||||
|
return text.split(/\r?\n/);
|
||||||
|
}
|
||||||
|
|
||||||
|
// All entries should match this pattern. If matches pattern returns true.
|
||||||
|
function findPattern(text) {
|
||||||
|
const patt = /^\s{0,2}-\s\[.*?\]\(.*?\) (`⚠` )?- .{0,249}?\.( \(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))? \`.*?\` \`.*?\`$/;
|
||||||
|
if (patt.test(text) === true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parses SPDX identifiers from list of licenses
|
||||||
|
function parseLicense(md) {
|
||||||
|
const patt = /^- `(.*)` - .*/
|
||||||
|
return patt.exec(md)[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
//Test '- [Name](http://homepage/)'
|
||||||
|
function testMainLink(text) {
|
||||||
|
let testA = /(^ {0,2}- \[.*?\]\([^)]*\.[^)]*?\))(?=\ ?\-?\ ?\w)/ // /(^ {0,2}- \[.*?\]\(.*\))(?=.?-? ?\w)/;
|
||||||
|
const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/;
|
||||||
|
if (!testA.test(text)) {
|
||||||
|
let a1 = testA1.exec(text)[2];
|
||||||
|
return chalk.red(text.replace(a1, ''))
|
||||||
|
}
|
||||||
|
return chalk.green(testA.exec(text)[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
//Test '`⚠` - Short description, less than 250 characters.'
|
||||||
|
function testDescription(text) {
|
||||||
|
const testB = /( - .*\. )(?:(\(?\[?|\`))/;
|
||||||
|
const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/;
|
||||||
|
const testB2 = /((\(\[|\`).*$)/;
|
||||||
|
if (!testB.test(text)) {
|
||||||
|
let b1 = testA1.exec(text)[1];
|
||||||
|
let b2 = testB2.exec(text)[1];
|
||||||
|
return chalk.red(text.replace(b1, '').replace(b2, ''))
|
||||||
|
}
|
||||||
|
return chalk.green(testB.exec(text)[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
//If present, tests '([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps))'
|
||||||
|
function testSrcDemCli(text) {
|
||||||
|
let testC = text.search(/\.\ \(|\.\ \[|\ \(\[[sSdDcC]/); // /\(\[|\)\,|\)\)/);
|
||||||
|
let testD = /(?<=\w. )(\(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))(?= \`?)/;
|
||||||
|
const testD1 = /(^- \W[a-zA-Z0-9-_ .]*\W{0,2}http[^\[]*)(?<= )/;
|
||||||
|
const testD2 = /(\`.*\` \`.*\`$)/;
|
||||||
|
if ((testC > -1) && (!testD.test(text))) {
|
||||||
|
let d1 = testD1.exec(text)[1];
|
||||||
|
let d2 = testD2.exec(text)[1];
|
||||||
|
return chalk.red(text.replace(d1, '').replace(d2, ''))
|
||||||
|
} else if (testC > -1) {
|
||||||
|
return chalk.green(testD.exec(text)[1])
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tests '`License` `Language`'
|
||||||
|
function testLangLic(text) {
|
||||||
|
const testD2 = /(\`.*\` \`.*\`$)/;
|
||||||
|
let testE = testD2.test(text);
|
||||||
|
const testE1 = /(^[^`]*)/;
|
||||||
|
if (!testE) {
|
||||||
|
let e1 = testE1.exec(text)[1];
|
||||||
|
return chalk.red(text.replace(e1, ''))
|
||||||
|
}
|
||||||
|
return chalk.green(testD2.exec(text)[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
//Runs all the syntax tests...
|
||||||
|
function findError(text) {
|
||||||
|
let res
|
||||||
|
res = testMainLink(text)
|
||||||
|
res += testDescription(text)
|
||||||
|
res += testSrcDemCli(text)
|
||||||
|
res += testLangLic(text)
|
||||||
|
return res + `\n`
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if license is in the list of licenses.
|
||||||
|
function testLicense(md) {
|
||||||
|
let pass = true;
|
||||||
|
let lFailed = []
|
||||||
|
let lPassed = []
|
||||||
|
const regex = /.*\`(.*)\` .*$/;
|
||||||
|
try {
|
||||||
|
for (l of regex.exec(md)[1].split("/")) {
|
||||||
|
if (!licenses.has(l)) {
|
||||||
|
pass = false;
|
||||||
|
lPassed.push(l)
|
||||||
|
}
|
||||||
|
lFailed.push(l)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(err) {
|
||||||
|
console.log(chalk.yellow("Error in License syntax, license not checked against list."))
|
||||||
|
return [false, "", ""]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return [pass, lFailed, lPassed]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Parses name from entry
|
||||||
|
function parseName(md) {
|
||||||
|
const regex = /^\W*(.*?)\W/
|
||||||
|
return regex.exec(md)[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
function entryErrorCheck() {
|
||||||
|
const lines = split(readme); // Inserts each line into the entries array
|
||||||
|
let totalFail = 0;
|
||||||
|
let totalPass = 0;
|
||||||
|
let total = 0;
|
||||||
|
let entries = [];
|
||||||
|
let diffEntries = [];
|
||||||
|
|
||||||
|
if (lines[0] === "") {
|
||||||
|
console.log(chalk.red("0 Entries Found, check your commandline arguments"))
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
for (let i = 0; i < lines.length; i ++) { // Loop through array of lines
|
||||||
|
if (entryFilter(lines[i]) === true) { // filter out lines that don't start with * [)
|
||||||
|
e = {};
|
||||||
|
e.raw = lines[i];
|
||||||
|
e.line = i + 1
|
||||||
|
entries.push(e);
|
||||||
|
} else if (licenseFilter(lines[i]) === true) {
|
||||||
|
licenses.add(parseLicense(lines[i]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pr === true) {
|
||||||
|
console.log(chalk.cyan("Only testing the diff from the PR.\n"))
|
||||||
|
const diffLines = split(diff); // Inserts each line of diff into an array
|
||||||
|
for (let l of diffLines) {
|
||||||
|
if (entryFilter(l) === true) { // filter out lines that don't start with * [)
|
||||||
|
e = {};
|
||||||
|
e.raw = l;
|
||||||
|
diffEntries.push(e);
|
||||||
|
} else if (licenseFilter(l) === true) {
|
||||||
|
licenses.add(parseLicense(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (diffEntries.length === 0) {
|
||||||
|
console.log("No entries changed in README.md, Exiting...")
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
total = diffEntries.length
|
||||||
|
for (let e of diffEntries) {
|
||||||
|
e.pass = true
|
||||||
|
e.name = parseName(e.raw)
|
||||||
|
if (!findPattern(e.raw)) {
|
||||||
|
e.highlight = findError(e.raw);
|
||||||
|
e.pass = false;
|
||||||
|
console.log(e.highlight)
|
||||||
|
}
|
||||||
|
e.licenseTest = testLicense(e.raw);
|
||||||
|
if (!e.licenseTest) {
|
||||||
|
e.pass = false;
|
||||||
|
console.log(chalk.red(`${e.name}'s license is not on License list.`))
|
||||||
|
}
|
||||||
|
if (e.pass) {
|
||||||
|
totalPass++
|
||||||
|
} else {
|
||||||
|
totalFail++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(chalk.cyan("Testing entire README.md\n"))
|
||||||
|
total = entries.length
|
||||||
|
for (let e of entries) {
|
||||||
|
e.pass = true
|
||||||
|
e.name = parseName(e.raw)
|
||||||
|
if (!findPattern(e.raw)) {
|
||||||
|
e.highlight = findError(e.raw);
|
||||||
|
e.pass = false;
|
||||||
|
console.log(`${chalk.yellow(e.line + ": ")}${e.highlight}`);
|
||||||
|
syntax = e.highlight;
|
||||||
|
}
|
||||||
|
e.licenseTest = testLicense(e.raw);
|
||||||
|
if (!e.licenseTest[0]) {
|
||||||
|
e.pass = false;
|
||||||
|
console.log(chalk.yellow(e.line + ": ") + `${e.name}'s license ${chalk.red(`'${e.licenseTest[1]}'`)} is not on the License list.\n`)
|
||||||
|
}
|
||||||
|
if (e.pass) {
|
||||||
|
totalPass++
|
||||||
|
} else {
|
||||||
|
totalFail++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (totalFail > 0) {
|
||||||
|
console.log(chalk.blue(`\n-----------------------------\n`))
|
||||||
|
console.log(chalk.red(`${totalFail} Failed, `) + chalk.green(`${totalPass} Passed, `) + chalk.blue(`of ${total}`))
|
||||||
|
console.log(chalk.blue(`\n-----------------------------\n`))
|
||||||
|
process.exit(1);
|
||||||
|
} else {
|
||||||
|
console.log(chalk.blue(`\n-----------------------------\n`))
|
||||||
|
console.log(chalk.green(`${totalPass} Passed of ${total}`))
|
||||||
|
console.log(chalk.blue(`\n-----------------------------\n`))
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parseArgs(process.argv)
|
||||||
|
entryErrorCheck();
|
14
docs/css/theme.css
Normal file
14
docs/css/theme.css
Normal file
File diff suppressed because one or more lines are too long
140
docs/css/theme_extra.css
Normal file
140
docs/css/theme_extra.css
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
/*
|
||||||
|
* Wrap inline code samples otherwise they shoot of the side and
|
||||||
|
* can't be read at all.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/313
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/233
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/834
|
||||||
|
*/
|
||||||
|
.rst-content code {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: break-word;
|
||||||
|
padding: 2px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make code blocks display as blocks and give them the appropriate
|
||||||
|
* font size and padding.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/855
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/834
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/233
|
||||||
|
*/
|
||||||
|
.rst-content pre code {
|
||||||
|
white-space: pre;
|
||||||
|
word-wrap: normal;
|
||||||
|
display: block;
|
||||||
|
padding: 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix code colors
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/2027
|
||||||
|
*/
|
||||||
|
.rst-content code {
|
||||||
|
color: #E74C3C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rst-content pre code {
|
||||||
|
color: #000;
|
||||||
|
background: #f8f8f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fix link colors when the link text is inline code.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/718
|
||||||
|
*/
|
||||||
|
a code {
|
||||||
|
color: #2980B9;
|
||||||
|
}
|
||||||
|
a:hover code {
|
||||||
|
color: #3091d1;
|
||||||
|
}
|
||||||
|
a:visited code {
|
||||||
|
color: #9B59B6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The CSS classes from highlight.js seem to clash with the
|
||||||
|
* ReadTheDocs theme causing some code to be incorrectly made
|
||||||
|
* bold and italic.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/411
|
||||||
|
*/
|
||||||
|
pre .cs, pre .c {
|
||||||
|
font-weight: inherit;
|
||||||
|
font-style: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fix some issues with the theme and non-highlighted code
|
||||||
|
* samples. Without and highlighting styles attached the
|
||||||
|
* formatting is broken.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/319
|
||||||
|
*/
|
||||||
|
.rst-content .no-highlight {
|
||||||
|
display: block;
|
||||||
|
padding: 0.5em;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Additions specific to the search functionality provided by MkDocs
|
||||||
|
*/
|
||||||
|
|
||||||
|
.search-results {
|
||||||
|
margin-top: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-results article {
|
||||||
|
border-top: 1px solid #E1E4E5;
|
||||||
|
padding-top: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-results article:first-child {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .search-query {
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 50px;
|
||||||
|
padding: 6px 12px; /* csslint allow: box-model */
|
||||||
|
border-color: #D1D4D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Improve inline code blocks within admonitions.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/656
|
||||||
|
*/
|
||||||
|
.rst-content .admonition code {
|
||||||
|
color: #404040;
|
||||||
|
border: 1px solid #c7c9cb;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
background: #f8fbfd;
|
||||||
|
background: rgba(255, 255, 255, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Account for wide tables which go off the side.
|
||||||
|
* Override borders to avoid wierdness on narrow tables.
|
||||||
|
*
|
||||||
|
* https://github.com/mkdocs/mkdocs/issues/834
|
||||||
|
* https://github.com/mkdocs/mkdocs/pull/1034
|
||||||
|
*/
|
||||||
|
.rst-content .section .docutils {
|
||||||
|
width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
display: block;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
td, th {
|
||||||
|
border: 1px solid #e1e4e5 !important; /* csslint allow: important */
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
BIN
docs/fonts/Lato/lato-bold.eot
Normal file
BIN
docs/fonts/Lato/lato-bold.eot
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bold.ttf
Normal file
BIN
docs/fonts/Lato/lato-bold.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bold.woff
Normal file
BIN
docs/fonts/Lato/lato-bold.woff
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bold.woff2
Normal file
BIN
docs/fonts/Lato/lato-bold.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bolditalic.eot
Normal file
BIN
docs/fonts/Lato/lato-bolditalic.eot
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bolditalic.ttf
Normal file
BIN
docs/fonts/Lato/lato-bolditalic.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bolditalic.woff
Normal file
BIN
docs/fonts/Lato/lato-bolditalic.woff
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-bolditalic.woff2
Normal file
BIN
docs/fonts/Lato/lato-bolditalic.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-italic.eot
Normal file
BIN
docs/fonts/Lato/lato-italic.eot
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-italic.ttf
Normal file
BIN
docs/fonts/Lato/lato-italic.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-italic.woff
Normal file
BIN
docs/fonts/Lato/lato-italic.woff
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-italic.woff2
Normal file
BIN
docs/fonts/Lato/lato-italic.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-regular.eot
Normal file
BIN
docs/fonts/Lato/lato-regular.eot
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-regular.ttf
Normal file
BIN
docs/fonts/Lato/lato-regular.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-regular.woff
Normal file
BIN
docs/fonts/Lato/lato-regular.woff
Normal file
Binary file not shown.
BIN
docs/fonts/Lato/lato-regular.woff2
Normal file
BIN
docs/fonts/Lato/lato-regular.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.eot
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.eot
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.woff
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.woff
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.eot
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.eot
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.woff
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.woff
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
Normal file
Binary file not shown.
BIN
docs/fonts/RobotoSlab/roboto-slab.eot
Normal file
BIN
docs/fonts/RobotoSlab/roboto-slab.eot
Normal file
Binary file not shown.
BIN
docs/fonts/fontawesome-webfont.eot
Normal file
BIN
docs/fonts/fontawesome-webfont.eot
Normal file
Binary file not shown.
2671
docs/fonts/fontawesome-webfont.svg
Normal file
2671
docs/fonts/fontawesome-webfont.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 434 KiB |
BIN
docs/fonts/fontawesome-webfont.ttf
Normal file
BIN
docs/fonts/fontawesome-webfont.ttf
Normal file
Binary file not shown.
BIN
docs/fonts/fontawesome-webfont.woff
Normal file
BIN
docs/fonts/fontawesome-webfont.woff
Normal file
Binary file not shown.
BIN
docs/fonts/fontawesome-webfont.woff2
Normal file
BIN
docs/fonts/fontawesome-webfont.woff2
Normal file
Binary file not shown.
BIN
docs/img/favicon.ico
Normal file
BIN
docs/img/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
171
docs/index.html
Normal file
171
docs/index.html
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="None">
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="img/favicon.ico">
|
||||||
|
<title>Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Current page data
|
||||||
|
var mkdocs_page_name = "Home";
|
||||||
|
var mkdocs_page_input_path = "index.md";
|
||||||
|
var mkdocs_page_url = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l1 current"><a class="reference internal current" href=".">Home</a>
|
||||||
|
<ul class="current">
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="#awesome-selfhosted">Awesome Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="awesome-selfhosted/">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="awesome-selfhosted/non-free/">Proprietary Software</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="#">Info</a>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="awesome-selfhosted/Info/Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="awesome-selfhosted/Info/CONTRIBUTING/">Contributing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="awesome-selfhosted/Info/LICENSE/">License</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href=".">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href=".">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li>Home</li>
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
<h1 id="home">Home</h1>
|
||||||
|
<h2 id="awesome-selfhosted">Awesome Selfhosted</h2>
|
||||||
|
<p><img src="selfhosted.png" style="width: 10%;"></img>
|
||||||
|
<a href="https://github.com/sindresorhus/awesome"><img alt="Awesome" src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" /></a> <a href="https://github.com/awesome-selfhosted/awesome-selfhosted/issues/2266"><img alt="" src="https://img.shields.io/travis/awesome-selfhosted/awesome-selfhosted/master?label=link%20checks" /></a></p>
|
||||||
|
<p>Self-hosting is the practice of locally hosting and managing applications instead of renting from <a href="https://www.gnu.org/philosophy/who-does-that-server-really-serve.html">SaaSS</a> providers.</p>
|
||||||
|
<p>This is a list of <a href="https://en.wikipedia.org/wiki/Free_software">Free</a> Software <a href="https://en.wikipedia.org/wiki/Network_service">network services</a> and <a href="https://en.wikipedia.org/wiki/Web_application">web applications</a> which can be hosted locally. Non-Free software is listed on the <a href="awesome-selfhosted/non-free/">Non-Free</a> page.</p>
|
||||||
|
<p>See <a href="awesome-selfhosted/info/CONTRIBUTING.md">Contributing</a>.</p>
|
||||||
|
<p>See <a href="https://reddit.com/r/selfhosted">r/SelfHosted</a></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||||
|
|
||||||
|
<a href="awesome-selfhosted/" class="btn btn-neutral float-right" title="Awesome-Selfhosted">Next <span class="icon icon-circle-arrow-right"></span></a>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="margin-left: 15px"><a href="awesome-selfhosted/" style="color: #fcfcfc">Next »</a></span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '.';</script>
|
||||||
|
<script src="js/theme.js" defer></script>
|
||||||
|
<script src="search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
MkDocs version : 1.1.2
|
||||||
|
Build Date UTC : 2020-11-11 15:41:21.910797+00:00
|
||||||
|
-->
|
4
docs/js/jquery-2.1.1.min.js
vendored
Normal file
4
docs/js/jquery-2.1.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/js/modernizr-2.8.3.min.js
vendored
Normal file
1
docs/js/modernizr-2.8.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
docs/js/theme.js
Normal file
3
docs/js/theme.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/* sphinx_rtd_theme version 0.4.1 | MIT license */
|
||||||
|
/* Built 20180727 10:07 */
|
||||||
|
require=function n(e,i,t){function o(s,a){if(!i[s]){if(!e[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=i[s]={exports:{}};e[s][0].call(u.exports,function(n){var i=e[s][1][n];return o(i||n)},u,u.exports,n,e,i,t)}return i[s].exports}for(var r="function"==typeof require&&require,s=0;s<t.length;s++)o(t[s]);return o}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var e=this;void 0===n&&(n=!0),e.isRunning||(e.isRunning=!0,jQuery(function(i){e.init(i),e.reset(),e.win.on("hashchange",e.reset),n&&e.win.on("scroll",function(){e.linkScroll||e.winScroll||(e.winScroll=!0,requestAnimationFrame(function(){e.onScroll()}))}),e.win.on("resize",function(){e.winResize||(e.winResize=!0,requestAnimationFrame(function(){e.onResize()}))}),e.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var i=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(i),e.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")}),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var i=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",function(n){return e.toggleCurrent(i),n.stopPropagation(),!1}),i.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}i.length>0&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],i=0;i<e.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[e[i]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[i]+"CancelAnimationFrame"]||window[e[i]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,i){var t=(new Date).getTime(),o=Math.max(0,16-(t-n)),r=window.setTimeout(function(){e(t+o)},o);return n=t+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);
|
148
docs/search.html
Normal file
148
docs/search.html
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
|
<title>Awesome SelfHosted</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./css/theme.css" />
|
||||||
|
<link rel="stylesheet" href="./css/theme_extra.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
|
||||||
|
|
||||||
|
<script src="./js/jquery-2.1.1.min.js" defer></script>
|
||||||
|
<script src="./js/modernizr-2.8.3.min.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/rust.min.js"></script>
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="wy-body-for-nav" role="document">
|
||||||
|
|
||||||
|
<div class="wy-grid-for-nav">
|
||||||
|
|
||||||
|
|
||||||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
||||||
|
<div class="wy-side-scroll">
|
||||||
|
<div class="wy-side-nav-search">
|
||||||
|
<a href="./." class="icon icon-home"> Awesome SelfHosted</a>
|
||||||
|
<div role="search">
|
||||||
|
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
|
||||||
|
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="./.">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="caption"><span class="caption-text">Awesome selfhosted</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="./awesome-selfhosted/">Awesome-Selfhosted</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="./awesome-selfhosted/non-free/">Proprietary Software</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="#">Info</a>
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="./awesome-selfhosted/Info/Authors/">Authors</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="./awesome-selfhosted/Info/CONTRIBUTING/">Contributing</a>
|
||||||
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="./awesome-selfhosted/Info/LICENSE/">License</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
|
<a href="./.">Awesome SelfHosted</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wy-nav-content">
|
||||||
|
<div class="rst-content">
|
||||||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||||
|
<ul class="wy-breadcrumbs">
|
||||||
|
<li><a href="./.">Docs</a> »</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="wy-breadcrumbs-aside">
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div role="main">
|
||||||
|
<div class="section">
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="search">Search Results</h1>
|
||||||
|
|
||||||
|
<form id="content_search" action="search.html">
|
||||||
|
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
|
||||||
|
<input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" autocomplete="off" autofocus title="Type search term here">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div id="mkdocs-search-results" class="search-results">
|
||||||
|
Searching...
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
|
<div role="contentinfo">
|
||||||
|
<!-- Copyright etc -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rst-versions" role="note" aria-label="versions">
|
||||||
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<script>var base_url = '.';</script>
|
||||||
|
<script src="./js/theme.js" defer></script>
|
||||||
|
<script src="./search/main.js" defer></script>
|
||||||
|
<script defer>
|
||||||
|
window.onload = function () {
|
||||||
|
SphinxRtdTheme.Navigation.enable(true);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
3475
docs/search/lunr.js
Normal file
3475
docs/search/lunr.js
Normal file
File diff suppressed because it is too large
Load diff
98
docs/search/main.js
Normal file
98
docs/search/main.js
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
function getSearchTermFromLocation() {
|
||||||
|
var sPageURL = window.location.search.substring(1);
|
||||||
|
var sURLVariables = sPageURL.split('&');
|
||||||
|
for (var i = 0; i < sURLVariables.length; i++) {
|
||||||
|
var sParameterName = sURLVariables[i].split('=');
|
||||||
|
if (sParameterName[0] == 'q') {
|
||||||
|
return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function joinUrl (base, path) {
|
||||||
|
if (path.substring(0, 1) === "/") {
|
||||||
|
// path starts with `/`. Thus it is absolute.
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
if (base.substring(base.length-1) === "/") {
|
||||||
|
// base ends with `/`
|
||||||
|
return base + path;
|
||||||
|
}
|
||||||
|
return base + "/" + path;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatResult (location, title, summary) {
|
||||||
|
return '<article><h3><a href="' + joinUrl(base_url, location) + '">'+ title + '</a></h3><p>' + summary +'</p></article>';
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayResults (results) {
|
||||||
|
var search_results = document.getElementById("mkdocs-search-results");
|
||||||
|
while (search_results.firstChild) {
|
||||||
|
search_results.removeChild(search_results.firstChild);
|
||||||
|
}
|
||||||
|
if (results.length > 0){
|
||||||
|
for (var i=0; i < results.length; i++){
|
||||||
|
var result = results[i];
|
||||||
|
var html = formatResult(result.location, result.title, result.summary);
|
||||||
|
search_results.insertAdjacentHTML('beforeend', html);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
search_results.insertAdjacentHTML('beforeend', "<p>No results found</p>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function doSearch () {
|
||||||
|
var query = document.getElementById('mkdocs-search-query').value;
|
||||||
|
if (query.length > min_search_length) {
|
||||||
|
if (!window.Worker) {
|
||||||
|
displayResults(search(query));
|
||||||
|
} else {
|
||||||
|
searchWorker.postMessage({query: query});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Clear results for short queries
|
||||||
|
displayResults([]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initSearch () {
|
||||||
|
var search_input = document.getElementById('mkdocs-search-query');
|
||||||
|
if (search_input) {
|
||||||
|
search_input.addEventListener("keyup", doSearch);
|
||||||
|
}
|
||||||
|
var term = getSearchTermFromLocation();
|
||||||
|
if (term) {
|
||||||
|
search_input.value = term;
|
||||||
|
doSearch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onWorkerMessage (e) {
|
||||||
|
if (e.data.allowSearch) {
|
||||||
|
initSearch();
|
||||||
|
} else if (e.data.results) {
|
||||||
|
var results = e.data.results;
|
||||||
|
displayResults(results);
|
||||||
|
} else if (e.data.config) {
|
||||||
|
min_search_length = e.data.config.min_search_length-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window.Worker) {
|
||||||
|
console.log('Web Worker API not supported');
|
||||||
|
// load index in main thread
|
||||||
|
$.getScript(joinUrl(base_url, "search/worker.js")).done(function () {
|
||||||
|
console.log('Loaded worker');
|
||||||
|
init();
|
||||||
|
window.postMessage = function (msg) {
|
||||||
|
onWorkerMessage({data: msg});
|
||||||
|
};
|
||||||
|
}).fail(function (jqxhr, settings, exception) {
|
||||||
|
console.error('Could not load worker.js');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Wrap search in a web worker
|
||||||
|
var searchWorker = new Worker(joinUrl(base_url, "search/worker.js"));
|
||||||
|
searchWorker.postMessage({init: true});
|
||||||
|
searchWorker.onmessage = onWorkerMessage;
|
||||||
|
}
|
1
docs/search/search_index.json
Normal file
1
docs/search/search_index.json
Normal file
File diff suppressed because one or more lines are too long
130
docs/search/worker.js
Normal file
130
docs/search/worker.js
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
var base_path = 'function' === typeof importScripts ? '.' : '/search/';
|
||||||
|
var allowSearch = false;
|
||||||
|
var index;
|
||||||
|
var documents = {};
|
||||||
|
var lang = ['en'];
|
||||||
|
var data;
|
||||||
|
|
||||||
|
function getScript(script, callback) {
|
||||||
|
console.log('Loading script: ' + script);
|
||||||
|
$.getScript(base_path + script).done(function () {
|
||||||
|
callback();
|
||||||
|
}).fail(function (jqxhr, settings, exception) {
|
||||||
|
console.log('Error: ' + exception);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getScriptsInOrder(scripts, callback) {
|
||||||
|
if (scripts.length === 0) {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
getScript(scripts[0], function() {
|
||||||
|
getScriptsInOrder(scripts.slice(1), callback);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadScripts(urls, callback) {
|
||||||
|
if( 'function' === typeof importScripts ) {
|
||||||
|
importScripts.apply(null, urls);
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
getScriptsInOrder(urls, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onJSONLoaded () {
|
||||||
|
data = JSON.parse(this.responseText);
|
||||||
|
var scriptsToLoad = ['lunr.js'];
|
||||||
|
if (data.config && data.config.lang && data.config.lang.length) {
|
||||||
|
lang = data.config.lang;
|
||||||
|
}
|
||||||
|
if (lang.length > 1 || lang[0] !== "en") {
|
||||||
|
scriptsToLoad.push('lunr.stemmer.support.js');
|
||||||
|
if (lang.length > 1) {
|
||||||
|
scriptsToLoad.push('lunr.multi.js');
|
||||||
|
}
|
||||||
|
for (var i=0; i < lang.length; i++) {
|
||||||
|
if (lang[i] != 'en') {
|
||||||
|
scriptsToLoad.push(['lunr', lang[i], 'js'].join('.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
loadScripts(scriptsToLoad, onScriptsLoaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onScriptsLoaded () {
|
||||||
|
console.log('All search scripts loaded, building Lunr index...');
|
||||||
|
if (data.config && data.config.separator && data.config.separator.length) {
|
||||||
|
lunr.tokenizer.separator = new RegExp(data.config.separator);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.index) {
|
||||||
|
index = lunr.Index.load(data.index);
|
||||||
|
data.docs.forEach(function (doc) {
|
||||||
|
documents[doc.location] = doc;
|
||||||
|
});
|
||||||
|
console.log('Lunr pre-built index loaded, search ready');
|
||||||
|
} else {
|
||||||
|
index = lunr(function () {
|
||||||
|
if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) {
|
||||||
|
this.use(lunr[lang[0]]);
|
||||||
|
} else if (lang.length > 1) {
|
||||||
|
this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility
|
||||||
|
}
|
||||||
|
this.field('title');
|
||||||
|
this.field('text');
|
||||||
|
this.ref('location');
|
||||||
|
|
||||||
|
for (var i=0; i < data.docs.length; i++) {
|
||||||
|
var doc = data.docs[i];
|
||||||
|
this.add(doc);
|
||||||
|
documents[doc.location] = doc;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log('Lunr index built, search ready');
|
||||||
|
}
|
||||||
|
allowSearch = true;
|
||||||
|
postMessage({config: data.config});
|
||||||
|
postMessage({allowSearch: allowSearch});
|
||||||
|
}
|
||||||
|
|
||||||
|
function init () {
|
||||||
|
var oReq = new XMLHttpRequest();
|
||||||
|
oReq.addEventListener("load", onJSONLoaded);
|
||||||
|
var index_path = base_path + '/search_index.json';
|
||||||
|
if( 'function' === typeof importScripts ){
|
||||||
|
index_path = 'search_index.json';
|
||||||
|
}
|
||||||
|
oReq.open("GET", index_path);
|
||||||
|
oReq.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
function search (query) {
|
||||||
|
if (!allowSearch) {
|
||||||
|
console.error('Assets for search still loading');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var resultDocuments = [];
|
||||||
|
var results = index.search(query);
|
||||||
|
for (var i=0; i < results.length; i++){
|
||||||
|
var result = results[i];
|
||||||
|
doc = documents[result.ref];
|
||||||
|
doc.summary = doc.text.substring(0, 200);
|
||||||
|
resultDocuments.push(doc);
|
||||||
|
}
|
||||||
|
return resultDocuments;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( 'function' === typeof importScripts ) {
|
||||||
|
onmessage = function (e) {
|
||||||
|
if (e.data.init) {
|
||||||
|
init();
|
||||||
|
} else if (e.data.query) {
|
||||||
|
postMessage({ results: search(e.data.query) });
|
||||||
|
} else {
|
||||||
|
console.error("Worker - Unrecognized message: " + e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
BIN
docs/selfhosted.png
Normal file
BIN
docs/selfhosted.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.4 KiB |
27
docs/sitemap.xml
Normal file
27
docs/sitemap.xml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2020-11-11</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url>
|
||||||
|
</urlset>
|
BIN
docs/sitemap.xml.gz
Normal file
BIN
docs/sitemap.xml.gz
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue