forked from kn0wmad/monerod-startos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manifest.yaml
235 lines (222 loc) · 9.42 KB
/
manifest.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# v0.3.0 and up Manifest example written in .yaml (.toml and .json are also acceptable)
id: hello-world
title: "Hello World"
version: 0.2.0 # Service version
release-notes: "Upgrade to EmbassyOS 2.16.0 and then to v0.3.0"
license: mit
wrapper-repo: "https://github.com/Start9Labs/hello-world-wrapper"
upstream-repo: "https://github.com/Start9Labs/hello-world-wrapper" # There is no upstream repo in this example
support-site: "https://docs.start9.com/"
marketing-site: "https://start9.com/"
build: ["make"] # Series of commands to build into an s9pk, in this case we are using make and all the build commands are in the makefile
min-os-version: "0.3.0" # Minimum required version of EmbassyOS
description:
short: Example service
long: |
Hello World is a simple example of a service wrapper that launches a web interface to say hello and nothing more.
assets:
license: LICENSE # default = LICENSE.md
icon: icon.png # default = icon.png
instructions: docs/instructions.md # default = INSTRUCTIONS.md
docker-images: image.tar # default = image.tar
main:
type: docker
image: main
entrypoint: "/usr/local/bin/docker_entrypoint.sh"
args: []
mounts: {} # Specifies where to put volumes, if there are any. Empty in this example
health-checks: {} # Health check config would go here
config: ~ # Configuration options, none for hello-world, but see below example for format:
# get:
# type: docker
# image: compat
# entrypoint: compat
# args:
# - "config"
# - "get"
# - "/root/.hello-world/start9/config.yaml"
# - "/mnt/assets/config_spec.yaml"
# mounts:
# compat: "/mnt/assets"
# main: "/root"
# io-format: yaml
# set:
# type: docker
# image: compat
# entrypoint: compat
# args:
# - "config"
# - "set"
# - "/root/.hello-world/start9/config.yaml"
# mounts:
# main: "/root"
# io-format: yaml
dependencies: {} # Service pre-requisites, none for hello-world, but see below example (which would make BTC Proxy a dependency) for format:
# btc-rpc-proxy:
# version: ">=0.3.2.1 <0.4.0"
# recommended: true
# critical: false
# optional: Can alternatively configure an external bitcoin node.
# description: Used to fetch validated blocks.
# config:
# check:
# type: docker
# image: compat
# system: true
# # the compat image will contain a tool to check the config rules against the specified dependency
# entrypoint: compat
# args:
# - "dependency"
# - "check"
# - "/mnt/assets/btc-rpc-proxy.rules.yaml"
# mounts:
# compat: "/mnt/assets"
# auto-configure:
# type: docker
# image: compat
# # if true, the denoted image is prebuilt and comes stock with EOS
# # uncommon: if you want something not prebuilt with EOS, you can bundle multiple docker images into the `image.tar` during the `make` build process
# system: true
# entrypoint: compat
# args:
# - "dependency"
# - "auto-configure"
# - "/mnt/assets/btc-rpc-proxy.rules.yaml"
# mounts:
# compat: "/mnt/assets"
volumes: # this is the image where data will go from 0.2.x
main:
type: data # this is the image where files from the project asset directory will go
compat:
type: assets # this is a pointer volume, where the image is specified in `<pointer-id>.volume-id` and the mount point is specificed in `main.mounts.<pointer-id>`
interfaces:
main:
name: Network Interface
description: Specifies the interface to listen on for HTTP connections.
tor-config:
port-mapping:
80: "80"
lan-config:
80:
ssl: false
mapping: 80
ui: true
protocols:
- tcp
- http
alerts: {}
backup:
create:
type: docker
image: compat # default backup process of the compat docker image is duplicity - EOS will have access to the image defined here
system: true
entrypoint: compat # command to run the backup executable, in this case, duplicity
args: # arguments to pass into the entrypoint, in this case duplicity - in this example, the full command run will be: `duplicity hello-world file:///mnt/backup /root`
- duplicity
- hello-world
- /mnt/backup
- /root
mounts:
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the defice, or a network filesystem.
# The value here donates where the data mount point will be. Backup drive is mounted to this location, which contains previous backups.
BACKUP: "/mnt/backup"
main: "/root"
restore:
type: docker
image: compat
system: true
entrypoint: compat
args:
- duplicity
- hello-world
- /root
- /mnt/backup
mounts:
# See above comments under `backup: -> mounts:`
BACKUP: "/mnt/backup"
main: "/root"
actions: {} # Commands that can be issued from the UI. None for hello-world, but see below example (resetting a root user) for format:
# reset-root-user:
# name: Reset Root User
# description: Resets your root user (the first user) to username "admin" and a random password; restores any lost admin privileges.
# warning: This will invalidate existing sessions and password managers if you have them set up.
# allowed-statuses:
# - stopped
# implementation:
# type: docker
# image: main
# system: true
# entrypoint: docker_entrypoint.sh
# args: ["reset-root-user"]
# mounts:
# main: "/root"
########################################################################################################################
# compat: v0
# id: hello-world
# version: 0.2.0
# title: hello-world
# description:
# short: "A simple, minimal project to serve as a template for creating an app for the Embassy."
# long: "Hello World is a simple, minimal project to serve as a template for creating an app for the Embassy."
# release-notes: Initial release.
# # Alerts: omitting these will result in using the default alerts in EmbassyOS, except for start, which has no default.
# install-alert: This is an alert that will present before the user installs this service
# uninstall-alert: This is an alert that will present before the user uninstalls this service
# restore-alert: This is an alert that will present before the user restores this service from Embassy backup
# start-alert: This is an alert that will present before the user starts this service
# # Denotes whether this service has an instructions page. If this is true, it will pack in `instructions.md` in the same
# # directory as this manifest.yaml
# has-instructions: true
# # Denotes the version required and recommended
# # Required means that the package will not install if unsatisfied
# # Recommended means that the package will not be listed by the registry to instances of EmbassyOS that do not satisfy it
# os-version-required: ">=0.3.0"
# os-version-recommended: ">=0.3.0"
# # Port mappings from tor ports to the container port
# ports:
# - internal: 3000
# tor: 3000
# # if lan is custom, it will proxy HTTP traffic from the specified lan port to the internal port
# lan:
# custom:
# port: 80
# - internal: 3001
# tor: 3001
# # if lan is standard, it will proxy HTTP traffic from 443 to the internal port
# lan: standard
# - internal: 3002
# tor: 3002
# # if lan is null it will disable access over the local area network
# lan: ~
# # Do not change this
# image:
# type: tar
# # specifies where on the service's file system its persistence directory should be mounted prior to service startup
# mount: /root
# # Directory you would like to expose to dependent services, specified relative to the root of the persistence directory.
# # This will be a read-only filesystem for the dependent service
# public: public
# # Directory you would like to expose to dependent services, specified relative to the root of the persistence directory.
# # This will be a read-write filesystem for the dependent service
# shared: shared
# # Hidden Service version you would like to use for your services .onion url. Allowed options are "v2" and "v3"
# hidden-service-version: v3
# # This is a key value map specifying dependency services that you need to be able to function
# # The keys are the service id's on which you depend.
# # NOTE: if you are developing a standalone service, you may delete this entire stanza
# dependencies: {}
# # hello-world-dep:
# # # The version range that is acceptable for this dependency
# # version: ^0.1.0
# # # if `optional` is omitted, the dependency is required, otherwise it will display this string to explain why the
# # # dependency is optional
# # optional: This dependency is optional because of this reason
# # # Description of the dependency relationship
# # decription: hello-world uses hello-world-dep to demo dependencies
# # # If set to true it will mount the public directory of the dependency to $mount/start9/public/$dependencyId
# # mount-public: true
# # # If set to true it will mount the shared directory of the dependency to $mount/start9/shared/$dependencyId
# # mount-public: true
# # # This is a list of rules that levies requirements on the configuration of the dependency and suggests ways to
# # # remedy any incompatibilities. Documentation of this feature is outside the scope of this example config.
# # config: []