发布 Glean

This commit is contained in:
ms
2025-12-04 13:13:52 +08:00
parent d73521f454
commit 8856b5a7a8
10 changed files with 320 additions and 0 deletions

53
apps/glean/0.1.4/data.yml Normal file
View File

@@ -0,0 +1,53 @@
additionalProperties:
formFields:
- default: "/home/glean"
edit: true
envKey: GLEAN_ROOT_PATH
labelZh: 数据持久化路径
labelEn: Data persistence path
required: true
type: text
- default: 8080
edit: true
envKey: PANEL_APP_PORT_HTTP
labelZh: WebUI 端口
labelEn: WebUI port
required: true
rule: paramPort
type: number
- default: 3001
edit: true
envKey: PANEL_APP_PORT_ADMIN
labelZh: WebUI 后台端口
labelEn: WebUI Admin Port
required: true
rule: paramPort
type: number
- default: "admin"
edit: true
envKey: ADMIN_USERNAME
labelZh: 管理员用户名
labelEn: Admin username
required: true
type: text
- default: ""
edit: true
envKey: ADMIN_PASSWORD
labelZh: 管理员密码
labelEn: Admin password
required: true
type: password
- default: ""
edit: true
envKey: SECRET_KEY
labelZh: 签名密钥
labelEn: Signature key
required: true
type: password
- default: "glean"
edit: true
envKey: POSTGRES_PASSWORD
labelZh: 数据库密码
labelEn: Postgres password
required: true
type: text

View File

@@ -0,0 +1,130 @@
networks:
1panel-network:
external: true
glean-network:
driver: bridge
services:
glean-postgres:
image: postgres:16-alpine
container_name: ${CONTAINER_NAME}-postgres
restart: unless-stopped
volumes:
- ${GLEAN_ROOT_PATH}/postgres:/var/lib/postgresql/data
networks:
- glean-network
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-glean}" ]
interval: 10s
timeout: 5s
retries: 5
environment:
POSTGRES_DB: ${POSTGRES_DB:-glean}
POSTGRES_USER: ${POSTGRES_USER:-glean}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-glean}
glean-redis:
image: redis:7-alpine
container_name: ${CONTAINER_NAME}-redis
command: redis-server --appendonly yes
restart: unless-stopped
volumes:
- ${GLEAN_ROOT_PATH}/redis:/data
networks:
- glean-network
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 10s
timeout: 5s
retries: 5
glean-backend:
depends_on:
glean-postgres:
condition: service_healthy
glean-redis:
condition: service_healthy
image: ghcr.io/leslieleung/glean-backend:0.1.4
container_name: ${CONTAINER_NAME}
labels:
createdBy: "Apps"
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}
RUN_MIGRATIONS: "true"
CREATE_ADMIN: ${CREATE_ADMIN:-true}
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}
ADMIN_ROLE: ${ADMIN_ROLE:-super_admin}
restart: unless-stopped
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8000/api/health" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- glean-network
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}
command: [ "uv", "run", "--no-sync", "uvicorn", "glean_api.main:app", "--host", "0.0.0.0", "--port", "8000" ]
glean-worker:
depends_on:
glean-postgres:
condition: service_healthy
glean-redis:
condition: service_healthy
glean-backend:
condition: service_healthy
image: ghcr.io/leslieleung/glean-backend:0.1.4
container_name: ${CONTAINER_NAME}-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:-}
networks:
- glean-network
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}
restart: unless-stopped
command: [ "uv", "run", "--no-sync", "arq", "glean_worker.main.WorkerSettings" ]
glean-web:
depends_on:
- glean-backend
image: ghcr.io/leslieleung/glean-web:0.1.4
container_name: ${CONTAINER_NAME}-web
ports:
- "${PANEL_APP_PORT_HTTP:-80}:80"
networks:
- glean-network
restart: unless-stopped
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}
glean-admin:
depends_on:
- glean-backend
image: ghcr.io/leslieleung/glean-admin:0.1.4
container_name: ${CONTAINER_NAME}-admin
ports:
- "${PANEL_APP_PORT_ADMIN:-3001}:80"
networks:
- glean-network
restart: unless-stopped
env_file:
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
- ${ENV_FILE:-/etc/1panel/envs/default.env}

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
ENV_FILE=.env

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
TZ=Asia/Shanghai

View File

@@ -0,0 +1,17 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@@ -0,0 +1,10 @@
#!/bin/bash
if [ -f .env ]; then
source .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@@ -0,0 +1,17 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

75
apps/glean/README.md Normal file
View File

@@ -0,0 +1,75 @@
# Glean 拾灵
简短的介绍
![Glean 拾灵](https://file.lifebus.top/imgs/glean_cover.png)
![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue)
## 核心功能
### 📰 RSS 订阅
订阅和管理 RSS/Atom 源,支持 OPML 导入导出
### 📚 智能阅读
简洁的阅读体验,支持内容过滤
### 🔖 稍后阅读
保存文章以便稍后阅读,支持自动清理
### 📁 文件夹与标签
多层级文件夹和标签组织内容
### ⭐ 收藏系统
收藏订阅文章或外部链接
### 🔧 后台同步
每 15 分钟自动更新订阅源
### 🔒 自托管
Docker 部署,完全掌控数据
### 🎨 现代界面
美观的暖色深色主题响应式界面
### 👨‍💼 管理后台
用户管理和系统监控
## 规划中的功能WIP
### 🧠 智能推荐
基于 AI 的偏好学习和文章评分
### ⚙️ 规则引擎
支持 Jinja2 风格条件的自动化处理
### 🤖 AI 功能
摘要生成、自动打标、关键词提取BYOK
### 📄 完整内容获取
为仅提供摘要的 RSS 源获取完整正文
### 🔌 Chrome 扩展
浏览器一键收藏
### 📱 移动端 PWA
适配移动设备的渐进式 Web 应用
---
![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png)

14
apps/glean/data.yml Normal file
View File

@@ -0,0 +1,14 @@
additionalProperties:
key: glean
name: Glean 拾灵
tags:
- WebSite
- Local
shortDescZh: 一个自托管的 RSS 阅读器和个人知识管理工具。
shortDescEn: A self-hosted RSS reader and personal knowledge management tool.
type: website
crossVersionUpdate: true
limit: 0
website: https://github.com/LeslieLeung/glean/
github: https://github.com/LeslieLeung/glean/
document: https://github.com/LeslieLeung/glean/

BIN
apps/glean/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB