tools

snapdrop部署–docker版

admin · 1月6日 · 2023年

突然发现了snapdrop这个好玩意,自己部署了个,发现不在一个局域网内也会显示设备图标,这能忍吗?不能

研究了下,snapdrop是根据公网ip判断是否在一个局域网,看了下nginx的配置,应该是真实ip的传递出了问题

下面有2种解决方案

docker拉取没什么说的

docker pull linuxserver/snapdrop

接下来有个小坑,这个镜像里面是有个nginx的,官方文档推荐暴露80和443端口,ssl证书配置在容器内部,但是一般不是放这种方式

我一般喜欢在docker前面加个nginx代理,配置ssl证书比较统一,但是直接前面加个nginx 的话,由于存在二级代理,snapdrop会出现不在一个局域网内也会出现传输图标的情况,这是由于真实IP的问题,下面有2个解决方案

1.直接修改容器内的nginx 配置文件

# 进入容器内部
docker exec -it {ID} bash  
vi /config/nginx/site-confs/default.conf
 
#将
    location /server {
          --------
    }
# 中的
proxy_set_header X-Forwarded-for $remote_addr;
# 修改为
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
 
nginx -s reload 
# 即可

此方式有个弊端,更新容器后需要重新修改配置

2.直接暴露3000端口

# 创建容器是直接暴露3000端口
docker run -d  --name snapdrop --restart=always -p 3000:3000  -d linuxserver/snapdrop 
 
# 到github下载源码
https://github.com/RobinLinus/snapdrop
 
# 将client文件夹放到/software/www/client(看自己喜好)
 
# 在nginx 中配置为
    location / {
        root   /software/www/client;
        index  index.html index.htm;
    }
 
    location /server {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $remote_addr;
    }
 
# 将前后端分离即可