Skip to content

Deploy tau

Every Taubyte Cloud is associated with a Fully Qualified Domain Name (FQDN). Essentially, you can use any domain or sub-domain that you control. For instance, I've chosen enterprise.starships.ws for Starship Enterprise's Web Services.

Developers often require a temporary sub-domain for testing purposes. You're free to use a sub-domain of your main domain or opt for an entirely different one. While g.enterprise.starships.ws or el.starships.ws are valid options, my passion for Sci-Fi inspires me to select e.ftll.ink (Enterprise's Faster Than Light Link).

Note: The domain can be local, but it must resolve on the hosts where tau is installed.

Get Your Infrastructure Ready

The choice of infrastructure is yours to make. The only requirement is hosts (either bare metal or VMs) running Ubuntu 22.04. While any number of hosts can work, I recommend starting with three, each equipped with: - A public IP - +8GB of RAM

For demonstration purposes, I quickly provisioned 3 VMs across various locations:

Name Location IP
host-001-enterprise-starships-ws Iowa 34.133.173.124
host-002-enterprise-starships-ws Toronto 34.130.131.76
host-003-enterprise-starships-ws Los Angeles 35.235.122.141

Note: This cloud setup is temporary and will eventually be decommissioned. However, it will remain accessible for testing by developers for as long as it's operational.

Firewall Configuration

Ensure the following ports are open to facilitate communication and service delivery:

Ports Protocols Description
4242, 4247, 4252 TCP For Peer-to-peer communication and IPFS.
80, 443 TCP For HTTP and HTTPS - serving APIs and hosted resources.
53, 953 TCP, UDP For DNS resolution.

Preparing the Hosts

Before proceeding with the tau installation on the hosts, a few preliminary steps are required:

Installing curl & vim

Ensure curl and vim (or your preferred text editor) are installed:

sudo apt update
sudo apt install curl vim

If you're unfamiliar with vim, consider trying vim-adventures for a fun introduction.

Freeing Up DNS Ports

To allow the seer protocol to operate correctly, DNS settings need adjustment:

sudo vim /etc/systemd/resolved.conf
In edit mode (:i), configure:
DNS=1.1.1.1
DNSStubListener=no
Then, apply the changes:
sudo systemctl restart systemd-resolved.service
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Docker Installation

Execute the following to install Docker:

curl -fsSL https://get.docker.com | sh

Setting Up the First Host

The initial host, in this scenario host-001-enterprise-starships-ws, will serve as the cornerstone for generating our network's secrets.

Installing Tau

The installation of the tau software is straightforward. Execute the command below:

curl https://get.tau.link/tau | sh

It's worth noting that a single host can support multiple nodes, provided their ports do not overlap. However, for the purposes of this guide, we will maintain a one-node-per-host configuration.

Upon successful installation, you should see an output similar to the following:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3982  100  3982    0     0   3962      0  0:00:01  0:00:01 --:--:--  3966
Downloading release: v1.1.2
From: https://github.com/taubyte/tau/releases/download/v1.1.2/tau_1.1.2_linux_amd64.tar.gz
######################################################################## 100.0%
Installation complete

This signifies that tau has been successfully installed and is ready for configuration and use.

Configuring Your Node

The configuration process for a node is straightforward and can be executed with a single command:

sudo tau config generate -n enterprise.starships.ws \
      -s compute --protos all --ip 34.133.173.124 \
      --dv --swarm 

Here's a quick rundown of the options used: - -n specifies the domain name (or network name) for the node. - -s assigns a name to this configuration, often referred to as a "shape." - --protos all activates all available protocols. - --ip indicates the IP address the node should use for announcements. - --dv generates a domain validation key pair. - --swarm creates a swarm key for network clustering.

Note: It's generally not advisable to enable all protocols on a single node due to potential conflicts and resource constraints. This article simplifies the setup for demonstration purposes. Adjustments to the protocol configuration can easily be made with a single command, which we will explore in future discussions.

Upon successful configuration, you'll receive the node's ID as confirmation:

[INFO] ID: 12D3KooWKv5oNF2a6h9sYzRUPEAaYe6feTbBbcLYZYVFrMDDCHzY

Fine-tuning the Configuration

With the basic configuration in place, some adjustments are necessary for optimal performance and alignment with your specific requirements:

sudo vi /tb/config/compute.yaml

For instance, you might want to update the generated domain to match your preferred domain. In this example, I'll use e.ftll.ink:

generated: e.ftll.ink

Additionally, since the gateway and substrate protocols cannot coexist on the same node, we'll remove the gateway protocol from our list. The revised configuration should look something like this:

privatekey: <redacted>
swarmkey: keys/swarm.key
protocols:
    - auth
    - patrick
    - monkey
    - tns
    - hoarder
    - substrate
    - seer
p2p-listen:
    - /ip4/0.0.0.0/tcp/4242
p2p-announce:
    - /ip4/34.133.173.124/tcp/4242
ports:
    main: 4242
    lite: 4247
    ipfs: 4252
location:
    lat: 40.076897
    long: -109.33771
network-fqdn: enterprise.starships.ws
domains:
    key:
        private: keys/dv_private.pem
        public: keys/dv_public.pem
    generated: e.ftll.ink
plugins: {}

Should the location be inaccurately determined, you have the option to correct it manually.

The final step involves validating the configuration to ensure its accuracy and completeness:

sudo tau conf validate -s compute

A lack of error messages signifies that your configuration is correct.

Manually Starting the Node

To initiate the node manually, execute the following command:

sudo tau start -s compute

Next, verify that your node is active and accessible. Open your web browser and navigate to slimdig.com. There, you'll perform a simple check: (1) input seer.tau.<your domain>, (2) enter your server's public IP, and (3) click on the A button.

Seeing your server's IP address as a return verifies that your node is live and operational.

Transitioning to a Systemd Service

For a more resilient setup, converting the manually started service into a systemd service ensures that it will automatically restart upon failure or server reboot.

First, halt the currently running service by using CTRL-C. Then, proceed to create a systemd service file:

sudo vim /lib/systemd/system/tau@.service

Incorporate the following configuration into your systemd service file:

[Unit]
Description=Taubyte Tau Service Running %i

[Service]
Type=simple
ExecStart=/tb/bin/tau start -s %i
StandardOutput=journal
User=root
Group=root

LimitAS=infinity
LimitRSS=infinity
LimitCORE=infinity
LimitNOFILE=65536

Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

After saving the file, enable and initiate the service to ensure it starts automatically:

sudo systemctl enable tau@compute
sudo systemctl start tau@compute

To confirm the service is running as expected, check its status:

sudo systemctl status tau@compute

You should see output similar to the following, indicating that the tau@compute service is active and running:

● tau@compute.service - Taubyte Tau Service Running compute
     Loaded: loaded (/lib/systemd/system/tau@.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-02-09 22:43:52 UTC; 1min 5s ago
   Main PID: 4588 (tau)
      Tasks: 14 (limit: 38492)
     Memory: 202.0M
        CPU: 53.521s
     CGroup: /system.slice/system-tau.slice/tau@compute.service
             └─4588 /tb/bin/tau start -s compute

Feb 09 22:43:52 host-001-enterprise-starships-ws systemd[1]: Started Taubyte Tau Service Running compute.

This service configuration ensures your node remains operational across restarts and system updates, providing a stable and reliable infrastructure component.

Configuring DNS for Load Balancing

The Seer protocol plays a crucial role in DNS load balancing within the Taubyte ecosystem, enabling protocol translation into valid IP addresses using the <protocol>.tau.<domain> convention. This powerful feature allows for efficient load balancing across a Taubyte-based cloud with just a simple CNAME (or ALIAS, for DNS providers that support it) record.

Delegating the tau Subdomain

To leverage this capability, it's necessary to delegate the tau subdomain to the nodes running the Seer protocol within your cloud. Here's how you can do this with your DNS provider; the example below uses Namecheap for the domain starships.ws:

  1. Adding the Node as an A Record:
  2. Select the A record type.
  3. Name it (in this case, seer.<domain>).
  4. Enter the IP address of the node.
  5. Confirm by validating the entry.

  6. Delegating with an NS Record:

  7. Choose the NS record type for delegation.
  8. Label it tau.<domain>.
  9. Set its value to your chosen name (e.g., seer.<domain>).
  10. Validate the entry to complete the delegation.

Verifying the Configuration

To ensure the DNS configuration is effective, use a tool like slimdig: - Enter <protocol>.tau.<domain> (for this demonstration, tns.tau.enterprise.starships.ws). - Ensure the query is set to a public DNS server like 8.8.8.8. - Click on the A button to perform the lookup.

Keep in mind, DNS propagation can delay the effectiveness of these new entries, requiring multiple attempts over several minutes to verify.

Congratulations, your cloud is now operational! You can connect to it via tau-cli or the Web Console to deploy frontend interfaces, serverless computing functions, and more. The next steps will involve bringing the remaining two servers online to enhance our cloud's resilience and capacity.