Full Node
OS requirements
We highly recommend installing MyTonCtrl using the supported operating systems:
- Ubuntu 20.04
- Ubuntu 22.04
- Debian 11
Hardware requirements
You shouldn't run any type of node on your personal local machine for long, even if it is satisfy the requirements. Nodes actively use disks and can damage them fast.
With validator
- 16 cores CPU
- 128 GB RAM
- 1TB NVME SSD OR Provisioned 64+k IOPS storage
- 1 Gbit/s network connectivity
- public IP address (fixed IP address)
- 16 TB/month traffic on peak load
Typically you'll need at least a 1 Gbit/s connection to reliably accommodate peak loads (the average load is expected to be approximately 100 Mbit/s).
Port Forwarding
All types of nodes require a static external IP address, one UDP port to be forwarded for incoming connections and all outgoing connections to be open - the node uses random ports for new outgoing connections. It's necessarily for the node to be visible to the outside world over the NAT.
It can be done with your network provider or rent a server to run a node.
It's possible to find out which UDP port is opened from the netstat -tulpn
command.
Recommended Providers
The TON Foundation recommends the following providers for running a Validator:
Cloud Provider | Instance Type | CPU | RAM | Storage | Network | Public IP | Traffic |
---|---|---|---|---|---|---|---|
GCP | n2-standard-16 | 32 vCPUs | 128GB | 1TB NVMe SSD | 16 Gbps | Reserve a static external IP | 16 TB/month |
Alibaba Cloud | ecs.g6.4xlarge | 32 vCPUs | 128GB | 1TB NVMe SSD | Up to 10 Gbps | Bind an Elastic IP | 16 TB/month |
Tencent Cloud | M5.4XLARGE | 32 vCPUs | 128GB | 1TB NVMe SSD | Up to 10 Gbps | Associate an Elastic IP | 16 TB/month |
Vultr | bare metal Intel E-2388G | 16 Cores / 32 Threads | 128GB | 1.92TB NVMe SSD | 10 Gbps | Fixed IP address included with instance | 16 TB/month |
DigitalOcean | general purpose premium Intel | 32 vCPUs | 128GB | 1TB NVMe SSD | 10 Gbps | Fixed IP address included with instance | 16 TB/month |
Latitude | c3.medium.x86 | 16 Cores / 32 Threads | 128GB | 1.9TB NVMe SSD | 10 Gbps | Fixed IP address included with instance | 16 TB/month |
AWS | i4i.4xlarge | 16 vCPUs | 128GB | 1 x 3,750 AWS Nitro SSD (fixed) | Up to 25 Gbps | Bind an Elastic IP | 16 TB/month |
Note: Prices, configurations, and availability may vary. It is advisable to always check the official documentation and pricing pages of the respective cloud provider before making any decisions.
Run a Node (video)
Please, check this video step-by-step tutorial to start promptly:
Run a Node (text)
Switch to non-root user
This step is required to successfully install and use mytonctrl, don't ignore non-root user creation. Without this step there will be no errors during installation, but mytonctrl will not work properly.
If you don't have non-root user, you can create this with the following steps (otherwise skip first two steps and go to the third).
- Login as root and create new user:
sudo adduser <username>
- Add your user to the sudo group:
sudo usermod -aG sudo <username>
- Log into the new user (if you are using ssh, you will need to stop current session and reconnect with correct user)
ssh <username>@<server-ip-address>
Install the MyTonCtrl
Download and run the installation script from the non-root user account with sudo privileges:
- Ubuntu
- Debian
wget https://raw.githubusercontent.com/ton-blockchain/mytonctrl/master/scripts/install.sh
sudo bash ./install.sh -d -c <CONFIG_URL>
https://raw.githubusercontent.com/ton-blockchain/mytonctrl/master/scripts/install.sh
su root -c 'bash ./install.sh -d -c <CONFIG_URL>'
-d
- mytonctrl will download a dump of the latest blockchain state. This will reduce synchronization time by several times.-c <path>
- If you want to use not public liteservers for synchronization. (not required)-i
- Ignore minimum requirements, use it only if you want to check compilation process without real node usage.-m
- Mode, can bevalidator
orliteserver
.
To use testnet, -c
flag should be provided with https://ton.org/testnet-global.config.json
value.
Default -c
flag value is https://ton-blockchain.github.io/global.config.json
, which is default mainnet config.
Run the mytonctrl
Run
MyTonCtrl
console from the local user account used for installation:mytonctrl
Check the
MyTonCtrl
status using thestatus
command:status
In testnet status fast
command must be used instead of status
.
The following statuses should be displayed:
- mytoncore status: Should be in green.
- local validator status: Should also be in green.
- local validator out of sync: Initially, a
n/a
string is displayed. As soon as the newly created validator connects with other validators, the number will be around 250k. As synchronization progresses, this number decreases. When it falls below 20, the validator is synchronized.
Example of the status command output:
For all nodes type Local Validator status section should appear. Otherwise, check troubleshooting section and check node logs.
Wait until Local validator out of sync
becomes less than 20 seconds.
When new node have been started, even from dump, it's needed to wait up to 3 hours before out of sync number starts to go down. This is due to the fact that node still needs to establish it’s place in network, propagate it’s addresses via DHT tables etc.
Uninstall mytonctrl
Download script and run it:
sudo bash /usr/src/mytonctrl/uninstall.sh
Check mytonctrl owner
Run:
ls -lh /var/ton-work/keys/
Tips & Tricks
List of available commands
- You can use
help
to get a list of available commands:
Check the mytonctrl logs
- To check mytonctrl logs, open
~/.local/share/mytoncore/mytoncore.log
for a local user or/usr/local/bin/mytoncore/mytoncore.log
for Root.
Check the node logs
Check the node logs upon failure:
tail -f /var/ton-work/log.thread*