From 36b8d4b02d21cb33292ad1371ed1cd2fe2671ad1 Mon Sep 17 00:00:00 2001 From: kn0wmad Date: Tue, 1 Feb 2022 16:13:40 -0700 Subject: [PATCH] Dev docs / LAN edits --- site/03-todo.md | 4 +- .../_static/images/services/synapseconfig.svg | Bin 0 -> 131093 bytes .../dev-faq/faq-service-packaging.rst | 4 +- .../support/dev-docs/packaging-example.rst | 128 +++++++++--------- .../dev-docs/service-packaging/backups.rst | 16 +-- .../dev-docs/service-packaging/config.rst | 41 +++--- .../dev-docs/service-packaging/docker.rst | 10 +- .../service-packaging/instructions.rst | 10 +- .../dev-docs/service-packaging/makefile.rst | 10 +- .../dev-docs/service-packaging/manifest.rst | 16 +-- .../dev-docs/service-packaging/overview.rst | 25 ++-- .../dev-docs/service-packaging/properties.rst | 10 +- .../dev-docs/service-packaging/wrapper.rst | 8 +- .../lan-setup/lan-os/lan-android.rst | 6 +- .../lan-setup/lan-os/lan-ios.rst | 2 - .../source/support/user-manual/tuning/diy.rst | 2 +- 16 files changed, 149 insertions(+), 143 deletions(-) create mode 100644 site/source/_static/images/services/synapseconfig.svg diff --git a/site/03-todo.md b/site/03-todo.md index 1532b9b..a44729b 100644 --- a/site/03-todo.md +++ b/site/03-todo.md @@ -1,5 +1,4 @@ # TODO -- LAN Setup - Android - Screenshots of LAN setup and verify steps on an Android 12+ device (see below) - Update all guides in service repos - Service-specific Guides (link to wrapper repos) - Verify LAN and Tor setup steps on a Mac @@ -16,6 +15,7 @@ - OS guides for CIFS (screens) - Local - Restore from backup +- Alt Market Switching - Alt Market Build Guide - Refactor and update Roadmap - Launch versioned site/docs to start9.com @@ -25,3 +25,5 @@ - Create badges for device guide topic boxes - There are many issues that should be closed by 0.3 docs release (some issues await new processes in order to test) - Email signup + +Need service properties image in packaging spec diff --git a/site/source/_static/images/services/synapseconfig.svg b/site/source/_static/images/services/synapseconfig.svg new file mode 100644 index 0000000000000000000000000000000000000000..c5a4223ccd29eeb708bbfdf0f8fb90ebb296ecc2 GIT binary patch literal 131093 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%0Ab!y`$%g_^LJnOe#*a!2*G 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 jtJ`_ is an example of a service with no Config. How can my service access the data directory of another service? ---------------------------------------------------------------- #. Provider service needs to expose datadir to other services on embassy #. Consumer services needs to list the provider service as a dependency AND set a particular config value, stating that it wants data from that particular service + + The guide says that a Makefile is optional, why is this? -------------------------------------------------------- The ``Makefile`` simplifies the development process by putting all your build steps into one place so that you can simply use the ``make`` to build with. A ``Makefile`` is not required however, and you may instead choose to use something like ``nix``, ``bash``, ``perl``, ``python``, or ``ruby`` for your build orchestration. diff --git a/site/source/support/dev-docs/packaging-example.rst b/site/source/support/dev-docs/packaging-example.rst index 0651f19..b1089a5 100644 --- a/site/source/support/dev-docs/packaging-example.rst +++ b/site/source/support/dev-docs/packaging-example.rst @@ -8,7 +8,6 @@ Service Packaging Example :depth: 4 :local: -A rough walkthrough of how to package a service using our example `hello-world-wrapper `_. Welcome! The following guide will provide the prerequisites, introduce a brief overview of the packaging process, use an example demonstrating how to package a service, and finally, describe the submission process. This essentially describes how you can take an existing app (or one you have written yourself), and wrap it up into an ``s9pk`` such that it can be added to an EmbassyOS (EOS) Marketplace! The ``s9pk`` is the final product, which is the portable version of a package that is understood by EOS, and can be distributed to any EOS users either directly, or via a Marketplace. @@ -47,13 +46,18 @@ Overview Components ========== -Simply, the package is made up of the following parts: - 1. Image - Each service is running in a Docker image. Best results will come from an arm based linux; [Alpine](https://www.alpinelinux.org/) is highly recommended. - 2. Volume - Each service gets a volume, allocated by EOS. This is the filesystem where the service data will be stored and mounted by the container. The volume directory within EOS (for seeding data into the volume) is located at `/embassy-data/package-data/volumes/` - 3. Dependencies - Rules and requirements of your service, which appear as UI elements, such as inputs, toggles, and drop-downs. These are enforced by validations and clear user instructions. EmbassyOS has a unique and powerful system for managing dependencies which allows anyone to have the power of systems administrators without an advanced skillset. - 4. Manifest - Describes the service and its requirements. This file describes the marketplace listing, installation considerations, configuration and dependency requirements, health checks, backups and additional info. - 5. Config - EOS makes a service's configuration available to the user in the GUI and must be valid regardless of user skill. - 6. .s9pk Bundle - The image, manifest, license, icon, and instruction files get bundled into a .s9pk package. Optional additional assets for use with system images can also be bundled. This is the file a user downloads from the Marketplace, at which point EOS uses to unpack assets and install the service. +The package is made up of the following parts: + + #. Container Image - Each service is running in a container (typically Docker). Best results will come from an arm based linux; [Alpine](https://www.alpinelinux.org/) is highly recommended. + #. Volume(s) - Each service gets one or more volumes, allocated by EOS. This is the filesystem where the service data will be stored and mounted by the container. The volume directory within EOS (for seeding data into the volume) is located at `/embassy-data/package-data/volumes/` + #. Dependencies - Rules and requirements of your service, which appear as UI elements, such as inputs, toggles, and drop-downs. These are enforced by validations and clear user instructions. EmbassyOS has a unique and powerful system for managing dependencies which allows anyone to have the power of systems administrators without an advanced skillset. + #. Manifest - Describes the service and its requirements. This file describes the marketplace listing, installation considerations, configuration and dependency requirements, health checks, backups and additional info. + #. Config - EOS makes a service's configuration available to the user in the GUI and must be valid regardless of user skill. + #. Instructions & Docs - Directions for setup, use, external integrations, etc. + #. License - The Open Source license of the service wapper. + #. Icon - Image used to identify the service in the UI. + +The ``.s9pk`` is the image, manifest, license, icon, and instructions files bundled into a .s9pk package. Optional additional assets for use with system images can also be bundled. This is the file a user downloads from the Marketplace, at which point EOS uses to unpack assets and install the service. Check :ref:`here ` for a detailed overview of package components. @@ -66,9 +70,9 @@ Git submodules allow the use of another project while in the working project dir Simply run: -.. code:: bash + .. code:: bash - git submodule add + git submodule add Example - Hello World --------------------- @@ -80,16 +84,16 @@ The commands below assume a Linux development environment with all the recommend Clone the Template Repo and Edit the Manifest ============================================= -1. Clone and rename the repo (or alternatively, use the template generation button found on the github `repo `_) +#. Clone and rename the repo (or alternatively, use the template generation button found on the github `repo `_) -.. code-block:: bash + .. code-block:: bash - git clone https://github.com/Start9Labs/hello-world-wrapper - cd hello-world-wrapper + git clone https://github.com/Start9Labs/hello-world-wrapper + cd hello-world-wrapper -2. Edit the ``README.md`` to explain what the service is, what dependencies are required, build/install/contribute instructions, and any other information you'd like. +#. Edit the ``README.md`` to explain what the service is, what dependencies are required, build/install/contribute instructions, and any other information you'd like. -3. Edit the ``manifest`` file. This must be in ``.json``, ``.toml``, or ``.yaml`` format and in ``kebab-case`` style. You can see descriptions of each key (and some notes) in our 'Hello World' example ``manifest.yaml`` below: +#. Edit the ``manifest`` file. This must be in ``.json``, ``.toml``, or ``.yaml`` format and in ``kebab-case`` style. You can see descriptions of each key (and some notes) in our 'Hello World' example ``manifest.yaml`` below: Manifest example ================ @@ -257,72 +261,72 @@ Edit the Dockerfile and Entrypoint Next, it's time to edit the ``Dockerfile``. This defines how to build the image for the package by declaring the environment, building stages, and copying any binaries or assets needed to run the service or its health checks to the image filesystem. -1. We start by importing a base image, in this case Alpine, as recommended. +#. We start by importing a base image, in this case Alpine, as recommended. -.. code:: docker + .. code:: docker - FROM arm64v8/alpine:3.12 + FROM arm64v8/alpine:3.12 -2. Next we issue some commands, which in this example simply updates repositories, installs required software, and finally creates a directory for nginx. +#. Next we issue some commands, which in this example simply updates repositories, installs required software, and finally creates a directory for nginx. -.. code:: docker + .. code:: docker - RUN apk update - RUN apk add tini + RUN apk update + RUN apk add tini - RUN mkdir /run/nginx + RUN mkdir /run/nginx -3. Next we will add the cross-compiled binary of ``hello-world`` to ``/usr/local/bin/`` and add the ``docker_entrypoint.sh`` file from the repository. Then we set permissions for ``docker_entrypoint.sh``. +#. Next we will add the cross-compiled binary of ``hello-world`` to ``/usr/local/bin/`` and add the ``docker_entrypoint.sh`` file from the repository. Then we set permissions for ``docker_entrypoint.sh``. -.. code:: docker + .. code:: docker - ADD ./hello-world/target/aarch64-unknown-linux-musl/release/hello-world /usr/local/bin/hello-world - ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh - RUN chmod a+x /usr/local/bin/docker_entrypoint.sh + ADD ./hello-world/target/aarch64-unknown-linux-musl/release/hello-world /usr/local/bin/hello-world + ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh + RUN chmod a+x /usr/local/bin/docker_entrypoint.sh -1. Next, we set a working directory, and set the location of the entrypoint. Exposing ports is not necessary for EOS, but its often useful to leave this line for clarity. +#. Next, we set a working directory, and set the location of the entrypoint. Exposing ports is not necessary for EOS, but its often useful to leave this line for clarity. -.. code:: docker + .. code:: docker - WORKDIR /root + WORKDIR /root - EXPOSE 80 + EXPOSE 80 - ENTRYPOINT ["/usr/local/bin/docker_entrypoint.sh"] + ENTRYPOINT ["/usr/local/bin/docker_entrypoint.sh"] -5. Great, let's take a look at our final Embassy Pages ``Dockerfile``: +#. Great, let's take a look at our final Hello World ``Dockerfile``: -.. code:: docker + .. code:: docker - FROM arm64v8/alpine:3.12 + FROM arm64v8/alpine:3.12 - RUN apk update - RUN apk add tini + RUN apk update + RUN apk add tini - ADD ./hello-world/target/aarch64-unknown-linux-musl/release/hello-world /usr/local/bin/hello-world - ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh - RUN chmod a+x /usr/local/bin/docker_entrypoint.sh + ADD ./hello-world/target/aarch64-unknown-linux-musl/release/hello-world /usr/local/bin/hello-world + ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh + RUN chmod a+x /usr/local/bin/docker_entrypoint.sh - WORKDIR /root + WORKDIR /root - EXPOSE 80 + EXPOSE 80 - ENTRYPOINT ["/usr/local/bin/docker_entrypoint.sh"] + ENTRYPOINT ["/usr/local/bin/docker_entrypoint.sh"] Docker Entrypoint ================= -1. Okay, let's move on to our ``docker_entrypoint.sh`` file. This is a script that defines what to do when the service starts, and often acts as an init system. It will need to complete any environment setup (such as folder substructure), set any environment variables, and execute the run command. It's also PID 1 in the docker container, so it does all of the signal handling and container exits when it is stopped/exits. If you have built a ``configurator``, this will also need to be called to execute here. Let's take a look at our (extremely basic) Hello World example: +#. Okay, let's move on to our ``docker_entrypoint.sh`` file. This is a script that defines what to do when the service starts, and often acts as an init system. It will need to complete any environment setup (such as folder substructure), set any environment variables, and execute the run command. It's also PID 1 in the docker container, so it does all of the signal handling and container exits when it is stopped/exits. If you have built a ``configurator``, this will also need to be called to execute here. Let's take a look at our (extremely basic) Hello World example: -.. code:: bash + .. code:: bash - #!/bin/sh + #!/bin/sh - export HOST_IP=$(ip -4 route list match 0/0 | awk '{print $3}') + export HOST_IP=$(ip -4 route list match 0/0 | awk '{print $3}') - exec tini hello-world + exec tini hello-world -2. We've defined the file, exported the IP address of the Embassy (host), and run the program. +#. We've defined the file, exported the IP address of the Embassy (host), and run the program. For a more detailed ``docker_entrypoint.sh``, please check out the `filebrowser-wrapper `_. Additional details on the ``Dockerfile`` and ``docker_entrypoint`` can be found `here `_. @@ -346,35 +350,35 @@ Our example ``Makefile`` is again fairly simple for Hello World. Let's take a l all: verify verify: hello-world.s9pk $(S9PK_PATH) - embassy-sdk verify $(S9PK_PATH) + embassy-sdk verify $(S9PK_PATH) # embassy-sdk pack errors come from here, check your manifest, config, instructions, and icon hello-world.s9pk: manifest.yaml assets/compat/config_spec.yaml config_rules.yaml image.tar docs/instructions.md $(ASSET_PATHS) - embassy-sdk pack + embassy-sdk pack image.tar: Dockerfile docker_entrypoint.sh hello-world/target/aarch64-unknown-linux-musl/release/hello-world - DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/hello-world --platform=linux/arm64 -o type=docker,dest=image.tar . + DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build --tag start9/hello-world --platform=linux/arm64 -o type=docker,dest=image.tar . hello-world/target/aarch64-unknown-linux-musl/release/hello-world: $(HELLO_WORLD_SRC) - docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/hello-world:/home/rust/src start9/rust-musl-cross:aarch64-musl cargo +beta build --release - docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/hello-world:/home/rust/src start9/rust-musl-cross:aarch64-musl musl-strip target/aarch64-unknown-linux-musl/release/hello-world + docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/hello-world:/home/rust/src start9/rust-musl-cross:aarch64-musl cargo +beta build --release + docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/hello-world:/home/rust/src start9/rust-musl-cross:aarch64-musl musl-strip target/aarch64-unknown-linux-musl/release/hello-world manifest.yaml: hello-world/Cargo.toml - yq e -i '.version = $(VERSION)' manifest.yaml + yq e -i '.version = $(VERSION)' manifest.yaml -1. The first 5 lines set environment variables. +#. The first 5 lines set environment variables. -2. The next line simply removes the progress of a ``make`` process if it fails. +#. The next line simply removes the progress of a ``make`` process if it fails. .. code-block:: Makefile .DELETE_ON_ERROR: -3. The ``all`` step is run when the ``make`` command is issued. This attempts the ``verify`` step, which requires that the ``hello-world.s9pk`` must first be built, which first requires the ``image.tar``, and so on. In this case, each step requires the next and each step indicates the necessary existence of a file. If an indicated file has been altered, such as the `docker_entrypoint.sh`, then any step that contains this file will be rebuilt. +#. The ``all`` step is run when the ``make`` command is issued. This attempts the ``verify`` step, which requires that the ``hello-world.s9pk`` must first be built, which first requires the ``image.tar``, and so on. In this case, each step requires the next and each step indicates the necessary existence of a file. If an indicated file has been altered, such as the `docker_entrypoint.sh`, then any step that contains this file will be rebuilt. -4. So the ``.s9pk`` is created with the ``embassy-sdk pack`` command, supplied with the ``manifest``, ``config_spec``, previously created ``image.tar``, and ``instructions.md``. Your project may likely also contain a ``config_rules`` file. Some of these files we have not yet edited, but that will come shortly. +#. So the ``.s9pk`` is created with the ``embassy-sdk pack`` command, supplied with the ``manifest``, ``config_spec``, previously created ``image.tar``, and ``instructions.md``. Your project may likely also contain a ``config_rules`` file. Some of these files we have not yet edited, but that will come shortly. -5. The ``image.tar`` is built below this, the cross-compiled ``hello-world`` source code, and ``manifest`` at the bottom. +#. The ``image.tar`` is built below this, the cross-compiled ``hello-world`` source code, and ``manifest`` at the bottom. For more details on creating a ``Makefile`` for your project, please check :ref:`here `. diff --git a/site/source/support/dev-docs/service-packaging/backups.rst b/site/source/support/dev-docs/service-packaging/backups.rst index 1cdeb7b..aba21d9 100644 --- a/site/source/support/dev-docs/service-packaging/backups.rst +++ b/site/source/support/dev-docs/service-packaging/backups.rst @@ -1,14 +1,14 @@ .. _service_backups: -=============== -Service Backups -=============== +======= +Backups +======= -Everything within the root of the mounted volume directory will be stored in an EmbassyOS backup. This includes the config (config.yaml) and properties (stats.yaml) files, as well as any other persisted data within the volume directory. +Everything within the root of the mounted volume directory will be stored in an EmbassyOS backup. This includes the config (config.yaml) and properties (stats.yaml) files, as well as any other persisted data within the volume directory. -For restoration purposes, it might be beneficial to ignore certain files or folders. For instance, ignore the shared/public folder that is mounted for dependencies that expose this feature as it causes data inconsistencies on restore. +For restoration purposes, it might be beneficial to ignore certain files or folders. For instance, ignore the shared/public folder that is mounted for dependencies that expose this feature as it causes data inconsistencies on restore. -In this case, create a `.backupignore` file. This file contains a list of relative paths to the ignored files. +In this case, create a `.backupignore` file. This file contains a list of relative paths to the ignored files. Example @@ -16,7 +16,7 @@ Example The `btcpayserver wrapper `_ demonstrates a good use of a backupignore template. -Ultimately, ``/datadir/.backupignore`` gets populated with: +Ultimately, ``/datadir/.backupignore`` gets populated with: .. code:: @@ -26,4 +26,4 @@ Ultimately, ``/datadir/.backupignore`` gets populated with: .. role:: raw-html(raw) :format: html -:raw-html:`
` \ No newline at end of file +:raw-html:`
` diff --git a/site/source/support/dev-docs/service-packaging/config.rst b/site/source/support/dev-docs/service-packaging/config.rst index 363c1cb..418f765 100644 --- a/site/source/support/dev-docs/service-packaging/config.rst +++ b/site/source/support/dev-docs/service-packaging/config.rst @@ -1,11 +1,11 @@ .. _service-config: -============================ -Service Config Specification -============================ +===================== +Service Configuration +===================== -Overview --------- +Introduction +------------ 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 configuration 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. @@ -27,11 +27,11 @@ Config Spec ----------- Overview -........ +======== -.. figure:: /_static/images/services/config.svg +.. figure:: /_static/images/services/service5.svg :width: 80% - :alt: Bitcoin Config + :alt: Synapse Config This file defines the structure of configuration options your service depends on to run. It additionally can include configuration options that users might want to enable for more advanced or customized usage. Ultimately, these values influence the UI elements for a user to interact with. Specifically, they evaluate to the options available when managing a service, such as: @@ -40,16 +40,16 @@ This file defines the structure of configuration options your service depends on - Whenever a user edits a service config - When config pointers get updated -The neat part about this file is that each ValueSpec type gets translated into a specific front end component. For instance, boolean values display as a toggle button. +The neat part about this file is that each ValueSpec type gets translated into a specific front end component. For instance, boolean values display as a toggle button, such as in the Synapse exmple of ``Enable Registration``. -.. figure:: /_static/images/service/boolean_toggle.png +.. figure:: /_static/images/services/synapseconfig.svg :width: 80% :alt: Example boolean toggle Another advantage is the ability to define default values. These values automatically get populated if the user selects the ``Default`` option when setting up a service in ``Needs Config`` state. This is super convenient for users who want to get up and running quickly. Types -..... +===== ConfigSpec Type: @@ -60,7 +60,7 @@ ConfigSpec Type: ValueSpec Type: Boolean | Enum | List | Number | Object | String | Union | Pointer (see below for details) Implementation Guide -.................... +==================== The following section contains implementation specifications for the ``config_spec.yaml`` file. @@ -92,7 +92,7 @@ The following section contains implementation specifications for the ``config_sp .. _boolean: Boolean -^^^^^^^ +....... Config value specification denoted as a boolean value. A default value is required. @@ -119,7 +119,7 @@ Example: .. _enum: Enum -^^^^ +.... Config value specification denoted as an enum value. Enums values must be a unique set. If no default is provided, ``null`` will be the assumed value. @@ -150,7 +150,7 @@ ValueSpec Type: .. _list: List -^^^^ +.... The list type describes an array of values. The values must consist of the same subtype, which can be any of the ValueSpec types available in the EmbassyOS config specification. Lists of any type do not contain the default for each item in list. The list *itself* can have a default. If no default is provided, ``null`` will be the assumed value. @@ -201,7 +201,7 @@ Example: .. _number: Number -^^^^^^ +...... A number value within an optionally defined range. Nullable field is required. If ``nullable`` is true, the default is assumed to be ``null`` if it is not provided. @@ -235,7 +235,7 @@ Example: .. _object: Object Type -^^^^^^^^^^^ +........... A nested representation of a ConfigSpec. The object type takes the same structure under the ``spec`` key as a ConfigSpec: a key indicates the field name, and the value denotes the ValueSpec type for that field. @@ -303,7 +303,7 @@ Example: .. _string: String -^^^^^^ +...... There are various options for string values. They can optionally be marked as copyable or masked, such as for passwords, which will reflect the UI element display. A pattern, expressed in regex, can be denoted. If it exists, this field requires both the pattern type (ie. Regex) and pattern description (ie. an explanation of the pattern requirements). @@ -362,7 +362,7 @@ Examples: .. _pointer: Pointer -^^^^^^^ +....... The pointer type *points* to a config value on another service installed on EmbassyOS (ie. app subtype) or to the EmbassyOS system (ie. system subtype). When pointing to another service, the ``index`` field indicates the path to the desired config variable. @@ -398,7 +398,8 @@ Example: .. _union: Union -^^^^^ +..... + This type describes a necessary dependency. Multiple variants can be expressed to enable the user the option to connect to another service (internal dependency) or outside source (external dependency). For example, the Bitcoin Proxy service is united with an instance of Bitcoin. Three variants are defined: internal, external, and a quick connect. In this case, internal refers to the Bitcoin Core instance running on EmbassyOS, and defines the RPC credentials necessary for connecting; external refers to a Bitcoin Core node running on a different device, and defines the RPC credentials necessary for connecting; quick connect refers to yet another method of connecting to a Bitcoin Core node, optimized for convenience. diff --git a/site/source/support/dev-docs/service-packaging/docker.rst b/site/source/support/dev-docs/service-packaging/docker.rst index 08d1874..27384bd 100644 --- a/site/source/support/dev-docs/service-packaging/docker.rst +++ b/site/source/support/dev-docs/service-packaging/docker.rst @@ -1,8 +1,8 @@ .. _service_docker: -================== -Service Dockerfile -================== +========== +Dockerfile +========== Dockerfile ---------- @@ -12,7 +12,7 @@ The Dockerfile is responsible for mounting the service application to whatever v Since the build requires specific arm runtime environments, these base images can be imported into the Dockerfile as a starting point so the base system does not need to be completely redefined. This enables importing a specific build environment version that encapsulates any necessary libraries for running the service build, eg. golang, rust. -For instance: +For instance: ``FROM alpine:3.12`` @@ -37,4 +37,4 @@ The `LND wrapper ` \ No newline at end of file +:raw-html:`
` diff --git a/site/source/support/dev-docs/service-packaging/instructions.rst b/site/source/support/dev-docs/service-packaging/instructions.rst index 34cf643..d01d98b 100644 --- a/site/source/support/dev-docs/service-packaging/instructions.rst +++ b/site/source/support/dev-docs/service-packaging/instructions.rst @@ -1,16 +1,16 @@ .. _service_instructions: -==================================== -Service Instructions & Documentation -==================================== +=================== +Instructions & Docs +=================== Within each wrapper repository should exist a ``docs`` directory. This folder should include any pertinent documentation, instructions, external integrations, or other details about the service that users or developers might find relevant. If an ``instructions.md`` file is included, this markdown formatted file will be rendered in the "Instructions" tab within the service detail menu on EmbassyOS: -.. figure:: /_static/images/service/bitcoin_instructions.png +.. figure:: /_static/images/services/service-instruct.svg :width: 80% - :alt: Bitcoin Instructions + :alt: Embassy Pages Instructions Example ------- diff --git a/site/source/support/dev-docs/service-packaging/makefile.rst b/site/source/support/dev-docs/service-packaging/makefile.rst index 7007903..6ad3d24 100644 --- a/site/source/support/dev-docs/service-packaging/makefile.rst +++ b/site/source/support/dev-docs/service-packaging/makefile.rst @@ -1,12 +1,10 @@ .. _service_makefile: -================ -Service Makefile -================ +======== +Makefile +======== -.. note:: - - *This file is optional* +.. note:: *This file is optional* A Makefile serves as a convenience for outlining the build. This helps streamline additional developer contributions to the project. Please reference the GNU `documentation `_ for implementation details. diff --git a/site/source/support/dev-docs/service-packaging/manifest.rst b/site/source/support/dev-docs/service-packaging/manifest.rst index 4da080e..34418cf 100644 --- a/site/source/support/dev-docs/service-packaging/manifest.rst +++ b/site/source/support/dev-docs/service-packaging/manifest.rst @@ -1,8 +1,8 @@ .. _service_manifest: -================ -Service Manifest -================ +======== +Manifest +======== Overview -------- @@ -82,7 +82,7 @@ Below are the types and sub-type definitions, with necessary elaborations. Any i # A map of dependent services, see below for more details dependencies: Dependencies -.. _dependencies: +.. _dependencies-spec: Dependencies ------------ @@ -122,7 +122,7 @@ The service ``btc-rpc-proxy`` is a dependency of the service ``c-lightning``. `` Dependency config rules are processed in order. Type definitions -................ +================ Types for ``manifest.yaml`` fields: @@ -175,12 +175,12 @@ Types for ``manifest.yaml`` fields: :raw-html:`
` Examples -........ +======== Actual ``manifest.yaml`` files for existing services: LND -^^^ +... .. code:: yaml @@ -313,7 +313,7 @@ LND to-value: true Cups -^^^^ +.... .. code:: yaml diff --git a/site/source/support/dev-docs/service-packaging/overview.rst b/site/source/support/dev-docs/service-packaging/overview.rst index 6f354db..b0cbf15 100644 --- a/site/source/support/dev-docs/service-packaging/overview.rst +++ b/site/source/support/dev-docs/service-packaging/overview.rst @@ -15,7 +15,7 @@ First, let's get your system setup with the necessary software dependencies. Environment Setup ----------------- -At minimum, ``docker``, ``docker-buildx``, and ``appmgr`` are required. The rest of the recommendations serve to optimize the build process. +At minimum, ``docker``, ``docker-buildx``, and ``embassy-sdk`` are required. The rest of the recommendations serve to optimize the build process. Recommended Dependencies ======================== @@ -24,7 +24,7 @@ Recommended Dependencies `docker-buildx `_ - `appmgr `_ + `embassy-sdk `_ `cargo `_ @@ -46,26 +46,25 @@ Because the service ultimately runs on a Raspberry Pi, the created Docker image The image is immutable, meaning that when the service is updated, the image is replaced with a completely new image containing the updated features. -Volume -====== +Volumes +======= -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. +Each service application gets one or more volumes allocated to it by EmbassyOS. All service application data is stored in this directory and is persisted across updates. -The volume directory (for seeding data into the volume) is typically: ``/root/volumes/``. +The default volume directory (for seeding data into the volume) is typically: ``/root/volumes/``. -.. warning:: - Any files that are in the image at the volume path will be overwritten when a backup restore occurs. +.. warning:: Any files that are in the image at the volume path will be overwritten when a backup restore occurs. Dependencies ============ -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. +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 task. 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. -This may sound cool or neat, but it is more than that: *it’s novel*. This has never been done before. +This may sound cool or neat, but it is more than that: *it's novel*. This has never been done before. -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. +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 serious time and expertise, can now be done by anyone in a matter of seconds. This DSL is utilized in the :ref:`config rules ` and :ref:`dependencies ` key in the service manifest. @@ -82,7 +81,7 @@ Each time a service is updated, the manifest should be updated to include the ne For instance, `LND displays alerts `_ around restoration since data will be overwritten. -There is nothing you need to do as a developer to enable the service to run over Tor. This is *completely* 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! +There is nothing you need to do as a developer to enable the service to run over Tor/LAN. This is *completely* handled by EmbassyOS - a Tor and LAN address will be automatically generated and an Nginx server configured (if a client application) when the service is installed. Config ====== @@ -94,7 +93,7 @@ With EmbassyOS, this means a service wrappers' configuration requires a particul .s9pk Bundle ============ -The configuration and manifest files get bundled into the ``.s9pk`` package, which is `built using appmgr `_. 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. +The configuration and manifest files get bundled into the ``.s9pk`` package, which is `built using embassy-sdk `_. 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. When the user clicks the service's "Install" button, EmbassyOS unpacks and installs the service. Hello World Example =================== diff --git a/site/source/support/dev-docs/service-packaging/properties.rst b/site/source/support/dev-docs/service-packaging/properties.rst index 32924ce..8420281 100644 --- a/site/source/support/dev-docs/service-packaging/properties.rst +++ b/site/source/support/dev-docs/service-packaging/properties.rst @@ -1,12 +1,12 @@ .. _service_properties: -================== -Service Properties -================== +========== +Properties +========== The output of this step is a file titled ``stats.yaml``. This file contains a mapping of the values that will be displayed in the ``Properties`` section in a service's menu. -.. figure:: /_static/images/service/service_properties.png +.. figure:: /_static/images/services/props.svg :width: 80% :alt: Service Properties @@ -22,4 +22,4 @@ A good example of the configurator producing the ``stats.yaml`` file can be foun .. role:: raw-html(raw) :format: html -:raw-html:`
` \ No newline at end of file +:raw-html:`
` diff --git a/site/source/support/dev-docs/service-packaging/wrapper.rst b/site/source/support/dev-docs/service-packaging/wrapper.rst index 7799d08..22caccd 100644 --- a/site/source/support/dev-docs/service-packaging/wrapper.rst +++ b/site/source/support/dev-docs/service-packaging/wrapper.rst @@ -1,8 +1,8 @@ .. _service_wrapper: -=============== -Service Wrapper -=============== +======= +Wrapper +======= Each service is bound with a wrapper repository, which contains everything you need to build a service. @@ -39,4 +39,4 @@ Submodule `Git submodules `_ allow use of another project while in the working project directory. Setting up this feature enables linking of the source service repository so that its context is available. -Run ``git submodule add `` \ No newline at end of file +Run ``git submodule add `` diff --git a/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-android.rst b/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-android.rst index 4fa9182..d3c2bf5 100644 --- a/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-android.rst +++ b/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-android.rst @@ -26,10 +26,12 @@ If you are running Android 12+ (not yet available on Calyx/Graphene), you can se .. figure:: /_static/images/ssl/android/droidLAN0.svg :width: 30% - Install certificate + :alt: Install certificate #. To setup in Firefox, enter ``about:config`` in URL bar, search for "security.enterprise_roots.enabled", and set to ``true`` .. figure:: /_static/images/ssl/android/droidLAN1.svg :width: 30% - Firefox about:config + :alt: Firefox about:config + +#. That's it! You may now browse the ``.local`` addresses on your Embassy. diff --git a/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-ios.rst b/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-ios.rst index b41f490..c90801e 100644 --- a/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-ios.rst +++ b/site/source/support/user-manual/configuration/lan-setup/lan-os/lan-ios.rst @@ -73,5 +73,3 @@ iOS #. Test that this process worked successfully by navigating to the LAN address provided from one of the locations listed under Step 1 at the top of this page. You should not see warnings about the security of this site in your browser (if you do, setup was not successful). - - diff --git a/site/source/support/user-manual/tuning/diy.rst b/site/source/support/user-manual/tuning/diy.rst index 7641d4d..bbe196d 100644 --- a/site/source/support/user-manual/tuning/diy.rst +++ b/site/source/support/user-manual/tuning/diy.rst @@ -37,7 +37,7 @@ Hardware: Components .. caution:: If you prefer to use a fan, **DO NOT** use the official Raspberry Pi fan, as it requires the same GPIO pins as the audio speaker. Instead, we recommend `this fan `_. -#. A `16GB microSD card `_ (no need for bigger). If you have ABSOLUTELY NO data to migrate, you may choose to re-use the card already in your Embassy. +#. A `16GB microSD card `_ (no need for bigger). If you have ABSOLUTELY NO data to migrate (from an Embassy v0.2.x), you may choose to re-use the card already in your Embassy. #. `GPIO mini speaker/buzzer `_ (These often sell out, please let us know if this link needs to be refreshed) #. Ethernet cable #. MicroSD → USB adapter (or you may have a microSD port on your computer)