d6599b2933
* started todo list for rework * startd long todo list * startd long todo list * remove ts docs from ts sdk dir * started new docs draft * rearranged code example dir structure * modified code component filepaths * first pass rust sdk * small shift typescript org * updated todo list * consolidating images folders in one place * first pass @ operator docs * gen updates * sdk in its own dir * first pass developers structure * first pass network structure * structure * add licensing * moved old docs -> old_docs dir for clarity when devving * moving around new docs - think this is the final dir structure * updated todo list * new autodoc version (#4781) * Update rework_todo.md * quick first sketch of landing page * rework of structure of developers * added arch and concepts stubs * add new bits to todo list * new list * tweak to overview * mixnet node overview * tweak overview * first pass new arch * first pass concepts * first pass traffic * more network docs * moved some chain files to the dev portal stubs * removed old reference to archive * note to client * concepts 2nd pass * crypto first proper pass, sphinx * stub for not p2p * structure change * traffic 2nd pass * misc * hid root index * overhaul arch * overhaul arch * add links + tweaks * update todo list * updating nyx section * added zknym docs * added zknym docs * note on where to find deployed info * smart contracts done * started moving integrations docs over from ts sdk * pass @ integration page * todo for the tldr overview * added ffi stub files * updated todo list * move sdks to developers * initial pass at new clients overview for developers * rework intro * add echo serv to tools * sidebar autocollapse * integration overview work + tools * concepts overview for devporta * stub * more for networking pages * added to concepts in dev portal * updated arch * crypto overview page * typo fix * add credential stub * first pass concepts done * start reorg of rust sdk docs * reorg + added FFI table * added no scroll to inline code * finished ffi overview page * first pass @ rest of rust sdk doc * first pass ffi * tweaks * added testnet example + note to custom topology example overview * stripped unnecessary stuff from TS * tweaks to ffi * updated faq * first pass tcpproxy * commit before moving image dir * moved images/ to correct place * started on client redo * chain first pass * moved cli wallet out of tools * first pass new ws client * new chain info, left todo links in * links * more links * chain registry * added echo server to tools * rust sdk links * ts sdk links * final linkchecks * redo acks diagram as mermaid * add mermaid flow diagram * added links for codecs + full flow diagram * removed todo * remove forced dark mode * diagram + concepts overview * small correction re tcpproxy ffi * remove diagram title * new sock5 diagram, minor client docs tweaks * diagrams * change order in list * added note for standalone: can be accessed via sdk * tweaks * replaced old diagram with mermaid * fixed link * hardcoded import version for the moment * update deps * remove test component * recreated tools dir * remove tools dir moved to wrong palce * prebuild and predev script for autodoc commands * make script own command instead of prebuild * made code blocks sh * updated autogenerated docs * temp * auto commit generated command files * add link to autodoc generated files * updated autodoc for committing changing else exit * auto commit generated command files * updated readme * make subcommand headers smaller * removed mdbook related scripts * update readme * update readme * removed backups of root meta.json * cherry pick yana commits + some extra config in theme * update readme * update theme: width of page and padding * some more themeing * changed erroneous note * docs redirects first pass * tweaking * new pages + rest of redirects for old docs/ * brought in archive + done rewrites for devportal * cherry pick yana landingpage * tweaked landing page component * changed theme of mermaid diagram to match everything else * updated todo list * [DOCs]: Operators rework to next.js (#4930) * initialise operators guides v2 * new introduction page * add variables csv and page * add baseurl to allow short path * add sandbox page * added building from source page * add binary pages * add preliminary steps * clean preliminary steps dir * syntax edit * syntax edit * add configuration page * create new proxy configuration page * create new proxy configuration page * create bonding.mdx page * correct images path * syntax edit * add new validator setup page * add api setup page * add nyx configuration page * add nym node and maintenance pages * finish maintenance and add nymvisor conf page * add manual upgrade page * add nymvisor upgrade page * add performance testing page and dir * add node api check page * add explore nym scripts page * add testing pages * fix menu issue by moving snippets to coomponents * add all troubleshooting pages * add general faq page * add nym node faq page * add nyx faq page * revamp legal forum to community counsel and add all pages * rewire relative paths to new structure * simplify setup and remove lock file * syntax fix * rm package.json * re add package.json, rm package-lock.json * removed old books from commit * address review comments --------- Co-authored-by: mfahampshire <maxhampshire@pm.me> Co-authored-by: mx <33262279+mfahampshire@users.noreply.github.com> * tweak client links * also moved matrix images to correct place * Max/fix links new docs framework (#4989) * tweak client links * standardise images in public/ * old images move to public/archive * rename overview to more descriptive * links (#4990) * links * removed todos * updated todo list * minor themeing * operator redirects * pick yana's edits: remove specified callout theming * added todo comments for old ts sdk redirects * [new/docs/operators]: Create archive section - PR ready to merge (#5004) * [new-docs/operators] : Fix callout syntax (#5006) * fix callout syntax from color to type * correct callout from danger to warning * update footer * updated footer * finalised rewrites * tweaks to clients and reintroduced old examples page * update todo * Max/individual command autodocs (#5015) * auto commit generated command files * added to autodoc.sh: build all binaries before running * autodoc move individual command outputs to components * Max/individual command autodocs (#5018) * updated autodoc script * updated autodoc script for fix + reintroduced gitignore file for generated markdown * auto commit generated command files * auto commit generated command files * added command-outputs to autodoc script * fix merge conflicts * repush components * remove old docs dirs * auto commit generated command files * auto commit generated command files * updated messages paradigm with the standalone proxies * [NEW-DOCs/operators]: Command output, accordion, api scraping & all final tasks (#5026) * add custom scripts, create prebuild to import data to pages * update after latest prebuild * auto commit generated command files * add accordion component * add changbelog page * add node_api_check outputs * finish all command outputs * more accordions beautifications * finish accordion * PR ready to go * address review comments --------- Co-authored-by: mfahampshire <maxhampshire@pm.me> * Adjust padding * Fix responsive design * cherry pick yana landingpage flex update * reremove old docs * added dependencies to readme * pushing build attempt changes * fix merge errors, path errors, dump uselss dinosaurs - BUILT THE F*N DOCS w success * moved prebuild to its own script * generate timenow * auto commit generated command files * remove comment * auto commit generated command files * auto commit generated command files * auto commit generated command files * build from new configs * add mdx type as explicit dep * remove rc from version in package * change predev script * update readme with scripts * update general info * add license * auto commit generated command files * add updated components * removed old examples page for the moment * remove old list will reintroduce hidden behind gitignore for future * reintroduce todo list behind gitignore * added standalone tcpproxy binary info * nothing change for redeploy test * make build standalone * updated readme * working on new cd * remove export * updated ci/cd for docs * added ci script for dist * hide text on laptop wide screen * add pnpm to ci/cd * add pnpm version to ci/cd * add default dir to ci/cd * change path to script * update projct name ci * lint ci branch ignore * add basePath to next.config.js * update doc rewrites * revert basePath addition * update basePath * add mobile styles * fix responsive style * remove old ts sdk docs workflow * temp remove autodoc from workspace * update sidebar for clarity: crypto = cryptography * ignore documentation in pr-validation workflow --------- Co-authored-by: Yana <yanok87@users.noreply.github.com> Co-authored-by: import this <97586125+serinko@users.noreply.github.com> Co-authored-by: fmtabbara <fmtabbara@hotmail.co.uk>
275 lines
9.0 KiB
Plaintext
275 lines
9.0 KiB
Plaintext
import { Callout } from 'nextra/components';
|
||
import { VarInfo } from 'components/variable-info.tsx';
|
||
import { Steps } from 'nextra/components';import { Tabs } from 'nextra/components';
|
||
import { MyTab } from 'components/generic-tabs.tsx';
|
||
import PortsNymNode from 'components/operators/snippets/ports-nym-node.mdx';
|
||
import PortsValidator from 'components/operators/snippets/ports-validator.mdx'
|
||
|
||
# VPS Setup & Configuration
|
||
|
||
We aim for Nym Network to be reliable and quality base layer of privacy accross the globe, while growing as distributed as possible. It's essential to have a fine tuned machine as a foundation for the nodes to meet the requirements and be rewarded for their work.
|
||
|
||
<Callout type="info" emoji="ℹ️">
|
||
A sub-optimally configured VPS often results in a non-functional node. To follow these steps carefully will save you time and money later on.
|
||
</Callout>
|
||
|
||
## VPS Hardware Specs
|
||
|
||
You will need to rent a VPS to run your node on. One key reason for this is that your node **must be able to send TCP data using both IPv4 and IPv6** (as other nodes you talk to may use either protocol).
|
||
|
||
Tor community created a very helpful table called [*Good Bad ISPs*](https://community.torproject.org/relay/community-resources/good-bad-isps/), you can use that one as a guideline for your choice of ISP for your VPS.
|
||
|
||
**Update:** Nym community started an ISP table called [*Where to host your nym node?*](../../community-counsel/isp-list.mdx), check it out and add your findings!
|
||
|
||
### `nym-node`
|
||
|
||
Before we conclude the testing with exact results, these are the rough specs:
|
||
|
||
| **Hardware** | **Minimum Specification** w
|
||
| :--- | ---: |
|
||
| CPU Cores | 4 |
|
||
| Memory | 4 GB RAM |
|
||
| Storage | 40 GB |
|
||
| Connectivity | IPv4, IPv6, TCP/IP, UDP |
|
||
| Bandwidth | 1Tb |
|
||
| Port speed | 1Gbps |
|
||
|
||
### Nyx validator
|
||
|
||
The specification mentioned below is for running a full node alongside the nym-api. It is recommended to run `nym-api` and a full Nyx node on the same machine for optimum performance.
|
||
|
||
Bear in mind that credential signing is primarily CPU-bound, so choose the fastest CPU available to you.
|
||
|
||
#### Minimum Requirements
|
||
|
||
| Hardware | **Minimum Specification** |
|
||
|----------|--------------------------------------------|
|
||
| CPU | 8-cores, 2.8GHz base clock speed or higher |
|
||
| RAM | 16GB DDR4+ |
|
||
| Disk | 500 GiB+ NVMe SSD |
|
||
|
||
#### Recommended Requirements
|
||
|
||
| Hardware | **Minimum Specification** |
|
||
|----------|---------------------------------------------|
|
||
| CPU | 16-cores, 2.8GHz base clock speed or higher |
|
||
| RAM | 32GB DDR4+ |
|
||
| Disk | 1 TiB+ NVMe SSD |
|
||
|
||
|
||
#### Full node configuration (validator)
|
||
|
||
To install a full node from scratch, refer to the [validator setup guide](../validator-setup.mdx) and follow the steps outlined there.
|
||
|
||
## VPS Configuration
|
||
|
||
Before node or validator setup, the VPS needs to be configured and tested, to verify your connectivity and make sure that your provider wasn't dishonest with the offered services.
|
||
|
||
<Callout type="info" emoji="ℹ️">
|
||
The commands listed in this chapter must be executed with a prefix `sudo` or from a root shell.
|
||
</Callout>
|
||
|
||
### Install Dependencies & Configure Firewall
|
||
|
||
SSH to your server as `root` or become one running `sudo -i` or `su`. If you prefer to administrate your VPS from a user environment, supply the commands with prefix `sudo`.
|
||
|
||
<Steps>
|
||
|
||
###### 1. Start with setting up the essential tools on your server.
|
||
|
||
- Get your system up to date
|
||
```sh
|
||
apt update -y && apt --fix-broken install
|
||
```
|
||
- Install dependencies
|
||
```sh
|
||
apt -y install ca-certificates jq curl wget ufw jq tmux pkg-config build-essential libssl-dev git
|
||
```
|
||
- Double check ufw is installed correctly
|
||
```sh
|
||
apt install ufw --fix-missing
|
||
```
|
||
|
||
###### 2. Configure your firewall using Uncomplicated Firewall (UFW)
|
||
|
||
For a `nym-node` or Nyx validator to recieve traffic, you need to open ports on the server. The following commands will allow you to set up a firewall using `ufw`.
|
||
|
||
- Check if you have `ufw` installed:
|
||
```sh
|
||
ufw version
|
||
```
|
||
- If it's not installed, install with:
|
||
```sh
|
||
apt install ufw -y
|
||
```
|
||
- Enable ufw
|
||
```sh
|
||
ufw enable
|
||
```
|
||
- Check the status of the firewall
|
||
```sh
|
||
ufw status
|
||
```
|
||
|
||
###### 3. Open all needed ports to have your firewall for `nym-node` working correctly
|
||
|
||
<div>
|
||
<Tabs items={[
|
||
<code>nym-node</code>,
|
||
<code>validator</code>,
|
||
]} defaultIndex="0">
|
||
<MyTab><PortsNymNode/></MyTab>
|
||
<MyTab><PortsValidator/></MyTab>
|
||
</Tabs>
|
||
</div>
|
||
|
||
- In case of reverse proxy setup add:
|
||
```sh
|
||
ufw allow 443/tcp
|
||
```
|
||
|
||
- Re-check the status of the firewall:
|
||
```sh
|
||
ufw status
|
||
```
|
||
|
||
</Steps>
|
||
|
||
For more information about your node's port configuration, check the [port reference table](#ports-reference-table) below.
|
||
|
||
## Setting `ulimit`
|
||
|
||
Linux machines limit how many open files a user is allowed to have. This is called a `ulimit`.
|
||
|
||
`ulimit` is 1024 by default on most systems. It needs to be set higher, because Nym Nodes make and receive a lot of connections with each others.
|
||
|
||
If you see errors such as:
|
||
|
||
```sh
|
||
Failed to accept incoming connection - Os { code: 24, kind: Other, message: "Too many open files" }
|
||
```
|
||
|
||
This means that the operating system is preventing network connections from being made.
|
||
|
||
### Set the `ulimit` via `systemd` service file
|
||
|
||
The ulimit setup is relevant for maintenance of Nym Node only.
|
||
|
||
<Steps>
|
||
|
||
###### 1. Query the `ulimit` with:
|
||
|
||
- For 'nym-node`:
|
||
```sh
|
||
grep -i "open files" /proc/$(ps -A -o pid,cmd|grep nym-node | grep -v grep |head -n 1 | awk '{print $1}')/limits
|
||
```
|
||
- For nyx validator
|
||
```sh
|
||
grep -i "open files" /proc/$(ps -A -o pid,cmd|grep nymd | grep -v grep |head -n 1 | awk '{print $1}')/limits
|
||
```
|
||
|
||
You'll get back the hard and soft limits, which looks something like this:
|
||
|
||
```sh
|
||
Max open files 65536 65536 files
|
||
```
|
||
|
||
If your output is **the same as above**, your node will *not* encounter any `ulimit` related issues.
|
||
|
||
###### 2. If either value is `1024`, you must raise the limit
|
||
|
||
- We recommend doing it via the `systemd` service file. Following the steps in [this guide](../nym-node/configuration.mdx#systemd).
|
||
- You will see there a line setting new `ulimit` threshold.
|
||
```sh
|
||
LimitNOFILE=65536
|
||
```
|
||
|
||
###### 3. Alternatively you can execute this command for system-wide setting of `ulimit`:
|
||
|
||
```sh
|
||
echo "DefaultLimitNOFILE=65535" >> /etc/systemd/system.conf
|
||
```
|
||
- Then reboot your server, and restart your node. When it comes back, use:
|
||
```sh
|
||
# for nym-node
|
||
cat /proc/$(pidof nym-node)/limits | grep "Max open files"
|
||
|
||
# for validator
|
||
cat /proc/$(pidof nym-validator)/limits | grep "Max open files"
|
||
```
|
||
|
||
- Make sure the limit has changed to `65535`.
|
||
|
||
</Steps>
|
||
|
||
### Set `ulimit` on non `systemd` based distributions
|
||
|
||
In case you choose tmux option for Nym Node automation, see your `ulimit` list by running:
|
||
|
||
```sh
|
||
ulimit -a
|
||
```
|
||
|
||
Watch for the output line `-n`:
|
||
```sh
|
||
-n: file descriptors 1024
|
||
```
|
||
|
||
You can change it either by running a command:
|
||
```sh
|
||
ulimit -u -n 4096
|
||
```
|
||
|
||
or editing `etc/security/conf` and add the following lines:
|
||
|
||
```sh
|
||
# Example hard limit for max opened files
|
||
username hard nofile 4096
|
||
|
||
# Example soft limit for max opened files
|
||
username soft nofile 4096
|
||
```
|
||
|
||
Then reboot your server and restart your node.
|
||
|
||
|
||
## Ports reference tables
|
||
|
||
All node-specific port configuration can be found in `$HOME/.nym/<BINARY_TYPE>/<ID>/config/config.toml`. If you do edit any port configs, remember to restart your client node processes and change the configuration in the wallet settings.
|
||
|
||
### Nym node port reference
|
||
|
||
#### Mix Node functionality ports
|
||
|
||
| Default port | Use |
|
||
| ------------ | ------------------------- |
|
||
| `1789` | Listen for Mixnet traffic |
|
||
| `1790` | Listen for VerLoc traffic |
|
||
| `8080` | Metrics http API endpoint |
|
||
|
||
#### Gateway functionality ports
|
||
|
||
| Default port | Use |
|
||
|-----------------|-------------------------------|
|
||
| `1789` | Listen for Mixnet traffic |
|
||
| `9000` | Listen for Client traffic |
|
||
| `9001` | WSS |
|
||
| `8080, 80, 443` | Reversed Proxy & Swagger page |
|
||
| `51822/udp` | WireGuard |
|
||
|
||
#### Embedded Network Requester functionality ports
|
||
|
||
| Default port | Use |
|
||
|--------------|---------------------------|
|
||
| `9000` | Listen for Client traffic |
|
||
|
||
### Validator port reference
|
||
|
||
All validator-specific port configuration can be found in `$HOME/.nymd/config/config.toml`. If you do edit any port configs, remember to restart your validator.
|
||
|
||
| Default port | Use |
|
||
|--------------|--------------------------------------|
|
||
| `1317` | REST API server endpoint |
|
||
| `26656` | Listen for incoming peer connections |
|
||
| `26660` | Listen for Prometheus connections |
|