Ubuntu 22.04 安装 Apache OpenMeetings 9.1.0 指南

Ubuntu 22.04 安装 Apache OpenMeetings 9.1.0 完整指南,覆盖官方 tar.gz 与备份恢复两种方案、JDK 21、H2 内嵌库初始化、systemd 托管与 Web 登录验证(admin/Q1w2e3r4!)。

Apache OpenMeetingsApache OpenMeetings2026/10/12

Ubuntu 22.04 安装 Apache OpenMeetings 9.1.0 指南

目标:在 Ubuntu 22.04 服务器上从零安装 Apache OpenMeetings 9.1.0(Web 会议与实时协作平台),完成初始化、systemd 托管与 Web 登录验证。全文命令与回显均在 Ubuntu 22.04.5 LTS x86_64 环境实测通过(JDK 21.0.12.1、Tomcat 11.0.23、OpenMeetings 9.1.0)。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64,内核 6.8)
  • 运行环境:JDK 21(OpenMeetings 9.x 必需 Java 21,内嵌 Tomcat 11.0.23,低版本 JRE 不兼容)
  • 安装版本:Apache OpenMeetings 9.1.0(官方最新稳定版)
  • 安装路径:/opt/apache-openmeetings-9.1.0(本文统一记作 $OM_HOME)
  • 服务端口:HTTP 5080、HTTPS 5443(可在 conf/server.xml 修改)
  • 默认数据库:内嵌 H2(文件 $OM_HOME/omdb.mv.db,零外部依赖)
  • 管理账号:admin(初始化时自设密码,本文统一示例 Q1w2e3r4!)
  • 安装包大小:apache-openmeetings-9.1.0.tar.gz 约 208MB(217,873,368 字节)

二、前置条件

  • Ubuntu 22.04 服务器,2GB 以上内存(本文按 512MB 堆 + 系统余量配置,2GB 内存可跑通)
  • root 权限(sudo 亦可,以下命令以 root 执行为例)
  • 出网访问 Apache 官方镜像站 dlcdn.apache.org(或内网预置安装包离线安装)
  • 已安装 wget、curl、tar(Ubuntu 22.04 默认自带)

💡 说明:OpenMeetings 是 Java 服务,不需要编译,官方发布即开箱的二进制发行包(内含内嵌 Tomcat 11.0.23),无需再单独安装 Tomcat。

三、版本选型说明

版本说明
9.1.0官方最新稳定版(2026 年发布,修复 CVE-2026-49488;9.0.0 曾修复 CVE-2026-33005/33266/34020),含内嵌 Tomcat 11.0.23,要求 Java 21
9.0.x上一代稳定线,修复多个安全漏洞
7.x较旧稳定线,要求 Java 11,内嵌 Tomcat 9/10,功能与安全补丁落后
  • 选型建议:新部署一律选 9.1.0;生产环境务必跟进官方安全通告(CVE)升级。
  • 版本获取命令:wget -qO- https://dlcdn.apache.org/openmeetings/ 可列出官方当前全部版本目录。
  • 校验方式:官方提供 .sha512 与 .asc(PGP)签名文件,下载后按 4.3 节校验。

四、官方 tar.gz 离线安装方案(方案 A,推荐)

4.1 方案说明

官方唯一正式发布形态是自解压二进制发行包(.tar.gz / .zip),内含内嵌 Tomcat、webapp 与全部依赖。本文以 Linux 用的 .tar.gz 为例。适合生产与内网部署,全程可离线。

4.2 安装 JDK 21

OpenMeetings 9.1.0 的编译目标为 Java 21(class 文件版本 65.0),必须安装 JDK 21:

apt-get update -qq
apt-get install -y openjdk-21-jdk-headless

验证:

java -version

回显:

openjdk version "21.0.12.1" 2026-08-18
OpenJDK Runtime Environment (build 21.0.12.1+1-1-22.04.4-Ubuntu)
OpenJDK 64-Bit Server VM (build 21.0.12.1+1-1-22.04.4-Ubuntu, mixed mode, sharing)

⚠️ 注意:使用 JDK 17 运行管理命令会报 UnsupportedClassVersionError(65.0 超出 Java 17 支持范围),务必使用 JDK 21。

4.3 官方下载与校验

cd /opt
wget -O apache-openmeetings-9.1.0.tar.gz https://dlcdn.apache.org/openmeetings/9.1.0/bin/apache-openmeetings-9.1.0.tar.gz

下载回显:

2026-10-11 19:28:47 (35.7 MB/s) - 'apache-openmeetings-9.1.0.tar.gz' saved [217873368/217873368]

校验 SHA-512(与官方 apache-openmeetings-9.1.0.tar.gz.sha512 比对):

sha512sum apache-openmeetings-9.1.0.tar.gz

回显:

f984368148f78222cee60df5236e2c2307ce48fa240d75019e47187dfc150e46870663529260bbaebdd0e6ae2d9d08f382a04894817ec85bbe02921e80021f84  apache-openmeetings-9.1.0.tar.gz

💡 说明:内网/离线环境可提前将 tar.gz 与 .sha512 预置到服务器,跳过联网步骤,校验照常执行。

4.4 解压部署

cd /opt
tar xzf apache-openmeetings-9.1.0.tar.gz
ls -la /opt/apache-openmeetings-9.1.0/

目录内容:

admin.bat admin.sh bin/ conf/ lib/ logs/ network_test.sh openmeetings.service temp/ webapps/ work/
CHANGELOG.md LICENSE NOTICE.md README.md RELEASE-NOTES RUNNING.txt BUILDING.txt CONTRIBUTING.md
  • bin/:Tomcat 标准脚本(startup.sh、shutdown.sh、catalina.sh、version.sh、configtest.sh、digest.sh 等)
  • conf/:Tomcat 配置(server.xml、localhost.jks 等)
  • webapps/openmeetings:OpenMeetings webapp 本体
  • admin.sh:命令行管理工具(安装初始化/备份/恢复等)

4.5 JVM 内存与基础配置

OpenMeetings 是 Java 服务,默认堆上限很大(发行包 systemd 样例为 -Xms1G -Xmx4G)。按本指南统一将堆限制在 256–512MB,通过 Tomcat 标准 setenv.sh 注入:

创建 $OM_HOME/bin/setenv.sh:

cat > /opt/apache-openmeetings-9.1.0/bin/setenv.sh <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export CATALINA_PID=/var/run/openmeetings.pid
export CATALINA_OPTS="-Xms256m -Xmx512m -server -XX:+UseParallelGC"
export JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
EOF
chmod +x /opt/apache-openmeetings-9.1.0/bin/setenv.sh

💡 说明:setenv.sh 是 Tomcat 标准扩展点,catalina.sh 启动时自动加载,无需改动其他脚本;2GB 内存的小服务器按此配置可稳定运行,内存充足时可适度上调(如 -Xmx1g)。

4.6 初始化安装(admin.sh -i)

OpenMeetings 首次使用需初始化数据库(默认内嵌 H2)并创建默认管理员。此步必须在服务停止状态执行(内嵌 H2 单进程锁文件,服务运行中执行会报 Database may be already in use):

cd /opt/apache-openmeetings-9.1.0
./admin.sh -i -user admin -email admin@example.com -tz "Asia/Shanghai" -group "admin" --password "Q1w2e3r4!"

关键回显(完整命令 exit=0):

19:40:54.454 [main] INFO org.apache.openmeetings.util.OmFileHelper -- Using file locations - omHome: /opt/apache-openmeetings-9.1.0/webapps/openmeetings DATA_DIR: /opt/apache-openmeetings-9.1.0/webapps/openmeetings/data
19:40:58.714 [main] INFO org.springframework.orm.jpa.LocalEntityManagerFactoryBean -- Initialized JPA EntityManagerFactory for persistence unit 'openmeetings'
19:41:01.818 [main] INFO org.quartz.core.QuartzScheduler -- Scheduler org.springframework.scheduling.quartz.SchedulerFactoryBean#0_$_NON_CLUSTERED started.
INFO: Loading 'hazelcast.xml' from the classpath.
... Done
  • 安装过程自动创建默认房间、默认 OAuth 服务器(如需跳过加 --skip-default-objects)。
  • 生成的数据库文件:$OM_HOME/omdb.mv.db。

⚠️ 密码强度硬性要求:admin.sh 的 --password 必须同时含大写、小写、数字与特殊符号且不少于 8 位(平台策略 user.pass.minimum.length 默认 8)。不符合会阻塞提示 Please enter password for the user 'admin': 并要求交互输入。本文统一示例口令 Q1w2e3r4!(8 位,满足强度校验)。 ⚠️ 时间区参数:-tz "Asia/Shanghai" 同时作为服务器默认时区与管理员用户时区,请按实际所在时区调整。 ⚠️ Kurento 告警:未安装 Kurento 媒体服务器时日志会出现 Kurento 心跳 WARN,属正常现象,不影响 Web 与会议基础功能(Kurento 为可选增强组件,见七、配置说明)。

4.7 启动服务

cd /opt/apache-openmeetings-9.1.0
./bin/startup.sh

回显:

Tomcat started.

启动日志关键行($OM_HOME/logs/catalina.out):

Server version name:   Apache Tomcat/11.0.23
JVM Version:           21.0.12.1+1-1-22.04.4-Ubuntu
Command line argument: -Xms256m
Command line argument: -Xmx512m
Command line argument: -XX:+UseParallelGC
Initializing ProtocolHandler ["http-nio-5080"]
Initializing ProtocolHandler ["https-jsse-nio-5443"]
Connector [https-jsse-nio-5443], TLS virtual host [_default_], certificate type [RSA] configured from keystore [conf/localhost.jks] using alias [tomcat]
Deployment of web application directory [/opt/apache-openmeetings-9.1.0/webapps/openmeetings] has finished in [24,694] ms
Starting ProtocolHandler ["http-nio-5080"]
Starting ProtocolHandler ["https-jsse-nio-5443"]
Server startup in [24823] milliseconds

确认端口监听:

netstat -tlnp | grep -E "5080|5443"

回显:

tcp6       0      0 :::5080                 :::*                    LISTEN      4095/java
tcp6       0      0 :::5443                 :::*                    LISTEN      4095/java

确认 JVM 堆参数生效:

ps -ef | grep [j]ava

回显:

root       4095       1  0 19:47 ?        00:01:10 /usr/lib/jvm/java-21-openjdk-amd64/bin/java ... -Xms256m -Xmx512m -server -XX:+UseParallelGC ... org.apache.catalina.startup.Bootstrap start

💡 说明:首次启动 webapp 部署约需 25–40 秒,Server startup in [24823] milliseconds 出现即表示启动完成。

4.8 systemd 托管(开机自启)

发行包自带 systemd 单元样例 $OM_HOME/openmeetings.service(默认 -Xms1G -Xmx4G、User=nobody),按其思路落地为 /etc/systemd/system/openmeetings.service(按本指南调整为 256–512MB 堆、root 运行、实际路径):

cat > /etc/systemd/system/openmeetings.service <<'EOF'
[Unit]
Description=Apache OpenMeetings server
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
Environment=CATALINA_PID=/var/run/openmeetings.pid
Environment=CATALINA_HOME=/opt/apache-openmeetings-9.1.0
Environment=CATALINA_BASE=/opt/apache-openmeetings-9.1.0
Environment="CATALINA_OPTS=-Xms256m -Xmx512m -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
WorkingDirectory=/opt/apache-openmeetings-9.1.0
ExecStart=/opt/apache-openmeetings-9.1.0/bin/startup.sh
ExecStop=/opt/apache-openmeetings-9.1.0/bin/shutdown.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

💡 说明:本单元用 root 运行以匹配实际部署目录权限;如按发行包样例改用 User=nobody 运行,需先 chown -R nobody:nogroup /opt/apache-openmeetings-9.1.0。发行包样例还注入了 JDK_JAVA_OPTIONS(--add-opens 系列模块参数),若移除须确认 Java 21 下功能正常(webapp 部署阶段会校验)。

启用并启动:

systemctl daemon-reload
systemctl enable openmeetings
systemctl start openmeetings

回显(enable):

Created symlink /etc/systemd/system/multi-user.target.wants/openmeetings.service → /etc/systemd/system/openmeetings.service.

确认状态:

systemctl is-active openmeetings
systemctl status openmeetings --no-pager -l

回显:

active

● openmeetings.service - Apache OpenMeetings server
     Loaded: loaded (/etc/systemd/system/openmeetings.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2026-10-11 19:47:47 UTC; 40s ago
    Process: 8014 ExecStart=/opt/apache-openmeetings-9.1.0/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 8021 (java)
      Tasks: 119 (limit: 5753)
     Memory: 558.2M
     CGroup: /system.slice/.../openmeetings.service
             └─8021 /usr/lib/jvm/java-21-openjdk-amd64/bin/java ... -Xms256m -Xmx512m -server -XX:+UseParallelGC ... org.apache.catalina.startup.Bootstrap start

4.9 验证运行(Web 登录)

首页可达性:

curl -s -L -o /dev/null -w "%{http_code}\n" http://127.0.0.1:5080/openmeetings/

回显:

200

浏览器访问 http://<服务器IP>:5080/openmeetings/ 会自动跳转到登录页 signin(表单字段 credentials:login / credentials:pass)。

REST 接口登录验证(POST 表单,返回 type=SUCCESS 与 sessionId):

curl -s -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
  --data 'user=admin&pass=Q1w2e3r4%21' \
  http://127.0.0.1:5080/openmeetings/services/user/login

回显:

{"serviceResult":{"message":"5d9d8af1-058c-4f40-aebf-e68441102b88","type":"SUCCESS"}}

💡 说明:message 即本次会话 sessionId(每次登录不同);HTTP 服务只接受 POST,直接 GET 会返回 405。%21 是 ! 的 URL 编码,curl 命令行中 ! 可能触发 shell 历史扩展,务必按上述编码或加引号。

五、备份恢复安装方案(方案 B)

5.1 方案说明

已有其他服务器上的 OpenMeetings(含配置、房间、用户数据)时,可打包迁移:在源服务器执行备份生成 zip,在新服务器解压同一版本后直接用备份包初始化。备份 zip 内包含数据库快照与全部数据文件。

5.2 备份(源服务器,服务停止状态执行)

cd /opt/apache-openmeetings-9.1.0
./admin.sh -b

回显:

19:46:34.451 [main] INFO org.apache.openmeetings.cli.Admin -- File name was not specified, 'backup_2026_10_11_19_46_34.zip' will be used
... Done

产物:$OM_HOME/backup_2026_10_11_19_46_34.zip(本例 14,429 字节),拷到新服务器 $OM_HOME 目录。

⚠️ 注意:备份须在服务停止时执行,原因同 4.6 节(内嵌 H2 单进程锁)。备份默认包含数据文件;如需排除文件只备份结构,加 --exclude-files。

5.3 恢复安装(新服务器,服务停止状态执行)

cd /opt/apache-openmeetings-9.1.0
./admin.sh -r -file backup_2026_10_11_19_46_34.zip

执行完成 exit=0。随后启动服务并验证登录(原 admin 口令直接生效):

systemctl start openmeetings
curl -s -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
  --data 'user=admin&pass=Q1w2e3r4%21' \
  http://127.0.0.1:5080/openmeetings/services/user/login

回显(恢复后登录 SUCCESS,数据完整):

{"serviceResult":{"message":"41c93036-1582-408f-ab5f-a25c8e7490f9","type":"SUCCESS"}}

六、多方案对比与选择建议

维度方案 A:官方 tar.gz方案 B:备份恢复
适用场景全新部署迁移/克隆已有环境
是否需联网需下载安装包(可离线预置)需源服务器备份包
安装方式解压 + admin.sh -i 初始化解压 + admin.sh -r 恢复
数据来源全新初始化(默认房间/账号)完整迁移(用户/房间/配置全量)
systemd 服务名openmeetingsopenmeetings
监听端口5080 / 54435080 / 5443
  • 选择建议:全新环境选方案 A;已有生产环境搬迁、或要克隆测试环境选方案 B。

七、配置说明

  • 端口:HTTP 5080、HTTPS 5443 定义于 $OM_HOME/conf/server.xml;HTTPS 证书默认用发行包自带的 conf/localhost.jks(keystore 密码 openmeetings),生产请替换为正式证书。
  • JVM 堆:256–512MB 已通过 bin/setenv.sh 与 systemd CATALINA_OPTS 生效(见 4.5/4.8),用 ps -ef | grep [j]ava 复核。
  • 数据库:默认内嵌 H2(jdbc:h2:./omdb,文件在 $OM_HOME/omdb.mv.db);生产建议切换 MySQL/PostgreSQL(见《Apache OpenMeetings 9.1.0 配置参数详解》5.1 节与 FAQ 6.x)。
  • 可选组件(增强功能,⚠️ 需按真实服务器环境另行部署):
    • Kurento 媒体服务器(KMS):WebRTC 音视频媒体处理所需,本环境未部署,未安装时仅产生心跳 WARN 告警,会议与 Web 基础功能不受影响;
    • ImageMagick/Ghostscript/LibreOffice/FFmpeg+SoX:文档转换、白板渲染、录制转码等可选能力,按发行包 README 指引安装即可。
  • 日志:$OM_HOME/logs/(catalina.out、openmeetings.log、root.YYYY-MM-DD.N.log 等)。

八、注意事项

  • admin.sh 的 -i/-b/-r 均须在服务停止时执行(内嵌 H2 单进程锁)。
  • 安装初始化口令必须满足强度校验(大写+小写+数字+符号,≥8 位)。
  • 首次启动部署约 25–40 秒,勿误判为卡死;以 catalina.out 中 Server startup 为准。
  • 修改 conf/server.xml、setenv.sh 后须重启服务生效。
  • 生产环境务必替换 HTTPS 默认自签证书与默认密钥。

九、常见问题

9.1 启动时提示 Database may be already in use

原因:内嵌 H2 文件被正在运行的服务占用,admin.sh 在服务运行中执行。

处理:先停止服务再执行管理命令:

systemctl stop openmeetings
cd /opt/apache-openmeetings-9.1.0
./admin.sh -i -user admin -email admin@example.com -tz "Asia/Shanghai" -group "admin" --password "Q1w2e3r4!"
systemctl start openmeetings

9.2 UnsupportedClassVersionError

原因:使用了 Java 17 及以下版本运行 OpenMeetings 9.1.0。

处理:安装 JDK 21 并确认 java -version 为 21,同时保证 setenv.sh 中 JAVA_HOME 指向 JDK 21 路径。

9.3 登录返回 error.bad.credentials

原因:口令错误,或初始化未成功(数据库无管理员账号)。

处理:确认初始化回显以 ... Done 结束且 $OM_HOME/omdb.mv.db 已生成;口令遗忘时,在管理员后台或按官方《CommandLineAdmin》文档重置密码。

9.4 密码提示 Please enter password for the user 'admin'

原因:--password 不满足强度校验(需大写+小写+数字+符号且≥8位)。

处理:使用合规口令,如 Q1w2e3r4!,或去掉该参数在交互提示下输入。

9.5 未装 Kurento 时日志大量 WARN

原因:Kurento 媒体服务器未部署,属预期告警。

处理:仅需 Web 会议基础功能可忽略;需要高清音视频处理时按官方文档部署 Kurento(WS 地址默认 ws://127.0.0.1:8888/kurento)。

十、卸载方式

systemctl disable openmeetings
systemctl stop openmeetings
rm -rf /opt/apache-openmeetings-9.1.0 /etc/systemd/system/openmeetings.service
systemctl daemon-reload

如需一并移除 JDK:

apt-get remove -y openjdk-21-jdk-headless

⚠️ 注意:删除前如仍需数据,先执行 ./admin.sh -b 备份并妥善保存 zip(见 5.2 节)。

十一、参考链接