+```
+
+For example:
+
+```
+# for squads running multiple nodes a format can look like this:
+nym-exit.ch-node1.mysquad.org
+
+# or like this
+nym-exit.3-jamaica.mysquad.org
+
+# for operators having one node per location, the format can look like this:
+nym-exit.brazil.mysquad.org
+
+# or if operators decide to not have any custom, they can simply have this format:
+nym-exit.mysquad.org
+```
+
+**The `NYM-EXIT` part in the beginning is what's important.**
+
+- When registering a domain, check [Top Level Domain (TLD)](https://www.techopedia.com/definition/1348/top-level-domain-tld) terms and conditions. For example `.icu` is a no go. Having a wrong TLD may lead to your domain being taken away from you when facing a DMCA report.
+
+- Write a message to your provider and introduce your intention to run a Nym Node on their service
+
+
+
+
+- New page with [templates for VPS provider](community-counsel/templates)
+
+#### Delegation Program
+
+**If you are interested to sign up to delegation program que, message Merve on Element for the time being as we are working on CRM upgrade. We review nodes dynamically and delegate to new ones once a month.** New operators interested to join DP must follow the rules specified [here](https://delegations.explorenym.net/), run one of two latest binary version and have [Terms & Conditions](nodes/nym-node/setup#terms--conditions) accepted.
+
+Note: Due to the token price we allow operators to have Operators cost 1000 NYM, the profit margin maximum remains 20%.
+
+**Delegation and undelegation in January**
+
+Delegated to all these nodes:
+
+```
+AMnDNd1Xgw7Em9R5vehP7r12ZNWUZ3jmitDHya6gpvGR
+DLkKyYcA5feq43rqZdx6nJBNZvQsdX7kb2f1f6ED4cs2
+26ZmTxTVBKHZg8MTKwypHkXZVJhDC7QHuv3BdsyRyTuk
+5ZWdDN9pQ18vYkYYs5ZERh4P4JLtMiijscZ6FvwSfVxR
+3uBgUJR393acoCRysu6SiLsximiwAMM85QFxq9WD8puC
+5rXcNe2a44vXisK3uqLHCzpzvEwcnsijDMU7hg4fcYk8
+nuMerN7ahqsptK8zDUZhnxMyDqePza8vWDf8k171EEs
+86cNnnRxNpGdEtSX9UP1GpT6xrNvNuxFdHNkZcK7pAJg
+9ngFADaYpT54F9i8iYFZLYR7SB7hrubsPArwpqe1RXQb
+FQBbq1crAkCrjVBnEN85VqgZgGRMLJV65NJk8bPADdw
+FUH3E3dghXjC9hdt3jeAhSsxwozsw1yzBXkoaFqkL4ci
+5wF5wN7T2UuSsiUcQyL77NwdnXwAXxFttpZ1dR1nu4kR
+4pVq4QSCcq4zNCnBNCfyugPjVhVyGDCBDSW5rghg8oZS
+8XW1WWN1PuuAYz2TXQ9iWRekMFEJXjdEq4asMyE2qCCN
+CxgjcTTAnRJzDxMbqtX73vEbWwLQmVoW8zS8RZEicgfT
+7fwyXd4Cmh92d4piEPHmdFm1Wz1QCFQDf6bnDGNT3M6P
+```
+
+
+Undelegated from 8 nodes for not meeting the rules (being offline):
+
+```
+# Gateways
+DLxLKsd3LTnfudSSmHanPaZACsh1x4MGEzfJS4jQibir
+DiciBkjHovXzTDE2EFJKPNj3TGw2oQjr7HPSas2YQPiQ
+ADjpymCgjFsE5m7YvnZFxLMscg85dCUUesR5g8yN3Mzz
+C9dEABjtFRMD1x4ZnbqnsELGJgutT73bPCfYzqBe7sHB
+
+
+# Mixnodes
+2FGgY5zWq6JP1BvpnLPbedWRYYAZELFCT9rMybNhnxpo
+4nKkwPSbkbtkw3yrRKQVAVdviNgFgcNskgcSGdT2Sucy
+DjY3T7n6VoHGcETMnmtZKmUU7NZP6AhCs8CoRsSSbViC
+FAKhiQ8nW5sAWAxks1WB8u1MAWsapToCSE3KmF9LuGRQ
+```
+
+
+Undelegated due to high saturation:
+```
+5omopSZy59UyNPpx9P97vjBnN6PwPw9x5MVUx5kuNaXt
+```
+
+#### Service Grant Program v2
+
+Aside from delegating on top of nodes, Nym runs a Service Grant Program (SGP) to support Exit Gateway operators before they will be rewarded by collecting [zk-nym tickets](../network/cryptography/zk-nym) from users subscription. Operators included in SGP are long term active community members with the highest requirements on the technical setup and upgrading pace. We are about to start a second iteration of SGP very soon (SGPv2). The final slots and locations are yet to be concluded. Priority to participate in SGPv2 will be given to the current operators in SGP. Based on the number of slots, we will then determine how many more operators can sign up.
+
+##### Rules of SGPv2
+
+
+**We will share more info soon in the channels. The rules are not set in stone and could potentially be altered or updated in the future! Do *not* purchase new servers neither migrate your nodes just yet.**
+
+
+As we finalising last details of *"Project Smoosh"*, where one binary - `nym-node` - can run as an `entry-gateway`, `mixnode` or `exit-gateway` in Mixnet mode as well as `entry-gateway` or `exit-gateway` in Wireguard mode, we plan to step up the game. SGPv2 grants will be higher if operators can meet new requirements.
+
+**Minimum Specs & Requirements**
+
+These are minimum requirements to become a part of SGPv2. We aim to have nodes on dedicated servers, with exceptions for much stronger VPS to meet the needed criteria while sharing server with other users.
+
+
+ nym-node - dedicated server>,
+ <>nym-node - VPS>,
+ ]} defaultIndex="0">
+
+#### `nym-node` - dedicated server
+
+| **Hardware** | **Minimum Specification** |
+| :--- | ---: |
+| Type of server | Dedicated or bare metal |
+| CPU Cores | 4 |
+| Memory | 8-16 GB RAM |
+| Storage | 50 GB (preferably 80 GB) |
+| Connectivity | IPv4, IPv6, TCP/IP, UDP |
+| Bandwidth | Unmetered if possible, or {" >"} 20Tb |
+| Port speed | 1Gbps |
+
+ - Exit Gateways only
+ - [Terms & Conditions](nodes/nym-node/setup#terms--conditions) accepted
+ - Nodes are [bonded](nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract) as `nym-node` not as a legacy node
+ - Timely upgrades without direct message notifications: Only Latest version, and the two preceding are accepted
+ - Dedicated (or bare metal) machine is to ensure that the numbers above are *dedicated* for `nym-node` operation
+ - Unmetered bandwidth is to ensure smooth user experience without data allowance limitation. 20Tb is a minimum for locations where unlimited bandwidth is not an option.
+ - 1Gbps is an expected speed of Nym network in order to meet expectations of NymVPN users
+ - Squads operating more than 2 nodes are expected to run larger servers and divide them for multiple nodes. We will share a how-to guide soon.
+ - Operators run [reverse proxy](nodes/nym-node/configuration) with landing page URL starting with `nym-exit` and [Web Secure Socket](nodes/nym-node/configuration)
+ - Operators must write their providers upfront that they will run a Nym Exit Gateway on their servers, using [this template](community-counsel/templates#introduction-to-server-provider)
+ - If a node remains offline for more than 5 days for any reason, including abuse reports, and the operator doesn't resolve it neither doesn't communicate the blockers, they will be removed from the program.
+
+
+#### `nym-node` - VPS
+
+| **Hardware** | **Minimum Specification** |
+| :--- | ---: |
+| Type of server | VPS |
+| CPU Cores | 8 |
+| Memory | 16-32 GB RAM |
+| Storage | 50 GB (preferably 80 GB) |
+| Connectivity | IPv4, IPv6, TCP/IP, UDP |
+| Bandwidth | Unmetered if possible, or {" >"} 40Tb |
+| Port speed | 10Gbps |
+
+ - Exit Gateways only
+ - [Terms & Conditions](nodes/nym-node/setup#terms--conditions) accepted
+ - Nodes are [bonded](nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract) as `nym-node` not as a legacy node
+ - Timely upgrades without direct message notifications: Only Latest version, and the two preceding are accepted
+ - Stronger specs for VPS are to ensure that the `nym-node` operation will remain solid even when sharing a server with other users
+ - Unmetered bandwidth is to ensure smooth user experience without data allowance limitation. 40Tb is a minimum for locations where unlimited bandwidth is not an option.
+ - 10Gbps is to ensure that the 1Gbps expected speed of Nym network is met even when sharing a server with other users
+ - Operators run [reverse proxy](nodes/nym-node/configuration) with landing page URL starting with `nym-exit` and [Web Secure Socket](nodes/nym-node/configuration)
+ - Operators must write their providers upfront that they will run a Nym Exit Gateway on their servers, using [this template](community-counsel/templates#introduction-to-server-provider)
+ - If a node remains offline for more than 5 days for any reason, including abuse reports, and the operator doesn't resolve it neither doesn't communicate the blockers, they will be removed from the program.
+
+
+
+
+**Operators interested in joining SGPv2 can start by searching for servers that meet the above criteria, where they may eventually migrate their nodes, and then share their findings by submitting a form which will be shared shortly. We will be first reaching to the current participants of Service Grant Program. Everything will be announced, sending DMs to devrel will not speed up the process!**
+
+
+### Features
+
+- [build(deps): bump criterion from `0.4.0` to `0.5.1`](https://github.com/nymtech/nym/pull/4911): Bumps [criterion](https://github.com/bheisler/criterion.rs) from `0.4.0` to `0.5.1`.
+
+- [NS API: add mixnet scraper](https://github.com/nymtech/nym/pull/5200)
+
+- [build(deps): bump http from `1.1.0` to `1.2.0`](https://github.com/nymtech/nym/pull/5228): Bumps [http](https://github.com/hyperium/http) from `1.1.0` to `1.2.0`.
+
+- [`http-api-client`: deduplicate code](https://github.com/nymtech/nym/pull/5267): After adding PATCH support in [\#5260](https://github.com/nymtech/nym/pull/5260), it's now time to de-duplicate some of the code
+
+- [Add windows to CI builds](https://github.com/nymtech/nym/pull/5269)
+
+- [nym topology revamp](https://github.com/nymtech/nym/pull/5271): This PR changes the internals of the `NymTopology` to blur the lines between explicit mixnodes and gateways so that what used to be considered a "mixnode" could be a valid egress point of the network. `NymTopology` is no longer divided into `BTreeMap>` and `Vec`. instead there's information about the current rewarded set (to support future VRF work) and a simple map of `HashMap`. The new features are mostly controlled via 2 new flags/config values:
+ - `use_extended_topology` that tells the client to retrieve **all** network nodes rather than the ones that got assigned "active" mixnode role (or support being a gateway)
+ - `ignore_egress_epoch_role` that tells the client it's fine to construct egress packets to nodes that are **not** assigned entry or exit gateway role
+
+- [Nyx Chain Watcher](https://github.com/nymtech/nym/pull/5274)
+
+- [Include `IPINFO_API_TOKEN` in nightly CI](https://github.com/nymtech/nym/pull/5285)
+
+- [Move tun constants to network defaults](https://github.com/nymtech/nym/pull/5286):
+}>
+1. **Regression Testing**:
+- Verified no issues arose when running tests for the affected files.
+- Tested TUN behaviour with new nym-nodes in the hu branch.
+
+**Results**:
+
+- **No bugs detected**.
+- Tunnels are functioning as expected, with traffic routing and IP generation working seamlessly.
+
+
+- [Add dependabot assignes for the root cargo ecosystem](https://github.com/nymtech/nym/pull/5297)
+
+- [build(deps): bump the patch-updates group across 1 directory with 35 updates](https://github.com/nymtech/nym/pull/5310): Bumps the `patch-updates` group with 33 updates
+
+- [Periodically remove stale gateway messages](https://github.com/nymtech/nym/pull/5312): This PR introduces a simple task that removes gateway messages that haven't been retrieved in (by default) 24h.
+}>
+**Automation Script for Data Cleanup Validation**
+
+Test Objective: Validate that the stale message cleanup mechanism in the database correctly removes records older than the configured threshold (24 hours).
+
+Test Setup:
+1. Environment:
+ * SQLite database
+ * Bash script: used to insert data.
+
+Steps Performed:
+1. Ran the insert_data.sh script to populate the database with test data:
+ * Recent records inserted successfully.
+2. Verified the database content post-insertion: sqlite3 clients.sqlite "SELECT * FROM message_store;"
+3. Confirmed that all 20 records (10 recent + 10 stale) were present.
+4. Allowed the system to run for 24 hours to trigger the cleanup mechanism.
+5. Queried the database again after 24 hours: sqlite3 gateway_storage.db "SELECT * FROM message_store;"
+6.
+
+ Expected Result:
+* All stale records (older than 24 hours) should be removed.
+* Recent records should remain in the database.
+Actual Result:
+* Query after 24 hours showed only the 10 recent records.
+* All 10 stale records were successfully removed.
+
+
+- [Use expect in geodata test to give error message on failure](https://github.com/nymtech/nym/pull/5314): Keep hitting this error on CI, from what I think is network hickup. But it's hard to tell form the log since the error is swallowed. Explicitly unwrap the result so we get a more detailed error output.
+}>
+**Quick Code Review**
+
+**Summary**
+1. **CI Workflow**: Adjusted paths to optimise build triggers, avoiding unnecessary CI runs while ensuring coverage for key directories
+2. **Geolocation Test**: Improved error handling by replacing assertions with `.expect` for clearer debugging in API regression tests
+
+**Conclusion**
+
+Regression testing confirms everything works as intended. **Approved**.
+
+
+- [`CancellationToken`-based shutdowns](https://github.com/nymtech/nym/pull/5325): This PR introduces scaffolding for using `CancellationToken` and `TaskTracker` for our graceful shutdowns rather than the existing `TaskClient` and `TaskManager`.
+
+- [Introduce `/load` endpoint for self-reported quantised Nym Node load](https://github.com/nymtech/nym/pull/5326): This PR introduces a new `/load` endpoint on a `NymNode` to return its current load. It returns the following data:
+```rust
+pub struct NodeLoad {
+ pub total: Load,
+ pub machine: Load,
+ pub network: Load,
+}
+```
+Where `Load` is quantised into the following buckets / tiers:
+```rust
+pub enum Load {
+ Negligible, // 0 - 0.1
+ Low, // 0.1 - 0.3
+ Medium, // 0.3 - 0.6
+ High, // 0.6 - 0.8
+ VeryHigh, // 0.8 - 0.95
+ AtCapacity, // >= 0.95
+}
+```
+}>
+The actual values for`NodeLoad` are determined as follows:
+- For network we approximate current rx/tx rates on all `eth` interfaces and scale them to the range of 0-1Gbps (for this initial iteration we assume the maximum network speed is 1Gbps which would be treated as fully saturated). So for example, if the node is sending at 0.5Gbps, it would get a `Load` of 0.5 and thus value of `Load::Medium`, 0.9Gbps would get `Load` of 0.9 and value of `Load::VeryHigh`, etc. we take the bigger value between rx and tx
+- For machine load there's a bit more logic in there:
+ - Firstly we determine what I call a "base load" of the machine. we do this by taking the average load from the last 5min (via `getloadavg`) and dividing it by the number of CPUs in the machine. For example if the average load of the machine in the last 5min was `1.23` and it has 2 CPUs, then it's `Load` would be `Load::High` (`1.23 / 2 = 0.615`)
+ - However, whilst CPU utilisation is one of the most important factors, it does not tell the whole story. I tried to also take memory/swap utilisation into consideration (whilst not making it the main factor)
+ - Thus we calculate two additional auxiliary `Load` values, for memory usage and swap usage, i.e.: `used_memory / total_memory` and `used_swap / total_swap` respectively.
+ - Then we check whether either of the `MemoryLoad` or `SwapLoad` is bigger than the current base `Load` of the machine we have determined, if so, it's increased by one tier / bucket. For example, say the current machine load is `Load::Low`, but the memory usage is at 90% (`Load::VeryHigh`). that would result in the reported `Load` being bumped up to `Load::Medium` instead. The same logic applies with swap load, **however, only if the total swap > 1GB**. this is to prevent weird edge cases where the machine has hardly any swap.
+ - Finally, the `.total` `Load` uses the same "tier bumping" behaviour using the `.total` and `.network` loads, i.e. `if network > machine`, then `total = machine + 1`. for example if `machine` `Load` is `Load::Low`, but `network` `Load` is `Load::Medium`, then the `total` `Load` is set to `Load::Medium` instead.
+
+
+- [Bump the `patch-updates` group with 8 updates](https://github.com/nymtech/nym/pull/5336)
+
+- [Bump `tempfile` from `3.14.0` to `3.15.0`](https://github.com/nymtech/nym/pull/5337)
+
+- [Bump `ts-rs` from `10.0.0` to `10.1.0`](https://github.com/nymtech/nym/pull/5338)
+
+- [Updated `cosmrs` and `tendermint-rpc` to their most recent versions](https://github.com/nymtech/nym/pull/5339)
+
+- [Bump mikefarah/yq from `4.44.6` to `4.45.1`](https://github.com/nymtech/nym/pull/5342)
+
+- [Update `indexed_db_futures`](https://github.com/nymtech/nym/pull/5347): Updates the `indexed_db_futures` dependency to stop relying on the fork.
+
+- [Refresh wasm sdk](https://github.com/nymtech/nym/pull/5353): This PR refreshes the wasm clients to make them usable in the current network
+
+- [Client gateway selection](https://github.com/nymtech/nym/pull/5358): Changed how gateway is selected.
+ - For init the target gateway can't support mixing
+ - For egress, unless `ignore_epoch_roles` is specified, the gateway can't be currently assigned to a mixing layer. But it can be standby or inactive
+
+- [Exposed `NymApiClient` method for obtaining node performance history](https://github.com/nymtech/nym/pull/5360)
+
+- [Bind to `[::]` on `nym-node` for both IP versions](https://github.com/nymtech/nym/pull/5361)
+}>
+**IPv4 Configuration and Migration Testing**
+
+Testing Steps:
+- Initiated and ran a nym-node with version 1.3.1 on an IPv4-only machine, then updated it to the new 'hu', 1.4.0 version.
+- Initiated and ran a new nym-node with 'hu', 1.4.0 always on a machine with only IPv4.
+- Initiated and ran a new nym-node with 'hu', 1.4.0 on a machine with both IPv4 and IPv6 for regression testing.
+
+Results:
+- No functional issues during version updates.
+- Logged message on all versions: "no registered client for destination: ff02::2"
+
+Status: Pass
+ AccordionTemplate>
+
+- [Remove empty ephemeral keys](https://github.com/nymtech/nym/pull/5376)
+
+- [Handle ecash network errors differently](https://github.com/nymtech/nym/pull/5378): For errors that could be caused by network problems, we should mark the ticket as still pending, not as bad. This won't fix the underlying problem, but should not assume anymore that the client is the culprit and penalise its bandwidth quota.
+
+- [Make client ignore dual mode nodes by default](https://github.com/nymtech/nym/pull/5388)
+
+}>
+**Testing Steps:**
+- Ensured a client is able to select a node which aside from a gateway, can also act as a mixnode
+- Verified 'ignore_epoch_roles' is the default mode
+- _note; this is most likely not going to be a permanent solution_
+
+**Results:**
+- Clients and topology are behaving correctly
+
+Status: Pass
+ AccordionTemplate>
+
+- [Update version of chain watcher and validator rewarder](https://github.com/nymtech/nym/pull/5394)
+
+### Bugfix
+
+- [Remove unnecessary arguments for nym-api swagger endpoints](https://github.com/nymtech/nym/pull/5272)
+- [Fixed sql migration for adding default message timestamp](https://github.com/nymtech/nym/pull/5374)
+- [Terminate mixnet socket listener on shutdown](https://github.com/nymtech/nym/pull/5389)
+- [Correctly handle ingore epoch roles flag](https://github.com/nymtech/nym/pull/5390)
+
+
## `v2025.1-reeses`
- [Release Binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.1-reeses)
diff --git a/documentation/docs/pages/operators/community-counsel/_meta.json b/documentation/docs/pages/operators/community-counsel/_meta.json
index 2308ace555..3e1c9234ce 100644
--- a/documentation/docs/pages/operators/community-counsel/_meta.json
+++ b/documentation/docs/pages/operators/community-counsel/_meta.json
@@ -1,5 +1,7 @@
{
"exit-gateway": "Exit Gateway",
+ "legal": "Legal Counsel",
+ "templates": "Templates",
"jurisdictions": "Jurisdictions",
"isp-list": "ISP List",
"landing-pages": "Landing Pages",
diff --git a/documentation/docs/pages/operators/community-counsel/legal.mdx b/documentation/docs/pages/operators/community-counsel/legal.mdx
new file mode 100644
index 0000000000..26672e2f28
--- /dev/null
+++ b/documentation/docs/pages/operators/community-counsel/legal.mdx
@@ -0,0 +1,84 @@
+import { Callout } from 'nextra/components';
+import { Tabs } from 'nextra/components';
+import { RunTabs } from 'components/operators/nodes/node-run-command-tabs';
+import { VarInfo } from 'components/variable-info.tsx';
+import { AccordionTemplate } from 'components/accordion-template.tsx';
+import { Steps } from 'nextra/components';
+import AbuseResponse from 'components/operators/templates/dmca_response.md';
+import OperatorIntroduction from 'components/operators/templates/provider_introduction.md';
+
+# Community Counsel: General Legal Considerations
+
+**This page contains some tips & tricks to support operators running Exit Gateway (`nym-node` in mode `exit-gateway`) gathered by the operators community. Have a look on the points below to strengthen your legal protection.**
+
+
+
+## Useful Suggestions
+
+#### Introduce Nym Node to your provider
+Write a message to your provider telling them about your intention to run a `nym-node` on their infrastructure. You can use this template for it.
+
+
+
+
+
+
+#### Join Operators Legal Forum
+This [Matrix channel]((https://matrix.to/#/!YfoUFsJjsXbWmijbPG:nymtech.chat?via=nymtech.chat&via=matrix.org&via=matrix.su4ka.icu)) is the best place to ask questions and share your experience with others. You can share screen prints of abuse reports and ask for support.
+
+#### Join Operators Legal Clinic
+Do you have any questions directed for lawyers? Come and chat with Nym COO Alexis Roussel, every Wednesday 14:30 UTC for 60min in our [Operator Legal Forum channel on Matrix](https://matrix.to/#/!YfoUFsJjsXbWmijbPG:nymtech.chat?via=nymtech.chat&via=matrix.org&via=matrix.su4ka.icu).
+
+#### Use a friendly provider
+Nym operators community shares their experience with different ISPs on [this page](isp). At the same time, consider to move away from these provides:
+
+- Servinga / VPS2day (AS39378)
+- Frantech / Ponynet / BuyVM (AS53667)
+- OVH SAS / OVHcloud (AS16276)
+- Online S.A.S. / Scaleway (AS12876)
+- Hetzner Online GmbH (AS24940)
+- IONOS SE (AS8560)
+- Psychz Networks (AS40676)
+- 1337 Services GmbH / RDP.sh (AS210558)
+
+#### Backup your nodes
+Your only way to restore your node is when you have an access to `.nym` directory locally. Follow [node](../nodes/maintenance#backup-a-node) and [proxy configuration](../nodes/maintenance#backup-proxy-configuration) backup guides to be able to [restore your node](../nodes/maintenance#restoring-a-node) on another machine later on, without losing your delegation.
+
+#### Use `nym-exit` prefix on your landing page URL
+We would like to ask operators to use [reverse proxy](../nodes/nym-node/configuration/proxy-configuration) with a [landing page](landing-pages). When assigning a domain please use a common convention with `nym-exit` in the beginning of the the page URL as this will create a reputation and reference. The entire address should have this new format:
+```
+nym-exit...
+```
+
+For example:
+
+```
+# for squads running multiple nodes a format can look like this:
+nym-exit.ch-node1.mysquad.org
+
+# or like this
+nym-exit.3-jamaica.mysquad.org
+
+# for operators having one node per location, the format can look like this:
+nym-exit.brazil.mysquad.org
+
+# or if operators decide to not have any custom, they can simply have this format:
+nym-exit.mysquad.org
+```
+
+**The `NYM-EXIT` part in the beginning is what's important.**
+
+#### Chose the right TLD
+When registering a domain, check [Top Level Domain (TLD)](https://www.techopedia.com/definition/1348/top-level-domain-tld) terms and conditions. For example `.icu` is a no go. Having a wrong TLD may lead to your domain being taken away from you when facing a DMCA report.
+
+#### Respond to abuse reports
+Make sure to read notifications from your account provider and if you receive an abuse report, respond to it in time. Here is a template explaining the essential legal background of Nym Node Exit Gateway. Don't forget to adjust the variables.
+
+
+
+
+
+
+#### Help us to improve these pages
+Add your findings by opening a [Pull Request](add-content).
+
diff --git a/documentation/docs/pages/operators/community-counsel/templates.mdx b/documentation/docs/pages/operators/community-counsel/templates.mdx
new file mode 100644
index 0000000000..c701f1a003
--- /dev/null
+++ b/documentation/docs/pages/operators/community-counsel/templates.mdx
@@ -0,0 +1,23 @@
+import { Callout } from 'nextra/components';
+import { Tabs } from 'nextra/components';
+import { RunTabs } from 'components/operators/nodes/node-run-command-tabs';
+import { VarInfo } from 'components/variable-info.tsx';
+import { AccordionTemplate } from 'components/accordion-template.tsx';
+import { Steps } from 'nextra/components';
+import AbuseResponse from 'components/operators/templates/dmca_response.md';
+import OperatorIntroduction from 'components/operators/templates/provider_introduction.md';
+
+# Templates for Providers
+
+Communication with your provider is an essential part of legal defense, as more often than not, terminating a server is based on the lack of knowledge about Nym Node and it's legal bases. Use the following templates to introduce your intention to run a Nym Node or as a response to abuse report.
+
+
+
+## Email Templates
+
+### Introduction to server provider
+
+
+
+### DMCA abuse report response
+
diff --git a/documentation/docs/pages/operators/nodes.mdx b/documentation/docs/pages/operators/nodes.mdx
index 49cae361f9..3868d6cd22 100644
--- a/documentation/docs/pages/operators/nodes.mdx
+++ b/documentation/docs/pages/operators/nodes.mdx
@@ -35,9 +35,7 @@ Accepting T&Cs is done via a flag `--accept-operator-terms-and-conditions` added
This is a summary of all needed steps for node operators to setup and configure a `nym-node` and register it to Nym Network:
-1. **Start with [Preliminary Steps](nodes/preliminary-steps.mdx), preparing:**
-- [VPS](nodes/preliminary-steps/vps-setup.mdx)
-- [Nym wallet](nodes/preliminary-steps/wallet-preparation)
+1. **Start with [Preliminary Steps](nodes/preliminary-steps.mdx), preparing [VPS](nodes/preliminary-steps/vps-setup.mdx) and [Nym wallet](nodes/preliminary-steps/wallet-preparation)**
2. **[Setup](nodes/nym-node/setup.mdx) the node**
diff --git a/documentation/docs/pages/operators/nodes/maintenance.mdx b/documentation/docs/pages/operators/nodes/maintenance.mdx
index 1d182e3d85..5819fde852 100644
--- a/documentation/docs/pages/operators/nodes/maintenance.mdx
+++ b/documentation/docs/pages/operators/nodes/maintenance.mdx
@@ -126,13 +126,32 @@ mkdir -pv
# mkdir -pv $HOME/backup/my_nym_node/.nym
```
-###### 2. Copy configuration folder `.nym` from your VPS to your newly created backup directory
+###### 2. Backup `clients.sqlite` database
+
+- Install `sqlite3`
+```sh
+apt install sqlite3
+```
+- Open sqlite CLI shell inside `clients.sqlite` database
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite
+```
+- Create backup called `clients_backup.sqlite`
+```sh
+.backup .nym/nym-nodes/default-nym-node/data/clients_backup.sqlite
+```
+- Exit sqlite CLI shell
+```sh
+.exit
+```
+
+###### 3. Copy configuration folder `.nym` from your VPS to your newly created backup directory
```sh
scp -r @:~/.nym/nym-nodes/
```
-###### 3. Verify the success of the backup
+###### 4. Verify the success of the backup
The `scp` command should print logs, an operator can see directly whether it was successful or if it encountered any error. However, double check that all your needed configuration is in the backup target directory.
@@ -227,7 +246,33 @@ The `scp` command should print logs, an operator can see directly whether it was
* Run a command `echo "$(curl -4 https://ifconfig.me)"` to see your public IPv4
* Edit config file located at `~/.nym/nym-nodes//config/config.toml` correct IP - it's the field under the header `[host]`, called `public_ips = [,]`
* Add your new location field `location = `, (formats like: 'Jamaica', or two-letter alpha2 (e.g. 'JM'), three-letter alpha3 (e.g. 'JAM') or three-digit numeric-3 (e.g. '388') can be provided).
-* Try to run the node and see if everything works.
+
+###### 5. Restore `clients.sqlite` database
+
+- Install `sqlite3`
+```sh
+apt install sqlite3
+```
+- Open sqlite CLI shell inside `clients.sqlite` database
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite
+```
+- Restore your backup called `clients_backup.sqlite`
+```sh
+.restore .nym/nym-nodes/default-nym-node/data/clients_backup.sqlite
+```
+- Exit sqlite CLI shell
+```sh
+.exit
+```
+- Check integrity
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite "PRAGMA integrity_check;"
+```
+The result should return `ok` if the database is intact.
+
+###### 6. Test & validate your setup
+* Dry run the node and see if everything works.
* Setup the [systemd](nym-node/configuration.mdx#systemd) automation (don't forget to add the [terms and conditions flag](nym-node/setup.mdx#terms--conditions)) to `ExecStart` command, reload the daemon and run the service.
###### 4. Change the node smart contract info via the wallet interface
@@ -313,21 +358,71 @@ mkdir ~/.nym
#in case no `nym-node` was initialized previously
mkdir ~/.nym/nym-nodes
```
+###### 2. Backup `clients.sqlite` database
-###### 2. Move the node data and keys to the new machine
+- Stop your node
+```sh
+service nym-node stop
+```
+- Install `sqlite3`
+```sh
+apt install sqlite3
+```
+- Open sqlite CLI shell inside `clients.sqlite` database
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite
+```
+- Create backup called `clients_backup.sqlite`
+```sh
+.backup .nym/nym-nodes/default-nym-node/data/clients_backup.sqlite
+```
+- Exit sqlite CLI shell
+```sh
+.exit
+```
+
+###### 3. Move the node data and keys to the new machine
* Open your **local terminal** (as that one's ssh key is authorized in both of the VPS) and run:
```sh
scp -r -3 @:~/.nym/nym-nodes @:~/.nym/nym-nodes/
```
-###### 3. Open new/target VPS terminal and configure the node
+###### 4. Open new/target VPS terminal and configure the node
* Edit `~/.nym/nym-nodes//config/config.toml` config with the new listening address IP - it's the one under the header `[host]`, called `public_ips = [,]` and add your new location (field `location = `, formats like: 'Jamaica', or two-letter alpha2 (e.g. 'JM'), three-letter alpha3 (e.g. 'JAM') or three-digit numeric-3 (e.g. '388') can be provided). You can see your IP by running a command `echo "$(curl -4 https://ifconfig.me)"`.
-* Try to run the node and see if everything works.
-* Setup the [systemd](nym-node/configuration.mdx#systemd) automation (don't forget to add the [terms and conditions flag](nym-node/setup.mdx#terms--conditions)) to `ExecStart` command, reload the daemon and run the service. If you want to use the exact same service config file, you can also copy it from one VPS to another following the same logic by opening your **local terminal** (as that one's ssh key is authorized in both of the VPS) and running:
+###### 5. Restore `clients.sqlite` database
+
+- Install `sqlite3`
+```sh
+apt install sqlite3
+```
+- Open sqlite CLI shell inside `clients.sqlite` database
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite
+```
+- Restore your backup called `clients_backup.sqlite`
+```sh
+.restore .nym/nym-nodes/default-nym-node/data/clients_backup.sqlite
+```
+- Exit sqlite CLI shell
+```sh
+.exit
+```
+- Check integrity
+```sh
+sqlite3 ~/.nym/nym-nodes/default-nym-node/data/clients.sqlite "PRAGMA integrity_check;"
+```
+The result should return `ok` if the database is intact.
+
+###### 6. Test & validate your setup
+* Dry run the node and see if everything works.
+* Setup the [systemd](nym-node/configuration.mdx#systemd) automation (don't forget to add the [terms and conditions flag](nym-node/setup.mdx#terms--conditions)) to `ExecStart` command, reload the daemon and run the service.
+
+
+* If you want to use the exact same service config file, you can also copy it from one VPS to another following the same logic by opening your **local terminal** (as that one's ssh key is authorized in both of the VPS) and running:
```sh
scp -r -3 @:/etc/systemd/system/nym-node.service @:/etc/systemd/system/nym-node.service
```
diff --git a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
index c77b18de42..204a6396d3 100644
--- a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
+++ b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx
@@ -20,12 +20,12 @@ This documentation page provides a guide on how to set up and run a [NYM NODE](.
```sh
nym-node
Binary Name: nym-node
-Build Timestamp: 2025-01-16T11:54:17.079662337Z
-Build Version: 1.3.1
-Commit SHA: 5ab164d229f85bd2dd27ec6e38292c281df2f678
-Commit Date: 2025-01-16T12:51:53.000000000+01:00
+Build Timestamp: 2025-02-04T09:35:42.399220545Z
+Build Version: 1.4.0
+Commit SHA: 4c2bf3642e8eec0d55c7753e14429d73ac2d0e99
+Commit Date: 2025-02-04T10:29:48.000000000+01:00
Commit Branch: HEAD
-rustc Version: 1.84.0
+rustc Version: 1.84.1
rustc Channel: stable
cargo Profile: release
```
@@ -39,21 +39,35 @@ cargo Profile: release
From `nym-node v1.3.0` operators can choose multiple functionalities for their `nym-node` binary (flagged as `--mode`).
-**However, the clients are yet to be developed to be able to make a proper selection for multi-mode nodes and therefore we ask operators to sign only one functionality to `--mode` option at a time. Please chose out of: `mixnode` or `entry-gateway` or `exit-gateway`.**
-
-We are developing a design where operators can enable multiple modes, and let the Nym API to position the node according the network's needs in the beginning of each epoch.
+**However, the clients are yet to be developed to be able to make a proper selection for multi-mode nodes and therefore we ask operators to assign only one functionality to `--mode` option at a time. Please chose out of: `mixnode` or `entry-gateway` or `exit-gateway`. Chosing multiple at once will make your node non-routable!**
-Nym Node has three functionalities in the network: `entry-gateway`, `mixnode` and `exit-gateway`.
+### Mixnet Routing
-- **Entry Gateway (`--mode entry-gateway`)**: A the node to which local client connects. It checks the bandwidth allowance, using [zk-nyms](../../../network/cryptography/zk-nym) and either sends [Sphinx packets](../../../network/cryptography/sphinx) through the mixnet or directly to Exit Gateway in case of dVPN (2-hop) routing. This node also recieves replies and sends them back to users local client.
+***Mixnet mode (5-hop) is the full anonymising option of NymVPN. Read more about the Mixnet architecture [here](http://localhost:3000/docs/network/architecture)***
-- **Mixnode (`--mode mixnode`)**: Nodes organized in three layers, randmoly selected every epoch (60 minutes), mixing Sphinx packets, adding a slight latency to defend users agains time correlation attacks and sending them further to the next layer or to the Exit Gateway
+Nym Node has three functionalities in the Mixnet: `entry-gateway`, `mixnode` and `exit-gateway`. These are selected with a flag `--mode ` alongside `nym-node` command `run` .
+
+- **Entry Gateway (`--mode entry-gateway`)**: A node to which clients connect. It checks the bandwidth allowance, using [zk-nyms](../../../network/cryptography/zk-nym) and either sends [Sphinx packets](../../../network/cryptography/sphinx) through the mixnet or directly to Exit Gateway in case of dVPN (2-hop) routing. This node also receives replies and sends them back to users local client.
+
+- **Mixnode (`--mode mixnode`)**: Nodes organized in three layers, randomly selected every epoch (60 minutes), mixing Sphinx packets, adding a slight latency to defend users agains time correlation attacks and sending them further to the next layer or to the Exit Gateway
- **Exit Gateway (`--mode exit-gateway`)**: The final node in the mixnet. It puts all packets together and using inbuilt Network requester and IP packet router, it sends traffic to the open internet. This node also recieves replies and sends them back to the user client.
-Exit Gateway is the only node routing data directly to the open internet. Therefore it exposes IP of operators server (VPS) to abuse complains. Before you decide to run an Exit Gateway, please read our [Community Counsel pages](../../community-counsel/exit-gateway) containing more information and some legal content.
+Exit Gateway is the only mode routing data directly to the open internet. Therefore it exposes IP of operators server (VPS) to abuse complains. Before you decide to run an Exit Gateway, please read our [Community Counsel pages](../../community-counsel/exit-gateway) containing more information and some legal content.
+
+
+### dVPN Routing
+
+***dVPN routing (2-hop) is the Fast option of NymVPN. It runs a wireguard tunnel inside another wireguard tunnel. dVPN uses 2 Gateway layers (entry and exit) and no Mixnode layers. If an operator announces and [correctly configure](configuration#connectivity-test-and-configuration) their node to route wireguard, the node can be chosen as entry or exit by any client at any time.***
+
+To activate wireguard routing, operators need to add `--wireguard-enabled true` alongside `nym-node` command `run`.
+
+
+Wireguard nodes route data directly to the open internet. Therefore it exposes IP of operators server (VPS) to abuse complains. Before you decide to run a node with active wireguard routing, please read our [Community Counsel pages](../../community-counsel/exit-gateway) containing more information and some legal content.
+
+**Wireguard mode has no exit policy right now - we are working on the implementation.**
Everything essential for each mode exists on `nym-node` by default. For instance, if you run a Mixnode, you'll find that a NR (Network Requester) and IPR (IP Packet Router) addresses exist, but they will be ignored in `mixnode` mode.
diff --git a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx
index b329a227c0..ea5cab1beb 100644
--- a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx
+++ b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx
@@ -146,7 +146,7 @@ Besides these values, the API is also looking whether the node is bonded in Mixn
**The node score is calculated with this formula:**
-> **active_set_selection_probability = total_stake \* ( config_score \* node_performance ) ^ 20 )**
+> **active_set_selection_probability = total_stake \* (( config_score \* node_performance ) ^ 20 )**
Note that the score helps prioritize some nodes over others. If all available nodes have the same score, then the selection is done uniformly at random. By raising the config and performance components to 20, values of these parameters that are below one incur a heavy penalization for the node’s selection chances.