NewsNow:Docker 部署实时热榜聚合站
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 34 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
NewsNow 把微博、知乎、B 站、GitHub Trending、V2EX 等站点的热榜聚合到一个页面,支持按分类筛选、缓存和定时刷新。适合当自己的「信息首页」。
前置条件
- 一台 Linux 服务器(1C512M 起);
- 已安装 Docker 与 Compose v2;
- 服务器能访问各内容站点(部分源可能需要代理)。
curl -fsSL https://get.docker.com | sh
mkdir -p /srv/docker/active/newsnow && cd /srv/docker/active/newsnow
镜像地址
ghcr.io/ourongxing/newsnow:latest
国内拉取
ghcr.io慢,可以用镜像站前缀(示例):ghcr.nju.edu.cn/ourongxing/newsnow:latest
目录结构
/srv/docker/active/newsnow/
├── docker-compose.yml
├── .env
└── .data/ # 缓存与 SQLite 数据
部署步骤
cat > .env <<'EOF'
NEWSNOW_JWT_SECRET=<随机长字符串>
EOF
chmod 600 .env
# docker-compose.yml
services:
newsnow:
image: ghcr.io/ourongxing/newsnow:latest
container_name: newsnow
restart: unless-stopped
ports:
- "4444:4444"
volumes:
- ./.data:/usr/app/.data
environment:
- HOST=0.0.0.0
- PORT=4444
- NODE_ENV=production
- INIT_TABLE=true
- ENABLE_CACHE=true
- JWT_SECRET=${NEWSNOW_JWT_SECRET}
# 可选:GitHub 登录
# - G_CLIENT_ID=
# - G_CLIENT_SECRET=
docker compose up -d
docker compose logs -f --tail=100
打开 http://<SERVER_IP>:4444。
关键配置
| 项 | 说明 |
|---|---|
4444 |
服务端口 |
.data |
SQLite/缓存目录,必须持久化 |
INIT_TABLE=true |
首次启动初始化表结构;稳定后可按项目文档调整 |
JWT_SECRET |
会话签名,必须随机 |
G_CLIENT_ID/SECRET |
GitHub OAuth,可选;不填则不启用登录 |
注意事项
- 热榜数据来自第三方站点,源站改版就会抓取失败,等上游更新即可;
- 首次启动要初始化数据库,稍等几十秒再刷新;
- 抓取会周期性请求外部站点,频率太高可能被限流;
- 站点没有强认证,公网部署建议加反代和访问控制;
- 升级前备份
.data/,SQLite 迁移失败可回滚。
备份与升级
tar czf "newsnow-data-$(date +%F).tar.gz" .data
docker compose pull
docker compose up -d
- 若使用镜像站前缀,升级时确认镜像站已同步新版本。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果