chore: 导入旧记忆备份供恢复
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Glossary of NextOffice Terms
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/glossary-of-next-office-terms
|
||||
stable_id: 74280d28-fbbd-4ad5-90ab-8dee0eaedd1e
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: glossary
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- git:README.md
|
||||
- git:docker-compose.yml
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
job_cited_source_ids:
|
||||
- git:README.md
|
||||
- git:docker-compose.yml
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences: []
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:45.829844+00:00'
|
||||
updated_at: '2026-09-02T18:36:45.830487+00:00'
|
||||
tags:
|
||||
- glossary
|
||||
- development
|
||||
---
|
||||
|
||||
# 术语表 (Glossary)
|
||||
|
||||
| 术语 | 定义 |
|
||||
|------|------|
|
||||
| **NextOffice** | 基于 Nextcloud Community 与 ONLYOFFICE Docs Community 的离线一键部署套件,用于内网办公环境。 |
|
||||
| **Nextcloud** | 开源的文件同步与协作平台,提供 Web UI、WebDAV、共享与插件体系。 |
|
||||
| **ONLYOFFICE** | 在线文档编辑与协作服务,作为 Nextcloud 的编辑器插件使用。 |
|
||||
| **Docker Compose** | 用于声明式管理多容器 Docker 应用的工具,本项目的 `docker‑compose.yml` 定义了 `db`, `redis`, `onlyoffice`, `nextcloud` 与 `cron` 五个服务。 |
|
||||
| **`.env`** | 部署脚本 `deploy.py` 自动生成的环境变量文件,包含数据库密码、JWT 秘钥等敏感信息。 |
|
||||
| **Vaultwarden** | 轻量化的 Bitwarden 实例,用作凭证存储。项目约定在所有登录/SSH/API 之前先查询该 vault。 |
|
||||
| **MemRelay** | 统一的记忆持久化后端,本项目的所有开发记忆(笔记、任务记录)均通过 MemRelay 管理。 |
|
||||
| **KISS** | “Keep It Simple, Stupid”,倡导最简实现。 |
|
||||
| **YAGNI** | “You Aren’t Gonna Need It”,避免为未知需求预先加入抽象。 |
|
||||
| **Windows + WSL2 + Docker Desktop** | 项目默认的开发与测试环境,所有路径、命令均需兼容 Windows。 |
|
||||
|
||||
---
|
||||
**参考来源**: `git:README.md`, `git:docker-compose.yml`, `global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e`
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: NextOffice – Decisions
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/next-office-decisions
|
||||
stable_id: 0e9212b9-cfcf-4ba6-8022-5e0a30440b78
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: decisions
|
||||
revision: 4
|
||||
source_memory_ids:
|
||||
- 1588ca3e-58fe-48b9-ad34-3e660324d24e
|
||||
- e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
source_checkpoint_ids:
|
||||
- d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
source_file_ids: []
|
||||
source_git_commit: null
|
||||
source_git_commits: []
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions:
|
||||
memory:34447199-6c5e-437d-a1a1-8ba9fbf916ad: '1'
|
||||
memory:b5e9162b-d6c3-4593-9b7c-790af4145192: '1'
|
||||
memory:98857cff-874e-476a-97c3-9c9c0c09b077: '1'
|
||||
memory:df7b18f9-490f-415f-a388-2332d1b7df87: '1'
|
||||
memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e: '2'
|
||||
memory:39ed36d1-e58a-4b64-88e6-165e006c0a41: '1'
|
||||
memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18: '1'
|
||||
memory:f42fc721-886f-4d6d-85a4-1611d7bc2cf1: '1'
|
||||
memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986: '1'
|
||||
memory:d21e13e3-c1d0-47c2-85d6-13700478a0de: '1'
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- curated_baseline:0e9212b9-cfcf-4ba6-8022-5e0a30440b78
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
- memory:b5e9162b-d6c3-4593-9b7c-790af4145192
|
||||
- memory:98857cff-874e-476a-97c3-9c9c0c09b077
|
||||
- memory:df7b18f9-490f-415f-a388-2332d1b7df87
|
||||
- memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
- memory:39ed36d1-e58a-4b64-88e6-165e006c0a41
|
||||
- memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18
|
||||
- memory:f42fc721-886f-4d6d-85a4-1611d7bc2cf1
|
||||
- memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986
|
||||
- git:.gitignore
|
||||
- memory:34447199-6c5e-437d-a1a1-8ba9fbf916ad
|
||||
job_cited_source_ids:
|
||||
- curated_baseline:0e9212b9-cfcf-4ba6-8022-5e0a30440b78
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
conflicts: []
|
||||
supersedes:
|
||||
- summary: '`configure_access_urls` 实现取代旧的手动 `occ config:system:set trusted_domains`
|
||||
方式。'
|
||||
current_source_ids:
|
||||
- memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18
|
||||
superseded_source_ids:
|
||||
- memory:f42fc721-886f-4d6d-85a4-1611d7bc2cf1
|
||||
preferences: []
|
||||
source_cursor: 321
|
||||
source_hash: 488b570478ddac0dc8856b8a61aa39d07673cd0d786f9d16da5034e83bde2a9d
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: 2eac5fa8-6ae7-40af-a49a-729642afa66f
|
||||
created_at: '2026-09-02T04:06:42.326837+00:00'
|
||||
updated_at: '2026-09-03T02:58:59.181411+00:00'
|
||||
tags:
|
||||
- decisions
|
||||
- NextOffice
|
||||
- development
|
||||
---
|
||||
|
||||
# 决策概览
|
||||
|
||||
## 1. 主机端口冲突检查实现
|
||||
- 在 `deploy.py` 中新增 `docker_published_ports()`, `port_holder()`, `choose_port()` 与 `check_configured_ports()`,实现对宿主机已占用 TCP 端口的检测,并在交互模式下自动建议下一个可用端口(上限 200)。
|
||||
- `manage.py reconfigure` 复用同一套逻辑,实现对 `--nextcloud-port` / `--onlyoffice-port` 的校验与自动提示。
|
||||
- 实现遵循 **KISS & YAGNI**(`memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986`)。
|
||||
|
||||
## 2. `deploy.py` / `manage.py` 对 Python 3.6 的兼容改造
|
||||
- 移除 `from __future__ import annotations`,改用 `typing` 注解,删除 3.7+ 语法(如 `subprocess.CompletedProcess[str]`、`Path.write_text(newline=…)`、`argparse.add_subparsers(required=True)`)。
|
||||
- 通过本地 `ast.parse(..., feature_version=(3,6))` 与真实 3.6.8 环境验证,确保脚本在目标服务器上可直接运行。
|
||||
|
||||
## 3. `reconfigure` 覆盖 `trusted_domains` 的问题与修复
|
||||
- **问题**:`manage.py reconfigure` 只写入 `trusted_domains 0`,导致原有正则通配被覆盖,访问受限。
|
||||
- **修复**:抽出 `configure_access_urls(host, nextcloud_port, onlyoffice_port)`,统一写入 4 条 `trusted_domains`(索引 0‑3),并同步 `overwrite.cli.url` 与 `onlyoffice DocumentServerUrl`。`manage.py reconfigure` 现在调用同一函数并在容器重启后重新执行 `occ`,实现完整重写。
|
||||
|
||||
## 4. 待办事项(需用户确认后在目标服务器执行)
|
||||
1. 实现 `manage.py restore`(文档已提及但脚本缺失)。
|
||||
2. 离线镜像包导出命令实现。
|
||||
3. HTTPS 一键切换功能开发。
|
||||
4. `upgrade` 与 `backup --keep` 选项完善。
|
||||
5. ONLYOFFICE `DocumentServerUrl` 相对路径方案待用户确认并实现。
|
||||
|
||||
---
|
||||
*本节引用的所有来源已列于 `source_ids`。*
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
title: NextOffice – 项目概览
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/next-office-项目概览
|
||||
stable_id: 45f43d4e-a139-46e5-ad1f-8597831830f0
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: overview
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- git:README.md
|
||||
- git:deploy.py
|
||||
- git:docker-compose.yml
|
||||
- git:manage.py
|
||||
- git:.gitignore
|
||||
- git:.env.example
|
||||
job_cited_source_ids:
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- git:README.md
|
||||
- git:deploy.py
|
||||
- git:docker-compose.yml
|
||||
- git:manage.py
|
||||
- git:.gitignore
|
||||
- git:.env.example
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences:
|
||||
- statement: 日常交流使用中文,包括文档、代码注释和会议沟通。
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 2
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 遵循 KISS 与 YAGNI,优先复用已有框架,不为猜测的未来需求添加抽象。
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 2
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 在任何登录、SSH、数据库或 API 调用前先查询 Vaultwarden,唯一匹配时直接使用。
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:30.282675+00:00'
|
||||
updated_at: '2026-09-02T18:36:30.283248+00:00'
|
||||
tags:
|
||||
- development
|
||||
- overview
|
||||
---
|
||||
|
||||
# 项目概览
|
||||
|
||||
**项目名称**:NextOffice(已在 2026‑09‑01 创建)
|
||||
**工作空间类型**:development
|
||||
**使用概览**:离线部署包已完成收尾,所有代码检查通过,可交付。部署目录位于 `E:\\\\Data\\\\Users\\\\Administrator\\\\Desktop\\\\NextOffice`,通过 `python3 deploy.py` 完成一键安装。
|
||||
|
||||
## 关键交付内容
|
||||
- 部署脚本 `deploy.py`(仅使用 Python 标准库)实现离线镜像导入、环境变量生成以及服务初始化。
|
||||
- `docker‑compose.yml` 定义四个核心容器:PostgreSQL、Redis、OnlyOffice、Nextcloud(自定义镜像 `nextoffice/nextcloud:34.0.3‑oo10.1.2`),并提供健康检查。
|
||||
- `manage.py` 提供运维子命令(status、logs、backup、reconfigure 等),默认只提交本地记忆,不自动 push。
|
||||
- `README.md`、`LICENSES.md`、`versions.json` 记录使用的上游组件及许可证信息。
|
||||
|
||||
## 全局指导与规则(适用于本项目)
|
||||
- **语言**:日常交流、文档、代码注释均使用中文(`global_guidance_memory:7429c22e‑50ff‑458a‑97c0‑423c679904c7`、`global_guidance_memory:ff34c6eb‑6bba‑41e5‑9e43‑ff80941fa823`)。
|
||||
- **记忆管理**:所有项目笔记统一由 MemRelay 持久管理,禁止本地 `aidocs/` 副本(`global_guidance_memory:1194be51‑ee29‑47e1‑8957‑ec2888007db6`、`global_guidance_document:d3a20d44‑6001‑4c88‑8772‑65dbfac75e6e`)。
|
||||
- **开发实施原则**:遵循 KISS & YAGNI,复用已有框架,避免为假设需求添加依赖(`global_guidance_memory:bf88c265‑4749‑4c50‑85bc‑4bae25298cd5`、`global_guidance_document:2b47472d‑3ac2‑4394‑8646‑c6bf1c0fc270`)。
|
||||
- **凭证边界**:登录、SSH、数据库、API 调用前先查询 Vaultwarden,唯一匹配直接使用;新增或修改的凭证立即写入密码库,记忆仅记录名称与用途(`global_guidance_memory:105b328f‑4bda‑4641‑90a7‑7282ef156316`、`global_guidance_memory:5ed86f53‑b53e‑4534‑8e51‑d3a010069d5e`)。
|
||||
- **AI 与 Git 集成**:默认关闭,系统不创建模型或 `.git` 目录(`global_guidance_memory:3f91189b‑11a1‑45bb‑8357‑4f413dc1609d`)。
|
||||
- **工作流**:记忆文件 `aidocs/project_context.md` 使用固定标题、秒级时间戳、最新优先追加;`aidocs/` 已加入 `.gitignore`(`global_guidance_document:e4fc35f2‑1606‑4b79‑9c1e‑367edeea97d0`、`global_guidance_document:6973450e‑6ecc‑48e3‑8cdd‑4d7d7707d843`)。
|
||||
- **环境**:统一 Windows + WSL2 + Docker Desktop,所有路径、命令兼容 Windows(`global_guidance_document:6973450e‑6ecc‑48e3‑8cdd‑4d7d7707d843`)。
|
||||
|
||||
## 参考文件
|
||||
- `README.md`(`git:README.md`)
|
||||
- `deploy.py`(`git:deploy.py`)
|
||||
- `docker-compose.yml`(`git:docker-compose.yml`)
|
||||
- `manage.py`(`git:manage.py`)
|
||||
- `.gitignore`(`git:.gitignore`)
|
||||
- `.env.example`(`git:.env.example`)
|
||||
|
||||
---
|
||||
*本概览引用的所有来源已在 `source_ids` 中列出。*
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: NextOffice 待办任务列表
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/next-office-待办任务列表
|
||||
stable_id: aa86e425-a012-44b5-a805-708f2e077293
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: tasks
|
||||
revision: 7
|
||||
source_memory_ids:
|
||||
- 1588ca3e-58fe-48b9-ad34-3e660324d24e
|
||||
- e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
source_checkpoint_ids:
|
||||
- d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
source_file_ids: []
|
||||
source_git_commit: null
|
||||
source_git_commits: []
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions:
|
||||
memory:f767d77f-63d6-4048-b954-89df53eb1b38: '1'
|
||||
memory:b5e9162b-d6c3-4593-9b7c-790af4145192: '1'
|
||||
memory:98857cff-874e-476a-97c3-9c9c0c09b077: '1'
|
||||
memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18: '1'
|
||||
memory:d21e13e3-c1d0-47c2-85d6-13700478a0de: '1'
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- curated_baseline:aa86e425-a012-44b5-a805-708f2e077293
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
- memory:b5e9162b-d6c3-4593-9b7c-790af4145192
|
||||
- memory:98857cff-874e-476a-97c3-9c9c0c09b077
|
||||
- memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- memory:f767d77f-63d6-4048-b954-89df53eb1b38
|
||||
job_cited_source_ids:
|
||||
- curated_baseline:aa86e425-a012-44b5-a805-708f2e077293
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences: []
|
||||
source_cursor: 321
|
||||
source_hash: 488b570478ddac0dc8856b8a61aa39d07673cd0d786f9d16da5034e83bde2a9d
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: 2eac5fa8-6ae7-40af-a49a-729642afa66f
|
||||
created_at: '2026-09-01T02:33:20.013455+00:00'
|
||||
updated_at: '2026-09-03T02:59:05.517854+00:00'
|
||||
tags:
|
||||
- tasks
|
||||
- NextOffice
|
||||
- development
|
||||
---
|
||||
|
||||
# 任务概览
|
||||
|
||||
## 已完成 (Completed)
|
||||
- `deploy.py` 端口冲突检查功能实现并通过全部单元/集成测试。(`memory:b5e9162b-d6c3-4593-9b7c-790af4145192`)
|
||||
- `deploy.py` / `manage.py` 兼容 Python 3.6 的改动已合并,真实服务器编译运行通过。(`memory:df7b18f9-490f-415f-a388-2332d1b7df87`、`memory:98857cff-874e-476a-97c3-9c9c0c09b077`)
|
||||
- `reconfigure` 的 `trusted_domains` 修复完成,统一使用 `configure_access_urls`。(`memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18`)
|
||||
|
||||
## 待办 (To‑Do) – 交付后需在目标服务器执行
|
||||
1. **复制交付目录** 到目标服务器的合适位置。
|
||||
2. **确保已安装 Python 3**(推荐 3.10+)。
|
||||
3. **运行 `python3 deploy.py`**,加载离线镜像或在线拉取。
|
||||
4. **验证容器启动** 并检查 Nextcloud 与 ONLYOFFICE 正常工作。
|
||||
5. **完成浏览器端首次配置**(管理员账号、存储路径等)。
|
||||
6. **实现 `manage.py restore`**(文档提及但脚本缺失)。
|
||||
7. **离线镜像包导出命令** 的实现。
|
||||
8. **HTTPS 一键切换** 功能开发。
|
||||
9. **`upgrade` 与 `backup --keep`** 选项完善。
|
||||
10. **ONLYOFFICE `DocumentServerUrl` 相对路径方案** 待用户确认并实现。
|
||||
|
||||
---
|
||||
*任务列表引用的所有来源已列于 `source_ids`。*
|
||||
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: NextOffice 项目当前状态概览
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/next-office-项目当前状态概览
|
||||
stable_id: 5bbc6eda-83e0-442d-ab3e-196559cad551
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: current_state
|
||||
revision: 7
|
||||
source_memory_ids:
|
||||
- 1588ca3e-58fe-48b9-ad34-3e660324d24e
|
||||
- e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
source_checkpoint_ids:
|
||||
- d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
source_file_ids: []
|
||||
source_git_commit: null
|
||||
source_git_commits: []
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions:
|
||||
memory:f767d77f-63d6-4048-b954-89df53eb1b38: '1'
|
||||
memory:6e9a8857-ce48-4b86-8bf1-9918ec2dbc38: '1'
|
||||
memory:da0f10dd-d5b0-40b2-aa6a-c2a50c7c41d6: '1'
|
||||
memory:920bcbec-1269-421c-9595-c336c4aaba61: '1'
|
||||
memory:ed574a52-660d-4e46-86f5-854cf8ac4d96: '1'
|
||||
memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e: '3'
|
||||
memory:39ed36d1-e58a-4b64-88e6-165e006c0a41: '1'
|
||||
memory:b5e9162b-d6c3-4593-9b7c-790af4145192: '1'
|
||||
memory:98857cff-874e-476a-97c3-9c9c0c09b077: '1'
|
||||
memory:df7b18f9-490f-415f-a388-2332d1b7df87: '1'
|
||||
memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986: '1'
|
||||
memory:d21e13e3-c1d0-47c2-85d6-13700478a0de: '1'
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- curated_baseline:5bbc6eda-83e0-442d-ab3e-196559cad551
|
||||
- memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
- memory:39ed36d1-e58a-4b64-88e6-165e006c0a41
|
||||
- memory:b5e9162b-d6c3-4593-9b7c-790af4145192
|
||||
- memory:98857cff-874e-476a-97c3-9c9c0c09b077
|
||||
- memory:df7b18f9-490f-415f-a388-2332d1b7df87
|
||||
- memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- memory:920bcbec-1269-421c-9595-c336c4aaba61
|
||||
- memory:ed574a52-660d-4e46-86f5-854cf8ac4d96
|
||||
- memory:6e9a8857-ce48-4b86-8bf1-9918ec2dbc38
|
||||
- memory:da0f10dd-d5b0-40b2-aa6a-c2a50c7c41d6
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- memory:f767d77f-63d6-4048-b954-89df53eb1b38
|
||||
job_cited_source_ids:
|
||||
- curated_baseline:5bbc6eda-83e0-442d-ab3e-196559cad551
|
||||
- memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences: []
|
||||
source_cursor: 321
|
||||
source_hash: 488b570478ddac0dc8856b8a61aa39d07673cd0d786f9d16da5034e83bde2a9d
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: 2eac5fa8-6ae7-40af-a49a-729642afa66f
|
||||
created_at: '2026-09-01T02:33:15.839523+00:00'
|
||||
updated_at: '2026-09-03T02:59:00.740056+00:00'
|
||||
tags:
|
||||
- current_state
|
||||
- NextOffice
|
||||
- development
|
||||
---
|
||||
|
||||
# 当前状态
|
||||
|
||||
## 环境概览
|
||||
- **服务器**:`36.213.25.212`(SSH 端口 45679,用户 `root`),系统 **CentOS 8.5**,内存 188 GB,根分区约 70 GB(实际使用约 23 GB)。
|
||||
- **软件**:Docker 26.1.3、Compose v2.27.0、Git 2.27、Python 3.6.8(已验证 `deploy.py` / `manage.py` 完全兼容)。
|
||||
- **已删除**:旧的 `/opt/onlyoffice`(onlyoffice‑ds)及其容器、镜像 `documentserver:latest`,宿主机 8080/8081 已空闲(见 `memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e`)。
|
||||
- **残留**:未使用的 `nextcloud:latest` 镜像约 1.52 GB,未在容器中运行。
|
||||
|
||||
## 代码库与部署脚本
|
||||
- Git 仓库 `https://git.asio.asia/nixevol/NexiOffice.git`,`main` 分支最新提交 `e1154e5`(`reconfigure` 修复)和 `7b3796e`(端口冲突检查),均已本地 commit,工作区干净。
|
||||
- `deploy.py` 现在支持 **Python 3.6**,首次运行自动生成 `.env`,包含数据库密码、JWT 秘钥等敏感信息。
|
||||
- 端口冲突检查已集成:`docker_published_ports()` 与 `choose_port()` 能检测宿主机占用并提示可用端口。
|
||||
|
||||
## 已完成的功能
|
||||
- **Python 3.6 兼容**:所有新语法已替换,真实 3.6.8 环境编译、运行通过。
|
||||
- **端口冲突检测**:默认端口 8080/8081 如被占用,将自动建议下一个可用端口并阻止无效输入。
|
||||
- **`reconfigure` 修复**:`trusted_domains` 现保持正则通配并同步 `overwrite.cli.url`、`DocumentServerUrl`。
|
||||
- **清理工作**:删除旧部署残留、清除 `SHA256SUMS.json`、`.gitignore` 中已忽略 `docs/`、`images/` 等目录。
|
||||
|
||||
---
|
||||
*引用的所有来源已列于 `source_ids`。*
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
title: NextOffice 项目时间线
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/next-office-项目时间线
|
||||
stable_id: 847e3e43-85e8-431d-b0f7-7b16211c0da1
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: timeline
|
||||
revision: 8
|
||||
source_memory_ids:
|
||||
- b476b307-7224-4128-8499-4c43a2ad1cb5
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 5bb57a98f2d98ba8cae6978cdbcaa3179959f787
|
||||
source_git_commits:
|
||||
- 5bb57a98f2d98ba8cae6978cdbcaa3179959f787
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 30
|
||||
source_revisions:
|
||||
memory:f767d77f-63d6-4048-b954-89df53eb1b38: '1'
|
||||
memory:74f4d344-2557-407b-9493-baa8ea7e5026: '1'
|
||||
memory:1cb62004-7553-47e2-abe0-972ea756c016: '1'
|
||||
memory:920bcbec-1269-421c-9595-c336c4aaba61: '1'
|
||||
memory:ed574a52-660d-4e46-86f5-854cf8ac4d96: '1'
|
||||
memory:b5e9162b-d6c3-4593-9b7c-790af4145192: '1'
|
||||
memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986: '1'
|
||||
memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18: '1'
|
||||
memory:39ed36d1-e58a-4b64-88e6-165e006c0a41: '1'
|
||||
memory:98857cff-874e-476a-97c3-9c9c0c09b077: '1'
|
||||
memory:df7b18f9-490f-415f-a388-2332d1b7df87: '1'
|
||||
memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e: '3'
|
||||
memory:d21e13e3-c1d0-47c2-85d6-13700478a0de: '1'
|
||||
source_dispositions:
|
||||
processed: 30
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- curated_baseline:847e3e43-85e8-431d-b0f7-7b16211c0da1
|
||||
- memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e
|
||||
- memory:d21e13e3-c1d0-47c2-85d6-13700478a0de
|
||||
- memory:b5e9162b-d6c3-4593-9b7c-790af4145192
|
||||
- memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986
|
||||
- memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18
|
||||
- memory:39ed36d1-e58a-4b64-88e6-165e006c0a41
|
||||
- memory:98857cff-874e-476a-97c3-9c9c0c09b077
|
||||
- memory:df7b18f9-490f-415f-a388-2332d1b7df87
|
||||
- memory:74f4d344-2557-407b-9493-baa8ea7e5026
|
||||
- memory:1cb62004-7553-47e2-abe0-972ea756c016
|
||||
- memory:920bcbec-1269-421c-9595-c336c4aaba61
|
||||
- memory:ed574a52-660d-4e46-86f5-854cf8ac4d96
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- memory:f767d77f-63d6-4048-b954-89df53eb1b38
|
||||
job_cited_source_ids:
|
||||
- curated_baseline:847e3e43-85e8-431d-b0f7-7b16211c0da1
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences: []
|
||||
source_cursor: 342
|
||||
source_hash: 06ff80f604cf8df8f5e4a628ba429b2ed5e9676711cc5b5bfb0e6ea4bad3d078
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: 697bb75f-701f-496c-a756-82f6c0bac865
|
||||
created_at: '2026-09-01T02:33:17.705667+00:00'
|
||||
updated_at: '2026-09-03T04:04:17.915064+00:00'
|
||||
tags:
|
||||
- development
|
||||
- NextOffice
|
||||
---
|
||||
|
||||
# 项目时间线
|
||||
|
||||
| 时间(UTC) | 事件 |
|
||||
|---------------------------|---------------------------------------------------------------|
|
||||
| 2026-09-01 02:11:49.887 | 项目 **NextOffice** 创建(系统记录)。 |
|
||||
| 2026-09-03 01:14:45.575 | 完成宿主机端口冲突/占用检查功能,新增 `docker_published_ports`、`choose_port` 等(`memory:b5e9162b-d6c3-4593-9b7c-790af4145192`)。 |
|
||||
| 2026-09-03 01:14:27.312 | 决定实现端口冲突检查的技术路线(`memory:68deebdd-e5d1-4bc6-8e70-e4342e72f986`)。 |
|
||||
| 2026-09-03 01:23:17.611 | 修复 `manage.py reconfigure` 覆盖 `trusted_domains` 的问题,抽出 `configure_access_urls`(`memory:b3034d8a-1155-4165-a8c5-cec0d9e27e18`)。 |
|
||||
| 2026-09-03 01:31:13.359 | 将本地修改 push 到仓库,完成端口冲突检查与 `reconfigure` 修复的提交 |
|
||||
| 2026-09-03 01:44:15.030 | 使 `deploy.py` / `manage.py` 兼容 Python 3.6,去除 `future annotations` 等(`memory:98857cff-874e-476a-97c3-9c9c0c09b077`、`memory:df7b18f9-490f-415f-a388-2332d1b7df87`)。 |
|
||||
| 2026-09-03 01:42:33.347 | 记录服务器环境事实,确认 3.6.8 已通过所有测试(`memory:e01606b2-f7b3-43e4-9510-8f81a0f68b4e`)。 |
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: Common Issues & Troubleshooting Guide
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/development/common-issues-troubleshooting-guide
|
||||
stable_id: 0f32d409-b512-4fc9-b65e-59d8a70359b8
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: troubleshooting
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
job_cited_source_ids:
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences:
|
||||
- statement: AI 驱动的记忆同步与 Git 集成默认关闭
|
||||
level: workspace
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids:
|
||||
- d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
source_ids:
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 日常交流使用中文(包括文档、代码注释等)
|
||||
level: workspace
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids:
|
||||
- d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
source_ids:
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:51.454085+00:00'
|
||||
updated_at: '2026-09-02T18:36:51.454519+00:00'
|
||||
tags:
|
||||
- troubleshooting
|
||||
- development
|
||||
---
|
||||
|
||||
# 常见问题及排障指南 (Troubleshooting)
|
||||
|
||||
## 1. Docker 执行超时 (3 秒断连)
|
||||
- **症状**:`docker exec` 长时间运行的命令在约 3 秒后被强制中止。
|
||||
- **根因**:Docker‑Py 默认为 hijacked socket 设置了 3 秒的全局 timeout。
|
||||
- **解决方案**:在脚本(如 `deploy.py`)中获取裸 socket 后调用 `socket.settimeout(None)`,或在 `docker-py` 调用前使用 `docker.from_env(timeout=None)`。
|
||||
- **参考**:`global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56` 中的说明。
|
||||
|
||||
## 2. Docker Hub 代理配置失效
|
||||
- **症状**:`docker pull` 失败,提示无法连接到镜像仓库。
|
||||
- **根因**:Docker Desktop 代理模式未设为 *Manual*,或地址填写错误。
|
||||
- **解决方案**:打开 Docker Desktop → Settings → Resources → Proxies,勾选 *Manual*,填写 `http://127.0.0.1:7897` 作为 HTTP 与 HTTPS 代理。保存后重启 Docker 并验证 `docker pull hello-world` 正常。
|
||||
- **参考**:同上经验文档。
|
||||
|
||||
## 3. PowerShell 发送 JSON 失真
|
||||
- **症状**:使用 `Invoke‑WebRequest` 发送 JSON 时,双引号被吞掉导致请求体错误。
|
||||
- **根因**:PowerShell 对直接传入字符串的引号做了转义。
|
||||
- **解决方案**:先将 JSON 写入临时文件,再使用 `--data-binary @file` 方式上传。
|
||||
- **参考**:`global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56` 中的技巧。
|
||||
|
||||
## 4. FastAPI 异步函数中阻塞 I/O
|
||||
- **症状**:FastAPI 路由挂起,CPU 使用率飙升,接口响应迟缓。
|
||||
- **根因**:在 `async def` 中直接调用阻塞库(如 `pymysql`, `requests`, 文件读写)。
|
||||
- **解决方案**:改为普通 `def`,FastAPI 会自动将其放入线程池,或使用 `run_in_executor` 包装。
|
||||
- **参考**:`global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56`。
|
||||
|
||||
## 5. Vaultwarden 凭证查找不匹配
|
||||
- **症状**:在登录或 API 调用前未能自动获取密码,系统提示手动输入。
|
||||
- **根因**:Vaultwarden 中存在多条匹配项或根本无匹配。
|
||||
- **解决方案**:确保每条凭证的 “名称” 唯一;在脚本中使用 `search_one`(唯一匹配)而非列表返回;如果需要手动选择,请提示用户并验证选择。
|
||||
- **参考**:`global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316`。
|
||||
|
||||
---
|
||||
**参考来源**: `global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56`, `global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0`
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
---
|
||||
title: NextOffice 维护与运维手册
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/development/next-office-维护与运维手册
|
||||
stable_id: 162cba10-fa5f-43d4-8382-48bee155f500
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: maintenance
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- git:manage.py
|
||||
- git:requirements.txt
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
job_cited_source_ids:
|
||||
- git:manage.py
|
||||
- git:requirements.txt
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
|
||||
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
|
||||
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences:
|
||||
- statement: 在任何登录、SSH、数据库或 API 调用前先搜索 Vaultwarden,唯一匹配则直接使用
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 项目记忆使用 `aidocs/project_context.md`,文件位于 `.gitignore`,提交时仅提交代码变更
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 使用最简且正确的实现(KISS & YAGNI)
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:56.356802+00:00'
|
||||
updated_at: '2026-09-02T18:36:56.357394+00:00'
|
||||
tags:
|
||||
- maintenance
|
||||
- development
|
||||
- NextOffice
|
||||
---
|
||||
|
||||
# NextOffice 维护与运维手册
|
||||
|
||||
## 目标与范围
|
||||
本手册面向已成功部署的 NextOffice 环境,提供日常运维、备份、日志检查、配置变更等操作指南。遵循全局 **KISS & YAGNI**、**复用已有框架** 与 **凭证统一管理** 的原则。
|
||||
|
||||
## 常用运维命令(`git:manage.py`)
|
||||
| 命令 | 作用 | 示例 |
|
||||
|------|------|------|
|
||||
| `python3 manage.py status` | 查看容器状态、Nextcloud 状态、ONLYOFFICE 连接检查 | — |
|
||||
| `python3 manage.py start` / `stop` / `restart` / `down` | 生命周期管理 | `manage.py start` 启动所有服务 |
|
||||
| `python3 manage.py logs [service] --tail 200 --follow` | 查看指定服务日志(service 可选 nextcloud、onlyoffice、db、redis、cron) | `manage.py logs nextcloud --follow` |
|
||||
| `python3 manage.py backup [--output PATH]` | 执行完整备份:停机、导出数据库、打包卷、复制 `.env` 与 `docker‑compose.yml` | — |
|
||||
| `python3 manage.py reconfigure [--host-ip IP] [--nextcloud-port PORT] [--onlyoffice-port PORT]` | 更新 IP 与端口配置,自动写入 `.env` 并刷新 Nextcloud trusted domains | — |
|
||||
|
||||
## 备份策略(依据 `global_guidance_memory:5ed86f53` 与 `manage.py` 实现)
|
||||
1. **进入维护模式**:`occ maintenance:mode --on`,确保数据一致性。
|
||||
2. **导出 PostgreSQL**:使用 `pg_dump` 将数据库导出至备份目录。
|
||||
3. **卷归档**:对 `nextoffice_nextcloud_html`、`nextoffice_nextcloud_data`、`nextoffice_onlyoffice_data`、`nextoffice_onlyoffice_lib` 四个 Docker 卷执行 `tar -czf` 打包。
|
||||
4. **保存关键文件**:复制 `.env`(含敏感凭证)与 `docker-compose.yml`。
|
||||
5. **退出维护模式**:`occ maintenance:mode --off`。
|
||||
> 备份目录默认位于项目根目录的 `backups/<timestamp>`,请务必对其实施访问控制。
|
||||
|
||||
## 配置变更与重新部署(参考 `manage.py reconfigure`)
|
||||
- 修改 `HOST_IP`、`NEXTCLOUD_PORT`、`ONLYOFFICE_PORT` 后,脚本会自动更新 `.env`、重新启动容器并调用 `occ config:system:set trusted_domains` 与 `occ config:app:set onlyoffice DocumentServerUrl` 完成同步。
|
||||
- 如需更改其他环境变量(如数据库密码),请手动编辑 `.env` 并执行 `docker compose up -d` 重新创建容器。
|
||||
|
||||
## 日志与故障排查(依据全局工作流 `global_guidance_document:e4fc35f2`)
|
||||
- **Docker 超时**:若 `docker exec` 超时,请参考 “Docker Exec 超时” 章节,在 `manage.py` 中已通过 `socket.settimeout(None)` 处理。
|
||||
- **FastAPI 异步陷阱**:如自定义扩展使用 FastAPI,请确保不在 `async def` 中调用阻塞 I/O(已在全局经验中提醒)。
|
||||
- **代理配置**:若容器内部需要外网访问,确保 Docker Desktop 代理已设为手动 `http://127.0.0.1:7897`(全局经验)。
|
||||
|
||||
## 常规维护任务
|
||||
- 定期运行 `manage.py backup`,并将备份上传至安全存储。
|
||||
- 每次代码改动后更新 `aidocs/project_context.md`(已在全局规则中说明),使用 `type: 中文说明` 格式提交。
|
||||
- 关注官方升级公告,若 Nextcloud、ONLYOFFICE 发布安全更新,使用 `docker pull` 拉取新镜像并执行 `docker compose up -d --remove-orphans` 完成滚动升级。
|
||||
|
||||
## 参考全局规则与偏好
|
||||
| 编号 | 规则/偏好 | 来源 |
|
||||
|------|-----------|------|
|
||||
| 1 | 开发实施原则(KISS & YAGNI) | `global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5` |
|
||||
| 2 | 项目记忆与 Git 工作流(本地记忆不提交) | `global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e` |
|
||||
| 3 | 凭证检索工作流 | `global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0` |
|
||||
| 4 | 全局偏好:使用最简实现 | `global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270` |
|
||||
| 5 | 语言偏好:使用中文 | `global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823` |
|
||||
|
||||
**标签**: ["maintenance", "development", "NextOffice"]
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
title: NextOffice 部署指南
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/development/next-office-部署指南
|
||||
stable_id: a4ee5dcf-b0fb-4db7-a8db-ff7faf5b775b
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: deployment
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- curated_baseline:5bbc6eda-83e0-442d-ab3e-196559cad551
|
||||
- curated_baseline:aa86e425-a012-44b5-a805-708f2e077293
|
||||
- curated_baseline:847e3e43-85e8-431d-b0f7-7b16211c0da1
|
||||
- git:deploy.py
|
||||
- git:README.md
|
||||
- git:docker-compose.yml
|
||||
- git:.env.example
|
||||
- git:.gitignore
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
job_cited_source_ids:
|
||||
- curated_baseline:5bbc6eda-83e0-442d-ab3e-196559cad551
|
||||
- curated_baseline:aa86e425-a012-44b5-a805-708f2e077293
|
||||
- curated_baseline:847e3e43-85e8-431d-b0f7-7b16211c0da1
|
||||
- git:deploy.py
|
||||
- git:README.md
|
||||
- git:docker-compose.yml
|
||||
- git:.env.example
|
||||
- git:.gitignore
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences:
|
||||
- statement: 日常交流使用中文(包括文档、代码注释等)
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 开发记忆统一使用 MemRelay 持久管理,禁止本地副本除非用户明确要求
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: AI 驱动的记忆同步与 Git 集成默认关闭
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 在任何登录、SSH、数据库或 API 调用前先查询 Vaultwarden,唯一匹配则直接使用
|
||||
level: scenario
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids: []
|
||||
source_ids:
|
||||
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:53.608654+00:00'
|
||||
updated_at: '2026-09-02T18:36:53.609302+00:00'
|
||||
tags:
|
||||
- deployment
|
||||
- development
|
||||
- NextOffice
|
||||
---
|
||||
|
||||
# NextOffice 部署指南
|
||||
|
||||
## 项目概览
|
||||
- 项目名称:NextOffice(已在 2026‑09‑01 创建)
|
||||
- 工作空间类型:development
|
||||
- 交付目录:`E:\\Data\\Users\\Administrator\\Desktop\\NextOffice`
|
||||
- 采用离线部署包,所有必需镜像已在 `images/nextoffice-images-amd64.tar` 中提供,若缺失将自动在线拉取。
|
||||
|
||||
## 关键前置条件
|
||||
- 目标服务器必须运行 **Windows + WSL2 + Docker Desktop**(全局指导)`global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843`
|
||||
- 已安装 **Python 3**(推荐 3.10+)以及 **Docker Engine** 与 **Docker Compose plugin**。
|
||||
- 依据全局开发实施原则,保持实现最简(KISS & YAGNI)`global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5`。
|
||||
- 所有凭证在使用前必须先查询 Vaultwarden,且新生成的密码等立即写入密码库 `global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316`。
|
||||
|
||||
## 部署步骤概述(依据 `git:deploy.py`)
|
||||
1. **检查前置工具**:`docker version`、`docker compose version`(脚本 `check_prerequisites`)。
|
||||
2. **创建或加载配置**:如果 `.env` 已存在则直接使用,否则交互式提示服务器 IP、端口、管理员账号/密码并写入 `ENV_FILE`(`create_or_load_config`)。
|
||||
3. **准备镜像**:
|
||||
- 若离线镜像文件存在,使用 `docker load -i` 导入。
|
||||
- 否则拉取基础镜像 `nextcloud:34.0.3-apache` 并拉取其余所需镜像 `onlyoffice/documentserver:9.4.0`、`postgres:17.11-alpine`、`redis:7.4.11-alpine`,随后构建定制 Nextcloud 镜像(`build_nextcloud_image`)。
|
||||
4. **启动服务**:`docker compose up -d --remove-orphans`。
|
||||
5. **等待服务就绪**:脚本轮询 ONLYOFFICE `http://127.0.0.1:<ONLYOFFICE_PORT>/healthcheck` 与 Nextcloud `http://127.0.0.1:<NEXTCLOUD_PORT>/status.php`,超时 600 秒。
|
||||
6. **配置 Nextcloud 与 ONLYOFFICE**:启用 `text`、`viewer`、`onlyoffice` 应用;设置系统语言为 `zh_CN`、关闭默认文件模板目录、清理首次部署示例文件、配置 ONLYOFFICE 连接器以及共享策略。
|
||||
7. **完成部署**:输出门户地址、管理员账号以及 ONLYOFFICE 健康检查链接。
|
||||
|
||||
## 交付内容快速回顾(`curated_baseline:5bbc6eda-...`)
|
||||
- 部署脚本 `deploy.py` 已删除哈希校验相关代码。
|
||||
- `manage.py backup` 已不生成 `SHA256SUMS.json`,对应文件已删除。
|
||||
- 静态检查全部通过:`python -m py_compile deploy.py manage.py`、`docker compose config --quiet`、`python deploy.py --help`。
|
||||
|
||||
## 参考文档与规则
|
||||
| 编号 | 内容 | 来源 |
|
||||
|------|------|------|
|
||||
| 1 | 日常交流使用中文 | `global_guidance_memory:7429c22e-50ff-458a-97c0-423c679904c7` |
|
||||
| 2 | 开发记忆统一使用 MemRelay | `global_guidance_memory:1194be51-ee29-47e1-8957-ec2888007db6` |
|
||||
| 3 | 开发实施原则(KISS & YAGNI) | `global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5` |
|
||||
| 4 | AI 与 Git 集成默认关闭 | `global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d` |
|
||||
| 5 | 凭证查询与写入规则 | `global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316` |
|
||||
| 6 | 项目记忆与 Git 工作流 | `global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e` |
|
||||
| 7 | 开发记忆文件位置与提交约定 | `global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e` |
|
||||
| 8 | 跨工作空间技术经验(Docker 代理等) | `global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56` |
|
||||
| 9 | 项目时间线 | `curated_baseline:847e3e43-85e8-431d-b0f7-7b16211c0da1` |
|
||||
|10| 任务清单 | `curated_baseline:aa86e425-a012-44b5-a805-708f2e077293` |
|
||||
|
||||
## 相关文件(供引用)
|
||||
- `README.md`(部署说明)`git:README.md`
|
||||
- `docker-compose.yml`(服务编排)`git:docker-compose.yml`
|
||||
- `.env.example`(示例环境变量)`git:.env.example`
|
||||
- `.gitignore`(忽略规则)`git:.gitignore`
|
||||
|
||||
**标签**: ["deployment", "development", "NextOffice"]
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
---
|
||||
title: System Architecture Overview
|
||||
type: curated
|
||||
permalink: main/projects/d1932ed6-07d3-4463-a224-8534ffd69a07/curated/development/system-architecture-overview
|
||||
stable_id: 4f9904fa-0a77-4ea6-9cfd-eb43aa949a54
|
||||
scope: project
|
||||
project_id: d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
workspace_type: development
|
||||
usage_profile_id: null
|
||||
preference_context: development
|
||||
document_type: architecture
|
||||
revision: 1
|
||||
source_memory_ids: []
|
||||
source_checkpoint_ids: []
|
||||
source_file_ids: []
|
||||
source_git_commit: 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_git_commits:
|
||||
- 346195c0699cb8a1dbf5a9576daad945003e5d10
|
||||
source_agent_sync_ids: []
|
||||
model_connection: Sub2API
|
||||
model_name: openai/gpt-oss-120b
|
||||
source_count: 25
|
||||
source_revisions: {}
|
||||
source_dispositions:
|
||||
processed: 25
|
||||
unchanged: 0
|
||||
unsupported: 0
|
||||
skipped: 0
|
||||
cited_source_ids:
|
||||
- git:docker-compose.yml
|
||||
- git:deploy.py
|
||||
- git:README.md
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
job_cited_source_ids:
|
||||
- git:docker-compose.yml
|
||||
- git:deploy.py
|
||||
- git:README.md
|
||||
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
|
||||
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
|
||||
conflicts: []
|
||||
supersedes: []
|
||||
preferences:
|
||||
- statement: 遵循 KISS & YAGNI,使用最简单且正确的实现
|
||||
level: workspace
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids:
|
||||
- d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
source_ids:
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
- statement: 复用已有框架、服务、工具和约定,避免重复实现
|
||||
level: workspace
|
||||
workspace_types:
|
||||
- development
|
||||
workspace_ids:
|
||||
- d1932ed6-07d3-4463-a224-8534ffd69a07
|
||||
source_ids:
|
||||
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
|
||||
counterexample_source_ids: []
|
||||
occurrence_count: 1
|
||||
explicit: true
|
||||
confidence: 1.0
|
||||
status: current
|
||||
source_cursor: 292
|
||||
source_hash: deb30a6b83a03f25e5a91c6b2d68024ae3de216638efb5597267ac9555bb804f
|
||||
prompt_version: 2026-08-12.3
|
||||
schema_version: '3'
|
||||
curation_job_id: ef181130-6e65-470d-be87-1c06a2de345c
|
||||
created_at: '2026-09-02T18:36:48.074255+00:00'
|
||||
updated_at: '2026-09-02T18:36:48.074835+00:00'
|
||||
tags:
|
||||
- architecture
|
||||
- development
|
||||
---
|
||||
|
||||
# 系统架构概览 (Architecture)
|
||||
|
||||
## 主要组件
|
||||
| 服务 | Docker 镜像 | 端口 | 说明 |
|
||||
|------|------------|------|------|
|
||||
| **PostgreSQL** | `postgres:17.11‑alpine` | `5432` (内部) | Nextcloud 数据库,使用 `POSTGRES_` 环境变量配置。 |
|
||||
| **Redis** | `redis:7.4.11‑alpine` | `6379` (内部) | 会话与缓存,使用 `REDIS_PASSWORD` 进行保护。 |
|
||||
| **ONLYOFFICE DocumentServer** | `onlyoffice/documentserver:9.4.0` | `8081` (外部) | 文档编辑服务,启用 JWT (`ONLYOFFICE_JWT_SECRET`)。 |
|
||||
| **Nextcloud (定制镜像)** | `nextoffice/nextcloud:34.0.3-oo10.1.2` | `8080` (外部) | 核心文件管理与协作平台,已在 `deploy.py` 中启用 `text`, `viewer`, `onlyoffice` 三个插件。 |
|
||||
| **Cron 容器** | 同上 (nextcloud 镜像) | — | 运行 Nextcloud 定时任务。 |
|
||||
|
||||
## 网络布局
|
||||
- 两个 Docker 网络:`frontend`(对外暴露端口)和 `backend`(内部服务互通,`internal: true`)。
|
||||
- 宿主机通过 `host.docker.internal` 可以访问容器内部服务,符合 **全局工作区概述** 中的代理与网络约定。
|
||||
|
||||
## 部署流程概述 (deploy.py)
|
||||
1. 检查 Docker 与 Docker Compose 可用。
|
||||
2. 如存在 `images/nextoffice-images-amd64.tar`,使用 `docker load` 导入离线镜像;否则在线拉取基础镜像并在 `build/Dockerfile.nextcloud` 中构建定制镜像。
|
||||
3. 生成 `.env`(或读取已有),写入关键密码、JWT 秘钥等。
|
||||
4. `docker compose up -d` 启动全部服务。
|
||||
5. 等待 ONLYOFFICE 与 Nextcloud 健康检查通过后,使用 `occ` 启用插件、配置语言、默认域、共享策略等。
|
||||
6. 首次运行时清理默认示例文件并写入 `nextoffice_defaults_cleaned` 标记,以防重复清理。
|
||||
|
||||
## 配置约定 (全局规则)
|
||||
- **KISS & YAGNI**:仅使用必需的服务与环境变量,未引入假设的未来依赖。
|
||||
- **复用已有框架**:`docker-compose.yml` 直接使用官方镜像标签,无额外包装。
|
||||
- **凭证边界**:所有敏感信息均写入 `.env` 并受文件系统权限保护 (`600`);实际密码仅存于 Vaultwarden,记忆文件 `aidocs/project_context.md` 仅记录名称与用途。
|
||||
- **AI / Git 集成默认关闭**:本项目的部署脚本不调用任何模型或本地 Git 仓库,仅在用户明确请求时才执行相应功能。
|
||||
|
||||
---
|
||||
**参考来源**: `git:docker-compose.yml`, `git:deploy.py`, `git:README.md`, `global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843`, `global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e`
|
||||
Reference in New Issue
Block a user