mirror of
https://github.com/awesome-selfhosted/awesome-selfhosted.git
synced 2025-04-22 16:58:06 +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__ = "nodiscc@gmail.com"
|
||||
__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
Add a link
Reference in a new issue