Compare commits

...

2 Commits

Author SHA1 Message Date
Teddysun
acef6b00a6
Added build_trojan-go-fork.sh 2023-11-15 20:55:50 +09:00
Teddysun
49ad970132
Update trojan-go 2023-11-15 20:52:50 +09:00
4 changed files with 179 additions and 114 deletions

View File

@ -1,30 +1,31 @@
# Dockerfile for trojan-go based alpine # Dockerfile for trojan-go based alpine
# Copyright (C) 2019 - 2021 Teddysun <i@teddysun.com> # Copyright (C) 2019 - 2023 Teddysun <i@teddysun.com>
# Reference URL: # Reference URL:
# https://github.com/p4gefau1t/trojan-go # https://github.com/p4gefau1t/trojan-go
# https://github.com/v2fly/v2ray-core # https://github.com/v2fly/v2ray-core
# https://github.com/v2fly/geoip # https://github.com/v2fly/geoip
# https://github.com/v2fly/domain-list-community # https://github.com/v2fly/domain-list-community
# https://github.com/Potterli20/trojan-go-fork
FROM --platform=${TARGETPLATFORM} alpine:latest
LABEL maintainer="Teddysun <i@teddysun.com>" FROM --platform=${TARGETPLATFORM} alpine:latest
LABEL maintainer="Teddysun <i@teddysun.com>"
ARG TARGETPLATFORM
COPY trojan-go.sh /root/trojan-go.sh ARG TARGETPLATFORM
COPY config.json /etc/trojan-go/config.json COPY trojan-go.sh /root/trojan-go.sh
RUN set -ex \ COPY config.json /etc/trojan-go/config.json
&& apk add --no-cache tzdata ca-certificates \ RUN set -ex \
&& chmod +x /root/trojan-go.sh \ && apk add --no-cache tzdata ca-certificates \
&& /root/trojan-go.sh "${TARGETPLATFORM}" \ && chmod +x /root/trojan-go.sh \
&& rm -fv /root/trojan-go.sh \ && /root/trojan-go.sh "${TARGETPLATFORM}" \
&& mkdir -p /usr/share/trojan-go \ && rm -fv /root/trojan-go.sh \
&& wget -O /usr/share/trojan-go/geosite.dat https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat \ && mkdir -p /usr/share/trojan-go \
&& wget -O /usr/share/trojan-go/geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat \ && wget -O /usr/share/trojan-go/geosite.dat https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat \
&& wget -O /usr/share/trojan-go/geoip-only-cn-private.dat https://github.com/v2fly/geoip/releases/latest/download/geoip-only-cn-private.dat \ && wget -O /usr/share/trojan-go/geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat \
&& ln -fs /usr/share/trojan-go/geoip.dat /usr/bin/ \ && wget -O /usr/share/trojan-go/geoip-only-cn-private.dat https://github.com/v2fly/geoip/releases/latest/download/geoip-only-cn-private.dat \
&& ln -fs /usr/share/trojan-go/geoip-only-cn-private.dat /usr/bin/ \ && ln -fs /usr/share/trojan-go/geoip.dat /usr/bin/ \
&& ln -fs /usr/share/trojan-go/geosite.dat /usr/bin/ && ln -fs /usr/share/trojan-go/geoip-only-cn-private.dat /usr/bin/ \
&& ln -fs /usr/share/trojan-go/geosite.dat /usr/bin/
VOLUME /etc/trojan-go
ENV TZ=Asia/Shanghai VOLUME /etc/trojan-go
CMD [ "/usr/bin/trojan-go", "-config", "/etc/trojan-go/config.json" ] ENV TZ=Asia/Shanghai
CMD [ "/usr/bin/trojan-go", "-config", "/etc/trojan-go/config.json" ]

View File

@ -1,65 +1,72 @@
## Trojan-Go Docker Image by Teddysun ## 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][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. 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. 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]. For more information on docker and containerization technologies, refer to [official document][2].
## Prepare the host ## Prepare the host
If you need to install docker by yourself, follow the [official installation guide][3]. If you need to install docker by yourself, follow the [official installation guide][3].
## Pull the image ## Pull the image
```bash ```bash
$ docker pull teddysun/trojan-go $ docker pull teddysun/trojan-go
``` ```
This pulls the latest release of trojan-go. This pulls the latest release of trojan-go.
It can be found at [Docker Hub][4]. It can be found at [Docker Hub][4].
## Start a container ## Start a container
You **must create a configuration file** `/etc/trojan-go/config.json` in host at first: You **must create a configuration file** `/etc/trojan-go/config.json` in host at first:
``` ```
$ mkdir -p /etc/trojan-go $ mkdir -p /etc/trojan-go
``` ```
A sample in JSON like below: A sample in JSON like below:
``` ```
{ {
"run_type": "server", "run_type": "server",
"local_addr": "0.0.0.0", "local_addr": "0.0.0.0",
"local_port": 443, "local_port": 443,
"remote_addr": "127.0.0.1", "remote_addr": "127.0.0.1",
"remote_port": 80, "remote_port": 80,
"password": [ "password": [
"your_awesome_password" "your_password"
], ],
"ssl": { "ssl": {
"cert": "server.crt", "cert": "your_cert.crt",
"key": "server.key", "key": "your_key.key",
"sni": "your-domain-name.com", "sni": "your-domain-name.com"
"fallback_port": 1234 },
} "router": {
} "enabled": true,
``` "block": [
"geoip:private"
An online documentation can be found [here](https://p4gefau1t.github.io/trojan-go/) ],
"geoip": "/usr/share/trojan-go/geoip.dat",
There is an example to start a container that use host network, run as a trojan-go server like below: "geosite": "/usr/share/trojan-go/geosite.dat"
}
```bash }
$ docker run -d --network host --name trojan-go --restart=always -v /etc/trojan-go:/etc/trojan-go teddysun/trojan-go ```
```
An online documentation can be found [here](https://p4gefau1t.github.io/trojan-go/)
[1]: https://github.com/p4gefau1t/trojan-go
[2]: https://docs.docker.com/ There is an example to start a container that use host network, run as a trojan-go server like below:
[3]: https://docs.docker.com/install/
```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/ [4]: https://hub.docker.com/r/teddysun/trojan-go/

View File

@ -0,0 +1,55 @@
#!/bin/bash
#
# 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 - 2023 Teddysun <i@teddysun.com>
#
# Reference URL:
# https://github.com/p4gefau1t/trojan-go
# https://github.com/Potterli20/trojan-go-fork
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}
#version=$(wget --no-check-certificate -qO- https://api.github.com/repos/p4gefau1t/trojan-go/tags | grep 'name' | cut -d\" -f4 | head -1)
#echo "git clone -b ${version} https://github.com/p4gefau1t/trojan-go.git"
echo "git clone https://github.com/Potterli20/trojan-go-fork.git"
#git clone -b ${version} https://github.com/p4gefau1t/trojan-go.git
git clone https://github.com/Potterli20/trojan-go-fork.git
cd trojan-go-fork || exit 2
PACKAGE_NAME="github.com/Potterli20/trojan-go-fork"
VERSION="$(git describe --tags)"
# VERSION="v2023.11.15"
COMMIT="$(git rev-parse HEAD)"
VAR_SETTING="-X ${PACKAGE_NAME}/constant.Version=${VERSION} -X ${PACKAGE_NAME}/constant.Commit=${COMMIT}"
LDFLAGS="-s -w ${VAR_SETTING} -buildid="
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-fork

View File

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