乐于分享
好东西不私藏

Outline保姆级安装教程

Outline保姆级安装教程
前一段时间,自己有很多项目需要存放或者分享,使用了IMA,发现文档的分享对方需要下载客户端才能看到完整分享,然后也使用了一些其他的平台,体验都不是很好,最后在网上找到了Outline知识库,可以私有化部署,而且体验非常好,所以自己记录了整个搭建过程,希望有诸如此类想法的朋友可以借鉴参考,少走弯路。
Outline 是什么?Outline 是一款开源的团队知识库工具,由 Pencil Labs 开发维护。它的特点非常鲜明:
  • ✍️ 类 Notion 编辑体验 — 块编辑、协作实时编辑、强大的富文本
  • 🔗 开放 API — 可接入任意应用,打造你的工具生态
  • 🔒 私有化部署 — 数据完全在自己手里,安全感拉满
  • 🐳 Docker 一键部署 — 官方推荐方式,5 分钟跑起来

1.系统安装

本次安装outline应用部署在阿里云服务器中,采用docker部署,这也是outline官方最推荐的部署方式,目前配置4G内存/4核心CPU.

1.1完整部署流程

前置准备

  • 服务器:4 核 8G 及以上(最低 2 核 4G)

  • 系统:Ubuntu 20.04+/CentOS 7+

  • 已安装 Docker & Docker Compose【参考1.2安装或问AI都可以】

  • (离线环境需提前导入镜像:outlinewiki/outline:latestpostgres:14redis:7)【参考1.3节,提前离线导入并加载镜像】

  • 防火墙开放端口:3000/TCP

  • 公网 IP:47.98.235.X(替换为你的实际 IP)

一键部署脚本(复制直接执行)

步骤 1:进入部署目录并清理旧环境

# 创建并进入目录mkdir -p /outline && cd /outline# 清理旧容器/数据(避免冲突)docker-compose down -v 2>/dev/nullrm -rf postgres .env docker-compose.ymldocker system prune -f 2>/dev/null

步骤2:生成 docker-compose.yml(核心配置)

cat > docker-compose.yml <<'EOF'version: '3'services:  outline:    image: outlinewiki/outline:latest    env_file: .env    ports:      - "3000:3000"    depends_on:      - postgres      - redis    restart: always    logging:      driver: "json-file"      options:        max-size: "100m"        max-file: "3"  postgres:    image: postgres:14    environment:      POSTGRES_USER: outline      POSTGRES_PASSWORD: outline123      POSTGRES_DB: outline      # 关闭数据库SSL(关键!避免连接失败)      PGSSLMODE: disable    volumes:      - ./postgres:/var/lib/postgresql/data    restart: always    healthcheck:      test: ["CMD-SHELL", "pg_isready -U outline"]      interval: 5s      timeout: 5s      retries: 5  redis:    image: redis:7    restart: always    healthcheck:      test: ["CMD", "redis-cli", "ping"]      interval: 5s      timeout: 5s      retries: 5EOF

【已成功部署的docker-compose.yml配置】

root@iZbp142fio164aasvak4qsZ:~# cat /outline/docker-compose.ymlversion: '3'services:  outline:    image: outlinewiki/outline:latest    env_file: .env    ports:      - "3000:3000"    depends_on:      - postgres      - redis    restart: always  postgres:    image: postgres:14    environment:      POSTGRES_USER: outline      POSTGRES_PASSWORD: outline123      POSTGRES_DB: outline    volumes:      - ./postgres:/var/lib/postgresql/data    restart: always  redis:    image: redis:7    restart: alwaysroot@iZbp142fio164aasvak4qsZ:~# 

步骤 3:生成合规 .env 配置(含所有关键修复)

# 生成官方标准密钥(64位十六进制)SECRET=$(openssl rand -hex 32)UTILS=$(openssl rand -hex 32)# 写入配置文件cat > .env <<EOF# 核心密钥(官方强制要求)SECRET_KEY=$SECRETUTILS_SECRET=$UTILS# 基础网络配置URL=http://your server ip:3000PORT=3000# 数据库连接(已修复SSL问题)DATABASE_URL=postgres://outline:outline123@postgres:5432/outlineREDIS_URL=redis://redis:6379PGSSLMODE=disable# 运行环境NODE_ENV=productionALLOWED_DOMAINS=*DOMAIN_ALLOW_LIST=*FORCE_HTTPS=false# 登录修复(强制显示邮箱密码登录框)ENABLE_EMAIL_PASSWORD_LOGIN=trueDISABLE_SECURITY_STAMP=true# 图片存储配置(本地存储,避免粘贴失败)FILE_STORAGE=localLOCAL_STORAGE_PATH=/var/lib/outline/storageMAX_FILE_SIZE=52428800EOF

【已部署成功的.env配置】

root@iZbp142fio164aasvak4qsZ:~# cat /outline/.env# 核心密钥(官方标准)SECRET_KEY=67613ae4c32e6a373ee982d06a0d95d2e5e4d5f02ca19fc7394cbb49e47e318aUTILS_SECRET=42d95d962f771f052fff96c4441cf9d4a18c51b6df3033fd9e1a55ec48a210be# 基础配置URL=http://47.98.X.X:3000PORT=3000DATABASE_URL=postgres://outline:outline123@postgres:5432/outlineREDIS_URL=redis://redis:6379NODE_ENV=productionALLOWED_DOMAINS=*FORCE_HTTPS=false# 修复数据库SSL问题PGSSLMODE=disable# 强制启用邮箱密码登录(解决登录页问题)ENABLE_EMAIL_PASSWORD_LOGIN=trueDOMAIN_ALLOW_LIST=*# ====================== SMTP 邮件服务配置(方案A核心)====================== SMTP # 服务器地址(QQ邮箱为 smtp.qq.com,企业邮为 smtp.exmail.qq.com)SMTP_HOST=smtp.qq.com# SMTP 端口(TLS用587,SSL用465,推荐587)SMTP_PORT=465# SMTP 用户名(你的邮箱地址)SMTP_USERNAME=49443xxxxx@qq.com# SMTP 授权码SMTP_PASSWORD=jzvdxxxxxxxxxxxx# 发件人邮箱(和用户名一致即可,或自定义 noreply@your-domain.com)SMTP_FROM=4944xxxxxx@qq.com# 回复邮箱(可自定义)SMTP_REPLY_TO=4944xxxxxxx@qq.com# 是否开启 TLS(必须开启,对应端口587)SMTP_TLS_ENABLED=false# 是否拒绝未认证的TLS(内网环境可设为false,公网建议true)SMTP_TLS_REJECT_UNAUTHORIZED=false# 强制开启邮箱登录(部分旧版本需手动开启,新版本默认true,建议加上)ENABLE_EMAIL_LOGIN=trueSMTP_FROM_EMAIL=494xxxxxxxx@qq.comSMTP_SECURE=true# picture sizeFILE_STORAGE=localAWS_REGION=us-east-1AWS_S3_REGION=us-east-1MAX_UPLOAD_SIZE=20971520

步骤 4:启动服务

# 启动所有服务docker-compose up -d# 查看启动状态(等待30秒,确保容器不重启)docker ps

部署成功验证

CONTAINER ID   IMAGE                        STATUS         PORTSxxxxxxx        outlinewiki/outline:latest   Up 30 seconds  0.0.0.0:3000->3000/tcpxxxxxxx        postgres:14                  Up 30 seconds  5432/tcpxxxxxxx        redis:7                      Up 30 seconds  6379/tcp

❌ 异常处理:仍无法访问outline,后台查原因【outline-outline-1容器反复无限重启】

root@iZbp142fio164aasvak4qsZ:/outline# docker psCONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                                  PORTS      NAMESc72a274333f1   outlinewiki/outline:latest   "docker-entrypoint.s…"   16 seconds ago   Restarting (1) Less than a second ago              outline_outline_1dd76dd66966d   postgres:14                  "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds                           5432/tcp   outline_postgres_1e0033cc0271d   redis:7                      "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds                           6379/tcp   outline_redis_1

显示 Restarting,立即执行日志排查:

# 查看Outline错误日志docker logs --tail 50 outline_outline_1

查看当前日志,主要输出:"error":"TheserverdoesnotsupportSSLconnections"

日志清清楚楚写死PostgreSQL 数据库 SSL 连接被强制开启,但数据库没开 SSL → 直接崩溃重启!

这就是 Outline 无限重启的唯一、真正、最终原因

root@iZbp142fio164aasvak4qsZ:/outline# docker psCONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                            PORTS                                         NAMESc72a274333f1   outlinewiki/outline:latest   "docker-entrypoint.s…"   15 seconds ago   Up 3 seconds (health: starting)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp   outline_outline_1dd76dd66966d   postgres:14                  "docker-entrypoint.s…"   16 seconds ago   Up 15 seconds                     5432/tcp                                      outline_postgres_1e0033cc0271d   redis:7                      "docker-entrypoint.s…"   16 seconds ago   Up 15 seconds                     6379/tcp                                      outline_redis_1root@iZbp142fio164aasvak4qsZ:/outline# docker psCONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                                  PORTS      NAMESc72a274333f1   outlinewiki/outline:latest   "docker-entrypoint.s…"   16 seconds ago   Restarting (1) Less than a second ago              outline_outline_1dd76dd66966d   postgres:14                  "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds                           5432/tcp   outline_postgres_1e0033cc0271d   redis:7                      "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds                           6379/tcp   outline_redis_1root@iZbp142fio164aasvak4qsZ:/outline# docker logs --tail 30 outline_outline_1{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"error":"The server does not support SSL connections","level":"error","message":"The database does not support SSL connections. Set the `PGSSLMODE` environment variable to `disable` or enable SSL on your database server.","stack":"SequelizeConnectionError: The server does not support SSL connections\n    at Client._connectionCallback (/opt/outline/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:149:20)\n    at Client._handleErrorWhileConnecting (/opt/outline/node_modules/pg/lib/client.js:336:19)\n    at Client._handleErrorEvent (/opt/outline/node_modules/pg/lib/client.js:346:19)\n    at Connection.emit (node:events:519:28)\n    at Connection.emit (node:domain:489:12)\n    at Socket.<anonymous> (/opt/outline/node_modules/pg/lib/connection.js:76:23)\n    at Object.onceWrapper (node:events:634:26)\n    at Socket.emit (node:events:519:28)\n    at Socket.emit (node:domain:489:12)\n    at addChunk (node:internal/streams/readable:561:12)\n    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n    at Readable.push (node:internal/streams/readable:392:5)\n    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)"}{"label":"lifecycle","level":"info","message":"Gracefully quitting"}{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"error":"The server does not support SSL connections","level":"error","message":"The database does not support SSL connections. Set the `PGSSLMODE` environment variable to `disable` or enable SSL on your database server.","stack":"SequelizeConnectionError: The server does not support SSL connections\n    at Client._connectionCallback (/opt/outline/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:149:20)\n    at Client._handleErrorWhileConnecting (/opt/outline/node_modules/pg/lib/client.js:336:19)\n    at Client._handleErrorEvent (/opt/outline/node_modules/pg/lib/client.js:346:19)\n    at Connection.emit (node:events:519:28)\n    at Connection.emit (node:domain:489:12)\n    at Socket.<anonymous> (/opt/outline/node_modules/pg/lib/connection.js:76:23)\n    at Object.onceWrapper (node:events:634:26)\n    at Socket.emit (node:events:519:28)\n    at Socket.emit (node:domain:489:12)\n    at addChunk (node:internal/streams/readable:561:12)\n    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n    at Readable.push (node:internal/streams/readable:392:5)\n    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)"}{"label":"lifecycle","level":"info","message":"Gracefully quitting"}{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"error":"The server does not support SSL connections","level":"error","message":"The database does not support SSL connections. Set the `PGSSLMODE` environment variable to `disable` or enable SSL on your database server.","stack":"SequelizeConnectionError: The server does not support SSL connections\n    at Client._connectionCallback (/opt/outline/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:149:20)\n    at Client._handleErrorWhileConnecting (/opt/outline/node_modules/pg/lib/client.js:336:19)\n    at Client._handleErrorEvent (/opt/outline/node_modules/pg/lib/client.js:346:19)\n    at Connection.emit (node:events:519:28)\n    at Connection.emit (node:domain:489:12)\n    at Socket.<anonymous> (/opt/outline/node_modules/pg/lib/connection.js:76:23)\n    at Object.onceWrapper (node:events:634:26)\n    at Socket.emit (node:events:519:28)\n    at Socket.emit (node:domain:489:12)\n    at addChunk (node:internal/streams/readable:561:12)\n    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n    at Readable.push (node:internal/streams/readable:392:5)\n    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)"}{"label":"lifecycle","level":"info","message":"Gracefully quitting"}{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"error":"The server does not support SSL connections","level":"error","message":"The database does not support SSL connections. Set the `PGSSLMODE` environment variable to `disable` or enable SSL on your database server.","stack":"SequelizeConnectionError: The server does not support SSL connections\n    at Client._connectionCallback (/opt/outline/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:149:20)\n    at Client._handleErrorWhileConnecting (/opt/outline/node_modules/pg/lib/client.js:336:19)\n    at Client._handleErrorEvent (/opt/outline/node_modules/pg/lib/client.js:346:19)\n    at Connection.emit (node:events:519:28)\n    at Connection.emit (node:domain:489:12)\n    at Socket.<anonymous> (/opt/outline/node_modules/pg/lib/connection.js:76:23)\n    at Object.onceWrapper (node:events:634:26)\n    at Socket.emit (node:events:519:28)\n    at Socket.emit (node:domain:489:12)\n    at addChunk (node:internal/streams/readable:561:12)\n    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n    at Readable.push (node:internal/streams/readable:392:5)\n    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)"}{"label":"lifecycle","level":"info","message":"Gracefully quitting"}root@iZbp142fio164aasvak4qsZ:/outline#

加了一行官方要求的关键配置

PGSSLMODE=disable

作用:强制关闭 PostgreSQL SSL 连接,和现在的数据库匹配,不再报错!

root@iZbp142fio164aasvak4qsZ:~# docker psCONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS                  PORTS                                         NAMES0c322b838ca8   outlinewiki/outline:latest   "docker-entrypoint.s…"   11 hours ago   Up 11 hours (healthy)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp   outline-outline-1305f5b4e581e   postgres:14                  "docker-entrypoint.s…"   11 hours ago   Up 11 hours             5432/tcp                                      outline-postgres-1e6459a9ed48d   redis:7                      "docker-entrypoint.s…"   11 hours ago   Up 11 hours             6379/tcp                                      outline-redis-1root@iZbp142fio164aasvak4qsZ:~# 

1.2初尝试:采用在线安装

PS:本节在线安装最后并未安装成功,仅做安装记录以及经验总结,如需直接安装,请跳过此节

docker和docker-compose安装都无问题,但是在拉去outline镜像的时候,发现无法从docker上下载下来,具体原因是:docker无法直接访问下载且国内的镜像源都挂了,无法使用。

部署过程:

1.部署docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose# 添加执行权限sudo chmod +x /usr/local/bin/docker-compose# 测试是否安装成功docker-compose --version

这一段的作用:自动获取 Docker Compose 最新版本号(比如 v2.29.1)

/usr/local/bin/docker-compose:把下载的文件,安装到系统可执行目录,让你全局能用 docker-compose 命令

这里我犯了一个错误,还未安装docker就直接安装docker-compose了,因为对docker不是很熟悉,所以在执行docker-compose up -d

root@iZkk02hybu54hvZ:/outline# docker compose up -dCommand 'docker' not found, but can be installed with:apt install docker.io

Docker 根本没安装,所以 docker 命令找不到。

2.安装docker

因为可以直接连接互联网,所以直接采用apt安装

apt update && apt install docker.io -y#启动 Docker 并设置开机自启systemctl start docker && systemctl enable docker

3.验证安装成功

docker --versiondocker-compose --version

4.创建并进入项目目录。

mkdir outline && cd outline

5.用命令 sudo vim docker-compose.yml 创建 docker-compose.yml 文件并填入以下内容。

version: '3.8'services:  outline:    image: outlinewiki/outline:0.84.0    ports: ["3001:3000"]    env_file: .env    environment:      - URL=http://你的服务器 IP:3001      - DATABASE_URL=postgres://postgres:postgres@db/outline      - REDIS_URL=redis://redis:6379      - NODE_ENV=production      - FORCE_HTTPS=false      - PGSSLMODE=disable    depends_on:      db:        condition: service_healthy      redis:        condition: service_started  db:    image: postgres:16    environment:      POSTGRES_USER: postgres      POSTGRES_PASSWORD: postgres      POSTGRES_DB: outline    healthcheck:      test: ["CMD-SHELL", "pg_isready -U postgres"]    volumes:      - pgdata:/var/lib/postgresql/data  redis:    image: redis:7    healthcheck:      test: ["CMD", "redis-cli", "ping"]volumes:  pgdata:

6.生成密钥

echo "SECRET_KEY=$(openssl rand -hex 32)" > .envecho "UTILS_SECRET=$(openssl rand -hex 32)" >> .env

7.启动outline服务,发现报错

docker compose up -dWARN[0000] /outline/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion [+] up 3/3 ✘ Image postgres:16                Error Get "https://registry-1.docker.io/v2/...       15.0s ! Image redis:7                    Interrupted                                          15.0s ! Image outlinewiki/outline:0.84.0 Interrupted                                          15.0sError response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

现在Docker 和 Docker Compose 都已经装好了! 报错是因为:从官方仓库拉取 Docker 镜像超时(网络问题)

测试一下官方仓库是否能访问,仍报错。

root@iZkk02hybu54hvZ:/outline# docker pull hello-worldUsing default tag: latestError response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

采用解决国内镜像加速,来解决问题!

cat > /etc/docker/daemon.json << EOF{  "registry-mirrors": [    "https://docker.mirrors.ustc.edu.cn",    "https://hub-mirror.c.163.com",    "https://mirror.baidubce.com"  ]}EOF

重启docker生效

systemctl daemon-reloadsystemctl restart docker

修改国内镜像源后,再次尝试,仍然报错!!!

root@iZkk02hybu54hvZ:/outline# docker-compose up -dWARN[0000] /outline/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion [+] up 3/3 ! Image docker.registry.docker-cn.com/library/postgres:16     Interrupted   0.0s ! Image docker.registry.docker-cn.com/library/redis:7         Interrupted   0.0s ✘ Image docker.mirrors.ustc.edu.cn/outlinewiki/outline:0.84.0 Error         0.0sError response from daemon: Get "https://docker.mirrors.ustc.edu.cn/v2/": dial tcp: lookup docker.mirrors.ustc.edu.cn on 127.0.0.53:53: no such host

现在的状态

Docker 装好了 ✅

Docker Compose 装好了 ✅

服务器环境没问题 ✅

但是:国内服务器完全无法拉取 Docker 镜像,这是硬性限制,无解!❌

!!!我的阿里云服务器(国内)能ping通www.docker.com为什么不能直接在线拉取docker?

root@iZkk02hybu54hvZ:/outline# ping www.docker.comPING fe4.edge.pantheon.io (23.185.0.4) 56(84) bytes of data.64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=1 ttl=50 time=204 ms64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=2 ttl=50 time=204 ms64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=3 ttl=50 time=203 ms64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=4 ttl=50 time=204 ms64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=5 ttl=50 time=204 ms64 bytes from 23.185.0.4 (23.185.0.4): icmp_seq=6 ttl=50 time=204 ms

豆包给我的回复:

  1. 你 ping 的是:www.docker.com(官网) 这个是介绍 Docker 的网站,相当于 「苹果官网」 能打开,不代表你能下载 APP!

  2. Docker 下载镜像的地址是:registry-1.docker.io 这个是应用商店,国内被防火墙严格限制!

真实区别

www.docker.com → 你能访问 ✅

registry-1.docker.io → 国内服务器无法访问 ❌

你 ping 通的是前者,下载镜像用的是后者!

这就是为什么:

你能 ping 通百度 ✅

能 ping 通 docker.com ✅

但下载镜像一直超时 / 失败 ❌

再给你打个最形象的比方

ping www.docker.com = 你能看到苹果官网

下载镜像 = 你想从美国 App Store 下载微信

国内网络不让你直接连美国应用商店,但允许你看苹果官网!

然后无路可走了,====选择离线安装=====

1.3再尝试:采用离线安装

离线安装总共就 4 步

  1. 你自己的电脑(Windows/Mac)下载 3 个镜像

  2. 导出成文件

  3. 传到你的阿里云服务器

  4. 在服务器导入 → 直接启动!

第一步:在你电脑上安装 Docker(免费、5 分钟)

你电脑必须装 Docker,才能下载镜像文件。

下载地址(官方免费):

https://www.docker.com/products/docker-desktop/

安装好 → 打开 → 保持运行(右下角有鲸鱼图标就对了)。

【这里又要展开长篇大论了,因为安装docker-desktop并下载镜像也不是一个容易的事!】

首先到官网的desktop中下载安装包;

下载下来后,还不能直接使用,打开docker desktop后,提示wsl版本有问题,要下载最新的wsl;

报错提示如下:

WSL needs updating Your version of Windows Subsystem for Linux (WSL) is too old. Run the command below to update or for more information, visit .the Microsoft WSL documentation  wsl --update

尝试过在CMD中输入,wsl --update 不生效;

如何下载最新的wsl呢,可以在github上下载,但由于网络原因一直无法下载,通过寻找其他方式解决;

通过网盘分享的文件:wsl.2.6.3.0.x64.msi 链接: https://pan.baidu.com/s/1gLp9pAzRSHzt9ub-TI1s1w?pwd=3bva 提取码: 3bva

下载后是一个MSI程序,直接运行安装即可,然后CMD可以验证wsl版本

最终才正常↓

到这一步是不是觉得OK了,可以去下载docker镜像了?

NO!

还需要修改Docker Engine里面的配置;

默认配置:

{  "builder": {    "gc": {      "defaultKeepStorage": "20GB",      "enabled": true    }  },  "experimental": false}

可用配置:

{  "registry-mirrors": [    "https://docker.1ms.run",    "https://docker.mirrors.ustc.edu.cn"  ]}

至此,电脑上安装docker desktop才完成!

第二步:在你电脑下载 3 个镜像(国内能下)

无需登录,即可通过命令下载对应的docker镜像

打开你电脑的 CMD(命令提示符),分别运行这 3 行:

docker pull postgres:14docker pull redis:7docker pull outlinewiki/outline:latest

这 3 个就是 Outline 必须的软件!

第三步:把镜像导出成文件(变成压缩包)

继续在电脑 CMD 里输入:

docker save -o postgres14.tar postgres:14docker save -o redis7.tar redis:7docker save -o outline.tar outlinewiki/outline:latest

第四步:把这 3 个文件传到阿里云服务器

你用任意传输工具都行:

  • Xshell

  • FinalShell

  • 宝塔面板

  • scp 命令

传到服务器的这个目录:/outline/

第五步:安装docker镜像

然后依次导入 3 个文件:

docker load -i postgres14.tar docker load -i redis7.tar docker load -i outline.tar

第六步:直接启动 Outline!

docker-compose up -ddocker ps

✅ 恭喜!部署成功!

打开浏览器访问:

http://ip:3000

2.基本使用

首次登录时,会要求输入【工作区】【邮箱】【管理员名称】这三个信息,输入后即可进入管理界面

坑来了!如果你建立账户后,退出登录了,就再也登录不上了(显示登录到工作区,但是没有任何认证方式),在这种情况下,我至今没找到解决办法;

无法登录时显示,无任何认证方式

我是如何处理的呢?

我直接重新安装了一遍; 重新建立工作区以及管理员账户,登入后,立马对接邮箱认证,这时候才会出现邮箱认证; 用当前管理员账户,邀请另外一个账号,然后会发送邀请到邮箱,在邮箱里面验证后,即可用新账号登录

邮件认证对接成功后,显示有认证方式

所以,在初次私有化部署后,切记,一定要先对接认证方式,可以是邮箱、也可以是github等

2.1对接邮件认证

在“偏好设置中,找到工作区--认证”,打开电子邮件认证

这时候,会发现电子邮件认证的开关点不动!

需要进入后台修改.env的配置环境,我的修改主要在21-41

root@iZbp142fio164aasvak4qsZ:/outline# cat .env# 核心密钥(官方标准)SECRET_KEY=67613ae4c32e6a373ee982d06a0d95d2e5e4d5f02ca19fc7394cbb49e47e318aUTILS_SECRET=42d95d962f771f052fff96c4441cf9d4a18c51b6df3033fd9e1a55ec48a210be# 基础配置URL=http://47.98.235.112:3000PORT=3000DATABASE_URL=postgres://outline:outline123@postgres:5432/outlineREDIS_URL=redis://redis:6379NODE_ENV=productionALLOWED_DOMAINS=*FORCE_HTTPS=false# 修复数据库SSL问题PGSSLMODE=disable# 强制启用邮箱密码登录(解决登录页问题)ENABLE_EMAIL_PASSWORD_LOGIN=trueDOMAIN_ALLOW_LIST=*# ====================== SMTP 邮件服务配置(方案A核心)====================== SMTP # 服务器地址(QQ邮箱为 smtp.qq.com,企业邮为 smtp.exmail.qq.com)SMTP_HOST=smtp.qq.com# SMTP 端口(TLS用587,SSL用465,推荐587)SMTP_PORT=465# SMTP 用户名(你的邮箱地址)SMTP_USERNAME=49443030*@qq.com# SMTP 授权码(需要去邮箱设置里面生成,如果是163企业邮箱直接就是密码)SMTP_PASSWORD=jzvdozhxrjlzcage# 发件人邮箱(和用户名一致即可,或自定义 noreply@your-domain.com)SMTP_FROM=49443030*@qq.com# 回复邮箱(可自定义,基本保持一致即可)SMTP_REPLY_TO=49443030*@qq.com# 是否开启 TLS(必须开启,对应端口587)SMTP_TLS_ENABLED=false# 是否拒绝未认证的TLS(内网环境可设为false,公网建议true)SMTP_TLS_REJECT_UNAUTHORIZED=false# 强制开启邮箱登录(部分旧版本需手动开启,新版本默认true,建议加上)ENABLE_EMAIL_LOGIN=trueSMTP_FROM_EMAIL=49443030*@qq.comSMTP_SECURE=true# picture sizeFILE_STORAGE=localAWS_REGION=us-east-1AWS_S3_REGION=us-east-1MAX_UPLOAD_SIZE=20971520

如果是追加这些内容,可以使用以下命令:

nano .env

把光标移到文件最后一行,粘贴完整的 SMTP 配置块

按 Ctrl+O → 按回车确认保存 → 按 Ctrl+X 退出 nano

邮箱配置以及获取授权码:

QQ 邮箱:SMTP 服务器 smtp.qq.com,端口 587,授权码需在邮箱设置中开启。

3.问题处理

3.1邮箱认证按钮无法打开

因为后台.env里面没有邮箱的配置,因此无法打开

按照2.1完成邮箱配置后,即可以打开,并使用邮箱魔法验证

3.2图片无法上传问题处理

截图后想粘贴到文档中,发现报错了,无法上传,报错代码:error 500

寻找解决方案:

Outline 粘贴图片报 500 错误,核心多为存储权限、MinIO 配置、文件系统权限或服务异常,按以下步骤排查即可解决。

尝试修改添加图片大小配置,在.env配置文件中添加

MAX_UPLOAD_SIZE=10485760
  1. 先看真正的上传错误日志(必做)

    执行这条命令,只看图片上传相关的错误: bash 运行

docker logs outline 2>&1 | grep -i "file|upload|500|s3|storage"

报错日志详细输出:

root@iZbp142fio164aasvak4qsZ:/outline# docker logs outline --tail 50Error response from daemon: No such container: outline#注意,这里容器的名称不是outline,而是outline-outline-1通过docker ps 查看容器名称:NAMESroot@iZbp142fio164aasvak4qsZ:/outline# docker psCONTAINER ID   IMAGE                        COMMAND                  CREATED             STATUS                       PORTS                                         NAMES3fdae8d34399   outlinewiki/outline:latest   "docker-entrypoint.s…"   About an hour ago   Up About an hour (healthy)   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp   outline-outline-148e5ace50fc2   postgres:14                  "docker-entrypoint.s…"   About an hour ago   Up About an hour             5432/tcp                                      outline-postgres-1a736791fdc18   redis:7                      "docker-entrypoint.s…"   About an hour ago   Up About an hour             6379/tcproot@iZbp142fio164aasvak4qsZ:/outline# docker logs outline-outline-1 --tail 50{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"label":"lifecycle","level":"info","message":"\nIs your team enjoying Outline? Consider supporting future development by sponsoring the project:\n\nhttps://github.com/sponsors/outline\n"}{"label":"lifecycle","level":"info","message":"Note: Restricting process count to 1 due to use of collaborative service without REDIS_COLLABORATION_URL"}{"label":"lifecycle","level":"info","message":"Starting collaboration service"}{"label":"lifecycle","level":"info","message":"Starting websockets service"}{"label":"lifecycle","level":"info","message":"Starting worker service"}{"label":"lifecycle","level":"info","message":"Starting web service"}{"level":"warn","message":"Enforced https was disabled with FORCE_HTTPS env variable"}{"label":"lifecycle","level":"info","message":"Listening on http://localhost:3000 / http://47.98.235.112:3000"}{"label":"multiplayer","level":"info","message":"New connection to \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\""}{"label":"database","level":"info","message":"Document f547f888-84d5-43b0-ac79-8801e96d1edd is in database state"}{"label":"multiplayer","level":"info","message":"Loaded document \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\"","userId":"5cb10515-a2ed-442b-a295-a4d468a1499d"}{"label":"multiplayer","level":"info","message":"Authenticated connection to \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\""}{"label":"multiplayer","level":"info","message":"Closed connection to \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\"","userId":"5cb10515-a2ed-442b-a295-a4d468a1499d"}{"label":"multiplayer","level":"info","message":"New connection to \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\""}{"label":"database","level":"info","message":"Document f547f888-84d5-43b0-ac79-8801e96d1edd is in database state"}{"label":"multiplayer","level":"info","message":"Loaded document \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\"","userId":"5cb10515-a2ed-442b-a295-a4d468a1499d"}{"label":"multiplayer","level":"info","message":"Authenticated connection to \"document.f547f888-84d5-43b0-ac79-8801e96d1edd\""}{"attempt":0,"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","changes":null,"collectionId":null,"createdAt":"2026-03-31T16:00:58.717Z","data":null,"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"fa54c065-4d42-4a77-8437-06bb8d4b50fb","ip":"113.247.183.219","modelId":"c4854297-2808-4287-ad11-a0a6fe0ef368","name":"views.create","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8","userId":"5cb10515-a2ed-442b-a295-a4d468a1499d"},"label":"worker","level":"info","message":"Processing views.create"}{"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","changes":null,"collectionId":null,"createdAt":"2026-03-31T16:00:58.717Z","data":null,"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"fa54c065-4d42-4a77-8437-06bb8d4b50fb","ip":"113.247.183.219","modelId":"c4854297-2808-4287-ad11-a0a6fe0ef368","name":"views.create","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8","userId":"5cb10515-a2ed-442b-a295-a4d468a1499d"},"label":"worker","level":"info","message":"WebhookProcessor running views.create"}{"label":"multiplayer","level":"info","message":"Persisting f547f888-84d5-43b0-ac79-8801e96d1edd, attributed to 5cb10515-a2ed-442b-a295-a4d468a1499d"}{"attempt":0,"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","collectionId":"6721cb41-3819-45c3-bece-e65d2186dc54","createdAt":"2026-03-31T16:00:59.063Z","data":{"done":false,"multiplayer":true,"title":"outline-安装教程"},"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"39d68a08-2e47-440f-8847-437f00a199a1","name":"documents.update","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8"},"label":"worker","level":"info","message":"Processing documents.update"}{"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","collectionId":"6721cb41-3819-45c3-bece-e65d2186dc54","createdAt":"2026-03-31T16:00:59.063Z","data":{"done":false,"multiplayer":true,"title":"outline-安装教程"},"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"39d68a08-2e47-440f-8847-437f00a199a1","name":"documents.update","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8"},"label":"worker","level":"info","message":"BacklinksProcessor running documents.update"}{"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","collectionId":"6721cb41-3819-45c3-bece-e65d2186dc54","createdAt":"2026-03-31T16:00:59.063Z","data":{"done":false,"multiplayer":true,"title":"outline-安装教程"},"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"39d68a08-2e47-440f-8847-437f00a199a1","name":"documents.update","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8"},"label":"worker","level":"info","message":"DebounceProcessor running documents.update"}{"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","collectionId":"6721cb41-3819-45c3-bece-e65d2186dc54","createdAt":"2026-03-31T16:00:59.063Z","data":{"done":false,"multiplayer":true,"title":"outline-安装教程"},"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"39d68a08-2e47-440f-8847-437f00a199a1","name":"documents.update","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8"},"label":"worker","level":"info","message":"RevisionsProcessor running documents.update"}{"event":{"actorId":"5cb10515-a2ed-442b-a295-a4d468a1499d","authType":"app","collectionId":"6721cb41-3819-45c3-bece-e65d2186dc54","createdAt":"2026-03-31T16:00:59.063Z","data":{"done":false,"multiplayer":true,"title":"outline-安装教程"},"documentId":"f547f888-84d5-43b0-ac79-8801e96d1edd","id":"39d68a08-2e47-440f-8847-437f00a199a1","name":"documents.update","teamId":"4acd7452-6049-4185-b42d-09b1f3339fb8"},"label":"worker","level":"info","message":"WebhookProcessor running documents.update"}Error: Region is missing    at default (/opt/outline/node_modules/@smithy/config-resolver/dist-cjs/index.js:70:15)    at /opt/outline/node_modules/@smithy/node-config-provider/dist-cjs/index.js:54:83    at /opt/outline/node_modules/@smithy/property-provider/dist-cjs/index.js:50:39    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)    at async coalesceProvider (/opt/outline/node_modules/@smithy/property-provider/dist-cjs/index.js:76:24)    at async /opt/outline/node_modules/@smithy/property-provider/dist-cjs/index.js:88:28    at async Object.region (/opt/outline/node_modules/@smithy/config-resolver/dist-cjs/index.js:107:67)    at async createPresignedPost (/opt/outline/node_modules/@aws-sdk/s3-presigned-post/dist-cjs/index.js:22:26)    at async /opt/outline/build/server/routes/api/attachments/attachments.js:132:25    at async /opt/outline/node_modules/sequelize/lib/sequelize.js:507:18    at async transactionMiddleware (/opt/outline/build/server/middlewares/transaction.js:17:5)    at async verifyCSRFTokenMiddleware (/opt/outline/build/server/middlewares/csrf.js:106:5)    at async apiErrorHandlerMiddleware (/opt/outline/build/server/routes/api/middlewares/apiErrorHandler.js:12:7)    at async apiResponseMiddleware (/opt/outline/build/server/routes/api/middlewares/apiResponse.js:12:5)    at async requestTracerMiddleware (/opt/outline/build/server/middlewares/requestTracer.js:21:5)    at async userAgent (/opt/outline/node_modules/koa-useragent/dist/index.js:12:5)    at async /opt/outline/node_modules/koa-mount/index.js:62:7    at async compressMiddleware (/opt/outline/node_modules/koa-compress/lib/index.js:56:5)    at async userAgent (/opt/outline/node_modules/koa-useragent/dist/index.js:12:5)root@iZbp142fio164aasvak4qsZ:/outlin

终于找到报错根源了!

日志里明确写着:

🟥 Error: Region is missing(缺少区域配置)

这就是导致图片上传 500 错误 的直接原因!

10 秒修复方法(复制粘贴即可)

第一步:编辑 .env 配置文件

bash

运行

cd/outlinevi.env

第二步:添加 / 修改这 3 行配置(必须加)

找到文件里的存储配置,确保有这 3 行

ini

FILE_STORAGE=local

AWS_REGION=us-east-1

AWS_S3_REGION=us-east-1

第三步:重启服务生效

bash

运行

dockercomposedown&&dockercomposeup-d

第四步:刷新网页

现在去粘贴图片 → 立刻正常!

为什么会报错?

你用的是 本地文件存储,但 Outline 1.6.1 有个小强制要求:

就算不用 S3/MinIO,也必须填写一个默认的 Region 区域配置,否则就会报 Regionismissing → 500 错误。

加 us-east-1 只是填一个默认值,不会影响你的本地存储


总结

  1. 报错根因:缺少 Region 配置项

  2. 修复方法:.env 加 AWS_REGION=us-east-1

  3. 重启服务 → 图片上传恢复正常

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-18 15:47:17 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/641579.html
  2. 运行时间 : 0.126844s [ 吞吐率:7.88req/s ] 内存消耗:4,774.16kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6a12c643bb70c3339561b48df1241a2e
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000769s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001192s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000553s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000509s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001065s ]
  6. SELECT * FROM `set` [ RunTime:0.000853s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001121s ]
  8. SELECT * FROM `article` WHERE `id` = 641579 LIMIT 1 [ RunTime:0.007579s ]
  9. UPDATE `article` SET `lasttime` = 1779090437 WHERE `id` = 641579 [ RunTime:0.011309s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000590s ]
  11. SELECT * FROM `article` WHERE `id` < 641579 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001133s ]
  12. SELECT * FROM `article` WHERE `id` > 641579 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004593s ]
  13. SELECT * FROM `article` WHERE `id` < 641579 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002802s ]
  14. SELECT * FROM `article` WHERE `id` < 641579 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002002s ]
  15. SELECT * FROM `article` WHERE `id` < 641579 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005448s ]
0.129903s