Skip to content

Commit affe19f

Browse files
committed
Shim to the old install script but pin to v0.5.4
1 parent 262a657 commit affe19f

File tree

1 file changed

+2
-320
lines changed

1 file changed

+2
-320
lines changed

scripts/install

+2-320
Original file line numberDiff line numberDiff line change
@@ -1,325 +1,7 @@
11
#!/usr/bin/env bash
22
set -euo pipefail
33

4-
export DEBIAN_FRONTEND=noninteractive
5-
needrestart_conf_dir="/etc/needrestart/conf.d"
6-
needrestart_conf_file="${needrestart_conf_dir}/temp-disable-for-umbrel-install.conf"
7-
sudo mkdir -p "${needrestart_conf_dir}"
8-
echo "# Restart services (l)ist only, (i)nteractive or (a)utomatically.
9-
\$nrconf{restart} = 'l';
10-
# Disable hints on pending kernel upgrades.
11-
\$nrconf{kernelhints} = 0; " | sudo tee "${needrestart_conf_file}" > /dev/null
12-
trap "sudo rm -f ${needrestart_conf_file}" EXIT
13-
14-
# Default options
15-
BOOTSTRAPPED="false"
16-
PRINT_DOCKER_WARNING="true"
17-
UPDATE_APT="true"
18-
INSTALL_APT_DEPS="true"
19-
INSTALL_AVAHI="true"
20-
INSTALL_YQ="true"
21-
INSTALL_DOCKER="true"
22-
INSTALL_DOCKER_COMPOSE="true"
23-
INSTALL_START_SCRIPT="true"
24-
INSTALL_UMBREL="true"
25-
UMBREL_VERSION="v0.5.4"
26-
UMBREL_REPO="getumbrel/umbrel"
27-
UMBREL_INSTALL_PATH="$HOME/umbrel"
28-
29-
# Parse arguments
304
arguments=${@:-}
315

32-
if [[ "${arguments}" = *"--bootstrapped"* ]]
33-
then
34-
BOOTSTRAPPED="true"
35-
fi
36-
37-
if [[ "${arguments}" = *"--no-docker-warning"* ]]
38-
then
39-
PRINT_DOCKER_WARNING="false"
40-
fi
41-
42-
if [[ "${arguments}" = *"--no-install-avahi"* ]]
43-
then
44-
INSTALL_AVAHI="false"
45-
fi
46-
47-
if [[ "${arguments}" = *"--no-install-yq"* ]]
48-
then
49-
INSTALL_YQ="false"
50-
fi
51-
52-
if [[ "${arguments}" = *"--no-install-docker"* ]]
53-
then
54-
INSTALL_DOCKER="false"
55-
fi
56-
57-
if [[ "${arguments}" = *"--no-install-compose"* ]]
58-
then
59-
INSTALL_DOCKER_COMPOSE="false"
60-
fi
61-
62-
if [[ "${arguments}" = *"--no-install-start-script"* ]]
63-
then
64-
INSTALL_START_SCRIPT="false"
65-
fi
66-
67-
if [[ "${arguments}" = *"--no-install-umbrel"* ]]
68-
then
69-
INSTALL_UMBREL="false"
70-
fi
71-
72-
if [[ "${arguments}" = *"--no-install-deps"* ]]
73-
then
74-
UPDATE_APT="false"
75-
INSTALL_APT_DEPS="false"
76-
INSTALL_AVAHI="false"
77-
INSTALL_YQ="false"
78-
INSTALL_DOCKER="false"
79-
INSTALL_DOCKER_COMPOSE="false"
80-
INSTALL_UMBREL="true"
81-
fi
82-
83-
if [[ "${arguments}" = *"--version"* ]]
84-
then
85-
UMBREL_VERSION="$(echo "${arguments}" | sed 's/.*--version \([^ ]*\).*/\1/')"
86-
fi
87-
88-
if [[ "${arguments}" = *"--install-path"* ]]
89-
then
90-
UMBREL_INSTALL_PATH="$(echo "${arguments}" | sed 's/.*--install-path \([^ ]*\).*/\1/')"
91-
fi
92-
93-
get_umbrel_version() {
94-
version="${UMBREL_VERSION}"
95-
if [[ "${version}" = "release" ]]
96-
then
97-
version=$(curl --silent https://api.github.com/repos/${UMBREL_REPO}/releases/latest | sed -n 's/.*"tag_name": "\([^"]*\).*/\1/p')
98-
fi
99-
100-
echo $version
101-
}
102-
103-
bootstrap() {
104-
version=$(get_umbrel_version)
105-
curl --location --silent "https://raw.githubusercontent.com/${UMBREL_REPO}/${version}/scripts/install" | \
106-
bash -s -- --bootstrapped $arguments
107-
}
108-
109-
update_apt() {
110-
sudo apt-get update --yes
111-
}
112-
113-
install_apt_deps() {
114-
sudo apt-get install --yes fswatch jq rsync curl git gettext-base python3 gnupg
115-
}
116-
117-
install_avahi() {
118-
sudo apt-get install --yes avahi-daemon avahi-discover libnss-mdns
119-
}
120-
121-
install_yq() {
122-
# Define checksums for yq (4.24.5)
123-
declare -A yq_sha256
124-
yq_sha256["arm64"]="8879e61c0b3b70908160535ea358ec67989ac4435435510e1fcb2eda5d74a0e9"
125-
yq_sha256["amd64"]="c93a696e13d3076e473c3a43c06fdb98fafd30dc2f43bc771c4917531961c760"
126-
127-
yq_version="v4.24.5"
128-
system_arch=$(dpkg --print-architecture)
129-
yq_binary="yq_linux_${system_arch}"
130-
131-
# Download yq from GitHub
132-
yq_temp_file="/tmp/yq"
133-
curl -L "https://github.com/mikefarah/yq/releases/download/${yq_version}/${yq_binary}" -o "${yq_temp_file}"
134-
135-
# Check file matches checksum
136-
if [[ "$(sha256sum "${yq_temp_file}" | awk '{ print $1 }')" == "${yq_sha256[$system_arch]}" ]]; then
137-
sudo mv "${yq_temp_file}" /usr/bin/yq
138-
sudo chmod +x /usr/bin/yq
139-
140-
echo "yq installed successfully..."
141-
else
142-
echo "yq install failed. sha256sum mismatch"
143-
exit 1
144-
fi
145-
}
146-
147-
install_docker() {
148-
# Install Docker
149-
curl -fsSL https://get.docker.com | sudo sh
150-
}
151-
152-
install_docker_compose() {
153-
sudo apt-get install --yes python3-pip libffi-dev
154-
# We need to upgrade pip (via itself) because old pip versions in some OS repos fail to install deps.
155-
python3 -m pip install --upgrade pip
156-
sudo python3 -m pip install docker-compose
157-
}
158-
159-
get_arch() {
160-
machine_arch="$(uname --machine)"
161-
if [[ "${machine_arch}" = "x86_64" ]]
162-
then
163-
binary_arch="amd64"
164-
elif [[ "${machine_arch}" = "aarch64" ]]
165-
then
166-
binary_arch="arm64"
167-
else
168-
echo "Unsupported architecture: ${machine_arch}"
169-
exit 1
170-
fi
171-
172-
echo "${binary_arch}"
173-
}
174-
175-
install_umbrel() {
176-
version=$(get_umbrel_version)
177-
binary_arch=$(get_arch)
178-
curl --location "https://api.github.com/repos/${UMBREL_REPO}/tarball/${version}" | \
179-
tar --extract --gzip --strip-components=1 --directory="${UMBREL_INSTALL_PATH}"
180-
181-
binary_url="https://github.com/${UMBREL_REPO}/releases/download/${version}/umbreld-${version}-${binary_arch}.tar.gz"
182-
curl --fail --location "${binary_url}" | tar --extract --gzip --directory="${UMBREL_INSTALL_PATH}/bin"
183-
}
184-
185-
install_systemd_service() {
186-
echo "
187-
[Unit]
188-
Wants=network-online.target
189-
After=network-online.target
190-
Wants=docker.service
191-
After=docker.service
192-
193-
# This prevents us hitting restart rate limits and ensures we keep restarting
194-
# indefinitely.
195-
StartLimitInterval=0
196-
197-
[Service]
198-
Type=forking
199-
TimeoutStartSec=infinity
200-
TimeoutStopSec=16min
201-
ExecStart=${UMBREL_INSTALL_PATH}/scripts/start
202-
ExecStop=${UMBREL_INSTALL_PATH}/scripts/stop
203-
User=root
204-
Group=root
205-
StandardOutput=syslog
206-
StandardError=syslog
207-
SyslogIdentifier=umbrel startup
208-
RemainAfterExit=yes
209-
Restart=always
210-
RestartSec=10
211-
212-
[Install]
213-
WantedBy=multi-user.target" | sudo tee "/etc/systemd/system/umbrel-startup.service"
214-
sudo chmod 644 "/etc/systemd/system/umbrel-startup.service"
215-
sudo systemctl enable "umbrel-startup.service"
216-
}
217-
218-
main() {
219-
if [[ "${BOOTSTRAPPED}" = "false" ]]
220-
then
221-
bootstrap
222-
exit
223-
fi
224-
225-
if [[ "${INSTALL_UMBREL}" = "true" ]]
226-
then
227-
echo "About to install Umbrel in \"${UMBREL_INSTALL_PATH}\"."
228-
echo "If you would like to install somewhere else you can specify a custom location with:"
229-
echo
230-
echo " curl -L https://umbrel.sh | bash -s -- --install-path /some/path"
231-
echo
232-
echo "Waiting for 10 seconds..."
233-
echo
234-
echo "You may press Ctrl+C now to abort the install."
235-
echo
236-
sleep 10
237-
fi
238-
239-
if [[ "${PRINT_DOCKER_WARNING}" = "true" ]] && [[ "${INSTALL_DOCKER}" = "true" ]] && command -v docker >/dev/null 2>&1
240-
then
241-
242-
cat << 'EOF'
243-
It looks like you already have Docker installed. Umbrel requires a modern version of Docker so this script will update them with the official Docker install script.
244-
245-
If you would like to disable this behaviour you can abort this install and run again with --no-install-docker or --no-install-compose.
246-
247-
You can pass flags to the installer like this:
248-
249-
curl -L https://umbrel.sh | bash -s -- --no-install-docker --no-install-compose
250-
251-
Waiting for 30 seconds...
252-
253-
You may press Ctrl+C now to abort the install.
254-
255-
EOF
256-
sleep 30
257-
fi
258-
259-
if [[ "${INSTALL_UMBREL}" = "true" ]]
260-
then
261-
mkdir -p "${UMBREL_INSTALL_PATH}"
262-
if [[ "$(ls --almost-all "${UMBREL_INSTALL_PATH}")" ]]
263-
then
264-
echo "Error: Umbrel install path \"${UMBREL_INSTALL_PATH}\" already contains files"
265-
echo "You can install Umbrel in a custom location with:"
266-
echo
267-
echo " curl -L https://umbrel.sh | bash -s -- --install-path /some/path"
268-
exit 1
269-
fi
270-
fi
271-
272-
if [[ "${UPDATE_APT}" = "true" ]]
273-
then
274-
update_apt
275-
fi
276-
277-
if [[ "${INSTALL_APT_DEPS}" = "true" ]]
278-
then
279-
install_apt_deps
280-
fi
281-
282-
if [[ "${INSTALL_AVAHI}" = "true" ]]
283-
then
284-
install_avahi
285-
fi
286-
287-
if [[ "${INSTALL_YQ}" = "true" ]]
288-
then
289-
install_yq
290-
fi
291-
292-
if [[ "${INSTALL_DOCKER}" = "true" ]]
293-
then
294-
install_docker
295-
fi
296-
297-
if [[ "${INSTALL_DOCKER_COMPOSE}" = "true" ]]
298-
then
299-
install_docker_compose
300-
fi
301-
302-
if [[ "${INSTALL_UMBREL}" = "true" ]]
303-
then
304-
install_umbrel
305-
306-
if [[ "${INSTALL_START_SCRIPT}" = "true" ]]
307-
then
308-
install_systemd_service
309-
fi
310-
311-
# Do the initial start outside of systemd so we get logs
312-
sudo ${UMBREL_INSTALL_PATH}/scripts/start
313-
314-
if [[ "${INSTALL_START_SCRIPT}" = "true" ]]
315-
then
316-
# Kick off the systemd service again so it's in sync
317-
sudo systemctl start "umbrel-startup.service"
318-
fi
319-
320-
echo
321-
echo "Umbrel has been sucessfully installed!"
322-
fi
323-
}
324-
325-
main
6+
# Shim to the old install script but pin to v0.5.4
7+
curl https://raw.githubusercontent.com/getumbrel/umbrel/v0.5.4/scripts/install | bash -s -- --version v0.5.4 $arguments

0 commit comments

Comments
 (0)