Skip to main content

Tox Bootstrap Node on Debian

These steps have been tested on Debian 11

References:

Install Dependencies:

  • git (to clone the repo)
  • libc6 (includes libm, libthread, librt)
  • libconfig
  • cmake
  • libnacl (might not be necessary if libsodium is installed?)
  • libsodium (I still had to install this, even with libnacl installed...)
sudo apt update
sudo apt install git libc6-dev cmake libconfig-dev libnacl-dev libsodium-dev

Clone latest Git repository & submodules:

In your home directory or wherever you prefer to do compilation work:

git clone https://github.com/TokTok/c-toxcore.git
cd c-toxcore
git submodule update --init

Compile libtoxcore and tox-bootstrapd:

In the c-toxcore directory (you might be in it from the previous step):

mkdir _build
cd _build
cmake ..
make
make install

Did it Compile OK?

Verify the output text from make is all green and tox-bootstrapd was built:

[100%] Linking C executable tox-bootstrapd
[100%] Built target tox-bootstrapd

Create a tox-bootstrapd User & Restricted Home Directory:

sudo useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment "Account to run Tox's DHT bootstrap daemon" --user-group tox-bootstrapd
sudo chmod 700 /var/lib/tox-bootstrapd

Service & Configuration Files:

In the c-toxcore directory (cd .. if you're still in _build), copy the service and conf files to the system locations.  Keep in mind there is a directory structure under c-toxcore that is similar to the structure under _build, but the service and conf files are found under c-toxcore/other/bootstrap_daemon/ and the executable is found under c-toxcore/_build/other/bootstrap_daemon/.

Copy the service file to /etc/systemd/system/:
sudo cp other/bootstrap_daemon/tox-bootstrapd.service /etc/systemd/system/

If you will be using the default port number or a number greater than 1023, you can simply copy the service file and leave it as it is.  Otherwise, you will need to un-comment the line #CapabilityBoundingSet=CAP_NET_BIND_SERVICE.

Copy the configuration file to /etc/:
sudo cp other/bootstrap_daemon/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
Customize Configuration Settings:

Use nano or your favorite editor to edit /etc/tox-bootstrapd.conf:

sudo nano /etc/tox-bootstrapd.conf

At a minimum, edit your Message of the Day (MOTD), other bootstrap nodes, and probably also your ports.  A current list of public bootstrap nodes is displayed at https://nodes.tox.chat/.

port = 33445

keys_file_path = "/var/lib/tox-bootstrapd/keys"

pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"

enable_ipv6 = true

enable_ipv4_fallback = true

enable_lan_discovery = true

enable_tcp_relay = true

tcp_relay_ports = [443, 3389, 33445, 43334]

enable_motd = true

motd = "Write Your Custom MOTD Here! (up to 255 chars)"

bootstrap_nodes = (
  { // Tony (he's awesome)
    address = "tox.abilinski.com"
    port = 33445
    public_key = "10C00EB250C3233E343E2AEBA07115A5C28920E9C8D29492F6D00B29049EDC7E"
  },
  { // Cody (he's awesome too)
    address = "198.199.98.108"
    port = 33445
    public_key = "BEF0CFB37AF874BD17B9A8F9FE64C75521DB95A37D33C5BDB00E9CF58659C04F"
  },
  { // Gabe (he's just a geek)
    address = "104.225.141.59"
    port = 43334
    public_key = "933BA20B2E258B4C0D475B6DECE90C7E827FE83EFA9655414E7841251B19A72C"
  }
)

Install the tox-bootstrapd Executable:

Copy the tox-bootstrapd executable from _build/other/bootstrap_daemon/ to /usr/local/bin/:

sudo cp _build/other/bootstrap_daemon/tox-bootstrapd /usr/local/bin/tox-bootstrapd

Enable & Start the systemd Service:

sudo systemctl daemon-reload
sudo systemctl enable tox-bootstrapd.service
sudo systemctl start tox-bootstrapd.service
sudo systemctl status tox-bootstrapd.service

Did the Service Start OK?

If systemctl start didn't produce any text and systemctl status shows active (running), then you should be up and running!

Otherwise, scroll down/right (arrow keys) through the output text under systemctl status or try some of these helpful troubleshooting tips.

You can see a list of services that are listening on ports with:

sudo netstat -tunlp

Bootstrap Node Public Key:

Your public key should be listed near the bottom of the log entries:

sudo grep "tox-bootstrapd" /var/log/syslog

Enable External Ports:

You may need to open ports listed in /etc/tox-bootstrapd.conf:

sudo ufw allow 33445
sudo ufw allow 443/tcp
sudo ufw allow 3389/tcp

If you're not using ufw, you probably should be:

sudo apt update
sudo apt install ufw
sudo ufw allow ssh
sudo ufw enable

You can limit a port to a specific network interface (e.g. your VPN tunnel) using:

sudo ufw allow in on <interface> to any port <number>

Test your Bootstrap Node:

You can test outside connectivity to your node here:

https://nodes.tox.chat/test

Nginx Reverse Proxy:

In case this is useful, here's some information on configuring nginx as a reverse UDP & TCP proxy:

https://wilsons.life/bookstack/books/server-provisioning/page/nginx-reverse-udp-tcp-proxy

That's all!  Feel free to send me a message via Tox at:

 CD9E37503A5B2DFB41947B9A0E4B921381340B49FC318FEB07250789C715DA3470885905869F