tau

tau is the mainstream implementation of a Taubyte Node. When interconnected, these nodes form a network that's cloud computing-ready, offering features such as:
- Serverless WebAssembly Functions
- Website/Frontend Hosting
- Object Storage
- K/V Database
- Pub-Sub Messaging
For detailed documentation, visit https://tau.how.
Getting started
Requirements
Hardware
The requirements for tau vary depending on the shape, but at a minimum, assuming an empty shape, it requires:
- 512MB of RAM
- 2GB of storage space
Operating system
While tau can be cross-compiled to various operating systems, for a quick and seamless deployment we recommend using a Linux distribution that employs SystemD.
Network requirements
Depending on the enabled protocols, tau will require certain network ports to be available and open:
- Three configurable TCP ports for peer-to-peer (P2P) communication
- Ports 80 and 443 for HTTP and HTTPS respectively
- Ports 53 and 953 for DNS, supporting both TCP and UDP
Freeing DNS Ports
DNS needs to be freed up for seer protocol to start properly. Follow these steps to adjust DNS settings:
- Open
/etc/systemd/resolved.conf with a text editor (nano, vim)
- Set
DNS=1.1.1.1 and DNSStubListener=no
- Run
systemctl restart systemd-resolved.service
- Run
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Installation
From source
$ go install github.com/taubyte/tau
From binary
To download the latest release run:
$ curl https://get.tau.link/tau | sh
To install
$ curl https://get.tau.link/tau | sh -s -- -i
Other options:
-O <path/to/download/folder> if not specefied a temporrary folder is used
-r <path/to/root> by default /tb
Filesystem Structure
We at Taubyte prioritize convention over configuration. Hence, we've pre-defined the filesystem structure and its location as follows:
/tb
├── bin
│ └── tau
├── cache
├── config
│ ├── <shape-1>.yaml
│ ├── <shape-2>.yaml
│ └── keys
│ ├── private.key
│ ├── public.pem
│ └── swarm.key
├── logs
├── plugins
└── storage
Note: If you prefer a different location, use the --root option.
Configuration
Configuration files for tau are located at /tb/config/shape-name.yaml. Here's an example:
privatekey: CAESQJxQzCe/N/C8A5TIgrL9F0p5iG...KzYW9pygBCTJSuezIc6w/TT/unZKJ5mo=
swarmkey: keys/test_swarm.key
protocols: [patrick,substrate,tns,monkey,seer,auth]
p2p-listen: [/ip4/0.0.0.0/tcp/8100]
p2p-announce: [/ip4/127.0.0.1/tcp/8100]
ports:
main: 8100
lite: 8102
ipfs: 8104
location:
lat: 120
long: 21
network-url: example.com
domains:
key:
private: keys/test.key
services: ^[^.]+\.tau\.example\.com$
generated: g\.example\.com$
Running tau
Execute a tau node with:
tau start --shape shape-name
For an alternative root to /tb:
$ tau start --shape shape-name --root path-to-root
Systemd Configuration
To ensure that tau runs as a service and starts automatically upon system boot, you can set it up as a systemd service.
- Create a new service file:
$ sudo nano /etc/systemd/system/tau.service
- Add the following content to the file:
[Unit]
Description=Taubyte Node Service
After=network.target
[Service]
ExecStart=/path/to/tau/bin tau start --shape shape-name --root path-to-root
User=username
Restart=on-failure
[Install]
WantedBy=multi-user.target
Replace /path/to/tau/bin with the actual path to your tau binary and username with the name of the user running tau.
- Enable and start the service:
$ sudo systemctl enable tau
$ sudo systemctl start tau
To check the status:
$ sudo systemctl status tau
This ensures tau runs consistently, even after system reboots.
Setting up DNS for your network
Next, set up DNS records for your seer, generated domain, and service URLs, all with a 1-minute TTL.
Seer
For each host running seer, add an A Record.
Host: seer -> Value: 127.0.0.1
Generated URL
Point your generated domain to your seers by adding a NS Record.
If g.example.com is your generated domain URL, the record would be:
Host: g -> Value: seer.example.com
Service URL
Add a NS Record which by default should be your URL prefixed with tau.
This record will also point to your seers.
For example.com the record will be: tau -> seer.example.com
Connecting to the network
It may take a few minutes for the DNS to recognize your changes. The best way to check is to perform a dig on your network's seer fqdn Like so:
$ dig a seer.tau.example.com
replace example.com with your respective domain.
Then, on a client machine:
tau-cli
- Get the
tau cli if you don't have it already. Check github.com/taubyte/tau-cli.
- Run
tau login
- Then
tau select network
- Choose
Remote then type your network's domain
Web console
- Go to Taubyte Web Console
- Fill in your email and select 'Custom' in the network selector
- Enter the network's domain and hit the checkmark
- Login