不知道大伙还记得ownCloud吗,一个用PHP写的网盘程序,Nextcloud就是它的分支项目。
由于ownCloud的性能饱受诟病,所以ownCloud的开发团队几年前就用Go重写了一个ownCloud Infinite Scale(oCIS),我之前还写过一篇部署的文章,但是当时oCIS的完成度还比较低,缺少很多功能。
转眼间又是几年时间过去了,oCIS也有一个分支了,就是今天要给大伙介绍的:OpenCloud。我部署试了一下,完成度很高了,用在生产环境完全没问题,所以特地写篇文章推荐一下,个人网盘又多了一个新的选择。
下面简单列出目前OpenCloud拥有的功能(摘自项目页面):
🚀 快速、简单、干净的用户界面
⌨️ 用于快速选择文件的键盘快捷键
🖱️ 拖放支持
🔍 强大的搜索功能,可按名称、全文、OCR、文件类型、日期或标签进行搜索
🔄 可靠、容错的文件同步
🔗 灵活的共享选项
🌐 通过公开链接共享文件
🗂️工作区:专用项目文件夹,旨在简化团队协作
🛠️ 与 Markdown 编辑器(ToastUI)和 Web Office(Collabora)等工具集成
🕒 文件历史记录可跟踪更改并恢复以前的版本
📱 多设备同步,可在所有设备上离线访问
开始部署前,我们需要做一些准备工作:
1.一台内存至少4GB的服务器。(如果不部署clamav反病毒软件、apache-tika全文搜索,内存只需1-2GB)
以下是我部署的全部服务所需的内存,供参考:
其中clamav反病毒软件的部署目前没有得到官方的支持,文中的部署方法是我自己琢磨出来的,但是我估计后续和官方实装的部署方法应该大差不差=-=
2.服务器的这些端口不能被其他程序占用:
80/443/9200/9300/9980
其中80/443端口给主机的NGINX使用,用于配置反向代理。
3.添加3个域名解析A记录:
cloud.example.com collabora.example.com wopiserver.example.com
系统这块我使用的是Debian13,安装NGINX:
apt -y update apt -y install curl nginx python3-certbot-nginx
安装Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
克隆这个OpenCloud Compose存储库:
cd /opt git clone https://github.com/opencloud-eu/opencloud-compose.git cd opencloud-compose
复制一份环境变量配置文件并编辑:
cp .env.example .env nano .env
这里只列出必须要修改的内容,其它没有在这里列出的内容可以保持默认值:
#INSECURE=true COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:radicale/radicale.yml:antivirus/clamav.yml OC_DOMAIN=cloud.example.com INITIAL_ADMIN_PASSWORD=yourpassword OC_CONFIG_DIR=/opt/opencloud-compose/opencloud_config OC_DATA_DIR=/opt/opencloud-compose/opencloud_data START_ADDITIONAL_SERVICES="notifications,antivirus" COLLABORA_DOMAIN=collabora.example.com WOPISERVER_DOMAIN=wopiserver.example.com COLLABORA_ADMIN_USER=imlala COLLABORA_ADMIN_PASSWORD=yourpassword ANTIVIRUS_MAX_SCAN_SIZE=512MB CLAMAV_DOCKER_TAG=stable_base RADICALE_DATA_DIR=/opt/opencloud-compose/radicale_data
1.OC_DOMAIN、COLLABORA_DOMAIN、WOPISERVER_DOMAIN修改为你的域名。
2.INITIAL_ADMIN_PASSWORD设置你的OpenCloud管理员密码。管理员的默认用户名是:admin。
3.COLLABORA_ADMIN_USER、COLLABORA_ADMIN_PASSWORD设置你的COLLABORA管理员用户名和密码。
4.如果不使用clamav反病毒功能,删除COMPOSE_FILE内的如下内容:
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:radicale/radicale.yml:antivirus/clamav.yml
修改START_ADDITIONAL_SERVICES的值为如下内容:
START_ADDITIONAL_SERVICES="notifications"
注释掉如下内容:
ANTIVIRUS_MAX_SCAN_SIZE=512MB CLAMAV_DOCKER_TAG=stable_base
5.如果不使用apache-tika全文搜索功能,删除如下配置:
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:radicale/radicale.yml:antivirus/clamav.yml
6.如果不使用radicale的日历、联系人功能,删除如下配置:
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:radicale/radicale.yml:antivirus/clamav.yml
注释掉如下内容:
RADICALE_DATA_DIR=/opt/opencloud-compose/radicale_data
创建所需的目录/给予正确的权限:
mkdir /opt/opencloud-compose/opencloud_config mkdir /opt/opencloud-compose/opencloud_data mkdir /opt/opencloud-compose/radicale_data # 不使用radicale可不创建 chown -R 1000:1000 opencloud_config chown -R 1000:1000 opencloud_data chown -R 1000:1000 radicale_data # 不使用radicale可不执行
配置clamav反病毒,创建一个名为antivirus的目录并在目录内新建一个名为clamav.yml的compose配置文件:
mkdir /opt/opencloud-compose/antivirus && cd /opt/opencloud-compose/antivirus && nano clamav.yml
写入如下内容:
services: opencloud: environment: ANTIVIRUS_SCANNER_TYPE: "clamav" ANTIVIRUS_CLAMAV_SOCKET: "/var/run/clamav/clamd.sock" ANTIVIRUS_MAX_SCAN_SIZE_MODE: ${ANTIVIRUS_MAX_SCAN_SIZE_MODE:-partial} ANTIVIRUS_MAX_SCAN_SIZE: ${ANTIVIRUS_MAX_SCAN_SIZE:-100MB} POSTPROCESSING_STEPS: "virusscan" STORAGE_USERS_DATA_GATEWAY_URL: http://opencloud:9200/data volumes: - "clamav-socket:/var/run/clamav" clamav: image: clamav/clamav:${CLAMAV_DOCKER_TAG:-latest} networks: opencloud-net: volumes: - "clamav-socket:/tmp" - "clamav-db:/var/lib/clamav" logging: driver: ${LOG_DRIVER:-local} restart: always volumes: clamav-socket: clamav-db:
启动:
docker compose up -d
启动之后collaboration服务的容器可能会不正常,一直重启,但是没关系这是预期行为,等到我们配置好反向代理后就会恢复。
现在就来配置反向代理,新建NGINX站点配置文件:
nano /etc/nginx/sites-available/opencloud
写入如下内容:
server { listen 80; server_name cloud.example.com; client_max_body_size 0; location / { proxy_pass http://127.0.0.1:9200; 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; } } server { listen 80; server_name collabora.example.com; client_max_body_size 0; location / { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } server { listen 80; server_name wopiserver.example.com; client_max_body_size 0; location / { proxy_pass http://127.0.0.1:9300; 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; } }
启用站点:
ln -s /etc/nginx/sites-available/opencloud /etc/nginx/sites-enabled/opencloud
签发SSL证书:
certbot --nginx --email example@lala.im --agree-tos --no-eff-email
两个WebUI将在如下网址提供访问:
https://cloud.example.com
https://collabora.example.com/browser/dist/admin/admin.html
使用管理员账号登录:
简单测试一下功能是否正常,全文搜索功能,新建一个docx文档,输入一段文字保存,在搜索栏搜索文档内的文字,可以搜到结果:
clamav防护测试,新建一个txt文本文件,输入测试代码,点击保存,弹出通知:
查看clamav日志:
docker compose -f docker-compose.yml -f /opt/opencloud-compose/antivirus/clamav.yml logs -f clamav
也可以看到日志内显示了相关的内容,说明配置正常:
总的来说OpenCloud还是非常不错的,我感觉要是能加个离线下载功能(aria2、qbittorrent)就更完美了。OpenCloud目前还在积极开发中,潜力很大,值得期待!