Last active 1732827231

opengist-install.bash Raw
1#!/usr/bin/bash
2
3# Description:
4# This script is for installing opengist. To use it, you need to execute it with a version as an argument
5#
6# For example:
7#
8# opengist-install 1.18.2
9
10# functions
11# example: rm / || die 'It didn't work!' 2
12die() {
13 local message=$1
14 local code=$2
15
16 echo -e "Error: $1"
17 exit $2
18}
19
20
21version=$1
22url="https://github.com/thomiceli/opengist/releases/download/v$version/opengist$version-linux-amd64.tar.gz"
23tar_file=${url##*/}
24binary="opengist$version-linux-amd64"
25
26# check if version was provided
27if [[ -z $version ]]; then
28 die "You didn't provide a version to install. Please, provide one similar to: a.b.c" 1
29fi
30
31# create user
32if ! id -u opengist; then
33 useradd -mr -d /var/lib/opengist opengist
34
35 ## create config dir
36 mkdir -p /etc/opengist
37fi
38
39# download
40curl -LO "$url"
41
42# extract binary
43tar -xavf "$tar_file" -C /usr/local/bin --strip-components=1 --transform="s@\$@1.8.2-linux-amd64@" opengist/opengist
44
45# extract config
46tar -xavf "$tar_file" -C /etc/opengist --strip-components=1 opengist/config.yml
47
48# symlink
49cd /usr/local/bin
50ln -s $binary opengist
51cd -
52
53# fix perms
54chown -R opengist:opengist /etc/opengist
55chmod 2770 $_
56chmod 660 $_/*
57chmod -R o-rwx /var/lib/opengist
58
59# create systemd service
60cat << EOF > /etc/systemd/system/opengist.service
61[Unit]
62Description=opengist Server
63After=network.target
64
65[Service]
66Type=simple
67User=opengist
68Group=opengist
69ExecStart=/usr/local/bin/opengist --config /etc/opengist/config.yml
70Restart=on-failure
71
72[Install]
73WantedBy=multi-user.target
74EOF
75
76# activate service
77systemctl daemon-reload
78systemctl enable --now opengist