generated from Start9Labs/hello-world-startos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manifest.yaml
185 lines (184 loc) · 8.5 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
# Example written in yaml (toml and json are also acceptable)
# The package identifier used by the OS. This must be unique amongst all other known packages
id:
fedimintd
# A human readable service title
title: "Fedimint"
# Service version - accepts up to four digits, where the last confirms to revisions necessary for StartOS - see documentation: https://github.com/Start9Labs/emver-rs. This value will change with each release of the service.
version: 0.2.1.0
# Release notes for the update - can be a string, paragraph or URL
release-notes: "https://github.com/fedimint/fedimint/releases/tag/v0.2.1"
# The type of license for the project. Include the LICENSE in the root of the project directory. A license is required for a Start9 package.
license: mit
# The Start9 wrapper repository URL for the package. This repo contains the manifest file (this), any scripts necessary for configuration, backups, actions, or health checks (more below). This key must exist. But could be embedded into the source repository.
wrapper-repo: "https://github.com/EthnTuttle/fedimintd-startos"
# The original project repository URL. There is no upstream repo in this example
upstream-repo: "hhttps://github.com/fedimint/fedimint"
# URL to the support site / channel for the project. This key can be omitted if none exists, or it can link to the original project repository issues.
support-site: "https://fedimint.org/"
# URL to the marketing site for the project. This key can be omitted if none exists, or it can link to the original project repository.
marketing-site: "https://fedimint.org/"
# The series of commands to build the project into an s9pk for arm64/v8. In this case we are using a Makefile with the simple build command "make".
build: ["make"]
# Human readable descriptors for the service. These are used throughout the StartOS user interface, primarily in the marketplace.
description:
# This is the first description visible to the user in the marketplace.
short: Fedimint guardian server
# This description will display with additional details in the service's individual marketplace page
long: |
A modular open source protocol to custody and transact bitcoin in a community context, built on a strong foundation of privacy.
# These assets are static files necessary for packaging the service for Start9 (into an s9pk). Each value is a path to the specified asset. If an asset is missing from this list, or otherwise denoted, it will be defaulted to the values denoted below.
assets:
# Default = LICENSE.md
license: LICENSE
# Default = icon.png (.svg allowed)
icon: icon.png
# Default = INSTRUCTIONS.md
instructions: instructions.md
# Default = image.tar
# docker-images: image.tar
# ----- This section commented out until we support long-running containers -----
# The main action for initializing the service. This can be script to utilize the eOS scripting apis, or docker.
# main:
# type: script
# # Defines the containers needed to run the main and mounted volumes
# containers:
# main:
# # Identifier for the main image volume, which will be used when other actions need to mount to this volume.
# image: main
# # Specifies where to mount the data volume(s), if there are any. Mounts for pointer dependency volumes are also denoted here. These are necessary if data needs to be read from / written to these volumes.
# mounts:
# # Specifies where on the service's file system its persistence directory should be mounted prior to service startup
# main: /root
# ----- END commented section -----
main:
# Docker is currently the only action implementation
type: docker
# Identifier for the main image volume, which will be used when other actions need to mount to this volume.
image: main
# The executable binary for starting the initialization action. For docker actions, this is typically a "docker_entrypoint.sh" file. See the Dockerfile and the docker_entrypoint.sh in this project for additional details.
entrypoint: "docker_entrypoint.sh"
# Any arguments that should be passed into the entrypoint executable
args: []
# Specifies where to mount the data volume(s), if there are any. Mounts for pointer dependency volumes are also denoted here. These are necessary if data needs to be read from / written to these volumes.
mounts:
# Specifies where on the service's file system its persistence directory should be mounted prior to service startup
main: /data
fedimint: /fedimint-data
# This is where health checks would be defined - see a more advanced example in https://github.com/Start9Labs/start-pages-wrapper
health-checks: {}
config:
get:
type: script
set:
type: script
properties: ~
# type: script
# This denotes any data, asset, or pointer volumes that should be connected when the "docker run" command is invoked
volumes:
# This is the image where files from the project asset directory will go
main:
type: data
fedimint:
type: data
# This specifies how to configure the port mapping for exposing the service over TOR and LAN (if applicable). Many interfaces can be specified depending on the needs of the service. If it can be launched over a Local Area Network connection, specify a `lan-config`. Otherwise, at minimum, a `tor-config` must be specified.
interfaces:
# This key is the internal name that the OS will use to configure the interface
main:
# A human readable name for display in the UI
name: Peer-2-Peer Interface
# A descriptive description of what the interface does
description: The interface your Peer Guardians will connect to.
tor-config:
# Port mappings are from the external port to the internal container port
port-mapping:
80: "8173"
# Port mappings are from the external port to the internal container port
lan-config:
443:
ssl: true
internal: 8173
# Denotes if the service has a user interface to display
ui: false
# Denotes the protocol specifications used by this interface
protocols:
- tcp
- http
api:
# A human readable name for display in the UI
name: API Interface
# A descriptive description of what the interface does
description: The interface clients and setup UI will connect to.
tor-config:
# Port mappings are from the external port to the internal container port
port-mapping:
80: "8174"
# Port mappings are from the external port to the internal container port
lan-config:
443:
ssl: true
internal: 8174
# Denotes if the service has a user interface to display
ui: false
# Denotes the protocol specifications used by this interface
protocols:
- tcp
- http
dependencies:
bitcoind:
version: ">=0.21.1.2 <27.0.0"
requirement:
type: "opt-out"
how: Internal bitcoind is used by default.
description: Used as a blockchain backend.
config:
check:
type: script
auto-configure:
type: script
# Specifies how backups should be run for this service. The default StartOS provided option is to use the duplicity backup library on a system image (compat)
backup:
create:
# Currently, only docker actions are supported.
type: docker
# The docker image to use. In this case, a pre-loaded system image called compat
image: compat
# Required if the action uses a system image. The default value is false.
system: true
# The executable to run the command to begin the backup create process
entrypoint: compat
# Arguments to pass into the entrypoint executable. In this example, the full command run will be: `compat duplicity fedimintd /mnt/backup /root/data`
args:
- duplicity
- create
- /mnt/backup
# For duplicity, the backup mount point needs to be something other than `/root`, so we default to `/root/data`
- /root/data
mounts:
# BACKUP is the default volume that is used for backups. This is whatever backup drive is mounted to the device, or a network filesystem.
# The value here donates where the mount point will be. The backup drive is mounted to this location.
BACKUP: "/mnt/backup"
main: "/root/data"
# The action to execute the backup restore functionality. Details for the keys below are the same as above.
restore:
type: docker
image: compat
system: true
entrypoint: compat
args:
- duplicity
- restore
- /mnt/backup
- /root/data
mounts:
BACKUP: "/mnt/backup"
main: "/root/data"
migrations:
from:
"*":
type: script
args: ["from"]
to:
"*":
type: script
args: ["to"]