在 Linux 上部署 Sally Office
版本要求
| 软件 | 版本 |
|---|---|
| WPS | WPS 11 或 WPS 12 |
| Office | Office 2024 +,Office 365 |
安装 Sally
获取镜像 (任选其一)
A. 从 Docker Hub 拉取 (最快)
docker pull sallysuite/sally-officeB. 离线包 (内网隔离 / 低带宽)
从 https://sallybot.cn#support (opens in a new tab) 下载 docker 离线包,然后执行:
docker load -i sally-office<version>.tar
docker images # 验证镜像是否存在单容器试用 (HTTP :3000)
适合本地开发。插件功能需要 HTTPS – 生产环境请继续阅读第 3 节。
docker run -d -p 3000:3000 sallysuite/sally-office访问 http://localhost:3000。
生产环境栈 – HTTPS & Nginx 反向代理
你可以从这里克隆 Git 仓库以获取 docker-compose.yml 文件:deploy-sally-on-linux (opens in a new tab)
推荐的文件夹布局:
project-root/
├── docker-compose.yml # *.sqlite.yml / *.postgres.yml 的符号链接或副本
└── nginx-proxy/
├── nginx.conf # 第 5 节
└── ssl/
├── localhost.pem
└── localhost-key.pem运行以下命令启动容器:
# SQLite (轻量级)
docker compose up -d -f docker-compose.sqlite.yml
# PostgreSQL (生产推荐)
docker compose up -d -f docker-compose.postgres.ymlDocker-Compose 参考
SQLite 版本
services:
app:
image: sally-office:latest
restart: always
ports: ["3000:3000"]
environment:
NEXTAUTH_URL: "https://localhost"
DOMAIN_NAME: "https://localhost"
ADMIN_EMAILS: "admin@sallyoffice.com"
ADMIN_PASSWORD: "admin123"
NEXTAUTH_SECRET: "SALLYOFFICE" # 生产环境请修改
NEXT_PUBLIC_VERCEL_ENV: production
ENABLE_ADMIN_AUTH: "true"
nginx-proxy:
image: nginx:alpine
container_name: nginx-proxy
restart: always
ports: ["80:80", "443:443"]
volumes:
- ./nginx-proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx-proxy/ssl:/etc/nginx/ssl:ro
depends_on: [app]PostgreSQL 版本
services:
app:
image: sally-office:latest
restart: always
ports: ["3000:3000"]
depends_on: [db]
environment:
NEXTAUTH_URL: "https://localhost"
DOMAIN_NAME: "https://localhost"
ADMIN_EMAILS: "admin@sallyoffice.com"
ADMIN_PASSWORD: "admin123"
NEXTAUTH_SECRET: "SALLYOFFICE"
NEXT_PUBLIC_VERCEL_ENV: production
ENABLE_ADMIN_AUTH: "true"
POSTGRES_DATABASE: sallyoffice
POSTGRES_HOST: db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: passowrd01
DATABASE_URL: postgres://postgres:passowrd01@db:5432/sallyoffice
db:
image: postgres:16-alpine
container_name: postgres-db
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: passowrd01
POSTGRES_DB: sallyoffice
volumes:
- postgres_data:/var/lib/postgresql/data
ports: ["5432:5432"] # 如果仅限内部访问可以移除
proxy:
image: nginx:alpine
container_name: nginx-proxy
restart: always
ports: ["80:80", "443:443"]
volumes:
- ./nginx-proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx-proxy/ssl:/etc/nginx/ssl:ro
depends_on: [app]
volumes:
postgres_data:Nginx 配置 (nginx.conf)
用于 nginx-proxy/nginx.conf 的配置文件。
功能:HTTP 强制跳转 HTTPS、静态资源缓存、gzip 压缩、/api/chat_proxy 流式传输无缓冲。
# ---------------- HTTP ----------------
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
# ---------------- HTTPS ----------------
server {
listen 443 ssl http2;
server_name _;
ssl_certificate /etc/nginx/ssl/localhost.pem;
ssl_certificate_key /etc/nginx/ssl/localhost-key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# add_header Strict-Transport-Security "max-age=63072000" always; # 测试通过后开启
# 静态库和字体 – 缓存 1 天
location ~* ^/(lib|font) {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
expires 1d;
add_header Cache-Control "public, max-age=86400";
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_comp_level 6;
gzip_min_length 1000;
}
# 流式聊天代理 – 禁用缓冲
location /api/chat_proxy {
proxy_pass http://app:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding on;
proxy_buffering off;
proxy_cache off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 默认前端
location / {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}SSL 证书准备
本地自签名证书 (365 天)
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout localhost-key.pem -out localhost.pem -days 365 \
-subj "/CN=localhost"生产环境
将来自 Let’s Encrypt 或任何 CA 颁发的有效证书/密钥放置到:
./nginx-proxy/ssl/localhost.pem
./nginx-proxy/ssl/localhost-key.pem
并相应地更新 server_name。
常用命令
# 查看日志
docker compose logs -f app
docker compose logs -f nginx-proxy
# 重启
docker compose restart
# 更新镜像
docker compose pull && docker compose up -d现在你已经拥有了:
- 开发模式 – 运行在 HTTP 上的单容器
- 生产模式 – 开启 HTTPS、静态资源缓存、流式聊天接口、可选的 PostgreSQL 数据库
复制你需要的片段,尽情使用 Sally Office 吧!
配置
配置模型
启动 Sally 后,点击左侧菜单中的设置图标。

在左侧导航中选择 模型 (Models)。左侧显示模型提供商列表,右侧显示模型列表。

你可以选择模型提供商,在提供商官网注册以获取 API Key,填入 API Key,并选择你想要使用的模型。

你还可以配置企业内部部署的私有模型,获取私有模型的 Base URL、API Key 和 模型名称,点击 + 按钮,添加新模型。

配置搜索服务
目前搜索服务使用的是 searchapi 接口。
获取 API KEY:登录官网获取 API KEY:https://www.searchapi.io/ (opens in a new tab)
- 选择 文本搜索 (Text Search),设置文本搜索。Searchapi 同时支持 Google 搜索和百度搜索。
- 选择 图片搜索 (Image Search),设置图片搜索。
Office 加载项部署
下载清单文件 (Manifest)
点击左侧的 Manifest 菜单进入清单文件页面,页面分为两个配置文件:
- Office (Word, Excel, PowerPoint)
- Outlook
选择 Office 或 Outlook。
⚠️ 线上设置的域名必须是使用 HTTPS 协议的域名。
点击 下载 (Download) 下载 Manifest 文件。
在 Windows 上部署清单文件
- 将 Manifest 文件复制到一个文件夹
- 将该文件夹设置为共享文件夹
- 将共享文件夹添加到受信任的加载项位置:
文件 > 选项 > 信任中心 > 信任中心设置 > 受信任的加载项位置 - 打开 Word,点击 加载项 → 获取加载项,在 “共享” 选项卡中选择 Sally,然后点击 添加。
在 Mac Office 上部署清单文件
使用访达 (Finder) 安装清单文件:
- 打开访达,然后按
Cmd+Shift+G打开 “前往文件夹” 对话框。 - 输入以下路径之一 (如果缺少
wef文件夹请创建):
- Word:
/Users/<username>/Library/Containers/com.microsoft.Word/Data/Documents/wef - Excel:
/Users/<username>/Library/Containers/com.microsoft.Excel/Data/Documents/wef - PowerPoint:
/Users/<username>/Library/Containers/com.microsoft.Powerpoint/Data/Documents/wef
注意:其余步骤说明如何旁加载 Word 加载项。
将你的加载项清单文件复制到此 wef 文件夹中。

打开 Word (如果已运行请重启),然后打开一个文档。转到 开始 > 加载项,然后从菜单中选择你的加载项。
确认你的加载项在 Word 中显示。

WPS 插件部署
获取插件安装地址
在后台选择菜单:WPS 加载项 (WPS Add-in),查看加载项安装地址。
示例:https://localhost:5893/wps-doc/entry/publish.html
插件安装
- 将插件安装地址复制到浏览器中。
- 安装前,打开 WPS,刷新页面,插件安装页面将显示两个插件:
- wps-sheet:对应表格插件
- wps-doc:对应文字插件

- 点击 安装,会提示配置成功。
- 打开 WPS 文字,稍等片刻,会出现 Sally 菜单,表示安装成功。

点击启动 Sally,在侧边栏选择模型,即可开始与模型对话。

联系我们
如果在部署过程中遇到任何问题,请通过 sally-suite@hotmail.com 联系我们。