# 从零到一部署 GIWA Testnet 节点（超详细保姆级教程）

By [pangdong](https://paragraph.com/@pangdong) · 2025-09-21

---

* * *

> 适用对象：完全没跑过 OP Stack/L2 的新手 目标：用 Docker 在一台 Ubuntu 服务器上把 GIWA Testnet 节点跑起来，并提供稳定的本地 RPC 网络：**GIWA Testnet（基于 OP Stack，结算到 Ethereum Sepolia）**

参考资料与来源：

*   官方文档与入门页（持续更新）：GIWA Docs（Get Started、工具与节点服务商列表）。([GIWA Documentation](https://docs.giwa.io/giwa-chain/en/node-operators/get-started?utm_source=chatgpt.com))
    
*   官方节点仓库（Docker Compose、一键环境）：**giwa-io/node**。([GitHub](https://github.com/giwa-io/node))
    
*   GIWA 常用参数与网络信息（来自独立测评与社区贴）：Boxmining 文章、X 社区补充。([boxmining.com](https://boxmining.com/giwa-testnet-airdrop-guide/?utm_source=chatgpt.com))
    
*   结算层（L1）说明与 OP Stack 运行方式（用于理解依赖）：Optimism 官方教程/资料。([docs.optimism.io](https://docs.optimism.io/operators/node-operators/tutorials/node-from-docker?utm_source=chatgpt.com))
    
*   Sepolia/OP Sepolia 的链参数与 RPC 参考：Chainlist、Alchemy（用作你 L1 RPC 的候选）。([chainlist.org](https://chainlist.org/chain/11155111?utm_source=chatgpt.com))
    

* * *

一、准备一台干净的服务器
------------

**系统建议**：Ubuntu 20.04/22.04/24.04（均可） **最低配置**：4 核 CPU / 8 GB 内存 / 500 GB NVMe SSD **推荐配置**：8+ 核 / 16+ GB / 1TB+ NVMe（生产更稳） 这些规格与 GIWA 官方与仓库 README 的建议一致。([GitHub](https://github.com/giwa-io/node))

**开放端口（默认）**：`8545`、`8546`、`30303`、`9545`、`7300`（如被占用后文教你改）。该端口组合参考多份社区教程与官方仓库映射。([Medium](https://medium.com/%40qklxsqf/%E8%BF%90%E8%A1%8C-giwa-%E8%8A%82%E7%82%B9%E6%95%99%E7%A8%8B-21168ffdf601))

> 若你已有其他 ETH/OP 类节点在跑，请优先准备**独立机器**或按下文修改所有端口，避免冲突。

* * *

二、系统初始化与基础依赖
------------

    # 1) 系统更新与常用工具
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl git wget jq lz4 make gcc pkg-config \
      libc6 libssl-dev libleveldb-dev ca-certificates \
      unzip tar tmux htop ncdu
    
    # 2) （可选）使用 screen/tmux 保持会话不断线
    tmux new -s giwa
    # 或：screen -S giwa
    

> 上述工具用于拉仓库、看日志、解压/压缩与排障，Medium 教程也采用相近依赖集。([Medium](https://medium.com/%40qklxsqf/%E8%BF%90%E8%A1%8C-giwa-%E8%8A%82%E7%82%B9%E6%95%99%E7%A8%8B-21168ffdf601))

* * *

三、安装 Docker 与 Compose
---------------------

    # 安装 docker 与 compose 插件
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
      sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
    https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
    
    sudo apt update -y
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # 验证
    docker --version
    docker compose version
    sudo systemctl enable --now docker
    

> GIWA 官方仓库使用 Docker Compose 启停组件；如果你更熟悉源码构建，也可参考 OP Stack 官方的“from source”教程，但对新手不建议。([GitHub](https://github.com/giwa-io/node))

* * *

四、克隆 GIWA 节点仓库
--------------

    # 任选放置目录
    mkdir -p ~/giwa && cd ~/giwa
    
    # 克隆官方仓库
    git clone https://github.com/giwa-io/node
    cd node
    
    # 查看关键文件（环境与 Compose）
    ls -lah .env.sepolia docker-compose.yaml README.md
    

这个仓库就是“跑起 GIWA 节点需要的一切”，包含 `.env.sepolia` 与 `docker-compose.yaml`。([GitHub](https://github.com/giwa-io/node))

* * *

五、配置与理解「结算层」依赖
--------------

GIWA 基于 **OP Stack**，**结算到 Ethereum Sepolia**。因此你**必须**提供可用的 L1 端点（ETH Sepolia 的 RPC 与 Beacon）。在 `README` 的 **Quick Start** 中，要求设置：

*   `OP_NODE_L1_ETH_RPC=<你的 L1 Sepolia RPC>`
    
*   `OP_NODE_L1_BEACON=<你的 L1 Beacon 端点>` ([GitHub](https://github.com/giwa-io/node))
    

**如何获得 L1 RPC/Beacon：**

*   **自建** Sepolia 全节点（成本较高，略）可以参考我之前的教程，自搜索一下；
    
*   **使用服务商**：zan、Ankr、QuickNode、Alchemy/Infura/其他（拿到 HTTPS RPC 即可）。
    
    L1 RPC 我从 zan.top 获得
    

![](https://storage.googleapis.com/papyrus_images/830adaf09b1a4cc283f7ba365f7f901afe43277b4a22067bddb90002c0aa9f21.png)

**Beacon 我从**[drpc.org](http://drpc.org) 获得

![](https://storage.googleapis.com/papyrus_images/3da8a02047942392185c6a152c3fb130816ae0d04397310ee57cc5f32284a955.png)

> 若你对 OP Stack 原理好奇，可查阅 Optimism 官方“Using Docker 跑 OP/OP Sepolia 节点”与“from source”文档，能帮助你理解 op-node 与执行/共识的协作。([docs.optimism.io](https://docs.optimism.io/operators/node-operators/tutorials/node-from-docker?utm_source=chatgpt.com))

* * *

六、编辑 `.env.sepolia`
-------------------

    # 用你熟悉的编辑器修改
    nano .env.sepolia
    

把以下两行改成你自己的 L1 端点（**必填**）：

    OP_NODE_L1_ETH_RPC=https://<你的-sepolia-rpc>
    OP_NODE_L1_BEACON=https://<你的-beacon-endpoint>
    

> Docker Compose 会加载 `.env`/指定 env 文件的变量，这也是 Compose 的通用做法。([Docker Documentation](https://docs.docker.com/compose/how-tos/environment-variables/set-environment-variables/?utm_source=chatgpt.com))

* * *

七、（如端口冲突）统一改端口
--------------

查询8545/8546/30303/9545/7300这些端口是否被用

    sudo ss -lntup | grep -E ':(8545|8546|30303|9545|7300)\b'
    

*   有输出＝端口已被占用；会显示协议、监听地址:端口、`pid/program`。
    
*   无输出＝这些端口目前都空闲。
    

（可选备选：`sudo lsof -nP -iTCP -sTCP:LISTEN | grep -E ':(8545|8546|30303|9545|7300)\b'`）

如果你的 8545/8546/30303/9545/7300 已被其他进程占用，可在 **docker-compose.yaml** 中把**宿主机**端口整体平移到新段（例如 `18xxx`/`31xxx`）。示例命令（可选）：

    # 仅示例，把常见映射一次性改到 18xxx/31xxx/19xxx/17xxx 段
    sed -i 's/"8545:8545"/"18545:8545"/' docker-compose.yaml
    sed -i 's/"8546:8546"/"18546:8546"/' docker-compose.yaml
    sed -i 's/"30303:30303"/"31303:30303"/' docker-compose.yaml
    sed -i 's#"30303:30303/udp"#"31303:30303/udp"#' docker-compose.yaml
    sed -i 's/"9545:9545"/"19545:9545"/' docker-compose.yaml
    sed -i 's/"7300:7300"/"17300:7300"/' docker-compose.yaml
    

> 这个“批量改端口”的思路来自社区文章做法与官方仓库端口映射。若你不确定，建议**只改宿主机侧**端口，容器内保持默认，避免容器内部互联被破坏。([Medium](https://medium.com/%40qklxsqf/%E8%BF%90%E8%A1%8C-giwa-%E8%8A%82%E7%82%B9%E6%95%99%E7%A8%8B-21168ffdf601))

* * *

八、构建并启动
-------

    # 构建镜像（并行更快）
    docker compose build --parallel
    
    # 启动（指定使用 .env.sepolia）
    NETWORK_ENV=.env.sepolia docker compose up -d
    

> 以上启动方式与仓库 README 完全一致。([GitHub](https://github.com/giwa-io/node))

* * *

九、查看日志与健康度
----------

    # 全量看
    docker compose logs -fn 200
    
    # 分别看执行/共识（名称以 compose 为准）
    docker compose logs -f consensus
    docker compose logs -f execution
    

**健康判断：**

*   日志应能看到从 L1（Sepolia）拉取/跟随的提示、与 L2 同步推进；
    
*   容器无频繁重启（`Restarting`）、无持续 4xx/5xx 拉取失败；
    
*   RPC 探活（见下一节）。 这些检查与官方 README 的排障建议一致。([GitHub](https://github.com/giwa-io/node))
    

* * *

十、验证本地 RPC 是否工作
---------------

**1）查询区块号（HTTP RPC）**

    # 请把 127.0.0.1:8545 换为你的宿主机IP与端口（如你改了端口）
    curl -s -X POST http://127.0.0.1:8545 \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
    

能返回形如 `{"jsonrpc":"2.0","id":1,"result":"0x..."}` 说明 HTTP RPC 正常。

**2）在钱包添加 GIWA Testnet 网络**

*   Network Name：**GIWA Sepolia**
    
*   RPC URL：`https://sepolia-rpc.giwa.io`（公共网关；你也可以填自己的本地 RPC）
    
*   Chain ID：**91342**
    
*   Currency Symbol：**ETH** 这组参数来自社区实测与测评文，便于你对齐自建节点与官方公共网关。([boxmining.com](https://boxmining.com/giwa-testnet-airdrop-guide/?utm_source=chatgpt.com))
    

* * *

十一、领取测试币（GIWA Testnet）
----------------------

测试转账/合约时需要 Test ETH。你可以使用 GIWA 官方挂载的水龙头（由节点服务商提供）：

*   **GIWA Sepolia Faucet（Nodit 提供）**：支持 GIWA Testnet 领水。([faucet.lambda256.io](https://faucet.lambda256.io/giwa-sepolia?utm_source=chatgpt.com))
    

> 如果 Faucet 忙碌，稍后再试；或在社区频道寻找临时补给。

* * *

十二、常见问题（FAQ）
------------

**Q1：必须要有 L1 Beacon 吗？** 是的。按照仓库 README 的 Quick Start，`OP_NODE_L1_ETH_RPC` 与 `OP_NODE_L1_BEACON` 都是**必填**。缺一不可。([GitHub](https://github.com/giwa-io/node))

**Q2：我的端口被占用怎么办？** 按上文批量替换宿主机端口即可；或换一台干净机器。注意，只改宿主机端口映射即可，不要随意改容器内服务端口，避免组件通讯失联。([Medium](https://medium.com/%40qklxsqf/%E8%BF%90%E8%A1%8C-giwa-%E8%8A%82%E7%82%B9%E6%95%99%E7%A8%8B-21168ffdf601))

**Q3：为什么需要 Sepolia（L1）？** GIWA 基于 OP Stack，op-node 需跟随 L1（Sepolia）头信息并完成数据可用性/提交流程；这也是几乎所有 OP 系链（含 Boba/Celo L2 等）共同点。([docs.optimism.io](https://docs.optimism.io/operators/node-operators/tutorials/node-from-docker?utm_source=chatgpt.com))

**Q4：我能用其他实现（如 Reth for OP）吗？** 可以，但这属进阶路径。Reth 针对 OP Stack 的运行文档有说明，对新手不建议直接上，后续可再折腾。([reth.rs](https://reth.rs/run/opstack/?utm_source=chatgpt.com))

**Q5：有没有托管式节点服务？** GIWA 文档里提供了节点服务商清单（如 Nodit 等），适合想少管运维的人。([GIWA Documentation](https://docs.giwa.io/giwa-chain/en/tools/node-providers?utm_source=chatgpt.com))

* * *

十三、运维与停机
--------

**查看资源占用：**

**平滑停止与清理：**

    # 停止
    docker compose down
    
    # 完整清理（包含数据卷）
    docker compose down -v && rm -rf ./execution_data
    

> 这些指令与官方仓库 README 的停止/清理流程一致。清理前请确认不再需要本地索引数据。([GitHub](https://github.com/giwa-io/node))

* * *

十四、进阶：把 RPC 暴露给外网（可选）
---------------------

**强烈建议**放在反代后面并限制访问（如 Nginx + Basic Auth/IP 白名单/Cloudflare Tunnel）再开放 8545。生产环境切记：

*   只开必要方法（`eth_call`/`eth_getLogs`…），禁止 `personal_`、`miner_` 等敏感方法；
    
*   打好防火墙策略（`ufw`/`iptables`），限制来源网段；
    
*   开启系统与 Docker 的自动更新，监控日志与磁盘。
    

* * *

十五、验证你的链上连通性（钱包端）
-----------------

1.  MetaMask 添加 **GIWA Sepolia**；
    
2.  切到你的 **本地 RPC**（或暂用官方公共网关）；
    
3.  用 Faucet 领到 Test ETH 后，发一笔小额转账或部署最简单的合约（Hardhat/Foundry 均可，GIWA 提供了 Hardhat 开发文档）。([GIWA Documentation](https://docs.giwa.io/giwa-chain/en/get-started/smart-contract/develop/hardhat?utm_source=chatgpt.com))
    

* * *

十六、参考与外延阅读
----------

*   **GIWA：Get Started / 文档首页 / 节点服务商**（官方）([GIWA Documentation](https://docs.giwa.io/giwa-chain/en/node-operators/get-started?utm_source=chatgpt.com))
    
*   **giwa-io/node** 仓库（Docker Compose、环境变量、硬件与排障）([GitHub](https://github.com/giwa-io/node))
    
*   **GIWA 网络参数（社区汇总）**：RPC、Chain ID、钱包添加方法等（用于交叉核验）([boxmining.com](https://boxmining.com/giwa-testnet-airdrop-guide/?utm_source=chatgpt.com))
    
*   **Optimism 官方：用 Docker 跑节点 / 源码构建 / 创建 L2**（了解 OP Stack 背景）([docs.optimism.io](https://docs.optimism.io/operators/node-operators/tutorials/node-from-docker?utm_source=chatgpt.com))
    
*   **Sepolia（以太坊测试网）资料**：RPC/链参数/服务商（L1 依赖）([chainlist.org](https://chainlist.org/chain/11155111?utm_source=chatgpt.com))
    
*   **GIWA Faucet（Nodit 提供）**：GIWA Testnet 领水入口([faucet.lambda256.io](https://faucet.lambda256.io/giwa-sepolia?utm_source=chatgpt.com))
    

可以加一个“TLS 证书信任（可选）”小节，把这段 override 当成**修复 x509 报错**的标准做法写进教程。给你现成文案与命令：

* * *

十七、TLS 证书信任（可选）
===============

如果 `consensus`（op-node）连接 L1 RPC 时出现 `tls: failed to verify certificate: x509: certificate signed by unknown authority`， 在同目录新增一个 `docker-compose.override.yaml`，把宿主机的系统 CA 证书只读挂载进容器：

    cat > docker-compose.override.yaml <<'YAML'
    services:
      consensus:
        volumes:
          - /etc/ssl/certs:/etc/ssl/certs:ro
    YAML
    

说明：

*   这会把宿主机的 `/etc/ssl/certs`（Debian/Ubuntu 的系统 CA 目录）映射到容器同路径，Go 程序（op-node）即可加载系统信任链。
    
*   大多数 Linux 发行版（含 Alpine）默认也在 `/etc/ssl/certs` 查找信任链。若你的镜像只找单文件，也可挂载：
    
    *   `/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro`
        
*   这是**不改镜像**的最简修复；如需根治，可在镜像内安装 `ca-certificates` 包。
    

应用：

    docker compose down
    docker compose up -d          # 与主 compose 同目录时，override 会被自动加载
    # 或显式指定：
    # docker compose -f docker-compose.yaml -f docker-compose.override.yaml up -d
    

验证：

    # 查看共识层日志无 x509 报错
    docker compose logs --tail=100 consensus | grep -iE 'x509|tls|certificate|failed|error' || echo "OK"
    
    # 可选：容器内直接 curl 你的 L1 RPC（应返回 0xaa36a7）
    docker compose exec consensus sh -lc \
      "curl -sS -H 'content-type: application/json' \
       -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_chainId\",\"params\":[]}' \
       https://ethereum-sepolia-rpc.publicnode.com"
    

取消此修复：删除或重命名 `docker-compose.override.yaml`，再 `docker compose up -d` 即可。

* * *

### 结语

照着本教程完成：**拉仓库 → 配 L1 RPC/Beacon →（必要时）改宿主机端口 → 构建与启动 → 验证 RPC → 领水测试**，即可拥有一套稳定的 **GIWA Testnet** 本地节点，后续你可以把它接入自家 DApp、索引器或分析任务。若你想进一步减少运维负担，也可以直接采用官方文档中列出的**托管式节点服务**。([GIWA Documentation](https://docs.giwa.io/giwa-chain/en/tools/node-providers?utm_source=chatgpt.com))

—— 完 ——

---

*Originally published on [pangdong](https://paragraph.com/@pangdong/giwa-testnet)*
