Einfaches selbst-gehostetes WebWormhole.io mit docker-compose

English Deutsch

Hinweis: Diese Konfiguration hat derzeit keinen TURN-Server, daher funktioniert sie nicht, wenn die Clients einander nicht erreichen können! Ich arbeite daran. WebWormhole.io ist ein neuer Dienst, ähnlich zu und inspiriert von magic-wormhole, der das einfache Teilen von Dateien zwischen Browsern ohne Installation von Software ermöglicht. Intern verwendet es WebRTC, was direkte Dateiübertragungen zwischen Computern sogar durch Firewalls ermöglicht.

Während es kein offizielles Docker-Image auf Docker Hub gibt, stellt das WebWormhole GitHub-Projekt ein offizielles Dockerfile bereit. Darauf basierend habe ich ulikoehler/webwormhole veröffentlicht, das mit folgendem Befehl erstellt wurde:

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

Dies ist die docker-compose.yml, die Sie verwenden können, um WebWormhole hinter einem Reverse-Proxy zu betreiben:

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

und dies ist meine nginx-Konfiguration:

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
}

Ich speichere docker-compose.yml in /var/lib/webwormhole.mydomain.com und habe das Skript aus unserem vorherigen Beitrag Einen systemd-Dienst für Ihr docker-compose-Projekt in 10 Sekunden erstellen verwendet, um diese systemd-Konfigurationsdatei in /etc/systemd/system/webwormhole.mydomain.com.service zu erstellen:

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
# Container herunterfahren (falls laufend) wenn Unit gestartet wird
ExecStartPre=/usr/local/bin/docker-compose -f docker-compose.yml down
# Container starten wenn Unit gestartet wird
ExecStart=/usr/local/bin/docker-compose -f docker-compose.yml up
# Container stoppen wenn Unit gestoppt wird
ExecStop=/usr/local/bin/docker-compose -f docker-compose.yml down

[Install]
WantedBy=multi-user.target

den Sie aktivieren und starten können mit

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

Check out similar posts by category: Docker, Linux