From dfc244435d2c662d9075bb9561cd56ecea334550 Mon Sep 17 00:00:00 2001 From: Karel Hrkal Date: Thu, 18 Jul 2024 10:29:26 +0200 Subject: [PATCH] Add fast reverse proxy docker compose From https://github.com/fatedier/frp --- docker-compose/frpc/.env.example | 3 +++ docker-compose/frpc/.gitignore | 1 + docker-compose/frpc/Dockerfile | 14 ++++++++++++++ docker-compose/frpc/compose.yaml | 13 +++++++++++++ docker-compose/frpc/frpc.toml | 21 +++++++++++++++++++++ docker-compose/frps/.env.example | 3 +++ docker-compose/frps/.gitignore | 1 + docker-compose/frps/Dockerfile | 14 ++++++++++++++ docker-compose/frps/compose.yaml | 12 ++++++++++++ docker-compose/frps/frps.toml | 10 ++++++++++ 10 files changed, 92 insertions(+) create mode 100644 docker-compose/frpc/.env.example create mode 100644 docker-compose/frpc/.gitignore create mode 100644 docker-compose/frpc/Dockerfile create mode 100644 docker-compose/frpc/compose.yaml create mode 100644 docker-compose/frpc/frpc.toml create mode 100644 docker-compose/frps/.env.example create mode 100644 docker-compose/frps/.gitignore create mode 100644 docker-compose/frps/Dockerfile create mode 100644 docker-compose/frps/compose.yaml create mode 100644 docker-compose/frps/frps.toml diff --git a/docker-compose/frpc/.env.example b/docker-compose/frpc/.env.example new file mode 100644 index 00000000..649d7490 --- /dev/null +++ b/docker-compose/frpc/.env.example @@ -0,0 +1,3 @@ +# rename the file to .env +FRP_AUTH_TOKEN=your_auth_token +FRP_DASHBOARD_PASSWORD=your_dashboard_password diff --git a/docker-compose/frpc/.gitignore b/docker-compose/frpc/.gitignore new file mode 100644 index 00000000..4c49bd78 --- /dev/null +++ b/docker-compose/frpc/.gitignore @@ -0,0 +1 @@ +.env diff --git a/docker-compose/frpc/Dockerfile b/docker-compose/frpc/Dockerfile new file mode 100644 index 00000000..57182cb1 --- /dev/null +++ b/docker-compose/frpc/Dockerfile @@ -0,0 +1,14 @@ +FROM alpine:latest + +RUN apk add --no-cache wget tar + +ENV FRP_VERSION 0.59.0 + +RUN wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && tar -xzf frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && mv frp_${FRP_VERSION}_linux_amd64 /frp \ + && rm frp_${FRP_VERSION}_linux_amd64.tar.gz + +EXPOSE 7400 + +ENTRYPOINT ["/frp/frpc", "-c", "/frp/frpc.toml"] diff --git a/docker-compose/frpc/compose.yaml b/docker-compose/frpc/compose.yaml new file mode 100644 index 00000000..0cf46c41 --- /dev/null +++ b/docker-compose/frpc/compose.yaml @@ -0,0 +1,13 @@ +--- +services: + frpc: + build: . + container_name: frpc + ports: + - 7400:7400 + environment: + FRP_AUTH_TOKEN: ${FRP_AUTH_TOKEN} + FRP_DASHBOARD_PASSWORD: ${FRP_DASHBOARD_PASSWORD} + volumes: + - ./frpc.toml:/frp/frpc.toml + restart: unless-stopped diff --git a/docker-compose/frpc/frpc.toml b/docker-compose/frpc/frpc.toml new file mode 100644 index 00000000..96cbd985 --- /dev/null +++ b/docker-compose/frpc/frpc.toml @@ -0,0 +1,21 @@ +serverAddr = "your-frps-server.com" +serverPort = 7000 + +auth.method = "token" +auth.token = "{{ .Envs.FRP_AUTH_TOKEN }}" + +webServer.addr = "0.0.0.0" +webServer.port = 7400 + +webServer.user = "admin" +webServer.password = "{{ .Envs.FRP_DASHBOARD_PASSWORD }}" + + +# Now your (local!) portainer will be avaliable at your-frps-server.com:9000 +# (assuming you run frps on your server of course) +[[proxies]] +name = "portainer" +type = "tcp" +localIP = "host.docker.internal" +localPort = 9000 +remotePort = 9000 diff --git a/docker-compose/frps/.env.example b/docker-compose/frps/.env.example new file mode 100644 index 00000000..649d7490 --- /dev/null +++ b/docker-compose/frps/.env.example @@ -0,0 +1,3 @@ +# rename the file to .env +FRP_AUTH_TOKEN=your_auth_token +FRP_DASHBOARD_PASSWORD=your_dashboard_password diff --git a/docker-compose/frps/.gitignore b/docker-compose/frps/.gitignore new file mode 100644 index 00000000..4c49bd78 --- /dev/null +++ b/docker-compose/frps/.gitignore @@ -0,0 +1 @@ +.env diff --git a/docker-compose/frps/Dockerfile b/docker-compose/frps/Dockerfile new file mode 100644 index 00000000..e6b545a8 --- /dev/null +++ b/docker-compose/frps/Dockerfile @@ -0,0 +1,14 @@ +FROM alpine:latest + +RUN apk add --no-cache wget tar + +ENV FRP_VERSION 0.59.0 + +RUN wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && tar -xzf frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && mv frp_${FRP_VERSION}_linux_amd64 /frp \ + && rm frp_${FRP_VERSION}_linux_amd64.tar.gz + +EXPOSE 7000 7500 + +ENTRYPOINT ["/frp/frps", "-c", "/frp/frps.toml"] diff --git a/docker-compose/frps/compose.yaml b/docker-compose/frps/compose.yaml new file mode 100644 index 00000000..6b5d82f0 --- /dev/null +++ b/docker-compose/frps/compose.yaml @@ -0,0 +1,12 @@ +--- +services: + frps: + build: . + container_name: frps + network_mode: host + environment: + FRP_AUTH_TOKEN: ${FRP_AUTH_TOKEN} + FRP_DASHBOARD_PASSWORD: ${FRP_DASHBOARD_PASSWORD} + volumes: + - ./frps.toml:/frp/frps.toml + restart: unless-stopped diff --git a/docker-compose/frps/frps.toml b/docker-compose/frps/frps.toml new file mode 100644 index 00000000..1413fb31 --- /dev/null +++ b/docker-compose/frps/frps.toml @@ -0,0 +1,10 @@ +bindPort = 7000 + +auth.method = "token" +auth.token = "{{ .Envs.FRP_AUTH_TOKEN }}" + +webServer.addr = "0.0.0.0" +webServer.port = 7500 + +webServer.user = "admin" +webServer.password = "{{ .Envs.FRP_DASHBOARD_PASSWORD }}"