Sign inSign up

svcops/frp

By svcops

•Updated 19 days ago

frp reverse proxy Docker image.

Image
0

1.2K

svcops/frp repository overview

⁠frp Docker Image

Docker image for frp⁠, a fast reverse proxy used to expose local services behind NAT or a firewall.

This image contains both frps and frpc under /opt/frp, so the same image can run as either a server or a client.

⁠Image

  • Docker Hub: svcops/frp
  • Current maintained tag: 0.71.0
  • Base image: debian:13-slim
  • Binaries: /opt/frp/frps, /opt/frp/frpc
  • Recommended working directory: /opt/frp

Use an explicit version tag in production:

docker pull svcops/frp:0.71.0

⁠Run frp Server

Create server.toml:

bindPort = 7000

log.to = "./log/frps.log"
log.level = "info"
log.maxDays = 3

auth.method = "token"
auth.token = "replace-with-a-strong-token"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "replace-with-a-strong-password"

Run with Docker:

docker run -d \
  --name frp-server \
  --network host \
  --restart always \
  -e TZ=Asia/Shanghai \
  -v "$(pwd)/server.toml:/opt/frp/server.toml" \
  -v "$(pwd)/log:/opt/frp/log" \
  -w /opt/frp \
  svcops/frp:0.69.0 \
  ./frps -c server.toml

Or use Docker Compose:

services:
  frp-server:
    image: svcops/frp:0.69.0
    container_name: frp-server
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./server.toml:/opt/frp/server.toml
      - ./log:/opt/frp/log
    working_dir: /opt/frp
    restart: always
    command:
      - ./frps
      - -c
      - server.toml

⁠Run frp Client

Create client.toml:

serverAddr = "your-server-ip"
serverPort = 7000

log.to = "./log/frpc.log"
log.level = "info"
log.maxDays = 3

auth.token = "replace-with-a-strong-token"

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
transport.useEncryption = true
transport.useCompression = true

Run with Docker:

docker run -d \
  --name frp-client \
  --network host \
  --restart always \
  -e TZ=Asia/Shanghai \
  -v "$(pwd)/client.toml:/opt/frp/client.toml" \
  -v "$(pwd)/log:/opt/frp/log" \
  -w /opt/frp \
  svcops/frp:0.69.0 \
  ./frpc -c client.toml

Or use Docker Compose:

services:
  frp-client:
    image: svcops/frp:0.69.0
    container_name: frp-client
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./client.toml:/opt/frp/client.toml
      - ./log:/opt/frp/log
    working_dir: /opt/frp
    restart: always
    command:
      - ./frpc
      - -c
      - client.toml

⁠Ports

When using network_mode: host, Docker does not need explicit port mappings.

If you use bridge networking instead, publish the ports required by your configuration:

  • 7000: default frp server bind port
  • 7500: optional dashboard port from the example server config
  • Proxy ports such as 6000, 3389, or any remotePort configured in client.toml

⁠Configuration

Mount your frp configuration file into /opt/frp and start the matching binary:

  • Server: ./frps -c server.toml
  • Client: ./frpc -c client.toml

The image default command only keeps the container alive, so you should provide an explicit frps or frpc command for normal use.

⁠Security Notes

  • Change the example auth.token before exposing the service.
  • Change or disable the dashboard credentials before exposing port 7500.
  • Prefer version-pinned tags such as svcops/frp:0.69.0 for repeatable deployments.
  • Review the official frp documentation before exposing sensitive internal services.

Tag summary

Content type

Image

Digest

sha256:f8b9efb6c…

Size

41.9 MB

Last updated

19 days ago

docker pull svcops/frp