mirror of
https://github.com/Start9Labs/documentation.git
synced 2026-03-31 04:23:41 +00:00
657 lines
34 KiB
HTML
657 lines
34 KiB
HTML
|
||
|
||
|
||
|
||
<!DOCTYPE html>
|
||
<html class="no-js" lang="en">
|
||
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width initial-scale=1" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
<title> Service Package Overview | Start9 Docs
|
||
</title>
|
||
<meta name="description" content="Start9 Product Documentation and Education Guides" />
|
||
<link
|
||
rel="icon"
|
||
href="../../../_static/img/favicon.ico"
|
||
type="image/x-icon"
|
||
/>
|
||
<link
|
||
rel="icon"
|
||
href="../../../_static/img/favicon-32x32.png"
|
||
sizes="32x32"
|
||
/>
|
||
<link
|
||
rel="icon"
|
||
href="../../../_static/img/favicon-228x228.png"
|
||
sizes="192x192"
|
||
/>
|
||
<link
|
||
rel="apple-touch-icon"
|
||
href="../../../_static/img/favicon-228x228.png"
|
||
/>
|
||
<meta
|
||
name="msapplication-TileImage"
|
||
href="../../../_static/img/favicon-228x228.png"
|
||
/>
|
||
<link rel="canonical" href="https://docs.start9.com/" />
|
||
<link rel="author" href="mailto:support@start9labs.com" />
|
||
<!-- connect to domain of font files -->
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
|
||
<!-- optionally increase loading priority -->
|
||
<link
|
||
rel="preload"
|
||
as="style"
|
||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,200;0,300;0,400;0,500;0,700;1,400&display=swap"
|
||
/>
|
||
|
||
<!-- async CSS -->
|
||
<link
|
||
rel="stylesheet"
|
||
media="print"
|
||
onload="this.onload=null;this.removeAttribute('media');"
|
||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,200;0,300;0,400;0,500;0,700;1,400&display=swap"
|
||
/>
|
||
|
||
<!-- no-JS fallback -->
|
||
<noscript>
|
||
<link
|
||
rel="stylesheet"
|
||
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,200;0,300;0,400;0,500;0,700;1,400&display=swap"
|
||
/>
|
||
</noscript>
|
||
<link
|
||
rel="stylesheet"
|
||
href="../../../_static/css/main.css"
|
||
type="text/css"
|
||
/>
|
||
<link
|
||
rel="stylesheet"
|
||
href="../../../_static/pygments.css"
|
||
type="text/css"
|
||
/> <link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
|
||
|
||
<script
|
||
type="text/javascript"
|
||
id="documentation_options"
|
||
data-url_root="../../../"
|
||
src="../../../_static/documentation_options.js"
|
||
></script>
|
||
<script
|
||
type="text/javascript"
|
||
src="../../../_static/js/runtime.bundle.js"
|
||
></script>
|
||
<script
|
||
type="text/javascript"
|
||
src="../../../_static/js/main.bundle.js"
|
||
></script> <script src="../../../_static/underscore.js"></script> <script src="../../../_static/doctools.js"></script> <script src="../../../_static/language_data.js"></script> <script src="../../../_static/clipboard.min.js"></script> <script src="../../../_static/copybutton.js"></script>
|
||
|
||
<!-- Google Tag Manager -->
|
||
<script>
|
||
(function (w, d, s, l, i) {
|
||
w[l] = w[l] || [];
|
||
w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
|
||
var f = d.getElementsByTagName(s)[0],
|
||
j = d.createElement(s),
|
||
dl = l != "dataLayer" ? "&l=" + l : "";
|
||
j.async = true;
|
||
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
|
||
f.parentNode.insertBefore(j, f);
|
||
})(window, document, "script", "dataLayer", "GTM-T8P2JP");
|
||
</script>
|
||
<!-- End Google Tag Manager -->
|
||
<!-- Marketo -->
|
||
<script type="text/javascript">
|
||
(function () {
|
||
var didInit = false;
|
||
function initMunchkin() {
|
||
if (didInit === false) {
|
||
didInit = true;
|
||
Munchkin.init("791-QBF-350");
|
||
}
|
||
}
|
||
var s = document.createElement("script");
|
||
s.type = "text/javascript";
|
||
s.async = true;
|
||
s.src = "//munchkin.marketo.net/munchkin.js";
|
||
s.onreadystatechange = function () {
|
||
if (this.readyState == "complete" || this.readyState == "loaded") {
|
||
initMunchkin();
|
||
}
|
||
};
|
||
s.onload = initMunchkin;
|
||
document.getElementsByTagName("head")[0].appendChild(s);
|
||
})();
|
||
</script>
|
||
<!-- End Marketo -->
|
||
<!-- Expertrec -->
|
||
<script>
|
||
var id = "e2077224-9ccf-11e9-a0c9-0242ac130002";
|
||
var ci_search = document.createElement("script");
|
||
ci_search.type = "text/javascript";
|
||
ci_search.async = true;
|
||
ci_search.src = "https://cse.expertrec.com/api/js/ci_common.js?id=" + id;
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(ci_search, s);
|
||
</script>
|
||
<!-- End Expertrec -->
|
||
|
||
<!-- Font Awesome -->
|
||
<script
|
||
src="https://kit.fontawesome.com/b1870adf6a.js"
|
||
crossorigin="anonymous"
|
||
></script>
|
||
<!-- End Font Awesome -->
|
||
</head>
|
||
|
||
<body>
|
||
<header class="header">
|
||
<div class="header-logo">
|
||
<a class="header-logo__img" href="https://start9.com/">
|
||
<img
|
||
src="../../../_static/img/logo.png"
|
||
alt="Start9 Logo"
|
||
/>
|
||
</a>
|
||
<span class="header-logo__bar"></span>
|
||
<a class="header-logo__text" href="https://docs.start9.com/">
|
||
Documentation
|
||
</a>
|
||
</div>
|
||
<div class="header-navigation">
|
||
<ul
|
||
class="dropdown menu scylla-dropdown scylla-dropdown--header"
|
||
data-dropdown-menu
|
||
>
|
||
<li class="scylla-dropdown__item">
|
||
<a href="#" class="scylla-dropdown__title"
|
||
>Contributing <i class="chevron scylla-icon scylla-icon--triangle-down"></i
|
||
></a>
|
||
<ul class="menu scylla-dropdown__content">
|
||
<li>
|
||
<a href="https://docs.start9.com/developing"
|
||
><i class="scylla-icon scylla-icon--apps"></i>Developer</a
|
||
>
|
||
</li>
|
||
<li>
|
||
<a href="https://docs.start9.com/service-packaging"
|
||
><i class="scylla-icon scylla-icon--open-source"></i>Service Packaging</a
|
||
>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="scylla-dropdown__item">
|
||
<a href="#" class="scylla-dropdown__title"
|
||
>About <i class="chevron scylla-icon scylla-icon--triangle-down"></i
|
||
></a>
|
||
<ul class="menu scylla-dropdown__content">
|
||
<li>
|
||
<a href="https://docs.start9.com/about">
|
||
<i class="scylla-icon scylla-icon--enterprise"></i>Company</a
|
||
>
|
||
</li>
|
||
<li>
|
||
<a href="https://docs.start9.com/license">
|
||
<i class="scylla-icon scylla-icon--whitepapers"></i>License</a
|
||
>
|
||
</li>
|
||
<li>
|
||
<a href="https://docs.start9.com/careers">
|
||
<i class="scylla-icon scylla-icon--careers"></i>Hiring
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="header-button">
|
||
<a href="https://store.start9.com" class="button" target="_blank">Purchase</a>
|
||
</div>
|
||
</div>
|
||
<div class="header-search-box">
|
||
<div class="search-box">
|
||
<ci-search></ci-search>
|
||
</div>
|
||
</div>
|
||
<div class="side-nav-toggle" data-toggle="side-nav">
|
||
<div class="side-nav-toggle__button">
|
||
<img src="../../../_static/img/menu.svg" alt="Menu" />
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<section class="layout ">
|
||
<div class="content large-order-2">
|
||
|
||
|
||
<div class="pre-content">
|
||
<div class="pre-content__left"><div class="breadcrumbs">
|
||
<span class="bread__item">
|
||
<a
|
||
href="../../../"
|
||
class="bread__highlight"
|
||
>
|
||
<i class="fas fa-home"></i> Start9 Docs</a
|
||
></span
|
||
>
|
||
|
||
<span class="bread__item"
|
||
><a href="../">Service Packaging Guide</a></span
|
||
>
|
||
|
||
<span class="bread__item bread__item--last">Service Package Overview</span>
|
||
</div></div>
|
||
<div class="pre-content__right"><ul
|
||
class="dropdown menu scylla-dropdown scylla-dropdown--contribute"
|
||
data-dropdown-menu
|
||
>
|
||
<li class="scylla-dropdown__item">
|
||
<a class="scylla-dropdown__title" href="#">
|
||
<div class="scylla-dropdown__title--body">
|
||
<i class="icon fa fa-github" aria-hidden="true"></i>
|
||
Contribute
|
||
</div>
|
||
<i class="chevron scylla-icon scylla-icon--chevron-right"></i>
|
||
</a>
|
||
<ul class="menu scylla-dropdown__content">
|
||
<li>
|
||
<a
|
||
href="https://github.com/Start9Labs/documentation/issues/new?title=Issue in page Service Package Overview&&body=I%20would%20like%20to%20report%20an%20issue%20in%20page%20https://docs.start9.com/contributing/services/overview%0A%0A%23%23%23%20Problem%0A%0A%23%23%23%20%20Suggest%20a%20fix"
|
||
target="_blank"
|
||
>Report a doc issue
|
||
<i class="icon fa fa-external-link" aria-hidden="true"></i
|
||
></a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a
|
||
href="https://github.com/Start9Labs/documentation/edit/master/docs/source/contributing/services/overview.rst"
|
||
target="_blank"
|
||
>Edit this page
|
||
<i class="icon fa fa-external-link" aria-hidden="true"></i
|
||
></a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="https://docs.start9.com/contributing/" target="_blank"
|
||
>Learn how to contribute
|
||
<i class="icon fa fa-external-link" aria-hidden="true"></i
|
||
></a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul></div>
|
||
</div>
|
||
<div class="section" id="service-package-overview">
|
||
<span id="id1"></span><h1>Service Package Overview<a class="headerlink" href="#service-package-overview" title="Permalink to this headline">¶</a></h1>
|
||
<p>There are several main components that comprise a service package for EmbassyOS. This overview will introduce them and following sections will dive into technical specifics.</p>
|
||
<p>First, let’s get your system setup with the necessary software dependencies.</p>
|
||
<div class="section" id="environment-setup">
|
||
<h2>Environment Setup<a class="headerlink" href="#environment-setup" title="Permalink to this headline">¶</a></h2>
|
||
<p>At minimum, <code class="docutils literal notranslate"><span class="pre">docker</span></code>, <code class="docutils literal notranslate"><span class="pre">docker-buildx</span></code>, and <code class="docutils literal notranslate"><span class="pre">appmgr</span></code> are required. The rest of the recommendations serve to optimize the build process.</p>
|
||
<div class="section" id="recommended-dependencies">
|
||
<h3>Recommended Dependencies<a class="headerlink" href="#recommended-dependencies" title="Permalink to this headline">¶</a></h3>
|
||
<blockquote>
|
||
<div><p><a class="reference external" href="https://docs.docker.com/get-docker">docker</a></p>
|
||
<p><a class="reference external" href="https://docs.docker.com/buildx/working-with-buildx/">docker-buildx</a></p>
|
||
<p><a class="reference external" href="https://github.com/Start9Labs/embassy-os/tree/master/appmgr">appmgr</a></p>
|
||
<p><a class="reference external" href="https://doc.rust-lang.org/cargo/">cargo</a></p>
|
||
<p><a class="reference external" href="https://mikefarah.gitbook.io/yq">yq (version 4)</a></p>
|
||
<p><a class="reference external" href="https://www.gnu.org/software/make/">make</a></p>
|
||
<p><a class="reference external" href="https://github.com/Start9Labs/rust-musl-cross">musl</a></p>
|
||
</div></blockquote>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="package-components">
|
||
<h2>Package Components<a class="headerlink" href="#package-components" title="Permalink to this headline">¶</a></h2>
|
||
<div class="section" id="image">
|
||
<h3>Image<a class="headerlink" href="#image" title="Permalink to this headline">¶</a></h3>
|
||
<p>Each service boils down to a Docker image. We’re not going to dive into Docker specifics in this guide, since there exists tons of <a class="reference external" href="https://docs.docker.com/">resources</a> for developing with this containerization tool.</p>
|
||
<p>Because the service ultimately runs on a Raspberry Pi, the created Docker image should be a snapshot of an arm based linux environment. The service image is then mounted to the EmbassyOS image during installation. This path is defined in the <a class="reference internal" href="../manifest/#service-manifest"><span class="std std-ref">manifest</span></a> configuration file.</p>
|
||
<p>The image is immutable, meaning that when the service is updated, the image is replaced with a completely new image containing the updated features.</p>
|
||
</div>
|
||
<div class="section" id="volume">
|
||
<h3>Volume<a class="headerlink" href="#volume" title="Permalink to this headline">¶</a></h3>
|
||
<p>Each service application gets a volume allocated to it by EmbassyOS. All service application data is stored in this directory and is persisted across updates.</p>
|
||
<p>The volume directory (for seeding data into the volume) is typically: <code class="docutils literal notranslate"><span class="pre">/root/volumes/<service-id></span></code>.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>Any files that are in the image at the volume path will be overwritten when a backup restore occurs.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="dependencies">
|
||
<h3>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h3>
|
||
<p>When it comes to running your own server, managing dependencies is perhaps the most difficult part. The term “dependency hell” emerged from this sentiment. Even the best developers have lost significant amounts of time trying to find, correct, or clarify documentation for dependencies or dependency configuration. Individuals who manage their own servers have specific technical skills and are willing to devote the time and effort necessary to maintain them. Companies have entire departments dedicated to this feat.</p>
|
||
<p>Some other personal server products aimed at non-technical individuals tackle this problem by simply hard coding dependencies. Since EmbassyOS is a platform for running all open-source, self-hosted software, it is not possible to hard code every possible service, service dependency, and service dependency configuration forever. Instead, Start9 built a new, unprecedented operating system that touts a generalized, intuitive approach to dependency management and service configuration. EmbassyOS enables users to easily and selectively install, uninstall, and update any service they want without getting stuck in dependency hell.</p>
|
||
<p>This may sound cool or neat, but it is more than that: <em>it’s novel</em>. This has never been done before.</p>
|
||
<p>The key to making the system work is a new, domain-specific-language (DSL) and set of standards that are used by developers to define the rules and requirements of their services. Run in the context of EmbassyOS, these rules and requirements appear as simple UI elements, such as inputs, toggles, and drop downs, and they are enforced by validations and clear user instructions. Using this system, what previously required involved time and expertise, can now be done by anyone in a matter of seconds.</p>
|
||
<p>This DSL is utilized in the <a class="reference internal" href="../config/#config-rules"><span class="std std-ref">config rules</span></a> and <a class="reference internal" href="../manifest/#dependencies"><span class="std std-ref">dependencies</span></a> key in the service manifest.</p>
|
||
</div>
|
||
<div class="section" id="manifest">
|
||
<h3>Manifest<a class="headerlink" href="#manifest" title="Permalink to this headline">¶</a></h3>
|
||
<p>This file describes the service and its requirements. It is used to:</p>
|
||
<ul class="simple">
|
||
<li><p>create a listing in the marketplace</p></li>
|
||
<li><p>denote any installation considerations</p></li>
|
||
<li><p>define dependency requirements</p></li>
|
||
</ul>
|
||
<p>Each time a service is updated, the manifest should be updated to include the new version, release notes, and any pertinent updates to the install, uninstall, or restoration flows. All this information is displayed in the marketplace listing, and the optionally denoted alerts will be displayed when appropriate to provide the user with more information about the particularities of the service.</p>
|
||
<p>For instance, <a class="reference external" href="https://github.com/Start9Labs/lnd-wrapper/blob/master/manifest.yaml#L28">LND displays alerts</a> around restoration since data will be overwritten.</p>
|
||
<p>There is nothing you need to do as a developer to enable the service to run over Tor. This is <em>completely</em> handled by EmbassyOS - a Tor address will be automatically generated and an Nginx server configured (if a client application) when the service is installed. Just define which version of Tor your service needs in this manifest file!</p>
|
||
</div>
|
||
<div class="section" id="config">
|
||
<h3>Config<a class="headerlink" href="#config" title="Permalink to this headline">¶</a></h3>
|
||
<p>Most self-hosted applications require the user to tell the app how to behave using a config file in a specific format, environment variables, command-line arguments, or some combination of these inputs. One of the coolest features of EmbassyOS is that, when packaged correctly, the app’s <a class="reference internal" href="../config/#service-config"><span class="std std-ref">configuration</span></a> will be available to the user as a slick GUI that always produces a valid configuration no matter how little experience or skill the user has.</p>
|
||
<p>With EmbassyOS, this means a service wrappers’ configuration requires a particular format and rule structure to ensure it integrates smoothly with the user interface. This format enables clean handling of improper values and configuration dependencies.</p>
|
||
</div>
|
||
<div class="section" id="s9pk-bundle">
|
||
<h3>.s9pk Bundle<a class="headerlink" href="#s9pk-bundle" title="Permalink to this headline">¶</a></h3>
|
||
<p>The configuration and manifest files get bundled into the <code class="docutils literal notranslate"><span class="pre">.s9pk</span></code> package, which is <a class="reference external" href="https://github.com/Start9Labs/embassy-os/tree/master/appmgr">built using appmgr</a>. Each new version release should include the updated version of these files re-bundled into a new binary. This is the file that will be downloaded from the marketplace. Upon user initiation, EmbassyOS then un-packages and installs the service.</p>
|
||
</div>
|
||
<div class="section" id="hello-world-example">
|
||
<h3>Hello World Example<a class="headerlink" href="#hello-world-example" title="Permalink to this headline">¶</a></h3>
|
||
<p>For reference, the <a class="reference external" href="https://github.com/Start9Labs/hello-world-wrapper">Hello world</a> repository should be used as an example. A project template can be cloned using the “Use this template” button in GitHub.</p>
|
||
<p><span class="raw-html"><br /></span></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="content-navigation">
|
||
<div class="navigation navigation--prev">
|
||
<a class="navigation__link" href="../">
|
||
<button class="navigation__button">
|
||
<i class="scylla-icon scylla-icon--chevron-left"></i>
|
||
</button>
|
||
<div class="navigation__title">
|
||
<span class="colored">PREVIOUS</span> <br />Service Packaging Guide
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="navigation navigation--next">
|
||
<a class="navigation__link" href="../wrapper/">
|
||
<div class="navigation__title">
|
||
<span class="colored">NEXT</span> <br />Service Wrapper
|
||
</div>
|
||
<button class="navigation__button">
|
||
<i class="scylla-icon scylla-icon--chevron-right"></i>
|
||
</button>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div
|
||
class="sidebar-left large-order-1"
|
||
> <div id="side-nav" class="side-nav custom-scroll-bar" data-closable data-toggler=".show">
|
||
<button class="collapsible-button">
|
||
<i class="scylla-icon scylla-icon--chevron-left"></i>
|
||
</button>
|
||
<div class="side-nav-content">
|
||
<div class="side-nav__search">
|
||
<div class="search-box">
|
||
<ci-search></ci-search>
|
||
</div>
|
||
</div>
|
||
<div class="side-nav__versions">
|
||
|
||
</div>
|
||
<div class="side-nav__content">
|
||
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../getting-started/introduction/">Introduction</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../getting-started/purchasing/">Purchasing</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../getting-started/diy/">DIY Guide</a></li>
|
||
</ul>
|
||
<p class="caption"><span class="caption-text">User Manual</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../user-manual/initial-setup/">Initial Setup</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../user-manual/connecting/">Connecting</a></li>
|
||
<li class="toctree-l1 has-children"><a class="reference internal" href="../../../user-manual/general/">General</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label for="toctree-checkbox-1"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/embassy-config/">Config Options</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/updating/">Updating EmbassyOS</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/wifi/">Setting up WiFi</a></li>
|
||
<li class="toctree-l2 has-children"><a class="reference internal" href="../../../user-manual/general/developer-options/">Developer Options</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label for="toctree-checkbox-2"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../../../user-manual/general/developer-options/ssh-setup/">SSH Setup</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../../../user-manual/general/developer-options/alt-marketplace/">Alternative Marketplace</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/power/">Power</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/notifications/">Notifications</a></li>
|
||
<li class="toctree-l2 has-children"><a class="reference internal" href="../../../user-manual/general/lan-setup/">LAN Setup</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label for="toctree-checkbox-3"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l3 has-children"><a class="reference internal" href="../../../user-manual/general/lan-setup/desktop/">Desktop</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label for="toctree-checkbox-4"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../../../user-manual/general/lan-setup/computer-setup/">Computer Setup</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../../../user-manual/general/lan-setup/browser-setup/">Browser Setup</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../../../user-manual/general/lan-setup/mobile/">Mobile</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/general/forgot-password/">Forgot Password</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1 has-children"><a class="reference internal" href="../../../user-manual/managing-services/">Managing Services</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label for="toctree-checkbox-5"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/installing/">Install / Uninstall</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/instructions/">Instructions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/backups/">Backups</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/service-config/">Service Config</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/properties/">Properties</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/logs/">Viewing Logs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../user-manual/managing-services/managing-deps/">Managing Dependencies</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p class="caption"><span class="caption-text">Misc Guides</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../misc-guides/available-services/">Available Services</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../misc-guides/bitcoin-cli/">Using Bitcoin-Cli</a></li>
|
||
<li class="toctree-l1 has-children"><a class="reference internal" href="../../../misc-guides/tor-os/">Running Tor</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label for="toctree-checkbox-6"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-os/mac/">MacOS</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-os/windows/">Windows</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-os/linux/">Linux</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-os/android/">Android</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-os/ios/">iOS</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1 has-children"><a class="reference internal" href="../../../misc-guides/tor-firefox/">Configuring Firefox for Tor</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" type="checkbox"/><label for="toctree-checkbox-7"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../misc-guides/tor-firefox/desktop/">Desktop</a></li>
|
||
<li class="toctree-l2 has-children"><a class="reference internal" href="../../../misc-guides/tor-firefox/mobile/">Mobile</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" type="checkbox"/><label for="toctree-checkbox-8"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../../../misc-guides/tor-firefox/android/">Android</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../../../misc-guides/tor-firefox/ios/">iOS</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p class="caption"><span class="caption-text">Contributing</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1 current has-children"><a class="reference internal" href="../">Service Packaging Guide</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-9" name="toctree-checkbox-9" type="checkbox"/><label for="toctree-checkbox-9"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul class="current">
|
||
<li class="toctree-l2 current current-page"><a class="current reference internal" href="#">Overview</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../wrapper/">Wrapper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../manifest/">Manifest</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../docker/">Docker</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../makefile/">Makefile</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../config/">Config</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../properties/">Properties</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../instructions/">Instructions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../backups/">Backups</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../embassyos/">EmbassyOS</a></li>
|
||
</ul>
|
||
<p class="caption"><span class="caption-text">Support</span></p>
|
||
<ul>
|
||
<li class="toctree-l1 has-children"><a class="reference internal" href="../../../support/FAQ/">Frequently Asked Questions</a><input class="toctree-checkbox" id="toctree-checkbox-10" name="toctree-checkbox-10" type="checkbox"/><label for="toctree-checkbox-10"><i class="scylla-icon scylla-icon--expand"></i></label><div class="break"></div><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/general-faq/">General</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/embassy-faq/">Embassy (Device, OS, and DIY)</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/usage-faq/">Basic Usage</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/setup-faq/">Setup and Troubleshooting</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/services-faq/">Services</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/bitcoin-faq/">Bitcoin and Lightning Network</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/030-faq/">EmbassyOS Version 0.3.0</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../../../support/FAQ/dev-faq/">Contributing & Development</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../support/concepts/">Concepts</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../../support/contact/">Contact</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sidebar-right large-order-3">
|
||
<div class="secondary-side-nav custom-scroll-bar">
|
||
<div class="secondary-side-nav__content">
|
||
<p class="topic-title">On this page</p>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Service Package Overview</a><ul>
|
||
<li><a class="reference internal" href="#environment-setup">Environment Setup</a><ul>
|
||
<li><a class="reference internal" href="#recommended-dependencies">Recommended Dependencies</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#package-components">Package Components</a><ul>
|
||
<li><a class="reference internal" href="#image">Image</a></li>
|
||
<li><a class="reference internal" href="#volume">Volume</a></li>
|
||
<li><a class="reference internal" href="#dependencies">Dependencies</a></li>
|
||
<li><a class="reference internal" href="#manifest">Manifest</a></li>
|
||
<li><a class="reference internal" href="#config">Config</a></li>
|
||
<li><a class="reference internal" href="#s9pk-bundle">.s9pk Bundle</a></li>
|
||
<li><a class="reference internal" href="#hello-world-example">Hello World Example</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<footer class="footer">
|
||
<div class="footer-group">
|
||
<div class="footer-top">
|
||
<a class="footer-logo" href="https://start9.com"
|
||
><img
|
||
src="../../../_static/img/icon-transparent.png"
|
||
alt="Logo"
|
||
/></a>
|
||
<div class="footer-links">
|
||
<a class="footer-links__link" href="https://docs.start9.com/">Docs</a>
|
||
<a
|
||
class="footer-links__link"
|
||
href="https://start9.com/#community"
|
||
>Contact Us</a
|
||
>
|
||
<a class="footer-links__link" href="https://start9.com/"
|
||
>About Us</a
|
||
>
|
||
</div>
|
||
<div class="footer-actions">
|
||
<a
|
||
class="footer-actions__link"
|
||
href="https://twitter.com/start9labs"
|
||
target="_blank"
|
||
><span
|
||
data-tooltip
|
||
tabindex="1"
|
||
title="Twitter feed"
|
||
data-position="bottom"
|
||
>
|
||
<img
|
||
src="../../../_static/img/icons/twitter.png"
|
||
alt="Twitter Icon"
|
||
/>
|
||
</span>
|
||
</a>
|
||
<a
|
||
class="footer-actions__link"
|
||
href="https://t.me/start9_labs"
|
||
target="_blank"
|
||
><span
|
||
data-tooltip
|
||
tabindex="1"
|
||
title="User Telegram channel"
|
||
data-position="bottom"
|
||
>
|
||
<img
|
||
src="../../../_static/img/icons/telegram.png"
|
||
alt="Telegram Icon"
|
||
/></span>
|
||
</a>
|
||
<a
|
||
class="footer-actions__link"
|
||
href="https://matrix.to/#/!lMnRwPWnyQvOfAoEnD:matrix.start9labs.com"
|
||
target="_blank"
|
||
><span
|
||
data-tooltip
|
||
tabindex="1"
|
||
title="User Matrix channel"
|
||
data-position="bottom"
|
||
>
|
||
<img
|
||
src="../../../_static/img/icons/matrix.svg"
|
||
alt="Matrix Icon"
|
||
/></span>
|
||
</a>
|
||
</a>
|
||
<a
|
||
class="footer-actions__link"
|
||
href="https://medium.com/@start9labs"
|
||
target="_blank"
|
||
><span
|
||
data-tooltip
|
||
tabindex="1"
|
||
title="Medium feed"
|
||
data-position="bottom"
|
||
>
|
||
<img
|
||
src="../../../_static/img/icons/medium.png"
|
||
alt="Medium Icon"
|
||
/></span>
|
||
</a>
|
||
<a
|
||
class="footer-actions__link"
|
||
href="https://github.com/Start9Labs/"
|
||
target="_blank"
|
||
><span
|
||
data-tooltip
|
||
tabindex="1"
|
||
title="GitHub page"
|
||
data-position="bottom"
|
||
>
|
||
<img
|
||
src="../../../_static/img/icons/github.png"
|
||
alt="GitHub Icon"
|
||
/></span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="footer-bottom">
|
||
<div class="footer-bottom__copyright"> © 2021, Start9 Labs, Inc. All rights reserved.
|
||
</div>
|
||
<div class="footer-bottom__last-updated">
|
||
Last updated on 13 Dec 2021.
|
||
</div>
|
||
<div class="footer-bottom__version">
|
||
Powered by
|
||
<a href="http://sphinx-doc.org/">Sphinx 2.4.5</a> &
|
||
<a href="https://sphinx-theme.scylladb.com/"
|
||
>ScyllaDB Theme 1.0.6</a
|
||
>
|
||
</div>
|
||
<!-- <p class="footer-bottom__canary">We have never received a secret government request to hand over user information.</p> -->
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<noscript>
|
||
<iframe
|
||
src="https://www.googletagmanager.com/ns.html?id=GTM-T8P2JP"
|
||
height="0"
|
||
width="0"
|
||
style="display: none; visibility: hidden"
|
||
></iframe>
|
||
</noscript>
|
||
</body>
|
||
</html> |