diff --git a/RELEASE-NOTES-v0.1.2.md b/RELEASE-NOTES-v0.1.2.md new file mode 100644 index 0000000..d98fdf7 --- /dev/null +++ b/RELEASE-NOTES-v0.1.2.md @@ -0,0 +1,81 @@ +# Sentinel Node Manager v0.1.2 + +**Released:** May 19, 2026 + +v0.1.2 packages the full UI overhaul and infrastructure hardening work from v0.1.1 into a stable release build. Installers are available for Windows, macOS (Intel + Apple Silicon), and Linux (AppImage + .deb). + +--- + +## What's New + +### On-Chain Hardware Specs Reporting +Nodes now automatically broadcast a `specs:v1` self-MsgSend 12 seconds after a successful deploy. The memo carries a hardware snapshot (CPU, memory, vendor) recorded on-chain. Unsent broadcasts are retried on startup. + +### Live System Metrics +A 1 Hz CPU and memory sampler runs in the background and feeds a new System screen. Metrics are broadcast over IPC and persist across navigation. Toggle defaults to on. + +### Activity Feed +A grouped, filterable event log replaces the previous ad-hoc toast history. All deploy events, node status changes, and wallet activity are captured and searchable. + +### SSH Batch Deploy +Batch deployments now accept CSV or JSON host input, run with a parallel-with-cap scheduler, support per-row credential overrides, and show per-row progress. Mnemonic reveal is gated behind explicit confirmation. + +### Security Hardening +- Renderer sandbox enabled +- Strict Content Security Policy (default-src 'self' in production builds) +- Window-open and will-navigate guards (HTTPS and mailto only) +- CLI auto-start gated behind explicit acknowledgment token +- TOFU SSH host-key tracking +- Secrets scrubbed from CLI broadcast events +- Mnemonic redacted from deploy.status over CLI + +### RPC Pool Reliability +The default RPC pool has been expanded to 12 verified endpoints synced with blue-js-sdk@2.7.1. The previously included rpc.sentinel.co was dropped after it was found to be ~22,000 blocks behind tip while reporting catching_up=false and returning zero balances for funded addresses. + +Active pool: Busurnode, Trinity Stake, PublicNode, Polkachu, MathNodes, Roomit, SuchNode, ChainTools, Validatus, QuokkaStake, Sentinel Growth DAO, ChainVibes. + +Settings now refresh the chain RPC pool every 60 seconds. + +### CLI Client Binary +`bin/sentinel-node-manager.js` is a standalone CLI client supporting interactive shell mode, agent mode, and one-shot command execution. Colored output, Windows/macOS/Linux endpoint discovery. + +### Seed Phrase Modal +Global seed phrase modal mounted at layout level — survives tab switches, includes 3-word verification confirmation, and never re-opens for the same job ID. + +### UI Refinements +- NodeDetails rebuilt using canonical PanelLabel / PanelSection / KV / Mono primitives with compact 4-col grid and QR tile +- Container log scroll clipping fixed +- Operator balance stat card: accent gradient, wallet badge, aligned value/unit, withdraw button with disabled-state tooltip +- Topbar back button removed, route-keyed page transitions added +- Help screen redesigned with searchable left-rail nav, scroll-spy, grouped topics, and keyboard shortcut card +- OnChainSpecs snapshot card: AMD vendor logo, Reserved/Total meters, condensed copy + +### Bug Fixes +- Fixed stuck "Syncing" chip: `containerLogs()` now wrapped in try/catch to prevent Docker daemon issues from masking reachability checks +- Node-online event now fires once on loading→online transition instead of every 4 seconds during the grace window +- TypeScript: `sectionRefs` type widened to `HTMLElement` to match section ref types + +--- + +## End-to-End CLI Test Harness +`tests/e2e/cli-e2e.mjs` drives every CLI command including real self-send and MsgUpdateNodeDetails broadcasts, verified on-chain via RPC tx_search. Total spend is under 0.0015 DVPN. See `docs/e2e-cli-test.md` for full protocol. + +--- + +## Downloads + +| Platform | File | +|---|---| +| Windows (installer) | `Sentinel-Node-Manager-Setup-0.1.2.exe` | +| Windows (portable) | `Sentinel-Node-Manager-0.1.2.exe` | +| macOS Intel | `Sentinel-Node-Manager-0.1.2.dmg` | +| macOS Apple Silicon | `Sentinel-Node-Manager-0.1.2-arm64.dmg` | +| Linux AppImage | `Sentinel-Node-Manager-0.1.2.AppImage` | +| Linux .deb | `sentinel-node-manager_0.1.2_amd64.deb` | + +--- + +## Requirements +- Docker Desktop (Windows/macOS) or Docker Engine (Linux) +- 2 GB free RAM minimum +- UDP port reachable publicly (default 7777) diff --git a/docs/node-setup-guide.html b/docs/node-setup-guide.html new file mode 100644 index 0000000..da8c2e8 --- /dev/null +++ b/docs/node-setup-guide.html @@ -0,0 +1,1308 @@ + + + + + + Sentinel Node Manager — Setup Guide v0.1.2 + + + + + + + + +
+ +
+ Node Manager — Setup Guide + v0.1.2 +
+ + +
+ + + + + +
+ + +
+
+
+ Node Manager v0.1.2 — Windows Setup +
+

Run a Sentinel dVPN node.
Earn $P2P tokens.

+

+ This guide walks you through installing the Node Manager, connecting Docker, setting up your wallet, forwarding a port, and getting your node live on the Sentinel Network. No terminal required. +

+
+
Windows 10 / 11 only
+
~20 minutes to complete
+
Requires DVPN ($P2P) tokens
+
+
+ + +
+

+
🖥
+ Requirements +

+
+
+
🪟
+
Windows 10 or 11
+
64-bit only. Both Home and Pro editions are supported.
+
+
+
🐳
+
Docker Desktop
+
Free. Must be running every time you deploy or run a node.
+
+
+
🌐
+
Router access
+
You need to log in and forward UDP port 7777.
+
+
+
🪙
+
DVPN ($P2P) tokens
+
Needed to register your node on-chain. Around 0.01 DVPN covers gas.
+
+
+
💾
+
2 GB free RAM
+
Minimum for the node and Docker to run smoothly.
+
+
+
+ + +
+
+
+
01
+
+
Download the installer
+
Grab the latest Windows build from GitHub Releases.
+
+
+
+
    +
  1. Go to the v0.1.2 release page on GitHub.
  2. +
  3. Download Sentinel-Node-Manager-Setup-0.1.2.exe from the Assets section.
  4. +
  5. Once downloaded, double-click the file and follow the installer prompts.
  6. +
+ +
+
⚠️
+
+ SmartScreen warning + Windows may block the installer with a SmartScreen prompt. This happens because the app is unsigned in experimental builds. Click "More info" then "Run anyway" to proceed. +
+
+ +
+
📸
+
+
Screenshot needed
+
Windows SmartScreen warning dialog — showing "More info" link and "Run anyway" button
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Installer wizard on first screen — showing the Sentinel Node Manager setup window
+
+
Capture this
+
+
+
+
+ + +
+
+
+
02
+
+
Install Docker Desktop
+
Docker is the engine that runs your node. It must be running before you deploy.
+
+
+
+
    +
  1. Go to docker.com/products/docker-desktop and download the Windows installer.
  2. +
  3. Run the installer and accept the default settings.
  4. +
  5. Restart Windows when prompted.
  6. +
  7. After restart, open Docker Desktop from the Start Menu.
  8. +
  9. Wait for Docker to fully start. When the icon in your system tray turns green, Docker is ready.
  10. +
+ +
+
🔴
+
+ Keep Docker running + Docker Desktop must be open and running every time you want to deploy or run a node. If Docker is not running, the Node Manager will show an "Engine not running" error. +
+
+ +
+
📸
+
+
Screenshot needed
+
Docker Desktop system tray icon showing green status — zoom in on the system tray area
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Docker Desktop main window showing "Engine running" or green status indicator
+
+
Capture this
+
+
+
+
+ + +
+
+
+
03
+
+
Open Sentinel Node Manager
+
Launch the app and get to the wallet setup screen.
+
+
+
+
    +
  1. Find Sentinel Node Manager in your Start Menu or use the desktop shortcut created by the installer.
  2. +
  3. Open the app. On first launch it asks whether you want to create a new wallet or restore an existing one.
  4. +
+ +
+
📸
+
+
Screenshot needed
+
Node Manager first-launch screen showing "Create new wallet" and "Restore wallet" options
+
+
Capture this
+
+
+
+
+ + +
+
+
+
04
+
+
Set up your wallet
+
Create a fresh wallet or restore one you already have.
+
+
+
+

New wallet: Click "Create new wallet". The app shows you a 24-word recovery phrase.

+ +
+
🔴
+
+ Back up your recovery phrase + Write down all 24 words in order and store them somewhere safe offline. This is the only way to recover your wallet. Never share these words with anyone. +
+
+ +

Existing wallet: Click "Restore wallet" if you already have a Sentinel wallet with DVPN tokens. Enter your 24-word phrase to restore access.

+ +
+
📸
+
+
Screenshot needed
+
24-word recovery phrase screen — blur or redact the actual words, show the layout and backup warning
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Wallet section showing the sent1... address and zero balance after creation
+
+
Capture this
+
+
+
+
+ + +
+
+
+
05
+
+
Fund your wallet
+
You need a small amount of DVPN to cover the on-chain registration fee.
+
+
+
+
    +
  1. Open the Wallet section in the app. Your address starts with sent1....
  2. +
  3. Copy that address.
  4. +
  5. Send DVPN tokens to it from an exchange or any wallet that supports the Sentinel chain. Around 0.01 DVPN is enough to cover gas.
  6. +
  7. The app shows your balance. Wait 1-2 minutes for it to update after the transaction confirms.
  8. +
+ +
+
ℹ️
+
+ Balance not updating? + The app polls on a schedule. Give it 1-2 minutes after the transaction confirms on-chain, then check again. Make sure you sent to the correct sent1... address. +
+
+ +
+
📸
+
+
Screenshot needed
+
Wallet section showing a funded balance and the full sent1... address
+
+
Capture this
+
+
+
+
+ + +
+
+
+
06
+
+
Forward UDP port 7777
+
Your node needs to be reachable from the internet. This requires a port forwarding rule on your router.
+
+
+
+

First, find your PC's local IP address:

+ +
+ ipconfig + +
+ +

Open Command Prompt (search for "cmd" in the Start Menu), run the command above, and look for IPv4 Address under your active network adapter. It will look something like 192.168.1.x.

+ +

Then log in to your router and create a port forwarding rule:

+ +
    +
  1. Open a browser and go to 192.168.1.1 or 192.168.0.1 (check your router's label if unsure).
  2. +
  3. Log in with your router credentials.
  4. +
  5. Find the Port Forwarding section. It may be called Virtual Server or NAT on some routers.
  6. +
  7. Create a new rule with these settings: +
      +
    • Protocol: UDP
    • +
    • External Port: 7777
    • +
    • Internal Port: 7777
    • +
    • Internal IP: your PC's IPv4 address
    • +
    +
  8. +
  9. Save the rule.
  10. +
+ +
+
⚠️
+
+ CGNAT users + If you are on a 4G, 5G, or some cable ISP connection, your ISP may use CGNAT (Carrier-Grade NAT). This blocks inbound port forwarding entirely. Contact your ISP to confirm. If you are behind CGNAT, you will not be able to run a publicly reachable node without a dedicated IP. +
+
+ +
+
📸
+
+
Screenshot needed
+
Command Prompt showing ipconfig output — highlight the IPv4 Address line
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Router admin panel showing a completed port forwarding rule for UDP 7777 (use a generic router UI — redact credentials)
+
+
Capture this
+
+
+
+
+ + +
+
+
+
07
+
+
Deploy your node
+
Launch your node onto the Sentinel Network. The first deploy takes 5-15 minutes.
+
+
+
+
    +
  1. In the Node Manager, click Deploy Local.
  2. +
  3. Set your moniker — this is the name your node shows on the network. Choose anything you like.
  4. +
  5. Set your pricing. The default values are fine to start with. You can change them later.
  6. +
  7. Click Deploy.
  8. +
  9. The app downloads and builds the node Docker image. This takes 5-15 minutes on first run. Progress is shown on screen.
  10. +
  11. Do not close the app during this process.
  12. +
  13. Once complete, your node appears in the Nodes list with status Online.
  14. +
+ +
+
ℹ️
+
+ First deploy takes longer + The Docker image only needs to download once. Subsequent deploys and restarts are much faster. +
+
+ +
+
📸
+
+
Screenshot needed
+
Deploy Local screen showing moniker and pricing fields before clicking Deploy
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Deploy progress screen showing Docker image download/build in progress
+
+
Capture this
+
+ +
+
📸
+
+
Screenshot needed
+
Nodes list showing the newly deployed node with green "Online" status badge
+
+
Capture this
+
+
+
+
+ + +
+
+
+
08
+
+
Keep it running
+
Your node earns $P2P tokens whenever someone connects through it.
+
+
+
+
    +
  • Leave Docker Desktop running in the background at all times.
  • +
  • Leave the Node Manager running or minimised to the system tray.
  • +
  • Check the Nodes screen for session stats and earnings.
  • +
  • Your node shows as Online in the network when everything is running correctly.
  • +
+ +
+
ℹ️
+
+ Earnings + You earn $P2P tokens whenever a user connects through your node. The more bandwidth you provide and the longer you stay online, the more you earn. +
+
+ +
+
📸
+
+
Screenshot needed
+
Nodes screen showing session stats, connected users count, and earnings balance
+
+
Capture this
+
+
+
+
+ + +
+

+
🔧
+ Troubleshooting +

+
+ +
+ +
+

Docker Desktop is not running. Open Docker Desktop from the Start Menu and wait for the icon in the system tray to turn green. Once Docker is fully started, try deploying again.

+
+
+ +
+ +
+

UDP port 7777 is not reachable from the internet. Check your port forwarding rule in your router settings — confirm the protocol is UDP, and the internal IP matches your PC's current local IP address.

+

Use an online UDP port checker to verify port 7777 is open. Search for "UDP port checker" and test port 7777 against your public IP address.

+

If you are on a 4G, 5G, or certain ISP connections, your provider may use CGNAT. CGNAT blocks inbound port forwarding. Contact your ISP to confirm and ask about a dedicated IP if needed.

+
+
+ +
+ +
+

The app polls the chain on a schedule. Wait 1-2 minutes after your transaction confirms on-chain, then check again. If it still shows 0, double-check that you sent to the exact sent1... address shown in the Wallet section of the app.

+
+
+ +
+ +
+

This is expected behaviour for unsigned experimental builds. When the SmartScreen dialog appears, click "More info" — this reveals a "Run anyway" button. Click that to proceed with the install.

+
+
+ +
+ +
+

Restart Docker Desktop, then click the Restart button on your node inside the app. Wait for the status to update. If the issue persists, fully close Docker Desktop, reopen it, wait for the green icon, and restart the node again.

+
+
+ +
+ +
+

This is a known issue in v0.1.2. The RPC addresses stored in the app settings are missing explicit port numbers, which the node binary requires.

+

Fix:

+
    +
  1. Close the Node Manager app completely.
  2. +
  3. Open File Explorer and type %APPDATA%\sentinel-node-manager in the address bar and press Enter.
  4. +
  5. Open settings.json with Notepad.
  6. +
  7. Find the rpcUrls section. Each URL looks like "https://rpc-sentinel.busurnode.com".
  8. +
  9. Add :443 to the end of every URL so they look like "https://rpc-sentinel.busurnode.com:443".
  10. +
  11. Save the file, reopen Node Manager, and deploy again.
  12. +
+
Every URL in the list must have :443 added. Missing even one will cause the error to repeat.
+
+
+ +
+ +
+

This usually appears after a previous failed deploy left stale data behind. The app cleans up the failed entry automatically. Click Deploy Local again to start a fresh deploy.

+

If the error repeats, close the app, open %APPDATA%\sentinel-node-manager\nodes\ in File Explorer, and delete any folders that do not correspond to a node currently showing in the app. Reopen and deploy again.

+
+
+ +
+ +
+

The first deploy takes 5-15 minutes while Docker downloads and builds the node image. If the app shows a failure message but your node then appears as Online in the Nodes screen, the deploy succeeded. The error was from an earlier attempt in the same session. No action needed.

+
+
+ +
+
+ + + + +
+
+ + + + + diff --git a/docs/node-setup-guide.md b/docs/node-setup-guide.md new file mode 100644 index 0000000..2b39bd3 --- /dev/null +++ b/docs/node-setup-guide.md @@ -0,0 +1,240 @@ +# Sentinel Node Manager — Setup Guide + +**Version:** v0.1.2 +**Platform:** Windows 10 / 11 (64-bit) + +--- + +## Table of Contents + +1. [Requirements](#requirements) +2. [Step 1 — Download the installer](#step-1--download-the-installer) +3. [Step 2 — Install Docker Desktop](#step-2--install-docker-desktop) +4. [Step 3 — Open Sentinel Node Manager](#step-3--open-sentinel-node-manager) +5. [Step 4 — Set up your wallet](#step-4--set-up-your-wallet) +6. [Step 5 — Fund your wallet](#step-5--fund-your-wallet) +7. [Step 6 — Forward UDP port 7777](#step-6--forward-udp-port-7777) +8. [Step 7 — Deploy your node](#step-7--deploy-your-node) +9. [Step 8 — Keep it running](#step-8--keep-it-running) +10. [Troubleshooting](#troubleshooting) + +--- + +## Requirements + +Before you start, make sure you have the following: + +- **Windows 10 or 11 (64-bit)** — Home or Pro editions both work +- **Docker Desktop for Windows** — free to download, must be running every time you deploy or run a node +- **Router access** — you need to log in and forward UDP port 7777 +- **DVPN ($P2P) tokens** — needed to register your node on-chain (around 0.01 DVPN covers the gas fee) +- **At least 2 GB free RAM** + +--- + +## Step 1 — Download the installer + +1. Go to the [v0.1.2 release page](https://github.com/sentinel-official/node-deployer-experimental/releases/tag/v0.1.2) on GitHub. +2. Under Assets, download **Sentinel-Node-Manager-Setup-0.1.2.exe**. +3. Double-click the downloaded file and follow the installer prompts. + +> ⚠️ **SmartScreen warning:** Windows may block the installer. The app is unsigned in experimental builds. Click **"More info"** then **"Run anyway"** to proceed. + +> 📸 Screenshot: Windows SmartScreen dialog showing "More info" link and "Run anyway" button + +> 📸 Screenshot: Installer wizard first screen showing the Sentinel Node Manager setup window + +--- + +## Step 2 — Install Docker Desktop + +1. Go to [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/) and download the Windows installer. +2. Run the installer and accept the default settings. +3. Restart Windows when prompted. +4. After restart, open Docker Desktop from the Start Menu. +5. Wait for Docker to fully start. The icon in your system tray turns **green** when it is ready. + +> ⚠️ **Keep Docker running:** Docker Desktop must be open every time you want to deploy or run a node. If it is not running, the Node Manager shows an "Engine not running" error. + +> 📸 Screenshot: System tray area showing the Docker Desktop icon with green status + +> 📸 Screenshot: Docker Desktop main window showing the engine running state + +--- + +## Step 3 — Open Sentinel Node Manager + +1. Find **Sentinel Node Manager** in your Start Menu, or use the desktop shortcut created during install. +2. Open the app. On first launch it asks whether you want to create a new wallet or restore an existing one. + +> 📸 Screenshot: Node Manager first-launch screen showing "Create new wallet" and "Restore wallet" options + +--- + +## Step 4 — Set up your wallet + +**If you are new to Sentinel:** + +1. Click **"Create new wallet"**. +2. The app shows you a 24-word recovery phrase. + +> ⚠️ **Back up your recovery phrase now.** Write down all 24 words in order and store them somewhere safe offline. This is the only way to recover your wallet if you ever lose access to this device. Never share these words with anyone. + +**If you already have a Sentinel wallet with DVPN tokens:** + +1. Click **"Restore wallet"**. +2. Enter your 24-word recovery phrase to restore access. + +> 📸 Screenshot: 24-word recovery phrase screen (blur or redact the actual words, show the layout and the backup warning UI) + +> 📸 Screenshot: Wallet section showing the sent1... address and balance after wallet creation + +--- + +## Step 5 — Fund your wallet + +1. Open the **Wallet** section in the app. Your wallet address starts with `sent1...`. +2. Copy that address. +3. Send DVPN tokens to it from an exchange or any wallet that supports the Sentinel chain. Around **0.01 DVPN** is enough to cover the gas fee for on-chain registration. +4. The app shows your balance. Wait 1-2 minutes after the transaction confirms and check again. + +> ⚠️ Make sure you send to the exact `sent1...` address shown in the app. Tokens sent to the wrong address cannot be recovered. + +> 📸 Screenshot: Wallet section showing a funded DVPN balance with the full sent1... address visible + +--- + +## Step 6 — Forward UDP port 7777 + +Your node needs to be reachable from the internet. You do this by creating a port forwarding rule on your router. + +**First, find your PC's local IP address:** + +Open Command Prompt (search "cmd" in the Start Menu) and run: + +``` +ipconfig +``` + +Look for **IPv4 Address** under your active network adapter. It will look something like `192.168.1.x`. + +**Then set up port forwarding on your router:** + +1. Open a browser and go to `192.168.1.1` or `192.168.0.1`. Check the label on your router if you are unsure of the address. +2. Log in with your router credentials. +3. Find the **Port Forwarding** section. On some routers this is called Virtual Server or NAT. +4. Create a new rule with these settings: + - Protocol: **UDP** + - External Port: **7777** + - Internal Port: **7777** + - Internal IP: **your PC's IPv4 address** +5. Save the rule. + +> ⚠️ **CGNAT:** If you are on a 4G, 5G, or some cable ISP connection, your provider may use CGNAT (Carrier-Grade NAT). CGNAT blocks inbound port forwarding. Contact your ISP to confirm. If you are behind CGNAT, you will not be able to run a publicly reachable node without a dedicated IP. + +> 📸 Screenshot: Command Prompt showing ipconfig output with the IPv4 Address line highlighted + +> 📸 Screenshot: Router admin panel showing a completed port forwarding rule for UDP port 7777 (use a generic router UI, redact login credentials) + +--- + +## Step 7 — Deploy your node + +1. In the Node Manager, click **Deploy Local**. +2. Set your **moniker** — this is the name your node shows on the Sentinel Network. Choose anything you like. +3. Set your **pricing**. The default values are fine to start. You can adjust them later. +4. Click **Deploy**. +5. The app downloads and builds the node Docker image. This takes **5-15 minutes** on first deploy. Progress is shown on screen. +6. Do not close the app during this process. +7. Once complete, your node appears in the **Nodes** list with status **Online**. + +> ℹ️ The Docker image only needs to download once. Subsequent deploys and restarts are much faster. + +> 📸 Screenshot: Deploy Local screen showing the moniker and pricing fields before clicking Deploy + +> 📸 Screenshot: Deploy progress screen showing the Docker image download and build in progress + +> 📸 Screenshot: Nodes list showing the newly deployed node with a green "Online" status badge + +--- + +## Step 8 — Keep it running + +- Leave **Docker Desktop** running in the background. +- Leave the **Node Manager** running or minimised to the system tray. +- Your node earns **$P2P tokens** whenever someone connects through it. +- Check the **Nodes screen** for session stats and earnings. + +> 📸 Screenshot: Nodes screen showing session stats, active connections, and earnings balance + +--- + +## Troubleshooting + +### "Engine not running" error when deploying + +Docker Desktop is not running. Open Docker Desktop from the Start Menu and wait for the icon in the system tray to turn green before trying again. + +--- + +### Node shows as unreachable after deploy + +UDP port 7777 is not reachable from the internet. Check your port forwarding rule — confirm the protocol is set to UDP and the internal IP matches your PC's current local IP address. Use an online UDP port checker to verify port 7777 is open from the outside. + +Some ISPs use CGNAT, which blocks port forwarding entirely. Contact your ISP if you suspect this is the case. + +--- + +### Wallet balance shows 0 after sending DVPN + +The app polls the chain on a schedule. Wait 1-2 minutes after the transaction confirms on-chain and check again. Make sure you sent to the correct `sent1...` address shown in the Wallet section. + +--- + +### SmartScreen blocks the installer + +The app is not code-signed in experimental builds. When the SmartScreen dialog appears, click **"More info"** and then **"Run anyway"** to proceed. + +--- + +### Node stuck on "Syncing" after deploy + +Restart Docker Desktop, then click the **Restart** button on your node inside the app. If the issue persists, fully close Docker Desktop, reopen it, wait for the green icon in the system tray, and restart the node again. + +--- + +### "Deployment failed: validating rpc config" error + +This is a known issue in v0.1.2. The RPC addresses stored in the app settings are missing explicit port numbers, which the node binary requires. + +**Fix:** + +1. Close the Node Manager app completely. +2. Open File Explorer and type `%APPDATA%\sentinel-node-manager` in the address bar, then press Enter. +3. Open `settings.json` with Notepad. +4. Find the `rpcUrls` section. Each URL looks like `"https://rpc-sentinel.busurnode.com"`. +5. Add `:443` to the end of every URL so they look like `"https://rpc-sentinel.busurnode.com:443"`. +6. Save the file and reopen the Node Manager. +7. Try deploying again. + +> ⚠️ Make sure every URL in the list has `:443` added. Missing even one will cause the error to repeat. + +--- + +### "Unable to open database file" error during deploy + +This usually appears after a previous failed deploy left stale data behind. The app will clean up the failed node entry automatically. Simply click **Deploy Local** again to start a fresh deploy. + +If the error repeats, close the app, open `%APPDATA%\sentinel-node-manager\nodes\` in File Explorer, and delete any folders that do not correspond to a node currently showing in the app. Reopen the app and deploy again. + +--- + +### Deploy appears to fail but node shows Online + +The first deploy can take 5-15 minutes while Docker downloads and builds the node image. If the app shows an error but the Nodes screen then shows your node as Online, the deploy succeeded. The error was from an earlier attempt in the same session. + +--- + +*Sentinel Node Manager v0.1.2 — Experimental build* +*Sentinel Network — open decentralized infrastructure* +*[sentinel.co](https://sentinel.co) | [GitHub Release](https://github.com/sentinel-official/node-deployer-experimental/releases/tag/v0.1.2)* diff --git a/src/main/index.ts b/src/main/index.ts index a5fdb31..8876d34 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,4 +1,4 @@ -import { app, BrowserWindow, crashReporter, nativeImage, session, shell } from 'electron'; +import { app, BrowserWindow, crashReporter, nativeImage, safeStorage, session, shell } from 'electron'; import path from 'node:path'; import { registerIpcHandlers } from './ipc'; import { attachGlobalHandlers, log, logDir } from './services/logger'; @@ -205,6 +205,11 @@ function installContentSecurityPolicy(): void { }); } +// Allow wallet setup without a system keyring in dev/test environments +if (!app.isPackaged && process.platform === 'linux') { + safeStorage.setUsePlainTextEncryption(true); +} + app.whenReady().then(async () => { installContentSecurityPolicy(); log.info('app ready', { diff --git a/src/main/services/chain.ts b/src/main/services/chain.ts index 44268a5..ac6101c 100644 --- a/src/main/services/chain.ts +++ b/src/main/services/chain.ts @@ -25,18 +25,18 @@ export const DEFAULT_GAS_PRICE_UDVPN = '0.1'; * which silently breaks balance and node-status queries. */ export const DEFAULT_RPC_POOL: readonly string[] = [ - 'https://rpc-sentinel.busurnode.com', - 'https://rpc.trinitystake.io', - 'https://sentinel-rpc.publicnode.com', - 'https://sentinel-rpc.polkachu.com', - 'https://rpc.mathnodes.com', - 'https://rpc.dvpn.roomit.xyz', - 'https://rpc.sentinel.suchnode.net', - 'https://rpc.sentinel.chaintools.tech', - 'https://rpc.sentinel.validatus.com', - 'https://rpc.sentinel.quokkastake.io', - 'https://rpc.sentineldao.com', - 'https://rpc-sentinel.chainvibes.com', + 'https://rpc-sentinel.busurnode.com:443', + 'https://rpc.trinitystake.io:443', + 'https://sentinel-rpc.publicnode.com:443', + 'https://sentinel-rpc.polkachu.com:443', + 'https://rpc.mathnodes.com:443', + 'https://rpc.dvpn.roomit.xyz:443', + 'https://rpc.sentinel.suchnode.net:443', + 'https://rpc.sentinel.chaintools.tech:443', + 'https://rpc.sentinel.validatus.com:443', + 'https://rpc.sentinel.quokkastake.io:443', + 'https://rpc.sentineldao.com:443', + 'https://rpc-sentinel.chainvibes.com:443', ]; export const udvpnToDvpn = (u: string | number | bigint): number => { diff --git a/src/main/services/wallet.ts b/src/main/services/wallet.ts index e37b52c..68a3e4d 100644 --- a/src/main/services/wallet.ts +++ b/src/main/services/wallet.ts @@ -52,7 +52,11 @@ function mnemonicPath(): string { return path.join(app.getPath('userData'), MNEMONIC_FILE); } +// In dev mode on Linux, safeStorage is unavailable — fall back to plain text file. +const USE_PLAIN_TEXT = !app.isPackaged && process.platform === 'linux'; + async function requireEncryption(): Promise { + if (USE_PLAIN_TEXT) return; if (!safeStorage.isEncryptionAvailable()) { throw new Error( 'This computer cannot safely save your wallet recovery phrase. ' + @@ -64,13 +68,20 @@ async function requireEncryption(): Promise { async function saveMnemonic(mnemonic: string): Promise { await requireEncryption(); - const enc = safeStorage.encryptString(mnemonic); await fs.mkdir(path.dirname(mnemonicPath()), { recursive: true }); - await fs.writeFile(mnemonicPath(), enc); + if (USE_PLAIN_TEXT) { + await fs.writeFile(mnemonicPath(), mnemonic, 'utf8'); + } else { + const enc = safeStorage.encryptString(mnemonic); + await fs.writeFile(mnemonicPath(), enc); + } } async function loadMnemonic(): Promise { await requireEncryption(); + if (USE_PLAIN_TEXT) { + return fs.readFile(mnemonicPath(), 'utf8'); + } const buf = await fs.readFile(mnemonicPath()); return safeStorage.decryptString(buf); }