使用 docker-compose 简单自托管 WebWormhole.io

注意:此配置目前缺少 TURN 服务器,因此如果客户端无法相互访问则无法工作!我正在处理此问题。 WebWormhole.io 是一个类似并受 magic-wormhole 启发的新服务,允许在浏览器之间轻松共享文件而无需安装软件。在内部,它使用 WebRTC,允许即使在防火墙后也能在计算机之间直接传输文件。

虽然没有在 Docker Hub 上发布官方 Docker 镜像,但 WebWormhole GitHub 项目 提供了官方 Dockerfile。基于此,我发布了 ulikoehler/webwormhole,它使用以下命令构建

commands.sh
git clone https://github.com/saljam/webwormhole.git
cd webwormhole
docker build -t ulikoehler/webwormhole:latest .
docker push ulikoehler/webwormhole:latest

这是你可以用来在反向代理后面运行 WebWormhole 的 docker-compose.yml

docker-compose.yml
services:
    webwormhole:
        image: 'ulikoehler/webwormhole:latest'
        entrypoint: ["/bin/ww", "server", "-http=localhost:52618", "-https="]
        network_mode: host

这是我的 nginx 配置:

webwormhole_nginx.conf
server {
    server_name  webwormhole.mydomain.com;

    access_log off;
    error_log /var/log/nginx/webwormhole.mydomain.com.error.log;

    location / {
        proxy_pass http://localhost:52618/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_redirect default;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/webwormhole.mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/webwormhole.mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = webwormhole.mydomain.com) {
        return 301 https://$host$request_uri;
    }

    server_name webwormhole.mydomain.com;

    listen 80;
    return 404; # managed by Certbot
}

我将 docker-compose.yml 存储在 /var/lib/webwormhole.mydomain.com 中,并使用我们之前文章在 10 秒内为你的 docker-compose 项目创建 systemd 服务中的脚本在 /etc/systemd/system/webwormhole.mydomain.com.service 中创建此 systemd 配置文件:

webwormhole.service
[Unit]
Description=webwormhole.mydomain.com
Requires=docker.service
After=docker.service

[Service]
Restart=always
User=root
Group=docker
WorkingDirectory=/var/lib/webwormhole.mydomain.com
# 单元启动时关闭容器(如果正在运行)
ExecStartPre=/usr/local/bin/docker-compose -f docker-compose.yml down
# 单元启动时启动容器
ExecStart=/usr/local/bin/docker-compose -f docker-compose.yml up
# 单元停止时停止容器
ExecStop=/usr/local/bin/docker-compose -f docker-compose.yml down

[Install]
WantedBy=multi-user.target

你可以使用以下命令启动和启用

commands.sh
sudo systemctl enable webwormhole.mydomain.com
sudo systemctl start webwormhole.mydomain.com

Check out similar posts by category: Docker, Linux