OnlyOffice实现公网访问有四种方法:一、用cpolar建HTTP隧道;二、用frp反向代理;三、群晖DDNS加路由器端口转发;四、ZeroTier组虚拟局域网。

如果您已在本地成功部署OnlyOffice服务,但仅能通过局域网IP(如192.168.x.x:9000)访问,无法从外部网络(如手机蜂窝网络、异地办公网络)连接,则说明服务尚未暴露至公网。以下是实现OnlyOffice内网穿透并支持远程访问的多种可行方法:
一、使用cpolar配置HTTP隧道
cpolar是一款轻量级内网穿透工具,支持免费隧道,可将本地OnlyOffice服务映射为具备固定域名或随机公网URL的HTTP服务,无需公网IP和路由器配置。
1、在Linux服务器执行一键安装脚本:curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
2、启用并启动cpolar系统服务:sudo systemctl enable cpolar && sudo systemctl start cpolar
3、在浏览器中访问http://[服务器局域网IP]:9200,使用cpolar账号登录Web管理界面
4、点击“隧道管理”→“创建隧道”,填写以下参数:
名称:onlyoffice-tunnel
协议:HTTP
本地地址:127.0.0.1:9000
域名类型:随机域名(或选择付费套餐获取固定子域名)
5、保存后启动隧道,复制生成的公网URL(如https://xxx.cpolar.top),在任意外部设备浏览器中打开即可访问OnlyOffice首页
二、使用frp手动配置反向代理
frp是开源的高性能内网穿透方案,需自备一台具有公网IP的VPS作为服务端,适合对安全性与可控性要求更高的场景。
1、在VPS上下载并解压frp服务端(frps),编辑frps.ini,设置bind_port = 7000,dashboard_port = 7500
2、在OnlyOffice所在服务器下载frp客户端(frpc),编辑frpc.ini,填入VPS公网IP及token,并添加如下配置段:
[onlyoffice-http]
type = http
local_port = 9000
custom_domains = onlyoffice.yourdomain.com
3、分别在VPS运行./frps -c frps.ini,在本地服务器运行./frpc -c frpc.ini
4、若已绑定域名,需在DNS服务商处将onlyoffice.yourdomain.com解析至VPS公网IP;否则可直接通过VPS IP加dashboard端口(如http://[VPS_IP]:7500)查看隧道状态
三、通过群晖NAS内置DDNS+端口转发组合方案
适用于已部署OnlyOffice于群晖Docker中的用户,利用NAS自带DDNS服务与路由器端口映射,构建低成本公网访问链路。
构建并调试跨Office自动化流程,实现Word、Excel、PowerPoint之间的内容迁移,使用Open XML、VBA、python-docx、openpyxl、py...
1、登录群晖DSM,进入“控制面板”→“外部访问”→“DDNS”,启用Synology DDNS并绑定一个免费域名(如yourname.synology.me)
2、确认OnlyOffice容器已正确映射宿主机端口(如9000),且防火墙允许该端口入站
3、登录家用路由器管理页面,在“NAT”或“虚拟服务器”中添加规则:
外部端口:9000
内部IP:群晖NAS局域网IP
内部端口:9000
协议:TCP
4、在“外部访问”→“路由器配置”中启用自动端口映射(UPnP),或手动确认上述端口转发规则已生效
5、在外网环境浏览器中访问http://yourname.synology.me:9000,即可直连OnlyOffice服务
四、借助ZeroTier组建虚拟局域网
ZeroTier提供去中心化SDN网络,所有设备加入同一网络ID后即处于同一二层局域网,无需端口映射或公网IP,适合多终端混合环境。
1、在OnlyOffice服务器执行安装命令:curl -s 'https://install.zerotier.com/' | sudo bash
2、加入指定网络:sudo zerotier-cli join [network_id](network_id由ZeroTier Central后台创建获得)
3、登录ZeroTier Central控制台,在Members列表中找到该服务器节点,勾选“Allow Ethernet Bridging”并授权
4、在手机、笔记本等远程设备安装ZeroTier客户端,使用相同network_id加入网络
5、远程设备获取到同网段IP(如10.147.17.23)后,直接在浏览器访问http://[服务器ZeroTier_IP]:9000即可










