Ubuntu 22.04 安装 ownCloud oCIS 指南
Ubuntu 22.04 以官方单二进制安装 ownCloud Infinite Scale(oCIS)8.1.0 production:ocis init 初始化、ocis.env 环境变量、systemd 托管、Web 登录与 WebDAV 上传下载闭环全量实测,含前台运行方案、8.1.0→8.2.2 升级与卸载清理。
Ubuntu 22.04 安装 ownCloud oCIS 指南
目标:在一台 Ubuntu 22.04 服务器上,以官方单二进制方式安装 ownCloud Infinite Scale(oCIS)8.1.0(Production 稳定通道),完成
ocis init初始化、环境变量配置、systemd 服务托管、Web 登录与 WebDAV 上传下载闭环验证;同时给出前台手动运行方案、升级与卸载的完整操作。本文全部命令与回显均在 Ubuntu 22.04.5 LTS 真实服务器上逐条实测通过(实测版本8.1.0+730d9a04,编译日期 2026-07-06)。
一、环境信息
本文实测所用的服务器环境如下(IP 与资源规格请按自己的服务器实际值替换):
| 项目 | 取值 |
|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS |
| 内核 | 6.8.0-138-generic |
| CPU / 内存 | 12 核 / 31Gi |
| 服务器 IP | 10.89.61.3(正文命令中按实际替换) |
| oCIS 服务端口 | 9200(HTTPS,proxy 服务统一入口) |
| 软件版本 | ownCloud Infinite Scale 8.1.0(Production) |
系统基础信息实测回显:
$ uname -a
Linux ocis-config 6.8.0-138-generic #138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 7 13:43:15 UTC x86_64 x86_64 x86_64 GNU/Linux
$ head -3 /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
$ nproc
12
$ free -h | head -2
total used free shared buff/cache available
Mem: 31Gi 7.3Gi 4.4Gi 300Mi 19Gi 23Gi
💡 说明:oCIS 对硬件要求很低——官方文档定位"from a Raspberry Pi to a Kubernetes cluster",最小可用实例内存占用百 MB 级(本文实测 systemd 托管后稳态内存约 90–240 MB)。生产环境建议至少 2 核 4GB 与独立数据盘。
二、前置条件
2.1 系统更新与基础工具
安装过程需要 wget/curl(下载二进制)与 systemd(Ubuntu 22.04 原生具备)。先更新索引并安装基础工具:
apt-get update
apt-get install -y curl wget
安装后确认工具就位(实测回显):
$ which curl wget
/usr/bin/curl
/usr/bin/wget
2.2 防火墙与端口规划
oCIS 默认以 9200 端口(HTTPS) 作为唯一入口,由内部 proxy 服务统一承接 Web、WebDAV 与 OIDC 请求。若服务器启用了防火墙(如 ufw),需放行 9200/TCP:
ufw allow 9200/tcp
⚠️ 注意:官方 Binary 部署文档特别提示,oCIS 默认依赖组播 DNS(mDNS,通常由 avahi-daemon 提供);系统启用防火墙时,需同时放行所在 zone 的 mDNS 及 HTTP/HTTPS 端口(来源:doc.owncloud.com《Binary Setup》Prerequisite 一节,查询日期 2026-10-22)。
2.3 目录规划
oCIS 的两个核心目录(本文全程使用,与官方 Binary 部署文档一致):
| 目录 | 用途 | 属主 |
|---|---|---|
/etc/ocis | 配置目录(ocis init 生成的 ocis.yaml、自定义 ocis.env) | ocis |
/var/lib/ocis | 数据目录(decomposedfs 文件数据、内嵌 LDAP/IDP/NATS 状态、搜索索引) | ocis |
三、版本选型说明
3.1 发布通道:Production / Rolling / Daily
oCIS 采用三通道发布模型,官方《Release Life Cycle》页的定义(来源:owncloud.dev/ocis/release_roadmap,查询日期 2026-10-22):
| 维度 | Production | Rolling | Daily |
|---|---|---|---|
| 频率 | 约每 6 个月 | 每 3 周 | 每天 |
| 面向人群 | Everyone | Early adopters | Developers |
| 风险 | 低(已知风险) | 低-中风险 | 高(未知风险) |
| 升级路径 | 增量(上一 Production → 新 Production) | 上一 Rolling → 新 Rolling | 全新初始化 |
| 降级支持 | 无(Downgrade: No) | 无 | 无 |
3.2 本文选型:8.1.0(Production)
截至 2026-10-22:
- Production 通道最新版为 8.1.0(代号 "Daledda",官方 Release Notes 收录,编译日期 2026-07-06,本文实测
ocis version输出一致); - GitHub Releases 的 Latest 标记指向 v8.2.2(2026-10-21),属于 Rolling 性质,不建议作为生产基线;
- 下载入口实测提醒:官方下载站
download.owncloud.com/ocis/ocis/stable/目录截至 2026-10-22 最新仅同步到 8.0.1,访问 8.1.0 子目录返回 404;8.1.0 需从 GitHub Releases 获取(https://github.com/owncloud/ocis/releases/download/v8.1.0/ocis-8.1.0-linux-amd64,实测 HTTP 200)。
3.3 下载与校验值(实测)
wget -O /usr/local/bin/ocis https://github.com/owncloud/ocis/releases/download/v8.1.0/ocis-8.1.0-linux-amd64
实测下载结果:HTTP 200,文件大小 139492208 字节。校验值(sha256sum / md5sum 实测):
sha256: 8e119331991e80a658400884c17e4b5fd8ab52e073ae133386500a5d5503eb25
md5: ff736d15bab11d35af182eebf73d9549
四、方案一:官方单二进制 + systemd 安装(生产推荐)
4.1 方案说明
官方 Binary 部署文档的标准路线:下载单二进制 → 创建运行用户 → ocis init 初始化 → 写入环境变量文件与 systemd 服务单元 → systemctl enable --now 托管运行。本方案为生产环境推荐路线,以下步骤全部实测。
4.2 安装二进制
下载完成后赋予执行权限(文件已就位 /usr/local/bin/ocis):
chmod +x /usr/local/bin/ocis
确认版本(实测回显):
$ ls -la /usr/local/bin/ocis
-rwxr-xr-x 1 root root 139492208 Oct 22 02:51 /usr/local/bin/ocis
$ ocis version --skip-services
Version: 8.1.0+730d9a04
Compiled: 2026-07-06 00:00:00 +0000 UTC
💡 说明:
ocis version直接运行时会尝试连接本机 NATS 等内部服务,在没有运行实例的环境下会报Failed to connect to NATS Server;加--skip-services参数可输出纯净的版本信息。这一行为在 8.1.0 上实测存在。
4.3 创建运行用户与目录
不建议以 root 运行 oCIS,创建系统用户 ocis 并准备目录(实测回显):
$ useradd --system --home-dir /var/lib/ocis --shell /usr/sbin/nologin ocis
$ id ocis
uid=999(ocis) gid=999(ocis) groups=999(ocis)
$ mkdir -p /etc/ocis /var/lib/ocis
$ chown -R ocis:ocis /etc/ocis /var/lib/ocis
$ ls -ld /etc/ocis /var/lib/ocis
drwxr-xr-x 2 ocis ocis 4096 Oct 22 02:51 /etc/ocis
drwxr-xr-x 2 ocis ocis 4096 Oct 22 02:51 /var/lib/ocis
4.4 初始化:ocis init
以 ocis 用户执行初始化。两个关键参数:--insecure true 表示接受服务端自签证书(首次跑通用),--admin-password 直接注入管理员口令(不传则交互式询问或随机生成)。初始化以环境变量 OCIS_CONFIG_DIR、OCIS_BASE_DATA_PATH 指定目录(与官方文档写法一致):
runuser -u ocis -- env OCIS_CONFIG_DIR=/etc/ocis OCIS_BASE_DATA_PATH=/var/lib/ocis \
/usr/local/bin/ocis init --insecure true --admin-password q1w2e3r4
实测回显(完整输出):
=========================================
generated OCIS Config
=========================================
configpath : /etc/ocis/ocis.yaml
user : admin
password : q1w2e3r4
⚠️ 注意:
ocis init只需执行一次。重复执行(尤其带--force-overwrite)会重新生成配置中的内部口令,而已有数据目录中的对应凭据不会同步更新,会导致登录报 500 的严重问题(排障实录见九、Q3)。
初始化后确认产物(实测回显):
$ ls -la /etc/ocis
total 16
drwxr-xr-x 2 ocis ocis 4096 Oct 22 02:51 .
drwxr-xr-x 3 root root 4096 Oct 22 02:51 ..
-rw------- 1 ocis ocis 3636 Oct 22 02:51 ocis.yaml
$ ls -la /var/lib/ocis
total 12
drwxr-xr-x 2 ocis ocis 4096 Oct 22 02:51 .
drwxr-xr-x 3 root root 4096 Oct 22 02:51 ..
说明:配置文件 ocis.yaml 权限为 600(仅属主可读);数据目录此时为空,idm/idp/nats/storage 等子目录在服务首次启动后生成。
4.5 环境变量文件 /etc/ocis/ocis.env
将运行所需的环境变量集中写入 /etc/ocis/ocis.env,由 systemd 的 EnvironmentFile= 注入(实测文件内容):
cat > /etc/ocis/ocis.env <<"EOF"
OCIS_INSECURE=true
OCIS_URL=https://10.89.61.3:9200
OCIS_CONFIG_DIR=/etc/ocis
OCIS_BASE_DATA_PATH=/var/lib/ocis
OCIS_LOG_LEVEL=warn
OCIS_LOG_COLOR=false
EOF
chown ocis:ocis /etc/ocis/ocis.env
各变量含义:
| 变量 | 实测取值 | 说明 |
|---|---|---|
OCIS_INSECURE | true | 允许服务端使用自签证书、忽略内部 TLS 校验(仅限内网/试用,生产建议替换受信证书后关闭) |
OCIS_URL | https://10.89.61.3:9200 | 实例对外访问地址,必须以 https:// 开头(否则 idp 服务启动即 fatal,见九、Q2) |
OCIS_CONFIG_DIR | /etc/ocis | 配置目录(init 生成 ocis.yaml 的位置) |
OCIS_BASE_DATA_PATH | /var/lib/ocis | 数据根目录 |
OCIS_LOG_LEVEL | warn | 日志级别(默认 error?实测 warn 下可看到服务启动与告警日志) |
OCIS_LOG_COLOR | false | 关闭日志着色,便于 journalctl 检索 |
💡 补充:
ocis init支持的全部参数可用ocis init --help查看(实测要点:--insecure默认值ask(交互询问)、--config-path默认/root/.ocis/config、--admin-password亦可由环境变量ADMIN_PASSWORD/IDM_ADMIN_PASSWORD注入、--diff/-d仅打印变更、--force-overwrite/-f强制覆盖已有配置)。完整的OCIS_*环境变量逐项实测见本专栏《ownCloud oCIS 配置参数详解》。
4.6 编写 systemd 服务单元
创建 /etc/systemd/system/ocis.service(与官方 Binary Setup 文档给出的单元结构一致):
cat > /etc/systemd/system/ocis.service <<"EOF"
[Unit]
Description=ownCloud Infinite Scale server
[Service]
Type=simple
User=ocis
Group=ocis
EnvironmentFile=/etc/ocis/ocis.env
ExecStart=/usr/local/bin/ocis server
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
单元要点:User=/Group= 以 ocis 身份运行;EnvironmentFile= 注入上节环境变量;Restart=always 崩溃自动拉起(间隔 5 秒)。
4.7 启动与验证
systemctl daemon-reload
systemctl enable --now ocis
实测回显:
$ systemctl enable --now ocis
Created symlink /etc/systemd/system/multi-user.target.wants/ocis.service → /etc/systemd/system/ocis.service.
$ systemctl is-active ocis
active
服务状态(实测回显,输出节选):
$ systemctl status ocis --no-pager -l
● ocis.service - ownCloud Infinite Scale server
Loaded: loaded (/etc/systemd/system/ocis.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2026-10-22 02:52:03 UTC; 20s ago
Main PID: 2684 (ocis)
Tasks: 22 (limit: 94371)
Memory: 237.6M
CPU: 1.763s
└─2684 /usr/local/bin/ocis server
启动日志(journalctl -u ocis 实测节选——单条 ocis server 命令拉起 nats、gateway、storage-publiclink、ocs、auth-service 等内部服务):
Oct 22 02:52:03 ocis-config systemd[1]: Started ownCloud Infinite Scale server.
Oct 22 02:52:03 ocis-config ocis[2684]: {"level":"warn","service":"nats","time":"2026-10-22T02:52:03Z","message":"starting service nats"}
Oct 22 02:52:04 ocis-config ocis[2684]: {"level":"warn","service":"gateway","time":"2026-10-22T02:52:04Z","message":"starting service gateway"}
Oct 22 02:52:04 ocis-config ocis[2684]: {"level":"warn","service":"storage-publiclink","time":"2026-10-22T02:52:04Z","message":"starting service storage-publiclink"}
Oct 22 02:52:04 ocis-config ocis[2684]: {"level":"warn","service":"ocs","time":"2026-10-22T02:52:04Z","message":"starting service ocs"}
Oct 22 02:52:04 ocis-config ocis[2684]: {"level":"warn","service":"auth-service","time":"2026-10-22T02:52:04Z","message":"starting service auth-service"}
HTTPS 入口连通性验证(实测回显):
$ curl -sk -o /dev/null -w "%{http_code}\n" https://localhost:9200/
200
启动后数据目录自动生成运行时子目录(实测回显):
$ ls -la /var/lib/ocis
total 36
drwxr-xr-x 8 ocis ocis 4096 Oct 22 02:26 .
drwxr-xr-x 3 root root 4096 Oct 22 02:09 ..
drwx------ 2 ocis ocis 4096 Oct 22 02:20 idm
drwx------ 3 ocis ocis 4096 Oct 22 02:20 idp
drwx------ 3 ocis ocis 4096 Oct 22 02:20 nats
drwx------ 2 ocis ocis 4096 Oct 22 02:20 proxy
drwx------ 3 ocis ocis 4096 Oct 22 02:26 search
drwx------ 5 ocis ocis 4096 Oct 22 02:20 storage
五、方案二:前台手动运行(临时验证)
5.1 方案说明
不做 systemd 托管、直接前台启动,适合快速验证(确认 init 配置可用、观察启动日志)。官方 Binary Setup 文档同样给出该运行形态。生产环境请回到方案一。
5.2 前台启动
先停掉 systemd 服务避免端口冲突,再以前台方式运行(环境变量从 ocis.env 逐项注入):
systemctl stop ocis
runuser -u ocis -- env $(grep -v "^#" /etc/ocis/ocis.env | xargs) /usr/local/bin/ocis server
实测启动日志(前台 stdout 逐行输出,节选前 4 行):
{"level":"warn","service":"nats","time":"2026-10-22T02:57:09Z","message":"starting service nats"}
{"level":"warn","service":"gateway","time":"2026-10-22T02:57:10Z","message":"starting service gateway"}
{"level":"warn","service":"webfinger","time":"2026-10-22T02:57:10Z","message":"starting service webfinger"}
{"level":"warn","service":"storage-system","time":"2026-10-22T02:57:10Z","message":"starting storage-system"}
5.3 停止与恢复
前台模式按 Ctrl+C 停止(实测用 timeout 12 包裹跑 12 秒后进程以退出码 124 结束,服务即停)。验证完成后恢复 systemd 托管(实测回显):
$ systemctl start ocis
$ systemctl is-active ocis
active
$ curl -sk -o /dev/null -w "%{http_code}\n" https://localhost:9200/
200
六、方案对比与选择建议
| 维度 | 方案一:二进制 + systemd | 方案二:前台手动运行 |
|---|---|---|
| 适用场景 | 生产环境长期运行 | 首次配置验证 / 快速试跑 |
| 进程托管 | systemd 托管,崩溃自动重启(Restart=always) | 终端断开即停止 |
| 日志去向 | journalctl(journalctl -u ocis) | 直接输出到终端 stdout |
| 开机自启 | 支持(enable 后随 multi-user.target 启动) | 不支持 |
| 配置注入 | EnvironmentFile=/etc/ocis/ocis.env | 命令行 env 注入 |
| 实测结论 | 全流程验证通过(状态 active、HTTPS 200) | 启动日志与方案一一致,可正常服务 |
选择建议:所有正式部署一律选方案一;方案二仅用于 init 之后的"一分钟验证"。两者可随时切换(共用同一份 /etc/ocis 配置与 /var/lib/ocis 数据,切换前注意停掉另一形态的进程避免 9200 端口冲突)。
七、配置说明
7.1 配置文件体系
| 文件 | 生成方式 | 作用 |
|---|---|---|
/etc/ocis/ocis.yaml | ocis init 自动生成(权限 600,属主 ocis) | 全量配置(内部服务地址、口令哈希、存储路径等),一般不手改 |
/etc/ocis/ocis.env | 手工编写(本文 4.5 节) | 环境变量注入,日常调参入口 |
/etc/systemd/system/ocis.service | 手工编写(本文 4.6 节) | 进程托管定义 |
配置生效优先级为环境变量高于 ocis.yaml:修改 ocis.env 后执行 systemctl restart ocis 即可生效。OCIS_* 环境变量逐项实测与 .env 管理方法见本专栏《ownCloud oCIS 配置参数详解》。
7.2 常用路径与端口速查
| 路径 / 端口 | 说明 |
|---|---|
https://<服务器IP>:9200 | Web / WebDAV / OIDC 统一入口 |
/etc/ocis/ocis.yaml | init 生成的全量配置 |
/etc/ocis/ocis.env | 环境变量文件(systemd 注入) |
/var/lib/ocis/storage | 文件数据(decomposedfs) |
/var/lib/ocis/idm、/var/lib/ocis/idp | 内嵌 LDAP、OIDC 身份服务状态 |
/usr/local/bin/ocis | 程序本体(单二进制) |
八、Web 登录与上传下载闭环验证
8.1 浏览器登录
浏览器打开 https://10.89.61.3:9200(自签证书需点击"继续访问/高级→接受风险",原因见九、Q1),进入 ownCloud Web 登录页:
- 第一步输入用户名
admin→ 点击下一步; - 第二步输入口令
q1w2e3r4(init 时注入的--admin-password)→ 登录。
实测登录成功后跳转至 https://10.89.61.3:9200/files/spaces/personal/admin,页面标题为 "Personal - ownCloud",即管理员个人空间(Personal Space)文件页,左侧含"文件 / 回收站 / 共享"等入口,可正常进行 Web 端的新建文件夹、新建文件与上传下载操作。
⚠️ 注意:浏览器自动化验证中曾观察到 Web 首页出现"Your browser is not supported"提示层(对浏览器版本有最低要求,Chromium 131 实测可通过继续按钮正常使用);日常使用建议 Chrome/Firefox 近两年版本。
8.2 WebDAV 命令行闭环(上传 → 列表 → 下载)
oCIS 的文件读写端点为 /remote.php/dav/files/<用户名>/。注意认证方式:实测直接使用 Basic 认证(-u admin:q1w2e3r4)返回 401——oCIS 的 DAV 端点要求 OIDC Bearer Token(或 App Password),不接受账号口令明文认证。
Bearer Token 获取方法:浏览器登录后,打开开发者工具 → Application → Local Storage → 键名前缀 oc_oAuth.user: 的条目,其 JSON 中的 access_token 字段即 token(有效期较短,过期后重新登录获取;过期调用实测返回 401 且服务端日志显示 token is expired,见九、Q4)。
以下三步闭环实测($TOKEN 为从浏览器提取的 access_token):
① 上传(PUT,新文件返回 201):
$ printf "Hello ownCloud Infinite Scale 8.1.0!\nWeb 上传下载闭环验证。\n" > /tmp/hello-ocis.txt
$ curl -sk -o /dev/null -w "%{http_code}\n" -X PUT \
-H "Authorization: Bearer $TOKEN" \
-T /tmp/hello-ocis.txt \
https://localhost:9200/remote.php/dav/files/admin/hello-ocis.txt
201
② 列表(PROPFIND,返回 207 多状态):
$ curl -sk -X PROPFIND -H "Authorization: Bearer $TOKEN" -H "Depth: 1" \
https://localhost:9200/remote.php/dav/files/admin/ | grep -o "<d:href>[^<]*</d:href>"
<d:href>/remote.php/dav/files/admin/</d:href>
<d:href>/remote.php/dav/files/admin/hello-ocis.txt</d:href>
<d:href>/remote.php/dav/files/admin/Shares/</d:href>
③ 下载(GET)与校验:
$ curl -sk -H "Authorization: Bearer $TOKEN" \
https://localhost:9200/remote.php/dav/files/admin/hello-ocis.txt
Hello ownCloud Infinite Scale 8.1.0!
Web 上传下载闭环验证。
$ md5sum /tmp/hello-ocis.txt
0cf2f16085c8c3d704c503c845f75fc6 /tmp/hello-ocis.txt
下载内容与原文件一致,md5 校验相同(0cf2f16085c8c3d704c503c845f75fc6),Web 端同步可见该文件——上传、列表、下载、Web 可见四点闭环验证通过。同一文件重复 PUT 覆盖时实测返回 204(No Content),属正常行为。
九、常见问题与排障实录
Q1:浏览器打开 9200 端口提示证书不受信?
自签证书的预期行为:OCIS_INSECURE=true 路线下服务端使用内部自签证书,浏览器会告警。内网试用直接"接受风险并继续"即可;服务端日志中同时会出现对应的握手告警(实测 journalctl -u ocis 可见):
Oct 22 02:26:20 ocis-server ocis[3420]: 2026/10/22 02:26:20 http: TLS handshake error from 10.89.61.1:45600: remote error: tls: unknown certificate
生产环境解决方案:为 OCIS_URL 域名配置受信证书(官方文档《Handling Certificates》一节提供路径),之后将 OCIS_INSECURE 改为 false。
Q2:把 OCIS_URL 配成 http:// 后服务起不来?
实测现象:将 OCIS_URL 改为 http://10.89.61.3:9200 启动,进程直接 fatal 退出,日志(实测照抄):
{"level":"fatal","service":"idp","error":"invalid iss value, URL must start with https://"}
原因:内嵌 OIDC 身份服务(idp)强制要求 issuer 为 https://。解决:OCIS_URL 一律使用 https:// 开头(即使走自签证书),改回后重启正常。
Q3:重复执行 ocis init --force-overwrite 后登录报 500?
实测现象:服务运行中再次执行 ocis init --force-overwrite 后,Web 登录返回 500;服务端日志出现 idm 服务凭据错误(实测关键行):
uid=idp,ou=sysusers ... invalid credentials
LDAP Result Code 49
原因:--force-overwrite 重新生成了 ocis.yaml 中 idp 绑定的内部口令,而 /var/lib/ocis 中内嵌 LDAP 的既有口令未重建,两者不一致导致身份服务认证失败。解决:停服务 → 清空配置与数据 → 单次干净 init → 启动:
systemctl stop ocis
rm -rf /etc/ocis/ocis.yaml /var/lib/ocis/*
runuser -u ocis -- env OCIS_CONFIG_DIR=/etc/ocis OCIS_BASE_DATA_PATH=/var/lib/ocis \
/usr/local/bin/ocis init --insecure true --admin-password q1w2e3r4
systemctl start ocis
结论:init 与数据目录必须成对、单次生成,切勿对运行中的实例重复 init。
Q4:WebDAV/接口调用返回 401 "Authentication error"?
两种实测触发原因:① 使用 Basic 认证(-u admin:q1w2e3r4)——oCIS DAV 端点不接受,需改用 Bearer Token(见八、8.2 节取法);② Bearer Token 过期——实测服务端日志明确定位:
{"level":"error","service":"proxy","error":"failed to verify access token: token has invalid claims: token is expired","authenticator":"oidc","path":"/remote.php/dav/files/admin/",...,"message":"failed to authenticate the request"}
access_token 有效期较短,过期后重新登录获取新 token 即可。
Q5:服务启动失败/反复重启?
排查顺序:systemctl status ocis 看是否 active;journalctl -u ocis -n 50 找 fatal 行(最常见为 Q2 的 https:// 校验与端口占用);确认 ocis.env 中 OCIS_CONFIG_DIR/OCIS_BASE_DATA_PATH 与 init 时实际目录一致(不一致会生成第二套配置与数据,造成"登录不了旧数据"的假象);确认 9200 端口未被其他进程占用。
十、升级与版本管理
10.1 官方升级路径
官方《Release Life Cycle》约定:Production 通道走增量升级(从上一个 Production 升到新 Production,或从最后一个 Rolling 升到新 Production),不支持降级(Downgrade: No)。因此升级前应备份数据目录与配置目录,升级后不可回退旧版本二进制继续使用既有数据。
10.2 升级操作(实测:8.1.0 → 8.2.2)
在一台已按本文方案一安装 8.1.0 的实例上完成升级实测,步骤与回显如下:
① 下载新版二进制(8.2.2,实测 HTTP 200,150191464 字节)
$ wget -O /usr/local/bin/ocis.new https://github.com/owncloud/ocis/releases/download/v8.2.2/ocis-8.2.2-linux-amd64
② 停服务
$ systemctl stop ocis
$ systemctl is-active ocis
inactive
③ 替换二进制并确认版本
$ install -m 755 /usr/local/bin/ocis.new /usr/local/bin/ocis && rm -f /usr/local/bin/ocis.new
$ ocis version --skip-services
Version: 8.2.2+fbd21b63
Compiled: 2026-10-21 00:00:00 +0000 UTC
④ 启动并验证
$ systemctl start ocis
$ systemctl is-active ocis
active
$ curl -sk -o /dev/null -w "%{http_code}\n" https://localhost:9200/
200
数据保留验证(实测):升级后重新登录,原有文件完整可见、可下载(PROPFIND 列表原样返回 hello-ocis.txt 等条目,GET 下载内容与升级前一致)——8.1.0 → 8.2.2 增量升级通过,配置与数据目录无需任何改动。
⚠️ 注意:升级后浏览器端需重新登录(旧会话与旧 token 失效)。跨大版本升级前建议先阅读官方 Release Notes 中的 Migrations 与 Breaking Changes 小节(https://doc.owncloud.com/ocis_release_notes.html)。
十一、卸载与清理
完整卸载(实测回显逐条照抄):
① 停止并注销服务
$ systemctl disable --now ocis
Removed /etc/systemd/system/multi-user.target.wants/ocis.service.
$ systemctl is-active ocis
inactive
② 删除服务单元
$ rm -f /etc/systemd/system/ocis.service
$ systemctl daemon-reload
$ ls -l /etc/systemd/system/ocis.service
ls: cannot access '/etc/systemd/system/ocis.service': No such file or directory
③ 删除配置与数据
$ rm -rf /etc/ocis /var/lib/ocis
$ ls -ld /etc/ocis
ls: cannot access '/etc/ocis': No such file or directory
④ 删除运行用户
$ userdel ocis
$ id ocis
id: 'ocis': no such user
⑤ 删除程序本体
$ rm -f /usr/local/bin/ocis
$ which ocis
(无输出,退出码 1)
至此 oCIS 已从系统中完全移除。若只想"重置重来",保留 ④⑤ 两项不删,仅执行 ①②③ 后按四、4.4 重新 init 即可。
十二、参考链接
- oCIS 官方 Binary 部署文档:https://doc.owncloud.com/ocis/next/deployment/binary/binary-setup.html
- oCIS Release Notes(版本、Migrations、Breaking Changes):https://doc.owncloud.com/ocis_release_notes.html
- Release Life Cycle(Production/Rolling/Daily):https://owncloud.dev/ocis/release_roadmap/
- oCIS Releases(8.1.0 / 8.2.2 下载):https://github.com/owncloud/ocis/releases
- 官方下载站(Production 通道):https://download.owncloud.com/ocis/ocis/stable/
- oCIS 文档站首页:https://owncloud.dev/
- 本站相关篇目:《ownCloud 介绍与选型指南》