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:
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:
In edit mode (:i
), configure:
Then, apply the changes:
Docker Installation¶
Execute the following to install Docker:
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:
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:
Fine-tuning the Configuration¶
With the basic configuration in place, some adjustments are necessary for optimal performance and alignment with your specific requirements:
For instance, you might want to update the generated
domain to match your preferred domain. In this example, I'll use 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:
A lack of error messages signifies that your configuration is correct.
Manually Starting the Node¶
To initiate the node manually, execute the following command:
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:
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:
To confirm the service is running as expected, check its status:
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
:
- Adding the Node as an A Record:
- Select the A record type.
- Name it (in this case,
seer.<domain>
). - Enter the IP address of the node.
-
Confirm by validating the entry.
-
Delegating with an NS Record:
- Choose the NS record type for delegation.
- Label it
tau.<domain>
. - Set its value to your chosen name (e.g.,
seer.<domain>
). - 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.