首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Docker一键部署Glean:搭建你的专属RSS阅读器与知识管理利器

Docker一键部署Glean:搭建你的专属RSS阅读器与知识管理利器

原创
作者头像
江湖有缘
发布2026-09-11 22:48:24
发布2026-09-11 22:48:24
660
举报
文章被收录于专栏:Docker项目实战Docker项目实战

一、Glean介绍

1.1 Glean简介

Glean是一款自托管的 RSS 阅读器与个人知识管理工具,帮助用户高效聚合、阅读和整理网络内容,同时完全掌控自己的数据。

1.2 Glean主要特点

  • RSS 订阅管理:支持订阅和组织 RSS/Atom 源,并提供 OPML 导入导出功能。
  • 智能阅读体验:提供干净无干扰的阅读界面,支持内容过滤以去除广告和杂乱元素。
  • 稍后阅读功能:可将文章保存至“稍后阅读”列表,并支持自动清理过期内容。
  • 多级文件夹与标签:通过嵌套文件夹和自定义标签灵活分类和归档文章。
  • 书签收藏:不仅能收藏来自订阅源的文章,还可保存任意外部网页链接。
  • 后台自动同步:每 15 分钟自动更新所有订阅源,确保内容及时获取。
  • 完全自托管:基于 Docker 部署,用户拥有全部数据所有权和隐私控制权。
  • 现代温暖暗色 UI:采用美观、响应式的深色主题界面,提升长时间阅读舒适度。
  • 管理员仪表盘:内置管理面板,支持用户管理和系统运行状态监控。

二、本次实践规划

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。

hostname

IP地址

操作系统版本

Docker版本

部署项目

备注

jeven

192.168.3.88

Ubuntu 24.04.2 LTS

28.5.0

Glean

——

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;

2.在Docker环境下部RSS阅读器Glean。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

代码语言:bash
复制
root@jeven:~# systemctl restart docker
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Tue 2026-01-06 17:39:44 CST; 7s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1220391 (dockerd)
      Tasks: 12
     Memory: 127.0M (peak: 127.8M)
        CPU: 1.767s
     CGroup: /system.slice/docker.service
             └─1220391 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
在这里插入图片描述
在这里插入图片描述

3.2 检查Docker版本

检查Docker版本

代码语言:bash
复制
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

代码语言:bash
复制
root@jeven:~# docker compose version
Docker Compose version v2.39.4

四、拉取Glean镜像

下载Glean相关的5个容器镜像,执行以下命令:

代码语言:bash
复制
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/postgres:16-alpine
代码语言:bash
复制
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/redis:7-alpine
代码语言:bash
复制
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/glean-backend:latest
代码语言:bash
复制
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/glean-web:latest
代码语言:bash
复制
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/glean-admin:latest
在这里插入图片描述
在这里插入图片描述

五、部署Glean服务

5.1 创建部署目录

  • 创建部署目录
代码语言:bash
复制
mkdir -p /data/glean/{postgres,redis}  && cd /data/glean
  • 目前授权工作
代码语言:bash
复制
chmod -R 777 /data/glean/

5.2 编辑变量文件

/data/glean目录下,新建及编辑变量文件env.txt。可自行修改映射端口和相关账号密码,测试环境下可直接使用以下简单示例。

代码语言:bash
复制
vim env.txt
代码语言:bash
复制
# Glean Environment Configuration
# Copy this file to .env and customize for your environment

# ========================================
# Database Configuration
# ========================================
POSTGRES_DB=glean
POSTGRES_USER=glean
POSTGRES_PASSWORD=glean

# ========================================
# Backend Configuration
# ========================================
# JWT secret key - CHANGE THIS IN PRODUCTION!
# Generate with: openssl rand -hex 32
SECRET_KEY=7f3a1b8c4d2e9f0a5b6c8d1e3f7a2b9c4d6e8f1a3b5c7d9e2f4a6b8c1d3e5f7a

# Enable debug mode (shows API docs at /api/docs)
DEBUG=false

# ========================================
# Port Configuration
# ========================================
# Web interface port
WEB_PORT=7100

# Admin dashboard port (only for full deployment)
ADMIN_PORT=7200
# =============================================================================
# ADMIN (Optional - Full Deployment Only)
# =============================================================================
# Set CREATE_ADMIN=true on first startup to auto-create admin account
# The password will be printed in the logs (save it immediately!)
CREATE_ADMIN=true
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin@123
ADMIN_ROLE=super_admin

# ========================================
# Development Configuration (optional)
# ========================================
# Full database URL (auto-generated from above if not set)
# DATABASE_URL=postgresql+asyncpg://glean:glean@localhost:5432/glean

# Redis URL
# REDIS_URL=redis://localhost:6379/0

# CORS origins (JSON array)
# CORS_ORIGINS=["http://localhost", "http://localhost:3000"]

5.3 编辑部署文件

新建及编辑docker-compose.yaml文件,内容如下所示:

代码语言:bash
复制
vim docker-compose.yaml
代码语言:yaml
复制
# Glean Full Deployment - Docker Compose (with Admin Dashboard)
# Usage: docker compose -f docker-compose.full.yml up -d
#
# This deployment includes the admin dashboard.
# Set CREATE_ADMIN=true to auto-create admin account on first startup.

services:
  postgres:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/postgres:16-alpine
    container_name: glean-postgres
    environment:
      POSTGRES_DB: ${POSTGRES_DB:-glean}
      POSTGRES_USER: ${POSTGRES_USER:-glean}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-glean}
    volumes:
      - ./postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-glean}"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/redis:7-alpine
    container_name: glean-redis
    command: redis-server --appendonly yes
    volumes:
      - ./redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  backend:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/glean-backend:latest
    container_name: glean-backend
    environment:
      DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-glean}:${POSTGRES_PASSWORD:-glean}@postgres:5432/${POSTGRES_DB:-glean}
      REDIS_URL: redis://redis:6379/0
      SECRET_KEY: ${SECRET_KEY:-change-me-in-production-use-a-long-random-string}
      CORS_ORIGINS: '["http://localhost", "http://localhost:3000", "http://localhost:3001"]'
      DEBUG: ${DEBUG:-false}
      # Only backend runs migrations to avoid race conditions
      RUN_MIGRATIONS: "true"
      # Admin auto-creation (set to true for first startup)
      CREATE_ADMIN: ${CREATE_ADMIN:-false}
      ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}
      ADMIN_ROLE: ${ADMIN_ROLE:-super_admin}
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    restart: unless-stopped
    command: ["uv", "run", "--no-sync", "uvicorn", "glean_api.main:app", "--host", "0.0.0.0", "--port", "8000"]

  worker:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/glean-backend:latest
    container_name: glean-worker
    environment:
      DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-glean}:${POSTGRES_PASSWORD:-glean}@postgres:5432/${POSTGRES_DB:-glean}
      REDIS_URL: redis://redis:6379/0
      SECRET_KEY: ${SECRET_KEY:-change-me-in-production-use-a-long-random-string}
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
      backend:
        condition: service_healthy
    restart: unless-stopped
    command: ["uv", "run", "--no-sync", "arq", "glean_worker.main.WorkerSettings"]

  web:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/glean-web:latest
    container_name: glean-web
    ports:
      - "${WEB_PORT:-80}:80"
    depends_on:
      - backend
    restart: unless-stopped

  admin:
    image: registry.cn-hangzhou.aliyuncs.com/jeson/glean-admin:latest
    container_name: glean-admin
    ports:
      - "${ADMIN_PORT:-5000}:80"
    depends_on:
      - backend
    restart: unless-stopped

5.4 创建Glean相关容器

执行以下命令,创建Glean相关容器。

代码语言:bash
复制
docker compose --env-file env.txt up -d  
在这里插入图片描述
在这里插入图片描述

5.5 查看Glean容器状态

检查Glean容器运行状态,确保Glean各容器正常启动。

代码语言:bash
复制
root@jeven:/data/glean# docker compose ps
NAME             IMAGE                                                          COMMAND                   SERVICE    CREATED         STATUS              PORTS
glean-admin      registry.cn-hangzhou.aliyuncs.com/jeson/glean-admin:latest     "/docker-entrypoint.…"   admin      4 minutes ago   Up 4 minutes             0.0.0.0:7200->80/tcp, [::]:7200->80/tcp
glean-backend    registry.cn-hangzhou.aliyuncs.com/jeson/glean-backend:latest   "/app/scripts/entryp…"   backend    4 minutes ago   Up 4 minutes (healthy)   8000/tcp
glean-postgres   registry.cn-hangzhou.aliyuncs.com/jeson/postgres:16-alpine     "docker-entrypoint.s…"   postgres   4 minutes ago   Up 4 minutes (healthy)   5432/tcp
glean-redis      registry.cn-hangzhou.aliyuncs.com/jeson/redis:7-alpine         "docker-entrypoint.s…"   redis      4 minutes ago   Up 4 minutes (healthy)   6379/tcp
glean-web        registry.cn-hangzhou.aliyuncs.com/jeson/glean-web:latest       "/docker-entrypoint.…"   web        4 minutes ago   Up 4 minutes             0.0.0.0:7100->80/tcp, [::]:7100->80/tcp
glean-worker     registry.cn-hangzhou.aliyuncs.com/jeson/glean-backend:latest   "/app/scripts/entryp…"   worker     4 minutes ago   Up 3 minutes             8000/tcp
在这里插入图片描述
在这里插入图片描述

5.6 检查Glean容器日志

检查容器运行日志,确保Glean服务正常运行。

代码语言:bash
复制
docker compose logs
在这里插入图片描述
在这里插入图片描述

六、访问Glean服务

6.1 访问Glean首页

浏览器地址: http://<个人的服务器IP>:7100,访问Glean初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

在这里插入图片描述
在这里插入图片描述

6.2 创建账号

第一次登录时,我们创建账号。点击“创建账号”,自行填写账号信息注册即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、RSS使用方案

7.1 添加RSS地址

点击“+”选项,新增RSS地址。

在这里插入图片描述
在这里插入图片描述

可自行添加一些RSS地址源,以下一些RSS源可供参考:

少数派: https://sspai.com/feed 分享科技产品使用技巧与优质工具推荐

虎嗅网: 地址:https://www.huxiu.com/rss/0.xml 深度商业分析,涵盖科技、互联网、金融等领域。

在这里插入图片描述
在这里插入图片描述

6.2 浏览效果

添加RSS源后,刷新一下即可看到相关文章,效果还是非常不错的。

在这里插入图片描述
在这里插入图片描述

6.3 注意

写作本文时,当前版本存在后台管理登录后账号无法正常登录的问题,建议等待作者修复,或使用最新版镜像以获取修复更新。

八、总结

通过本次实战,我们成功使用 Docker 快速部署了自托管 RSS 阅读器 Glean,体验了其简洁美观的界面与强大的内容管理能力。整个过程标准化、可复现,充分体现了容器化部署的便捷性与隔离优势。Glean 不仅支持 RSS 订阅与智能阅读,还集成了书签、标签和稍后读等知识管理功能,非常适合个人信息聚合。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、Glean介绍
    • 1.1 Glean简介
    • 1.2 Glean主要特点
  • 二、本次实践规划
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、拉取Glean镜像
  • 五、部署Glean服务
    • 5.1 创建部署目录
    • 5.2 编辑变量文件
    • 5.3 编辑部署文件
    • 5.4 创建Glean相关容器
    • 5.5 查看Glean容器状态
    • 5.6 检查Glean容器日志
  • 六、访问Glean服务
    • 6.1 访问Glean首页
    • 6.2 创建账号
  • 七、RSS使用方案
    • 7.1 添加RSS地址
    • 6.2 浏览效果
    • 6.3 注意
  • 八、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档