mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 00:04:02 +03:00
FILE / ScuroNeko/mtg
run.sh
Исходный файл и его история в репозитории.
69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Configuration options (set by environment variables during script execution)
|
|
# - MTG_CONFIG - directory where mtg stores its configuration
|
|
# - MTG_IMAGENAME - a name of the docker image to use
|
|
# - MTG_PORT - which port of the host system should be used
|
|
# - MTG_CONTAINER - a name of the container to use
|
|
#
|
|
# Example:
|
|
# export MTG_CONFIG="$HOME/mtg_config"
|
|
# export MTG_IMAGENAME="nineseconds/mtg:latest"
|
|
# curl -sfL --compressed https://raw.githubusercontent.com/9seconds/mtg/master/run.sh | bash
|
|
|
|
set -eu
|
|
|
|
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
export MTG_CONFIG="${MTG_CONFIG:-$XDG_CONFIG_HOME/mtg}"
|
|
|
|
if ! [ -x "$(command -v docker)" ]; then
|
|
echo 'Error: docker is not installed.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
id -Gn "$USER" | grep -qw 'docker' > /dev/null
|
|
if [ $? -eq 0 ] || [ "$(id -u)" -eq '0' ]; then
|
|
DOCKER_CMD="$(command -v docker)"
|
|
else
|
|
DOCKER_CMD="sudo $(command -v docker)"
|
|
fi
|
|
|
|
mkdir -p "$MTG_CONFIG" || true
|
|
|
|
MTG_SECRET="$MTG_CONFIG/secret"
|
|
MTG_ENV="$MTG_CONFIG/env"
|
|
|
|
if [ ! -f "$MTG_ENV" ]; then
|
|
MTG_IMAGENAME="${MTG_IMAGENAME:-nineseconds/mtg:stable}"
|
|
MTG_PORT="${MTG_PORT:-3128}"
|
|
MTG_CONTAINER="${MTG_CONTAINER:-mtg}"
|
|
|
|
echo "MTG_IMAGENAME=$MTG_IMAGENAME" > "$MTG_ENV"
|
|
echo "MTG_PORT=$MTG_PORT" >> "$MTG_ENV"
|
|
echo "MTG_CONTAINER=$MTG_CONTAINER" >> "$MTG_ENV"
|
|
fi
|
|
|
|
set -a
|
|
source "$MTG_ENV"
|
|
set +a
|
|
|
|
$DOCKER_CMD pull "$MTG_IMAGENAME" > /dev/null
|
|
if [ ! -f "$MTG_SECRET" ]; then
|
|
$DOCKER_CMD run \
|
|
--rm \
|
|
"$MTG_IMAGENAME" \
|
|
generate-secret tls -c "$(openssl rand -hex 16).com" \
|
|
> "$MTG_SECRET"
|
|
fi
|
|
|
|
echo "Proxy secret is $(cat "$MTG_SECRET"). Port is $MTG_PORT."
|
|
|
|
$DOCKER_CMD ps --filter "Name=$MTG_CONTAINER" -aq | xargs -r $DOCKER_CMD rm -fv > /dev/null
|
|
$DOCKER_CMD run \
|
|
-d \
|
|
--restart=unless-stopped \
|
|
--name "$MTG_CONTAINER" \
|
|
--ulimit nofile=51200:51200 \
|
|
-p "$MTG_PORT:3128" \
|
|
"$MTG_IMAGENAME" run "$(cat "$MTG_SECRET")" > /dev/null
|