在美国服务器上部署 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 让节点在后台持续运行:
创建 service 单元文件: 使用你习惯的文本编辑器打开
/etc/systemd/system/ipfs.service:sudo nano /etc/systemd/system/ipfs.service配置单元参数: 添加如下服务配置,并将
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设置开机自启并立即启动: 重新加载 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),实现多节点冗余。
使用以下步骤配置远程固定服务:
将远程固定服务添加到 Kubo: 运行
ipfs pin remote service add <nickname> <endpoint> <accessToken>,其中 nickname 为自定义别名,endpoint 为服务提供商的 API 地址,accessToken 为你的密钥令牌。远程固定内容: 使用
ipfs pin remote add --service=<nickname> --name=<optional-name> <CID>将根 CID 推送到远程服务。监控固定状态: 通过
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:
在宿主系统(如 Ubuntu)上安装 Certbot 以及其 NGINX 插件。
执行
sudo certbot --nginx -d ipfs.my-domain-name.com,启动证书签发流程。在交互式 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 智能合约,为应用增加动态功能。
