PageSourceSearch

https://docs.sentinel.co/assets/js/71594f06.7c18a663.js

js sentinel.co collected 2026-10-03 19:04:12 UTC 4,961 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunksentinel_docs=globalThis.webpackChunksentinel_docs||[]).push([[5853],{7018(e,n,i){i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>t,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"setup/manual/preliminary","title":"Preliminary Operations","description":"If you run a residential node, skip this section","source":"@site/docs/dvpn-nodes/setup/manual/preliminary.md","sourceDirName":"setup/manual","slug":"/setup/manual/preliminary","permalink":"/dvpn-nodes/setup/manual/preliminary","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Preliminary Operations","description":"If you run a residential node, skip this section","sidebar_position":1},"sidebar":"tutorialSidebar","previous":{"title":"Manual Setup","permalink":"/dvpn-nodes/manual-setup"},"next":{"title":"Install Docker","permalink":"/dvpn-nodes/setup/manual/docker-setup"}}');var r=i(74848),a=i(28453);const t={title:"Preliminary Operations",description:"If you run a residential node, skip this section",sidebar_position:1},l="Preliminary Operations",d={},o=[{value:"Generate a SSH Key",id:"generate-a-ssh-key",level:2},{value:"Client Side",id:"client-side",level:3},{value:"Server Side",id:"server-side",level:3},{value:"Install Dependencies",id:"install-dependencies",level:2},{value:"Setting up the Firewall",id:"setting-up-the-firewall",level:2}];function c(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"preliminary-operations",children:"Preliminary Operations"})}),"\n",(0,r.jsx)(n.p,{children:"This guide is designed for individuals with fundamental Linux proficiency who aspire to contribute to the Sentinel network and extend their bandwidth-sharing capabilities by manually establishing a dVPN node employing the Sentinel protocol. Each node operator has the autonomy to establish their own pricing for customers utilizing their bandwidth."}),"\n",(0,r.jsx)(n.h2,{id:"generate-a-ssh-key",children:"Generate a SSH Key"}),"\n",(0,r.jsx)(n.p,{children:"To securely access your server, you will use an SSH connection"}),"\n",(0,r.jsx)(n.h3,{id:"client-side",children:"Client Side"}),"\n",(0,r.jsx)(n.p,{children:"If you don't already have one, generate an SSH key pair on your client"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ssh-keygen -t ed25519\n"})}),"\n",(0,r.jsx)(n.p,{children:"Navigate to the SSH directory, and you should see both the public and private SSH keys"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ls -l .ssh/\n\ntotal 2\n-rw-------. 1 user user  size Mar 12 18:08 id_ed25519\n-rw-r--r--. 1 user user  size Mar 12 18:08 id_ed25519.pub\n"})}),"\n",(0,r.jsx)(n.p,{children:"Add your public SSH key to the authorized_keys file on your VPS to enable secure SSH connections"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip\n"})}),"\n",(0,r.jsx)(n.h3,{id:"server-side",children:"Server Side"}),"\n",(0,r.jsx)(n.p,{children:"Your public key will be visible on your server by typing"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"cat ~/.ssh/authorized_keys\n"})}),"\n",(0,r.jsx)(n.h2,{id:"install-dependencies",children:"Install Dependencies"}),"\n",(0,r.jsx)(n.p,{children:"On the server, update the list of available software packages and install dependencies"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt update && sudo apt upgrade -y\nsudo apt install -y curl git golang-github-pelletier-go-toml jq make\n"})}),"\n",(0,r.jsx)(n.h2,{id:"setting-up-the-firewall",children:"Setting up the Firewall"}),"\n",(0,r.jsx)(n.p,{children:"On your server machine, install the firewall"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo apt install ufw\n"})}),"\n",(0,r.jsx)(n.p,{children:"Allow Port 22"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo ufw allow 22\n"})}),"\n",(0,r.jsx)(n.p,{children:"Enable Firewall"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"sudo ufw enable\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},28453(e,n,i){i.d(n,{R:()=>t,x:()=>l});var s=i(96540);const r={},a=s.createContext(r);function t(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.