瀏覽代碼

Added Trojan-Go Docker Image

Signed-off-by: Teddysun <[email protected]>
Teddysun 5 年之前
父節點
當前提交
d0fb2fb7bb

+ 25 - 0
docker/trojan-go/Dockerfile

@@ -0,0 +1,25 @@
+# Dockerfile for trojan-go based alpine
+# Copyright (C) 2019 - 2020 Teddysun <[email protected]>
+# Reference URL:
+# https://github.com/p4gefau1t/trojan-go
+# https://github.com/v2ray/v2ray-core
+# https://github.com/v2ray/geoip
+# https://github.com/v2ray/domain-list-community
+
+FROM alpine:latest
+LABEL maintainer="Teddysun <[email protected]>"
+
+WORKDIR /root
+COPY trojan-go.sh /root/trojan-go.sh
+COPY config.json /etc/trojan-go/config.json
+RUN set -ex \
+	&& apk add --no-cache tzdata ca-certificates \
+	&& chmod +x /root/trojan-go.sh \
+	&& /root/trojan-go.sh \
+	&& rm -fv /root/trojan-go.sh \
+	&& wget -O /usr/bin/geosite.dat https://github.com/v2ray/domain-list-community/releases/latest/download/dlc.dat \
+	&& wget -O /usr/bin/geoip.dat https://github.com/v2ray/geoip/releases/latest/download/geoip.dat
+
+VOLUME /etc/trojan-go
+ENV TZ=Asia/Shanghai
+CMD [ "trojan-go", "-config", "/etc/trojan-go/config.json" ]

+ 26 - 0
docker/trojan-go/Dockerfile.architecture

@@ -0,0 +1,26 @@
+# Dockerfile for trojan-go based alpine
+# Copyright (C) 2019 - 2020 Teddysun <[email protected]>
+# Reference URL:
+# https://github.com/p4gefau1t/trojan-go
+# https://github.com/v2ray/v2ray-core
+# https://github.com/v2ray/geoip
+# https://github.com/v2ray/domain-list-community
+
+FROM --platform=${TARGETPLATFORM} alpine:latest
+LABEL maintainer="Teddysun <[email protected]>"
+
+ARG TARGETPLATFORM
+WORKDIR /root
+COPY trojan-go.sh /root/trojan-go.sh
+COPY config.json /etc/trojan-go/config.json
+RUN set -ex \
+	&& apk add --no-cache tzdata ca-certificates \
+	&& chmod +x /root/trojan-go.sh \
+	&& /root/trojan-go.sh "${TARGETPLATFORM}" \
+	&& rm -fv /root/trojan-go.sh \
+	&& wget -O /usr/bin/geosite.dat https://github.com/v2ray/domain-list-community/releases/latest/download/dlc.dat \
+	&& wget -O /usr/bin/geoip.dat https://github.com/v2ray/geoip/releases/latest/download/geoip.dat
+
+VOLUME /etc/trojan-go
+ENV TZ=Asia/Shanghai
+CMD [ "trojan-go", "-config", "/etc/trojan-go/config.json" ]

+ 65 - 0
docker/trojan-go/README.md

@@ -0,0 +1,65 @@
+## Trojan-Go Docker Image by Teddysun
+
+[Trojan-Go][1] is An unidentifiable mechanism that helps you bypass [GFW](https://en.wikipedia.org/wiki/Great_Firewall).
+
+Trojan-Go features multiple protocols over `TLS` to avoid both active/passive detections and ISP `QoS` limitations.
+
+Docker images are built for quick deployment in various computing cloud providers.
+
+For more information on docker and containerization technologies, refer to [official document][2].
+
+## Prepare the host
+
+If you need to install docker by yourself, follow the [official installation guide][3].
+
+## Pull the image
+
+```bash
+$ docker pull teddysun/trojan-go
+```
+
+This pulls the latest release of trojan-go.
+
+It can be found at [Docker Hub][4].
+
+## Start a container
+
+You **must create a configuration file**  `/etc/trojan-go/config.json` in host at first:
+
+```
+$ mkdir -p /etc/trojan-go
+```
+
+A sample in JSON like below:
+
+```
+{
+    "run_type": "server",
+    "local_addr": "0.0.0.0",
+    "local_port": 443,
+    "remote_addr": "127.0.0.1",
+    "remote_port": 80,
+    "password": [
+        "your_awesome_password"
+    ],
+    "ssl": {
+        "cert": "server.crt",
+        "key": "server.key",
+        "sni": "your-domain-name.com",
+        "fallback_port": 1234
+    }
+}
+```
+
+An online documentation can be found [here](https://p4gefau1t.github.io/trojan-go/basic/config/)
+
+There is an example to start a container that listen on port `443`, run as a Trojan server like below:
+
+```bash
+$ docker run -d --network host --name trojan-go --restart=always -v /etc/trojan-go:/etc/trojan-go teddysun/trojan-go
+```
+
+[1]: https://github.com/p4gefau1t/trojan-go
+[2]: https://docs.docker.com/
+[3]: https://docs.docker.com/install/
+[4]: https://hub.docker.com/r/teddysun/trojan-go/

+ 45 - 0
docker/trojan-go/build_trojan-go.sh

@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+# This is a Shell script for build multi-architectures trojan-go binary file
+# 
+# Supported architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
+# 
+# Copyright (C) 2020 Teddysun <[email protected]>
+#
+# Reference URL:
+# https://github.com/p4gefau1t/trojan-go
+
+cur_dir="$(pwd)"
+
+COMMANDS=( git go )
+for CMD in "${COMMANDS[@]}"; do
+    if [ ! "$(command -v "${CMD}")" ]; then
+        echo "${CMD} is not installed, please install it and try again" && exit 1
+    fi
+done
+
+cd ${cur_dir}
+git clone https://github.com/p4gefau1t/trojan-go.git
+cd trojan-go || exit 2
+go get -d -v
+
+LDFLAGS="-s -w"
+ARCHS=( 386 amd64 arm arm64 ppc64le s390x )
+ARMS=( 6 7 )
+
+for ARCH in ${ARCHS[@]}; do
+    if [ "${ARCH}" = "arm" ]; then
+        for V in ${ARMS[@]}; do
+            echo "Building trojan-go_linux_${ARCH}${V}"
+            env CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} GOARM=${V} go build -v -tags "full" -ldflags "${LDFLAGS}" -o ${cur_dir}/trojan-go_linux_${ARCH}${V}
+        done
+    else
+        echo "Building trojan-go_linux_${ARCH}"
+        env CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -v -tags "full" -ldflags "${LDFLAGS}" -o ${cur_dir}/trojan-go_linux_${ARCH}
+    fi
+done
+
+chmod +x ${cur_dir}/trojan-go_linux_*
+# clean up
+cd ${cur_dir} && rm -fr trojan-go
+

+ 21 - 0
docker/trojan-go/config.json

@@ -0,0 +1,21 @@
+{
+    "run_type": "server",
+    "local_addr": "0.0.0.0",
+    "local_port": 443,
+    "remote_addr": "127.0.0.1",
+    "remote_port": 80,
+    "password": [
+        "your_password"
+    ],
+    "ssl": {
+        "cert": "your_cert.crt",
+        "key": "your_key.key",
+        "sni": "your-domain-name.com"
+    },
+    "router":{
+        "enabled": true,
+        "block": [
+            "geoip:private"
+        ]
+    }
+}

+ 52 - 0
docker/trojan-go/trojan-go.sh

@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# This is a Shell script for trojan-go based alpine with Docker image
+# 
+# Copyright (C) 2019 - 2020 Teddysun <[email protected]>
+#
+# Reference URL:
+# https://github.com/p4gefau1t/trojan-go
+
+PLATFORM=$1
+if [ -z "$PLATFORM" ]; then
+    ARCH="amd64"
+else
+    case "$PLATFORM" in
+        linux/386)
+            ARCH="386"
+            ;;
+        linux/amd64)
+            ARCH="amd64"
+            ;;
+        linux/arm/v6)
+            ARCH="arm6"
+            ;;
+        linux/arm/v7)
+            ARCH="arm7"
+            ;;
+        linux/arm64|linux/arm64/v8)
+            ARCH="arm64"
+            ;;
+        linux/ppc64le)
+            ARCH="ppc64le"
+            ;;
+        linux/s390x)
+            ARCH="s390x"
+            ;;
+        *)
+            ARCH=""
+            ;;
+    esac
+fi
+[ -z "${ARCH}" ] && echo "Error: Not supported OS Architecture" && exit 1
+# Download binary file
+TROJAN_FILE="trojan-go_linux_${ARCH}"
+
+echo "Downloading binary file: ${TROJAN_FILE}"
+wget -O /usr/bin/trojan-go https://dl.lamp.sh/files/${TROJAN_FILE} > /dev/null 2>&1
+if [ $? -ne 0 ]; then
+    echo "Error: Failed to download binary file: ${TROJAN_FILE}" && exit 1
+fi
+echo "Download binary file: ${TROJAN_FILE} completed"
+
+chmod +x /usr/bin/trojan-go