Setup & Install
Acronyms
Choose where to host
WireTile is self-hosted, which means you decide where to host it. There are generally 2 options:
At home
Host at home using your own home server and residential internet connection.
A home server is simply a computer you own that stays powered on and is connected to your home network. Almost any computer will do, such as an old desktop or laptop.
In a datacenter
Host using a VPS from your preferred cloud hosting provider.
A low cost VPS will suffice, such as Vultr's $5/month.
Server setup
For simplicity these instructions will assume the server is running Linux Ubuntu Server LTS x64. For most other distros these steps would be similar if not identical.
Install WireTile
Systemd
Additional useful commands:
Docker
Additional useful commands (assumes in directory ~/wt):
Additional useful commands:
Certificates setup
The Web App expects your devices (e.g. desktop/laptop, phone) and server to trust web connections to/from each other. This is accomplished by using the certificate-authority.pem and client-certificate.p12 certificate files, which would be located on your server at ~/wt given the above instructions.
This process only has to be done one time per browser/device, unless in the future you decide to regenerate the certificates via the wiretile delete-certificates command.
What are these .pem and .p12 files?
These files are generated locally/offline when you first run WireTile and are unique to you.
Lookup asymmetric or public-key cryptography if interested in more details.
How do i send/copy the certificate files to my devices?
From server to desktop/laptop
Use the scp command to copy the certificate files from your server to your desktop/laptop.
For example, you would run something like scp [email protected]:~/wt/certificate-authority.pem ~/Downloads/ from your desktop/laptop, of course replacing this example's placeholder values with those appropriate for your setup.
From desktop/laptop to mobile device
There are many ways to send files between desktops/laptops and mobile devices. Use any method that is convenient for you, so long as the certificate files remain private and only visible to you, i.e. don't share them publicly.
For example:
  • Use a network-based file sharing app such as Quick Share or KDE Connect.
  • Use a local/cloud network storage app.
  • Connect devices together via a USB cable.
  • Use an external storage device such as an SSD or SD card to ferry files.
First copy the certificate-authority.pem and client-certificate.p12 certificate files to your device's Downloads folder, then add/import them as shown below. Afterwards you can delete them from the Downloads folder.
If prompted for a password when adding client-certificate.p12 simply leave it blank and continue.
Desktop
Add certificates to the web browser:
Mobile
Add certificates to the OS:
Web App
WireTile's logs will display a "Web App URLs" section listing the URLs to access the Web App. See Server setup for command to view logs. From your device (e.g. desktop/laptop, phone) navigate to the URL using a web browser. There can be up to 4 URLs listed depending on your network setup, in which case try each until one succeeds.
On mobile using a Chromium-based browser is required, because mobile Firefox doesn't support client certificates.
Reminder that Certificates setup must be completed on the device in order for it to access the Web App.
Commands
Usage: wiretile [OPTIONS] [COMMAND] OPTIONS: --help -v, --version --data {path} Path to data directory for local database and other files. Defaults to binary's current dir. --net-port {port} Port for server's TCP peer-to-peer communication. Default 4004. --web-port {port} Port for web app's HTTPS. Default 4000. --no-upnp Don't use UPnP to automatically manage router NAT and/or firewall. --ipv4-public {addr} IPv4 public address. Default queries router via UPnP, unless using --no-upnp. --ipv4-private {addr} IPv4 private address. Defaults to best guess. --ipv6-public {addr} IPv6 public address. Defaults to best guess. --ipv6-private {addr} IPv6 private address. Defaults to best guess. --interface {name} Obtain the above IP addrs from this network interface. Defaults to best guess. --log-level {lvl} Logging level. "debug", "info", "warn", or "error". Default "info". COMMAND: help version identity Print peer-to-peer identity information. delete-certificates Delete all keys and certs used for web app. New keys and certs will be generated on start. delete-messages Delete all messages in local database across all rooms.