Tox Bootstrap Node on Debian
These steps have been tested on Debian 11
References:
- https://wiki.tox.chat/users/runningnodes
- https://github.com/TokTok/c-toxcore/tree/master/other/bootstrap_daemon
Install Dependencies:
git(to clone the repo)libc6(includeslibm,libthread,librt)libconfigcmakelibnacl(might not be necessary iflibsodiumis installed?)libsodium(I still had to install this, even withlibnaclinstalled...)
sudo apt update
sudo apt install git libc6-dev cmake libconfig-dev libnacl-dev libsodium-dev
Clone latest Git repository & submodules:
- GitHub: TokTok/c-toxcore
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:
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
No Comments