Varidata 新闻资讯
知识库 | 问答 | 最新技术 | IDC 行业新闻
Varidata 官方博客

在美国服务器上部署 IPFS 节点用于服务器租用静态网站

发布日期:2026-07-31
在美国服务器部署 IPFS 节点的示意图

你可以通过一台公共的美国服务器,快速完成去中心化静态网站的服务器租用。首先,开通一台美国服务器并安装 Kubo。接着,将你的网站文件上传以获取内容标识符(CID)。然后,将内容分别在本地和远程进行固定(pin)。最后,通过 DNSLink 将你的自定义域名映射到该内容。

为什么要选择美国服务器?位于美国的数据中心服务器提供公网 IP 地址,你可以绕过本地受限的 NAT 环境,并享受高带宽,在北美地区更快地完成节点发现。

现在,让我们开始部署 IPFS 节点软件并上线你的网站。

关键要点

  • 美国服务器提供公网 IP 地址,可实现快速节点连接。

  • 将内容哈希转换为 CIDv1,以确保兼容现代 Web 浏览器。

  • 在本地和远程同时固定你的网站文件,防止文件被意外删除。

  • 通过简单的 DNSLink 记录,将自定义域名映射到内容哈希。

准备美国服务器基础架构

服务器配置与系统环境

在准备部署 IPFS 节点基础架构时,建议选择现代的 64 位 Linux 发行版,例如 Ubuntu 22.04 LTS。你的服务器需要具备足够的资源,以支持节点路由并保持快速内容分发。

你可以参考下面推荐的硬件基线配置:

硬件组件

推荐最低规格

CPU

2 核心

RAM(内存)

6 GiB

存储

约 12 MB 基础安装(总空间会随共享数据规模而增长)

💡 提示: 请定期监控存储增长情况。随着你固定更多静态网站资源并缓存网络数据,所需空间也会随之增加。

防火墙与端口配置

将你的服务器部署在美国公共基础设施上,可以解决常见的点对点网络难题。家用网络通常使用网络地址转换(NAT),NAT 会限制入站流量,并通过路由规则隐藏你的设备。美国服务器提供公网 IPv4 地址,这种直连方式可以绕过受限的本地 NAT 环境,让北美地区的其他节点可以即时发现你的内容。

你必须在防火墙中开放特定的通信端口。可在终端中执行这些标准的 ufw 命令来调整网络安全策略:

# Allow IPFS Swarm traffic for peer discovery
sudo ufw allow 4001/tcp
sudo ufw allow 4001/udp

# Allow Web Gateway access for public HTTP requests
sudo ufw allow 8080/tcp

# Enable firewall rules
sudo ufw enable

请保持 5001 端口不对公网开放。5001 端口用于 API 控制,你必须将该 API 的访问限制在本机,以防止未经授权地控制你的服务器节点。

部署 IPFS 节点并配置守护进程

在 Linux 上安装 Kubo

Kubo 是 IPFS 的官方命令行实现。你可以通过简单的终端命令,直接在 Linux 服务器上下载并安装 Kubo:

# Download the latest Kubo archive
wget https://dist.ipfs.tech/kubo/v0.26.0/kubo_v0.26.0_linux-amd64.tar.gz

# Extract the archive file
tar -xvzf kubo_v0.26.0_linux-amd64.tar.gz

# Run the installation script
cd kubo
sudo bash install.sh

在终端中运行 ipfs --version 命令,即可验证安装是否成功。

初始化节点与 Swarm 端口

在建立网络连接前,你必须先初始化节点仓库。运行以下标准初始化命令:

ipfs init --profile server

server 配置文件会将你的节点优化为数据中心环境使用,并禁用本地网络扫描,从而提升安全性。

注意: 新启动的 IPFS 守护进程需要一段预热时间。在最初的几分钟里,你的节点会主动发现网络中的其他节点并构建路由表,以优化传输速度。

至此,你已经在优化的节点路由设置下完成了 IPFS 节点的部署。

配置 Systemd 与网关

要顺利服务器租用静态网页,你必须允许跨域请求。请在网关上配置跨域资源共享(CORS)请求头:

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json Gateway.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

接下来,使用 systemd 让节点在后台持续运行:

  1. 创建 service 单元文件: 使用你习惯的文本编辑器打开 /etc/systemd/system/ipfs.service

    sudo nano /etc/systemd/system/ipfs.service
    
  2. 配置单元参数: 添加如下服务配置,并将 your-user-name 替换为你实际的 Linux 用户名:

    [Unit]
    Description=IPFS Daemon
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
    User=your-user-name
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  3. 设置开机自启并立即启动: 重新加载 systemd 文件,开启开机自启功能,并立刻启动守护进程:

    sudo systemctl daemon-reload
    sudo systemctl enable ipfs
    sudo systemctl start ipfs
    

现在,你已成功将 IPFS 节点服务以稳定的后台进程方式运行起来。

部署并固定静态 Web 内容

将网站文件添加到 IPFS

你需要使用命令行工具,将静态网站目录上传到 IPFS 网络:

  • 命令行示例: ipfs add -r <directory_name>(例如:ipfs add -r testdir

  • 作用: 递归上传指定目录中的所有文件。

  • 生成根 CID 输出: 为每个文件生成唯一内容标识符,并最终输出整个目录的根哈希值(例如:QmPCwGkDRjW8B2SHoS3P9Cc4hKDjtdgytrfHQhg8n1BdGE testdir)。

💡 提示: 在正式服务器租用网站前,请务必将根哈希转换为 CIDv1 格式。

特性

CIDv0

CIDv1

默认多进制编码

Base58(隐式)

Base32

大小写敏感性

区分大小写

不区分大小写

子域名网关兼容性

不兼容(浏览器会强制将子域名转为小写)

兼容(符合 RFC1035/RFC1123 域名标准)

网站托管与安全性

在基于路径的网关上缺乏独立的来源隔离

提供浏览器来源隔离、安全防护及对相对路径的良好支持

在现代浏览器中,CIDv0 哈希会出现问题,因为浏览器地址栏会自动将主机名转换为小写。CIDv1 使用不区分大小写的 Base32 编码,每个网站都拥有独立的安全来源。这种隔离机制可以保护浏览器本地存储,并且能够顺畅处理相对路径。

本地与远程固定策略

IPFS 节点会自动执行垃圾回收以释放磁盘空间。在这一自动清理过程中,节点会删除未固定(unpinned)的本地缓存 CID,而已固定的 CID 则会一直保留在磁盘上。

自动垃圾回收依赖几个关键的服务器设置:

  • 数据清理:删除未固定的缓存文件,以节省存储空间。

  • GCPeriod:控制清理任务的执行频率(默认每 1 小时运行一次)。

  • StorageGCWatermark:当磁盘使用率达到设定阈值时触发清理(默认 90% 容量)。

本地固定可以保证你的内容持续在线,但服务器故障仍可能导致网站中断。你可以接入第三方远程固定服务(如 Pinata),实现多节点冗余。

使用以下步骤配置远程固定服务:

  1. 将远程固定服务添加到 Kubo: 运行 ipfs pin remote service add <nickname> <endpoint> <accessToken>,其中 nickname 为自定义别名,endpoint 为服务提供商的 API 地址,accessToken 为你的密钥令牌。

  2. 远程固定内容: 使用 ipfs pin remote add --service=<nickname> --name=<optional-name> <CID> 将根 CID 推送到远程服务。

  3. 监控固定状态: 通过 ipfs pin remote ls --service=<nickname> 查看已完成或排队中的固定请求。

通过 CI/CD 自动化部署

每次更新网站代码都手工部署,既耗时又易出错。你可以通过 GitHub Actions 或 ipfs-deploy 等工具构建自动化 CI/CD 流程。

将流水线配置为:自动构建网站资源、将最新目录上传到美国服务器、更新远程固定服务,并在每次代码提交后自动输出最新的 CIDv1 字符串。

通过 DNSLink 映射自定义域名

为 IPFS 配置 DNS 记录

DNSLink 可以将复杂的 IPFS 内容标识符映射为可读的域名。这样你在更新网站内容时,无需更改主站链接,只需在域名注册商控制面板中更新 TXT 记录。

要配置 DNSLink,请为子域名 _dnslink.yourdomain.com 创建 TXT 记录,并将其值设置为 dnslink=/ipfs/<CID>

你还需要将主域名指向公共 IPFS 网关。可以将 CNAME 记录指向 gateway.ipfs.io,或者将 A 记录指向你美国服务器的 IP 地址。

更新 DNS 设置后,可通过终端工具验证 TXT 记录是否已生效:

  • 查询命令: dig +short TXT _dnslink.yourdomain.com

  • 预期结果: 输出中包含 IPFS 路径,例如:"dnslink=/ipfs/bafybeiay2koog2jnndn5gr2raytxh7evobry5lo2w4s7nhugc7xipy6aze"

集成网关并测试解析

你的美国服务器需要配置反向代理,以处理安全的 Web 流量。NGINX 会将进入的 Web 请求转发到本地 IPFS 网关端口。安全套接字层(SSL)加密可以保护访问者,并提升网站可信度。你可以使用 Let’s Encrypt 和 Certbot 免费申请 SSL 证书。

按以下顺序启用自定义域名网关的 HTTPS:

  1. 在宿主系统(如 Ubuntu)上安装 Certbot 以及其 NGINX 插件。

  2. 执行 sudo certbot --nginx -d ipfs.my-domain-name.com,启动证书签发流程。

  3. 在交互式 CLI 中完成提示操作,由 Certbot 自动更新 NGINX 配置并强制启用 HTTPS 重定向。

现在,在任意浏览器中进行测试。将你的自定义域名输入浏览器地址栏,你位于美国的本地 IPFS 节点会立即从网络获取内容。你的去中心化静态网站现已上线,并可安全地向公众开放访问!

你已经成功将本地服务器管理与公共 DNS 记录结合起来,实现了去中心化网站的服务器租用。

你可以通过以下简单的日常检查,维护整套部署:

  • 在节点预热完成后,跟踪节点数量,确保连接稳定。

  • 管理磁盘使用上限,避免意外触发垃圾回收导致空间不足。

  • 定期核查各远程服务提供商上的固定状态,以保持冗余。

  • 注意公共网关会根据你的 DNS TTL,将更新后的 DNSLink 记录作为 max-age 缓存时间,并附带 Last-Modified 时间戳进行缓存。

在你为 IPFS 节点服务器租用新版本站点后,请通过公共网关测试自定义域名解析情况,以验证全球访问性能!

常见问题(FAQ)

如何检查 IPFS 节点是否工作正常?

在终端中运行 ipfs stats bw 可查看带宽使用情况。你还可以通过以下简单命令检查当前活跃的网络节点连接:

ipfs swarm peers

注意: 较高的节点数通常意味着你在全球 IPFS 网络中的连接性更强。

为什么服务器租用静态网站要优先使用 CIDv1 而不是 CIDv0?

现代浏览器会强制将域名转换为小写。CIDv1 使用不区分大小写的 Base32 编码,可避免链接失效,同时保留相对路径,并为托管应用提供独立的浏览器安全来源。

当服务器磁盘空间耗尽时会发生什么?

当存储接近容量上限时,节点会触发自动垃圾回收,安全地删除未固定的缓存文件。

| 内容状态 | 垃圾回收行为 | | : | : | | 未固定文件 | 自动删除 | | 已固定文件 | 永久保留 |

能否在 IPFS 节点上服务器租用动态网站?

不能。IPFS 原生只提供静态资源,例如 HTML、CSS、前端 JavaScript 和图片。不过,你仍可以通过在前端集成外部公共 API 或 Web3 智能合约,为应用增加动态功能。

您的免费试用从这里开始!
联系我们的团队申请物理服务器服务!
注册成为会员,尊享专属礼遇!
您的免费试用从这里开始!
联系我们的团队申请物理服务器服务!
注册成为会员,尊享专属礼遇!
Telegram Teams