{"id":20766585,"url":"https://github.com/mmqnym/nodebeginner","last_synced_at":"2025-07-09T22:33:19.335Z","repository":{"id":222983180,"uuid":"758805124","full_name":"mmqnym/NodeBeginner","owner":"mmqnym","description":"This is a repository that teaches beginners how to manage their own Linux server.","archived":false,"fork":false,"pushed_at":"2024-02-17T12:24:51.000Z","size":214,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-02T08:13:44.150Z","etag":null,"topics":["linux","node","server"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmqnym.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-17T05:59:36.000Z","updated_at":"2024-06-02T15:06:46.000Z","dependencies_parsed_at":"2024-02-17T13:30:48.007Z","dependency_job_id":"2c4c8f52-6a2a-4a60-9249-a188688dc378","html_url":"https://github.com/mmqnym/NodeBeginner","commit_stats":null,"previous_names":["mmq88/nodebeginner","mmqnym/nodebeginner"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mmqnym/NodeBeginner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmqnym%2FNodeBeginner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmqnym%2FNodeBeginner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmqnym%2FNodeBeginner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmqnym%2FNodeBeginner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmqnym","download_url":"https://codeload.github.com/mmqnym/NodeBeginner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmqnym%2FNodeBeginner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264504605,"owners_count":23618829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","node","server"],"created_at":"2024-11-17T11:24:56.278Z","updated_at":"2025-07-09T22:33:19.299Z","avatar_url":"https://github.com/mmqnym.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## NodeBeginner\n\n這是一個提供給區塊鏈應用節點架設兼營運的 Linux 初學者教學，讓人人都能以低學習／金錢成本管理自己的節點。\n本篇面向非資訊／計算機相關背景，盡量不提到代碼，以命令為主。並以 Contabo 的 VPS 示範。\n\n### 目錄\n\n1. [雲端服務](#1-雲端服務)\n2. [選擇機器](#2-選擇機器)\n3. [更新機器](#3-更新機器)\n4. [硬體監控](#4-硬體監控)\n5. [資安設定](#5-資安設定)\n6. [硬碟監控](#6-硬碟監控)\n7. [流量監控](#7-流量監控)\n8. [常用命令](#8-常用命令)\n9. [節點容器](#9-節點容器)\n10. [贊助](#10-贊助)\n\n### 1. 雲端服務\n\n**首先說明為何一般人需要雲端供應商的服務來運行節點：**\n\n**如果你有自己的機房可以跳過這邊，而且你應該也不需要看這篇了。**\n\n運行區塊鏈節點特別是有獎勵的驗證者節點在硬體之外有個很重要的要求，那就是網路品質，家用網路一般難以維持 24h 不斷線且高頻寬的狀態，因為家庭網路大多不是專線。也因此撇除硬體的部分，我們很需要雲端供應商提供的網路品質來讓我們的節點維持不斷運行。網路品質一差輕則沒獎勵；重則被扣錢。\n\n常見的雲端供應商即便是初學者大概都知道幾個，首先是三大廠：\n\n- [AWS](https://aws.amazon.com/)\n- [Azure](https://azure.microsoft.com/)\n- [GCP](https://console.cloud.google.com/)\n\n再來是一些稍微小型的雲端供應商：\n\n- [Contabo](https://contabo.com/)\n- [Digital Ocean](https://www.digitalocean.com/)\n- [Vultr](https://www.vultr.com/?ref=9591395-8H)\n\n我們這邊選擇德國大廠 Contabo 進行教學，原因是因為歐洲廠的雲端相較美國廠的便宜非常非常多。\n以 Contabo 為例，優點就是便宜且效率不差，缺點就是機器選擇較少、延遲稍高、客服回覆較慢，還有這家的維護伺服器時間較長（約 45 分鐘），但個人是沒遇過維護。另外德國廠商以嚴謹著名，有很高的機率需要 KYC，不過這間的 KYC 很鬆，只要提交把機密資訊稍微馬賽克的護照就行，據說沒英文的身分證也行。\n另外由於服務便宜的原因，這家不像其他大廠直接提供控制面板、防火牆等功能，需要另外付費，下面的教學會提供伺服器的基礎設定教學，替你省去不必要的費用。\n※當然你也可以選擇其他歐洲大廠，但都差不多需要高度的自託管，而且品質不一定好。\n\n### 2. 選擇機器\n\n首先請把鼠標移到右上角語言貨幣的地方，將 Currency 改成 EUR，會比較省。\n\n再來先確認想運行的節點硬體要求，這邊以 [以太坊驗證者節點](https://ethereum.org/developers/docs/nodes-and-clients/run-a-node) 為例：\n\n```\nMinimum requirements\nCPU with 2+ cores\n8 GB RAM\n2TB SSD\n10+ MBit/s bandwidth\n\nRecommended specifications\nFast CPU with 4+ cores\n16 GB+ RAM\nFast SSD with 2+TB\n25+ MBit/s bandwidth\n```\n\n根據上面的建議，這邊選擇了 **STORAGE VPS 3**\n\n**※ 由於 Contabo 的機器選擇較少，儲存空間要求較高的節點可以選擇 STORAGE VPS，省去多餘的 CPU 與 Memory 花費。**\n\n![VPS Choice](./assets/vps_choice.png)\n\n點擊 Select 以後會發現選項相較其他雲端並不多，我們只需要選擇幾項就好：\n\n1. Select your term length：這個選項可以選擇你喜歡的收費週期，越大的收費週期設置費越低，不過設置費只收一次。\n2. Region：運行節點的話一般是不選擇這個的，因為無所謂，你想要的話可以改，但會被多收地區維護費用。除非你要架設 VPN，不然沒必要更動。\n3. Image：如果節點要求沒有寫，建議選擇 Ubuntu 22.04。\n   - Storage Type：如果你選擇的是 VPS 會看到這個選項，一般選 SSD 即可，NVME 是更快但更貴的硬碟。\n4. Login \u0026 password for your server：這個建議使用密碼生成器，推薦使用 [1password](https://1password.com/) 紀錄密碼。\n\n都設定好就能直接點 Next 到下個頁面，確認訂購資訊沒問題就可以 Order \u0026 Pay。\n\n**※再次提醒，先把支付貨幣改為 EUR，比較省錢。只要購買了第一個服務，要改就需要創新帳號後，申請轉移服務了。**\n\n再來就等信寄來，你『有可能』會收到 KYC 請求信：\n\n```\nDear Sir or Madam,\n\n...\n\nFirst of all, we would kindly ask you to send us the following information:\n\nFirst Name:\nLast Name:\nAddress:\nCity:\nZIP Code:\nCountry:\nTelephone Number:\n\n...\n```\n\n直接以英文回覆郵件你的這些資訊並附上把重要資訊打碼的護照或身分證即可，建議使用護照。\n\n再來通過驗證後就會收到以下的登入資訊：\n\n![vps_data](./assets/vps_data.png)\n\n### 3. 更新機器\n\n拿到使用權後，\nWindows 用戶可以在開始那邊搜尋 Windows PowerShell，運行它：\nMacOS 用戶可以直接打開終端機：\n\n輸入以下指令登入遠端主機確認硬體資訊是否符合：\n\n```sh\n# x.x.x.x 請換成主機的 ip 位址\nssh root@x.x.x.x\n\n# 之後變更 ssh port 之後，改為使用以下方式\nssh -p \u003cport 號\u003e root@x.x.x.x\n```\n\n會看到以下的內容：\n\n```sh\nWelcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-25-generic x86_64)\n\n * Documentation:  https://help.ubuntu.com\n * Management:     https://landscape.canonical.com\n * Support:        https://ubuntu.com/pro\n  _____\n / ___/___  _  _ _____ _   ___  ___\n| |   / _ \\| \\| |_   _/ \\ | _ )/ _ \\\n| |__| (_) | .` | | |/ _ \\| _ \\ (_) |\n \\____\\___/|_|\\_| |_/_/ \\_|___/\\___/\n\nWelcome!\n\nThis server is hosted by Contabo. If you have any questions or need help,\nplease don't hesitate to contact us at support@contabo.com.\n```\n\n輸入以下指令讓伺服器的套件維持在最新狀態：\n\n```sh\napt update -y\napt upgrade -y\n```\n\n### 4. 硬體監控\n\n確認硬體資訊有無錯誤，分別輸入以下 3 條指令確認下方的硬體資訊：\n※以下會看到很多 TiB, GiB, MiB 等等的單位，新手可以直接乘以 1.1 即代表 TB, GB, MB\n\n```sh\nlshw -C cpu\nlshw -C memory\nlshw -C disk\n```\n\n檢查 CPU, Memory 和 Disk 的部分是否與訂購的相同（本文配置 8vCPU, 24 GB RAM, 1.2 TB SSD）：\n\n```sh\n# *-cpu 之下，檢查 enabledcores = 8 * thread = 1 代表 vCPU = 8 * 1 = 8\nconfiguration: cores=8 enabledcores=8 microcode=137367674 threads=1\n\n# *-memory 之下，檢查 size 等於多少 GiB\ndescription: System Memory\n...\nsize: 24GiB\n...\n\n#  *-disk 之下，檢查 System Memory 的 size 等於多少 GiB（除以 1000 就約等於 TB）\nsize: 1200GiB (1288GB)\n```\n\n確認都符合就可以進行下一步啦~\n\n### 5. 資安設定\n\n來到最重要的環節了，因為自託管伺服器是沒有防火牆跟控制面板的，這會讓你的伺服器很容易被一鍋端了，我們需要進行一些基本的防護措施。\n\n**※因為我們運行節點的主機一般只有個人使用，可以直接使用 root，不必建立其他用戶帳號，介意的人可以自行建立。**\n\n1. 修改 root 密碼，輸入以下指令後輸入新密碼與確認密碼（輸入後介面不會顯示密碼是正常的，輸入完按 Enter 即可）：\n\n   ```sh\n   passwd\n   ```\n\n2. 修改 ssh 預設 Port 號，輸入以下指令：\n\n   ```ssh\n   nano /etc/ssh/sshd_config\n   ```\n\n   然後用方向鍵向下移動到 `#Port 22` 這行，將 #Port 22 的井字號刪掉，22 改成你喜歡的數字（介於 10000 到 65535 之間）而且要記起來。\n   之後按下 ctrl + x，再按 y，再按 Enter 或 Return。\n   ※這邊假設改成了 12345，後續會用到。\n\n3. 開啟防火牆，輸入以下指令：\n\n   ```sh\n   ufw default deny\n   ufw allow 12345 # 允許你的 ssh 流量進入伺服器\n   ufw allow ... # 允許你想開放的 port，可以去查看節點要求使用哪些 port ，開放那些 port 就好\n   # 如果你想開放 http/https 可以使用 ufw allow http, ufw allow https\n\n   ufw status numbered # 確認目前開放了哪些 port\n\n   ufw enable # 啟用防火牆\n\n   ufw status # 確認防火牆是否運行\n   ```\n\n這樣就完成了基本的伺服器防護了。\n\n### 6. 硬碟監控\n\n運行節點需要的硬碟空間很大，一般都是用來放置區塊鏈資訊的不能刪，你能做的只有擴充空間或是刪除紀錄檔，建議一開始硬碟就挑大一點，加硬碟都不便宜。這邊只提供怎麼查看硬碟使用容量的方式：\n\n```sh\nlsblk # 查看整顆硬碟還有分區的容量\ndf -h # 查看伺服器上各磁碟分區的使用量\n```\n\n### 7. 流量監控\n\n運行驗證者節點需要的流量也很大，因為隨時在與區塊鏈網路溝通，但這部分比較不需在意，因為 Contabo 提供的流量上限挺高的，並且超出流量上限僅會降速，最低也有 100 Mbps。這邊提供監控流量的方式：\n\n```sh\napt install vnstat # 安裝輕量的流量監控工具\n\nvnstat # 查看今天與本月流量\nvnstat -m # 查看本月流量\n\nman vnstat # 查看其餘可選參數\n```\n\n```sh\n# 以下為結果範例，rx 代表接收的流量，tx 代表發送的流量。\n# 以 Contabo 為例，rx 沒有上限，tx 每個月的上限以我的方案來說是 32 TB 約 29 TiB，因此只要我每月不超出 29 TiB 的發送流量\n# ，就不會被降速。\n\neth0  /  monthly\n\n       month        rx      |     tx      |    total    |   avg. rate\n    ------------------------+-------------+-------------+---------------\n      2024-02    313.79 MiB |  114.34 MiB |  428.13 MiB |    2.57 kbit/s\n    ------------------------+-------------+-------------+---------------\n    estimated    561.54 MiB |  203.11 MiB |  764.65 MiB |\n```\n\n### 8. 常用命令\n\n這邊提供初學者一些架設節點常用的基礎命令：\n\n```sh\ncd # 切換到家目錄，cd .. 回到上一層目錄，cd \u003cpath\u003e 切換到指令路徑\nls -la # 列出當前目錄下的所有檔案，ls -la \u003cpath\u003e 列出指定路徑下的所有檔案\nmv # 移動檔案／目錄，使用 mv ./xxx.png ./yyy.png 可以達到重新命名的效果\nmkdir # 建立資料夾\nrm # 刪除檔案，刪除整個資料夾請用 rm -r\n```\n\n其餘命令對於節點架設大多沒必要，有需要再查詢就好。\n\n### 9. 節點容器\n\n容器化初學者可以簡單想像就是幫你打包好的黑盒子，只要一鍵就能完成節點架設。\n這邊考慮讀者不一定有開發經驗，因會影響防火牆，僅稍微提一下。\n對於初學者來說使用 docker 架設節點可以省去非常非常多功夫加上 docker compose 提供崩潰自啟動的功能，非常適合運行不能斷線的節點。\n如果用戶看到節點文件提供以 docker compose 運行的方式，可以查看 `docker-compose.yml`，內容假設是以下的樣子：\n\n```yml\nservices:\n  web:\n    build: .\n    ports:\n      - \"12345:8000\"\n  db:\n    image: postgres\n    ports:\n      - \"22345:5432\"\n```\n\n這代表了你對外開放的 Port 是 12345 和 22345，那麼你的防火牆必須加上這些 Port：\n\n**※變更對外開放的 Port 一般情況下是可以的，但區塊鏈節點不同，很可能網路已經設定好了就是要這些 Port。**\n\n```sh\nufw allow 12345\nufw allow 22345\nufw enable # 套用新規則後啟動防火牆\n```\n\n### 10. 贊助\n\n如果你覺得這篇教學對你有幫助，可以替這個倉庫按下星星，也歡迎詢問更進一步的問題。\n有餘力也可以考慮贊助我，非常感謝！\n\n\u003cdiv class=\"flex\"\u003e\n  \u003ca href=\"https://etherscan.io/address/0x03762c4478518fbf036ed6062fe9035d2e6d0670\"\u003e\u003cimg src=\"https://img.shields.io/badge/0xmimiq.eth-3C3C3D?style=flat-square\u0026logo=Ethereum\u0026logoColor=white\" alt=\"0xmimiq.eth\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://solscan.io/account/55r7FvKkcddtgSDfGLKuLwjgJ5o5QiKpopWK7GMgwE2A\"\u003e\u003cimg src=\"https://img.shields.io/badge/mmq88x.sol-9945FF?style=flat-square\u0026logo=SOLANA\u0026logoColor=white\" alt=\"mmq88x.sol\"/\u003e\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmqnym%2Fnodebeginner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmqnym%2Fnodebeginner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmqnym%2Fnodebeginner/lists"}