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.
svcops/frp0.71.0debian:13-slim/opt/frp/frps, /opt/frp/frpc/opt/frpUse an explicit version tag in production:
docker pull svcops/frp:0.71.0
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
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
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 port7500: optional dashboard port from the example server config6000, 3389, or any remotePort configured in client.tomlMount your frp configuration file into /opt/frp and start the matching binary:
./frps -c server.toml./frpc -c client.tomlThe image default command only keeps the container alive, so you should provide an explicit frps or frpc command for normal use.
auth.token before exposing the service.7500.svcops/frp:0.69.0 for repeatable deployments.Content type
Image
Digest
sha256:f8b9efb6c…
Size
41.9 MB
Last updated
19 days ago
docker pull svcops/frp