基于Docker的FRP内网穿透部署
服务器搭建(FRPS)
一键脚本
wget https://raw.githubusercontent.com/stilleshan/frps/master/frps_linux_install.sh && chmod +x frps_linux_install.sh && ./frps_linux_install.sh
# 以下为国内镜像
wget https://github.ioiox.com/stilleshan/frps/raw/branch/master/frps_linux_install.sh && chmod +x frps_linux_install.sh && ./frps_linux_install.sh
vi /usr/local/frp/frps.toml
# 修改 frps.toml 配置
sudo systemctl restart frps
# 重启 frps 服务即可生效
# 卸载
wget https://raw.githubusercontent.com/stilleshan/frps/master/frps_linux_uninstall.sh && chmod +x frps_linux_uninstall.sh && ./frps_linux_uninstall.sh
# 以下为国内镜像
wget https://github.ioiox.com/stilleshan/frps/raw/branch/master/frps_linux_uninstall.sh && chmod +x frps_linux_uninstall.sh && ./frps_linux_uninstall.sh
sudo systemctl start frps
# 启动服务
sudo systemctl enable frps
# 开机自启
sudo systemctl status frps
# 状态查询
sudo systemctl restart frps
# 重启服务
sudo systemctl stop frps
# 停止服务
docker-compose方式
sudo -i
mkdir -p /root/data/docker_data/frps
cd /root/data/docker_data/frps
touch frps.toml
touch docker-compose.yml
frps.toml
内容如下:
[common]
# frp 监听端口,与客户端绑定端口
bind_port= 5443
kcp_bind_port = 5443
# dashboard用户名
dashboard_user= admin
# dashboard密码
dashboard_pwd= admin
# dashboard端口,启动成功后可通过浏览器访问如http://ip:9527
dashboard_port= 9527
# 设置客户端token,对应客户端有页需要配置一定要记住,如果客户端不填写你连不上服务端
token = 123456789
docker-compose.yml
内容如下
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.toml:/etc/frp/frps.toml'
container_name: frps
image: snowdreamtech/frps
启动容器
docker-compose up -d
好了,这边 frp 服务端我们就已经搞定了。(如果有更高级的需求,可以自行参考官方文档来添加内容。)
客户端搭建(FRPC)
其实核心是一样的,只不过修改一下配置文件。
一键脚本
wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
# 以下为国内镜像
wget https://github.ioiox.com/stilleshan/frpc/raw/branch/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
vi /usr/local/frp/frpc.toml
# 修改 frps.toml 配置
sudo systemctl restart frpc
# 重启 frps 服务即可生效
# 卸载
wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh
# 以下为国内镜像
wget https://github.ioiox.com/stilleshan/frpc/raw/branch/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh
sudo systemctl start frpc
# 启动服务
sudo systemctl enable frpc
# 开机自启
sudo systemctl status frpc
# 状态查询
sudo systemctl restart frpc
# 重启服务
sudo systemctl stop frpc
# 停止服务
docker-compose方式
sudo -i
mkdir -p /root/data/docker_data/frpc
cd /root/data/docker_data/frpc
touch frpc.toml
touch docker-compose.yml
frpc.toml
内容如下:
# frpc.toml
[common]
server_addr = 你的vps公网ip
server_port = 5443
token = 123456789
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 3000
#[] 内填服务名,可自定义
#type 网络类型,默认就行
#local_ip 默认本地回环ip,不用改
#local_port 本机服务端口号,如AList是5244就填5244
#remote_port 服务端未占用端口号,可自定义
#需要几个服务就按这个格式加几个
[AList]
type = tcp
local_ip = 127.0.0.1
local_port = 5443
remote_port = 3001
docker-compose.yml
内容如下
services:
frpc:
restart: always
network_mode: host
volumes:
- './frpc.toml:/etc/frp/frpc.toml'
container_name: frpc
image: snowdreamtech/frpc
启动容器
docker-compose up -d
基于Docker的Nginx-Proxy-Manager反向代理部署
安装Nginx-Proxy-Manager
创建一下安装的目录
sudo -i
mkdir -p /root/data/docker_data/npm
cd /root/data/docker_data/npm
touch docker-compose.yml
docker-compose.yml
内容如下
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 保持默认即可,不建议修改左侧的80
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 保持默认即可,不建议修改左侧的443
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
查看端口是否被占用(以 81
为例),输入
lsof -i:81 #查看 81 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用
如果出现
-bash: lsof: command not found
运行
apt install lsof #安装 lsof
启动容器
cd /root/data/docker_data/npm # 来到 dockercompose 文件所在的文件夹下
docker-compose up -d
默认登陆名和密码
Email: admin@example.com
Password: changeme
更新 Nginx Proxy Manager
cd /root/data/docker_data/npm
docker-compose down
cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive # 万事先备份,以防万一
docker-compose pull
docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y
卸载 Nginx Proxy Manager
cd /root/data/docker_data/npm
docker-compose down
rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据
忘记 Nginx Proxy Manager 密码怎么办
SQLite(自 2021 年 11 月起默认)
恢复默认账户
docker ps #查看容器名称
docker exec -it <container-name> sh #<container-name>替换为npm容器名称
apt update && apt install sqlite3 -y
sqlite3 /data/database.sqlite
现在您已进入SQL模式,将所有用户的状态设置为已删除
UPDATE user SET is_deleted=1;
.exit
exit
重启容器
使用账户名admin@example.com
密码changeme
登录npm
恢复之前的账户
docker exec -it <container-name> sh #<container-name>替换为npm容器名称
apt update && apt install sqlite3 -y
sqlite3 /data/database.sqlite
UPDATE user SET is_deleted=0;
.exit
exit
MySQL(2021 年 11 月之前默认)
恢复默认账户
docker exec -it <container-name> sh
mysql -u root -p
USE npm;
UPDATE user SET is_deleted=1;
quit
exit
重启容器
使用账户名admin@example.com
密码changeme
登录npm
恢复之前的账户
docker exec -it <container-name> sh
mysql -u root -p
USE npm;
UPDATE user SET is_deleted=0;
quit
exit