|
|
@@ -11,11 +11,23 @@
|
|
11
|
11
|
# export MTG_IMAGENAME="nineseconds/mtg:latest"
|
|
12
|
12
|
# curl -sfL --compressed https://raw.githubusercontent.com/9seconds/mtg/master/run.sh | bash
|
|
13
|
13
|
|
|
14
|
|
-set -eu -o pipefail
|
|
|
14
|
+set -eu
|
|
15
|
15
|
|
|
16
|
16
|
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
17
|
17
|
export MTG_CONFIG="${MTG_CONFIG:-$XDG_CONFIG_HOME/mtg}"
|
|
18
|
18
|
|
|
|
19
|
+if ! [ -x "$(command -v docker)" ]; then
|
|
|
20
|
+ echo 'Error: docker is not installed.' >&2
|
|
|
21
|
+ exit 1
|
|
|
22
|
+fi
|
|
|
23
|
+
|
|
|
24
|
+id -Gn "$USER" | grep -qw 'docker' > /dev/null
|
|
|
25
|
+if [ $? -eq 0 ] || [ "$(id -u)" -eq '0' ]; then
|
|
|
26
|
+ DOCKER_CMD="$(command -v docker)"
|
|
|
27
|
+else
|
|
|
28
|
+ DOCKER_CMD="sudo $(command -v docker)"
|
|
|
29
|
+fi
|
|
|
30
|
+
|
|
19
|
31
|
mkdir -p "$MTG_CONFIG" || true
|
|
20
|
32
|
|
|
21
|
33
|
MTG_SECRET="$MTG_CONFIG/secret"
|
|
|
@@ -26,33 +38,31 @@ if [ ! -f "$MTG_ENV" ]; then
|
|
26
|
38
|
MTG_PORT="${MTG_PORT:-3128}"
|
|
27
|
39
|
MTG_CONTAINER="${MTG_CONTAINER:-mtg}"
|
|
28
|
40
|
|
|
29
|
|
- echo "MTG_IMAGENAME=${MTG_IMAGENAME}" > "$MTG_ENV"
|
|
30
|
|
- echo "MTG_PORT=${MTG_PORT}" >> "$MTG_ENV"
|
|
31
|
|
- echo "MTG_CONTAINER=${MTG_CONTAINER}" >> "$MTG_ENV"
|
|
|
41
|
+ echo "MTG_IMAGENAME=$MTG_IMAGENAME" > "$MTG_ENV"
|
|
|
42
|
+ echo "MTG_PORT=$MTG_PORT" >> "$MTG_ENV"
|
|
|
43
|
+ echo "MTG_CONTAINER=$MTG_CONTAINER" >> "$MTG_ENV"
|
|
32
|
44
|
fi
|
|
33
|
45
|
|
|
34
|
46
|
set -a
|
|
35
|
47
|
source "$MTG_ENV"
|
|
36
|
48
|
set +a
|
|
37
|
49
|
|
|
38
|
|
-docker pull "$MTG_IMAGENAME"
|
|
|
50
|
+$DOCKER_CMD pull "$MTG_IMAGENAME" > /dev/null
|
|
39
|
51
|
if [ ! -f "$MTG_SECRET" ]; then
|
|
40
|
|
- docker run \
|
|
|
52
|
+ $DOCKER_CMD run \
|
|
41
|
53
|
--rm \
|
|
42
|
54
|
"$MTG_IMAGENAME" \
|
|
43
|
55
|
generate-secret tls -c "$(openssl rand -hex 16).com" \
|
|
44
|
56
|
> "$MTG_SECRET"
|
|
45
|
57
|
fi
|
|
46
|
58
|
|
|
47
|
|
-echo
|
|
48
|
59
|
echo "Proxy secret is $(cat "$MTG_SECRET"). Port is $MTG_PORT."
|
|
49
|
|
-echo
|
|
50
|
60
|
|
|
51
|
|
-docker ps --filter "Name=$MTG_CONTAINER" -aq | xargs -r docker rm -fv
|
|
52
|
|
-docker run \
|
|
|
61
|
+$DOCKER_CMD ps --filter "Name=$MTG_CONTAINER" -aq | xargs -r $DOCKER_CMD rm -fv > /dev/null
|
|
|
62
|
+$DOCKER_CMD run \
|
|
53
|
63
|
-d \
|
|
54
|
64
|
--restart=unless-stopped \
|
|
55
|
65
|
--name "$MTG_CONTAINER" \
|
|
56
|
66
|
--ulimit nofile=51200:51200 \
|
|
57
|
67
|
-p "$MTG_PORT:3128" \
|
|
58
|
|
- "$MTG_IMAGENAME" run "$(cat "$MTG_SECRET")"
|
|
|
68
|
+ "$MTG_IMAGENAME" run "$(cat "$MTG_SECRET")" > /dev/null
|