← All downloads

DarkWire for the web

DarkWire in a web browser, on a server of your own. It's the same DarkWire as the apps, with the same encryption, and messages go straight between devices. The server only hands out the page: profiles, messages and contacts live in each visitor's own browser, or on their USB drive, never on the server. How it differs from the apps is on the Info page.

What you need.
  • HTTPS. Browsers only allow what DarkWire needs (push, a service worker, a drive) on an https:// address. The Docker image arranges that by itself.
  • PHP 8.1 or newer, for the push relay (relay.php). Chrome, Edge and Safari don't accept a push that a web page sends, so the page passes those to its own server, which forwards them. The push is sealed and encrypted before it leaves the browser. Without PHP the page still works, but contacts on Chrome, Edge or Safari can't be reached from it. The Docker image has PHP built in.
Which file?
  • Docker image, for Docker, Podman, Kubernetes or a NAS: load it with docker load -i darkwire-web-v0.19.74-docker.tar.gz and start it with one of two addresses:
    • With a domain name that points at your server, you get a real certificate automatically: docker run -d --name darkwire --restart unless-stopped -p 80:80 -p 443:443 -p 443:443/udp -e DARKWIRE_DOMAIN=chat.example.org -v darkwire-data:/data -v darkwire-config:/config darkwire-web:0.19.74
    • Only in your home network: the same, with -e DARKWIRE_LAN_IP=192.168.1.10 (your server's address) instead. The server then makes its own certificate, which every device trusts once. The README in the zip explains how, for each system.
  • Zip, for your own web server (Apache, nginx, Caddy or another): put its contents on an HTTPS site. For Apache, the .htaccess that comes with it sets everything up. Example configurations for nginx and Caddy, and a compose.yaml for Docker Compose, are in its examples folder, with a README for every way. Uploading by FTP? Set your FTP program to binary transfer (in FileZilla: Transfer → Transfer type → Binary). In its usual "Auto" or ASCII mode it may change text files on the way, and a changed file no longer matches the release, which a community server needs.
Updates. DarkWire in a browser shows a notice when a new version is out. Whoever runs the server puts the new version in place, and visitors get it the next time they open the page. Nobody's data is on the server, so nothing is lost.
Happy to let others use your server? People without a server of their own, such as iPhone users, can find it on the Community servers page. That page explains how to offer yours.
Both files are signed with DarkWire's own update key (Ed25519), the same key as the Linux packages. To check a download, save the public key next to it, put the file's signature from below in darkwire.sig with echo '<signature>' | base64 -d > darkwire.sig, and run openssl pkeyutl -verify -pubin -inkey darkwire-update-key.pem -rawin -in <file> -sigfile darkwire.sig. It answers Signature Verified Successfully for a genuine file.
Each release lists its size and SHA-256. To check a downloaded file, compare its SHA-256 with:
  • sha256sum <file> (Linux)
  • shasum -a 256 <file> (Mac)
  • certutil -hashfile <file> SHA256 (Windows)
Version Date What's in it
v0.19.74 Latest Oct 07, 2026

Fixed: adding a contact or connecting could fail without a message on some computers.

  • On a computer with many network connections (a VPN, Docker or virtual machines, for example), the connection details didn't fit in one push message, so pairing or connecting failed silently. DarkWire now leaves out the extra local addresses; only one is ever used.
  • DarkWire is now also available for Mac.


Download Zip — for your own web server

File: darkwire-web-v0.19.74.zip
Size: 2.0 MB (2,042,134 bytes)
SHA-256: 368f4e08d7201f793b074d81f23048b81bf738c43744899e09442e96f8acf674
Signature: LW5EdpS1JStSeg7tNjwXr5ZO+EMjbkNNEWgsBXaxpEMJJQ+gF/O5LjeGbwn9zvbAiR2GqvQUB1GpkUV/jzj6Dw==

Download Docker image — for docker load

File: darkwire-web-v0.19.74-docker.tar.gz
Size: 70.0 MB (70,040,414 bytes)
SHA-256: 5073a0aae1959e493dfce46cde088cc27256d816b1d0a860c97da8202393a65c
Signature: xDp+C74hj60jVTzc5hXw7cdlBGvop89zVjhfrWaatQWIeWJxSP0LOUmj3rS1hgohzlEf6ZKaY4RVUj1apV/uAQ==

v0.19.69 Oct 04, 2026

Report a problem in Settings → About, and a fix for servers uploaded by FTP.

  • New: Settings → About → Report a problem opens the form on darkwire.nl, with DarkWire for the web and its version already filled in.
  • Fixed: licenses.txt contained a few Windows line endings, which an FTP upload in text (ASCII) mode changes, so a community server could fail its check. Upload by FTP in binary mode; the README in the zip and the download page now say so.


Zip — for your own web server

File: darkwire-web-v0.19.69.zip
Size: 2.0 MB (2,041,911 bytes)
SHA-256: d915e1d8ac3ebc206a9ef283403dc48255843d14092f284639b71408b3b11089
Signature: 5eOGSFOAbzCm258IIdOPTBDXf24IqhjN+Yt197KQ149T+VRs8O+vk3ZCAejZUYpBYbH1WR+6N9pFOFI2476sBQ==

Docker image — for docker load

File: darkwire-web-v0.19.69-docker.tar.gz
Size: 70.0 MB (70,041,685 bytes)
SHA-256: 16233db310bbd93296f9d38278335ae07bc405601b1a4220988690104de4e5c6
Signature: +ihwA2LLC1QdP3r4kj6AZXbzP0kxysGHfhanffigbi1NmMLM8fXJsSif4L+/jzU2leGjR4IEQPGilu8u0z3kDg==

v0.19.67 Oct 04, 2026

Open-source licenses in Settings → About.

  • Settings → About → Open-source licenses lists every library in DarkWire for the web, with its full license text.


Zip — for your own web server

File: darkwire-web-v0.19.67.zip
Size: 2.0 MB (2,041,704 bytes)
SHA-256: fcfde65abb8c222abc376f8c417b721e3bdd1869d93208757fa624286d347ab0
Signature: HMMiz0NYpd44HR9Xvz0y9V8Izj5UjcBwuT8WmGy1aIaGGbIFMA2svvTYqluK7HXO7TQUD08IUhmhMVibT0RBAw==

Docker image — for docker load

File: darkwire-web-v0.19.67-docker.tar.gz
Size: 70.0 MB (70,041,517 bytes)
SHA-256: d741ed5e33ace4fe3f56ff1dc7ceda27ab44542a1f1345ebf8e4903f107258e2
Signature: KspndDmJ3QsxBaPVEPWAwkeET0Cw0MvWsXnpyraxgKb2h49FeLQfE7veB2i9CFPOdUgxYAydWzzmA/O/QNmTBA==

v0.19.62 Oct 04, 2026

After typing your drive's password, the app lock no longer asks for its PIN straight away.

  • If your DarkWire data is on a USB drive or in a folder, typing its password now counts as unlocking: the app lock doesn't ask for its PIN right after it. It still locks later, as you've set it.


Zip — for your own web server

File: darkwire-web-v0.19.62.zip
Size: 2.0 MB (1,995,526 bytes)
SHA-256: b61af0a1b61f769e73a29b262d44225117c029c2b71b902db0367c673d68de6e
Signature: rAR4mqL5Mq1l+GVmf65fQUj0mxrhb7vPQ34Ep3406B8iY4LwaBjD1wQKAGA2zhgUlEg0xhvsEUKGiINWF2l+Aw==

Docker image — for docker load

File: darkwire-web-v0.19.62-docker.tar.gz
Size: 70.0 MB (69,995,822 bytes)
SHA-256: 975827a029ff3583528431bddb7a8e6bb11a4a128f3807bec57fe59e6449bff3
Signature: upOd/hmqO7vYhqwsskz0exLpnSyaqsj2i6llBeWThSLD0v0ESG+dleR8hsBbSGtjUtpF9rmtyGbC3ULdw+gYDg==

v0.18.59 Oct 03, 2026

Fewer notifications while the tab is closed, and contacts that can no longer be reached are marked.

  • With DarkWire's tab closed, the browser tells you once that something arrived. Later pushes replace that notification silently until you've opened DarkWire again.
  • When a contact's notification address no longer exists (for example, they removed their notification app or cleared DarkWire in their browser), DarkWire stops trying to wake their device. The contact gets a red mark in Contacts, and you see "Can't reach this contact" when you tap them and in their chat. Your messages wait, and go out as soon as they can be reached again.


Zip — for your own web server

File: darkwire-web-v0.18.59.zip
Size: 2.0 MB (1,993,617 bytes)
SHA-256: a5fef0caac6d7f60582227c01b583a1ee97500309f6b7a24f235d3c95281bb3e
Signature: zSxCQb69IFEEpn0syVsA5tQtxvWArOt/ThLas9YkQTKzAw/rtasf7M46VX1VySeUojqnEgA8djgDpEnJmf73DA==

Docker image — for docker load

File: darkwire-web-v0.18.59-docker.tar.gz
Size: 70.0 MB (69,992,358 bytes)
SHA-256: 2c28f6196c5fc256f61be1a4c500beff257262e155a610494a2cce349a7c000d
Signature: rHulCW0aodBI78GgGn2MQHhPZ3OPZBh/ri+Zs6v2cFz0N5sK5ZNhCF+MQsdfsKEgfNPHzwFP9RN0LAU9Lw/5Cg==

v0.18.56 Oct 03, 2026

The first release: DarkWire in a web browser, on a server of your own.

  • DarkWire for the web: the same DarkWire as the apps, in Chrome, Edge, Firefox and other browsers. It can have a profile of its own, or be linked to your phone.
  • The server only hands out the page. Your profile, messages and contacts live in your browser, or on a USB drive in Chrome, Edge, Opera and Vivaldi.
  • Two ways to host it: the zip, for any web server with HTTPS (and PHP 8.1 or newer for the push relay), or the Docker image, which arranges HTTPS by itself, with a domain name or on your home network.
  • Works together with DarkWire for Android 0.20.201 and DarkWire Desktop 0.18.56 and newer.


Zip — for your own web server

File: darkwire-web-v0.18.56.zip
Size: 2.0 MB (1,993,024 bytes)
SHA-256: e035c3750a49539f216eb4cfb23358d2ae957df26e1bd44861a86b071011e688
Signature: cU6w9oUnBrcZT2MidIYZmfF8lrVQGoOjkahB+ZjGXXoKnHRtFa6Ip1OzD9pXeHt9JOUQRmGYT7HZmYcDEYz6CQ==

Docker image — for docker load

File: darkwire-web-v0.18.56-docker.tar.gz
Size: 70.0 MB (69,991,101 bytes)
SHA-256: 8797b752c321aa70076d38ed3ae6046fe322cbd63aea633deaaa9f2a155bca7e
Signature: k5IkBSP61PRCcm2EFnHnWBRlhjcdT+JYVCR7707P2hOt2Bo1T4Pls9j7qbPpv7o5NOIToSEKiJt37e2LxR9ZAw==