本文参考:https://blog.wangriyu.wang/2018/05-server-nextcloud.html

Nextcloud是一个功能十分强大的,基于PHP的网盘系统,是个人或者组织进行建立私有云的不二之选。配合NextCloud中间众多的APP,可以实现很多功能,包括团队写作等等。

如何部署Nextcloud

拉取两个镜像,并且创建docker-compose配置文件:

1
2
3
4
cd ~
docker pull wonderfall/nextcloud
docker pull mariadb:10
vi docker-compose.yml

粘贴进文本框以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
nextcloud:
image: wonderfall/nextcloud
container_name: nextcloud_web
links:
- nextcloud-db:nextcloud-db
environment:
- UID=1000
- GID=1000
- UPLOAD_MAX_SIZE=5G
- APC_SHM_SIZE=128M
- OPCACHE_MEM_SIZE=128
- CRON_PERIOD=15m
- TZ=Aisa/Shanghai
- ADMIN_USER=登录账号
- ADMIN_PASSWORD=登录密码
- DOMAIN=localhost
- DB_TYPE=mysql
- DB_NAME=nextcloud
- DB_USER=nextcloud
- DB_PASSWORD=数据库 nextcloud 账号密码
- DB_HOST=nextcloud-db
volumes:
# 文件会放在宿主机的 `/docker/nextcloud` 目录,如果不存在会自动创建
- /docker/nextcloud/data:/data
- /docker/nextcloud/config:/config
- /docker/nextcloud/apps:/apps2
- /docker/nextcloud/themes:/nextcloud/themes
expose:
- 8888
ports:
# 宿主机端口:镜像端口
- 8888:8888/tcp
restart: always

nextcloud-db:
image: mariadb:10
container_name: nextcloud_db
volumes:
# 数据库文件会放在宿主机的 `/docker/nextcloud/db` 目录,如果不存在会自动创建
- /docker/nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=数据库 root 密码
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=数据库 nextcloud 账号密码
restart: always
  • 这里使用Mariadb(Mysql)作为数据库,如果个人使用,对性能要求不高,希望负载较小,可以使用Sqlite,在这里删除nextcloud-db下的内容,并对上面nextcloud-web进行相应更改。 *

保存退出并运行:

docker-compose up -d

测试之前需要等待一段时间,从这里开始容器应该就配置完成了,可以使用以下命令进行检验:

1
2
3
docker ps -a // 可以看到容器已经起来
docker logs nextcloud_db // 查看数据库配置是否完成
docker logs nextcloud_web // 查看 nextcloud 是否配置完成

配置web反代

配置web反向代理在这里将不会展开,新手可以使用BT-panel来进行图形化的操作,大佬就可以直接写Nginx的配置文件了,在这里就不过多赘述了。


使用Docker配置OnlyOffice Community Server

1
2
docker pull onlyoffice/documentserver
docker run -i -t -d -p 8080:80 onlyoffice/documentserver

访问一下:http://IP:8080
如果出现绿色的勾,那么你的服务器就成功部署了

附:配置要求(官方)
RAM: 4 GB+
CPU: 双核 2 GHz +
Swap: 至少2 GB
HDD: 至少有2GB的剩余空间
系统要求: RedHat 64bit,CentOS类、Debian类的内核版本3.8以上。
Docker: 1.9.0版本及以上


问题解决

这时候如果在nextcloud里面设置好OnlyOffice,打开一个Word文件什么都显示不出来,控制台报错:

1
Refused to frame 'http://office.domain/' because it violates the following Content Security Policy directive: "frame-src https://office.domain/".

这是因为OnlyOffice服务器在这里是默认使用Http传输,但是NextCloud是Https传输,两种内容不能混合在一起。
我们需要在OnlyOffice服务器的反向代理配置中加入一句话就能搞定:

1
proxy_set_header X-Forwarded-Proto $scheme;

保存后再次打开Word文件,发现显示正常:

这样,NextCloud的主题就基本配置完成了/