mirror of
https://github.com/QYG2297248353/appstore-1panel.git
synced 2026-06-16 01:02:14 +08:00
发布 Glean
This commit is contained in:
@@ -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
|
||||||
@@ -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}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
ENV_FILE=.env
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# copyright© 2024 XinJiang Ms Studio
|
||||||
|
TZ=Asia/Shanghai
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# Glean 拾灵
|
||||||
|
|
||||||
|
简短的介绍
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 核心功能
|
||||||
|
|
||||||
|
### 📰 RSS 订阅
|
||||||
|
|
||||||
|
订阅和管理 RSS/Atom 源,支持 OPML 导入导出
|
||||||
|
|
||||||
|
### 📚 智能阅读
|
||||||
|
|
||||||
|
简洁的阅读体验,支持内容过滤
|
||||||
|
|
||||||
|
### 🔖 稍后阅读
|
||||||
|
|
||||||
|
保存文章以便稍后阅读,支持自动清理
|
||||||
|
|
||||||
|
### 📁 文件夹与标签
|
||||||
|
|
||||||
|
多层级文件夹和标签组织内容
|
||||||
|
|
||||||
|
### ⭐ 收藏系统
|
||||||
|
|
||||||
|
收藏订阅文章或外部链接
|
||||||
|
|
||||||
|
### 🔧 后台同步
|
||||||
|
|
||||||
|
每 15 分钟自动更新订阅源
|
||||||
|
|
||||||
|
### 🔒 自托管
|
||||||
|
|
||||||
|
Docker 部署,完全掌控数据
|
||||||
|
|
||||||
|
### 🎨 现代界面
|
||||||
|
|
||||||
|
美观的暖色深色主题响应式界面
|
||||||
|
|
||||||
|
### 👨💼 管理后台
|
||||||
|
|
||||||
|
用户管理和系统监控
|
||||||
|
|
||||||
|
## 规划中的功能(WIP)
|
||||||
|
|
||||||
|
### 🧠 智能推荐
|
||||||
|
|
||||||
|
基于 AI 的偏好学习和文章评分
|
||||||
|
|
||||||
|
### ⚙️ 规则引擎
|
||||||
|
|
||||||
|
支持 Jinja2 风格条件的自动化处理
|
||||||
|
|
||||||
|
### 🤖 AI 功能
|
||||||
|
|
||||||
|
摘要生成、自动打标、关键词提取(BYOK)
|
||||||
|
|
||||||
|
### 📄 完整内容获取
|
||||||
|
|
||||||
|
为仅提供摘要的 RSS 源获取完整正文
|
||||||
|
|
||||||
|
### 🔌 Chrome 扩展
|
||||||
|
|
||||||
|
浏览器一键收藏
|
||||||
|
|
||||||
|
### 📱 移动端 PWA
|
||||||
|
|
||||||
|
适配移动设备的渐进式 Web 应用
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
@@ -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/
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user