-
Notifications
You must be signed in to change notification settings - Fork 13
/
install
283 lines (231 loc) · 9.34 KB
/
install
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
#!/bin/bash
# <!-- IGNORE: This line is intentional DO NOT MODIFY --><pre><script>document.querySelector('body').firstChild.textContent = '#!/bin/bash'</script>
# "Get Fleek Network" is an attempt to make our software more accessible.
# By providing scripts to automate the installation process of our software,
# we believe that it can help improve the onboarding experience of our users.
#
# Quick install: `curl https://get.fleek.network | bash`
#
# This script automates the process illustrated in our install documentation and guides,
# advanced users might find it better to follow the instructions in the documentation site.
# If that's your preference, go ahead and check our guides https://docs.fleek.network
#
# Contributing?
# - If you'd like to test changes locally based on a Lightning repo branch use the env var `USE_LIGHTNING_BRANCH`
# - If you'd like to test changes locally based on a get.fleek.network repo branch use the env var `USE_GET_BRANCH`
# E.g. curl https://raw.githubusercontent.com/fleek-network/get.fleek.network/feat/foobar-foo-bar/install | USE_GET_BRANCH="feat/foobar-foo-bar" bash
#
# Found an issue? Please report it here: https://github.com/fleek-network/get.fleek.network
# TODO: Switch to main on release
defaultBranch="testnet-internal"
useBranch=${USE_LIGHTNING_BRANCH="$defaultBranch"}
useGetBranch=${USE_GET_BRANCH="main"}
# Workdir
if ! cd "$(mktemp -d)"; then
echo "👹 Oops! We tried to create a temporary directory to host some install artifacts but failed for some reason..."
exit 1
fi
# Defaults
defaultTestInstallMagicWord=I_AM_FULLY_AWARE_AND_WANT_TO_PROCEED_TO_TEST_INSTALL_ONLY
defaultMenuOptionInstall="🤖 Install"
defaultMenuOptionUtils="⚙️ Tools"
defaultMenuOptionQuit="👻 Quit"
defaultMenuOptionNative="🔫 Natively (recommended)"
defaultMenuOptionDocker="👾 Docker (unstable)"
defaultMenuOptionHealthCheck="🚑 Health check"
defaultMenuOptionNodeDetails="🎮 Node details"
defaultMenuOptionUpdate="📢 Node Update"
defaultMenuOptionServerDetails="📸 Server details"
defaultMenuOptionShutdown="💤 Shutdown"
defaultScriptNameHealthCheck="healthcheck"
defaultScriptNameNodeDetails="node_details"
defaultScriptNameUpdate="update"
defaultScriptNameInstallNative="install_native"
defaultScriptNameInstallDocker="install_docker"
defaultScriptNameServerDetails="server_details"
defaultScriptNameShutdown="shutdown"
# Utils
testnetPhaseFinishedWarning() {
echo "⚠️ WARNING: The Testnet Phase {1} has ENDED on Thursday, Oct. 26th 2023! You'll HAVE TO WAIT for next Testnet Phase in order to run a node successfully. If you'd like TO PARTICIPATE on the next phase, keep track of our announcements by following us on Discord and Twitter to avoid disappointment!"
echo
echo "If you decide to set up a node for testing the INSTALL PROCESS ONLY, knowing that it'll fail to run successfully, you can do so by typing $defaultTestInstallMagicWord in the prompt."
echo
while read -rp "🙋♀️ What do you have to type to proceed with the installation only? " answer; do
if [[ "$answer" == "$defaultTestInstallMagicWord" ]]; then
echo
read -rp "⚠️ WARNING: The installer will now proceed. Remember that the node will NOT RUN SUCCESSFULLY as you have to wait for the new Testnet Phase announcement and rules. If you keep the setup, the future Testnet Phase will require you to update or troubleshoot it! Press ENTER to continue..."
echo
break;
fi
echo
echo "💩 Uh-oh! Seems that you haven't read the warning message. Exited!"
echo
exit 1
done
}
menuTopLevel() {
PS3=$'\n🙏 Please enter your choice: \n'
options=("$defaultMenuOptionInstall" "$defaultMenuOptionUtils" "$defaultMenuOptionQuit")
selected=""
select opt in "${options[@]}"; do
case $opt in
"$defaultMenuOptionInstall")
selected="$defaultMenuOptionInstall"
break
;;
"$defaultMenuOptionUtils")
selected="$defaultMenuOptionUtils"
break
;;
"$defaultMenuOptionQuit")
selected="$defaultMenuOptionQuit"
break
;;
*) echo "👹 Oop! Invalid option $REPLY, try again...";;
esac
done
echo "$selected"
}
menuInstall() {
PS3=$'\n🙏 Please enter your choice: \n'
options=("$defaultMenuOptionNative" "$defaultMenuOptionDocker" "$defaultMenuOptionQuit")
select opt in "${options[@]}"; do
case $opt in
"$defaultMenuOptionNative")
selected="$defaultMenuOptionNative"
break
;;
"$defaultMenuOptionDocker")
selected="$defaultMenuOptionDocker"
break
;;
"$defaultMenuOptionQuit")
selected="$defaultMenuOptionQuit"
break
;;
*) echo "👹 Oop! Invalid option $REPLY, try again...";;
esac
done
echo "$selected"
}
menuUtils() {
PS3=$'\n🙏 Please enter your choice: \n'
options=("$defaultMenuOptionHealthCheck" "$defaultMenuOptionNodeDetails" "$defaultMenuOptionUpdate" "$defaultMenuOptionServerDetails" "$defaultMenuOptionShutdown" "$defaultMenuOptionQuit")
selected=""
select opt in "${options[@]}"; do
case $opt in
"$defaultMenuOptionHealthCheck")
selected="$defaultMenuOptionHealthCheck"
break
;;
"$defaultMenuOptionNodeDetails")
selected="$defaultMenuOptionNodeDetails"
break
;;
"$defaultMenuOptionUpdate")
selected="$defaultMenuOptionUpdate"
break
;;
"$defaultMenuOptionServerDetails")
selected="$defaultMenuOptionServerDetails"
break
;;
"$defaultMenuOptionShutdown")
selected="$defaultMenuOptionShutdown"
break
;;
"$defaultMenuOptionQuit")
selected="$defaultMenuOptionQuit"
break
;;
*) echo "👹 Oop! Invalid option $REPLY, try again...";;
esac
done
echo "$selected"
}
quitProcess() {
printf "\n\n🦖 The get.fleek.network process has terminated!\n\n"
exit 1
}
runScriptByName() {
curl -s "https://raw.githubusercontent.com/fleek-network/get.fleek.network/$useGetBranch/scripts/$1" > "$1"
chmod +x "$1"
./"$1"
}
# The white space before and after is intentional
cat << "ART"
⭐️ Get! Fleek Network ⭐️
zeeeeee-
z$$$$$$"
d$$$$$$"
d$$$$$P
d$$$$$P
$$$$$$"
.$$$$$$"
.$$$$$$"
4$$$$$$$$$$$$$"
z$$$$$$$$$$$$$"
"""""""3$$$$$"
z$$$$P
d$$$$"
.$$$$$"
z$$$$$"
z$$$$P
d$$$$$$$$$$"
*******$$$"
.$$$"
.$$"
4$P"
z$"
zP
z"
/
ART
(
trap quitProcess INT
exec < /dev/tty;
if ! lscpu | grep -q 'GenuineIntel'; then
echo "⚠️ WARNING: The Fleek Network node binary is only supported on CPUs that adhere to the x86_64 architecture but mainly supporting GenuineIntel, as there's been reports of failure on AMD. ARM64 is not supported, but efforts have been put to support it. To learn more read the requirements section in https://docs.fleek.network/docs/node/requirements."
read -rp "Press ENTER to continue..."
echo
echo
fi
echo "👋 The following menu provides you access to the installation process of a node, or the diagnostic and utility tools."
echo
selected=$(menuTopLevel)
echo
if [[ "$selected" == "$defaultMenuOptionInstall" ]]; then
testnetPhaseFinishedWarning
echo "👉 To install a node, choose between building it natively, or running as a docker container. The native install builds the binary from source-code, while the docker container is an instance of a prebuilt image."
echo
selected=$(menuInstall)
elif [[ "$selected" == "$defaultMenuOptionUtils" ]]; then
echo "👉 The tools gives you access to a set of diagnostic processes to help you assess information about your node, e.g. health checks, details, etc."
echo
selected=$(menuUtils)
elif [[ "$selected" == "$defaultMenuOptionQuit" ]]; then
quitProcess
fi
echo
if [[ "$selected" == "$defaultMenuOptionNative" ]]; then
echo
echo "Before we launch the process, just to let you know that the Lightning CLI will be compiled from the Rust 🦀 source code. Depending on your machine specifications this can be quite slow, be patient!"
echo
read -rp "Let's launch the process, press ENTER to continue..."
runScriptByName "$defaultScriptNameInstallNative"
elif [[ "$selected" == "$defaultMenuOptionDocker" ]]; then
echo
read -rp "We'll launch the Docker install process, press ENTER to continue..."
runScriptByName "$defaultScriptNameInstallDocker"
elif [[ "$selected" == "$defaultMenuOptionHealthCheck" ]]; then
runScriptByName "$defaultScriptNameHealthCheck"
elif [[ "$selected" == "$defaultMenuOptionNodeDetails" ]]; then
runScriptByName "$defaultScriptNameNodeDetails"
elif [[ "$selected" == "$defaultMenuOptionUpdate" ]]; then
runScriptByName "$defaultScriptNameUpdate"
elif [[ "$selected" == "$defaultMenuOptionServerDetails" ]]; then
runScriptByName "$defaultScriptNameServerDetails"
elif [[ "$selected" == "$defaultMenuOptionShutdown" ]]; then
runScriptByName "$defaultScriptNameShutdown"
fi
)