docker搭建nextcloud私有云盘
知识背景
nextcloud是ownCloud原先的开发者弗兰克·卡利切离开以后创建了ownCloud的分支——Nextcloud。
NextCloud 是一款开源网络硬盘系统。任何人都可以自由的获取 NextCloud 程序,在家庭或公司构建私有且免费的网络硬盘。它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。
下边开始介绍docker-compose安装nextcloud服务
安装docker和docker-compose
docker安装链接:https://docs.docker.com/install/linux/docker-ce/centos/
docker-compose安装链接:https://docs.docker.com/compose/install/
编写docker-compose文件
version: '2'
services:
db:
container_name: cloud_db
image: mysql:5.7
volumes:
- /var/data/cloud/mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime
environment:
MYSQL_ROOT_PASSWORD: nextcloud
MYSQL_DATABASE: nextcloud
nextcloud:
container_name: cloud_web
depends_on:
- db
image: nextcloud
volumes:
- /var/data/cloud/config:/var/www/html/config
- /var/data/cloud/data:/var/www/html/data
- /var/data/cloud/apps:/var/www/html/apps
ports:
- "8090:80"
onlyoffice:
container_name: cloud_office
image: onlyoffice/documentserver
ports:
- "9100:80"
networks:
default:
external:
name: nextcloud
创建存放文件的路径,我这里是/var/data/cloud
执行前创建nextcloud网卡
docker network create nextcloud
启动容器服务,启动过程比较慢需要下载镜像,可以再执行前吧需要的镜像下载下来,过程不需要再赘述。
docker-compose up -d
服务启动以后,开始初始化nextcloud服务
浏览器访问:http://ip:端口 (我这里是http://192.168.0.150:8090)
登录以后是这个界面,选择存储&数据库,我们这里使用的是mysqll数据库
按照选项内容填写完整
用户名:admin
密码:nextcloud
数据目录选择默认:/var/www/html/data
数据库密码:nextcloud
数据库实例:nextcloud
端口:db(因为我们docker-compose文件里写的数据库服务是db)
填写完整以后开始进行初始化,需要等待几分钟。
初始化完成以后就可以使用创建的账号登录,到此服务基本安装完成。
安装onlyoffice应用,可以在线操作word等文件
下载onlyoffice应用:https://apps.nextcloud.com/apps/onlyoffice/releases?platform=18#18
我这里安装的是nextcloud18,选择的ONLYOFFICE 4.1.4下载。
把下载好的文件放到/var/data/cloud/apps 下边
解压缩:tar -zxvf /var/data/cloud/apps/onlyoffice.tar.gz
进入nextcloud容器修改onlyoffice的文件用户和所属组
docker-compose exec nextcloud bash
切换到apps文件下
root@766c5b93dbb4:/var/www/html# cd apps/
查看下边文件所属用户和组
root@766c5b93dbb4:/var/www/html/apps# ls -l
total 0
drwxr-xr-x 11 www-data root 122 Mar 1 18:44 accessibility
drwxr-xr-x 10 www-data root 181 Mar 2 10:33 activity
drwxr-xr-x 5 www-data root 48 Mar 1 18:44 admin_audit
drwxr-xr-x 5 www-data root 63 Mar 2 10:33 cloud_federation_api
drwxr-xr-x 8 www-data root 97 Mar 2 10:33 comments
drwxr-xr-x 10 www-data root 109 Mar 1 18:44 dav
drwxr-xr-x 10 www-data root 109 Mar 1 18:44 encryption
drwxr-xr-x 10 www-data root 109 Mar 1 18:44 federatedfilesharing
drwxr-xr-x 10 www-data root 109 Mar 1 18:44 federation
drwxr-xr-x 11 www-data root 181 Mar 2 10:33 files
drwxr-xr-x 11 www-data root 137 Mar 2 10:33 files_external
drwxr-xr-x 9 www-data root 95 Mar 1 18:44 files_pdfviewer
drwxr-xr-x 7 www-data root 123 Mar 2 10:33 files_rightclick
drwxr-xr-x 10 www-data root 143 Mar 2 10:33 files_sharing
drwxr-xr-x 9 www-data root 114 Mar 2 10:33 files_trashbin
drwxr-xr-x 8 www-data root 81 Mar 1 18:45 files_versions
drwxr-xr-x 6 www-data root 75 Mar 2 10:33 files_videoplayer
drwxr-xr-x 9 www-data root 112 Mar 2 10:33 firstrunwizard
drwxr-xr-x 12 www-data root 207 Mar 2 10:33 logreader
drwxr-xr-x 5 www-data root 48 Mar 1 18:45 lookup_server_connector
drwxr-xr-x 8 www-data root 97 Mar 2 10:33 nextcloud_announcements
drwxr-xr-x 9 www-data root 143 Mar 2 10:33 notifications
drwxr-xr-x 8 www-data root 87 Mar 1 18:45 oauth2
drwxrwxr-x 13 root root 230 Jan 28 10:27 onlyoffice
drwxr-xr-x 10 www-data root 121 Mar 2 10:33 password_policy
drwxr-xr-x 10 www-data root 237 Mar 2 10:33 photos
drwxr-xr-x 9 www-data root 263 Mar 2 10:33 privacy
drwxr-xr-x 6 www-data root 59 Mar 1 18:45 provisioning_api
drwxr-xr-x 6 www-data root 111 Mar 2 10:33 recommendations
drwxr-xr-x 9 www-data root 146 Mar 2 10:33 serverinfo
drwxr-xr-x 10 www-data root 109 Mar 1 18:45 settings
drwxr-xr-x 10 www-data root 109 Mar 1 18:45 sharebymail
drwxr-xr-x 10 www-data root 110 Mar 1 18:45 support
drwxr-xr-x 9 www-data root 133 Mar 2 10:33 survey_client
drwxr-xr-x 10 www-data root 125 Mar 2 10:33 systemtags
drwxr-xr-x 9 www-data root 258 Mar 2 10:33 text
drwxr-xr-x 9 www-data root 93 Mar 1 18:45 theming
drwxr-xr-x 9 www-data root 98 Mar 1 18:45 twofactor_backupcodes
drwxr-xr-x 9 www-data root 98 Mar 1 18:45 updatenotification
drwxr-xr-x 12 www-data root 135 Mar 1 18:45 user_ldap
drwxr-xr-x 7 www-data root 165 Mar 2 10:33 viewer
drwxr-xr-x 9 www-data root 98 Mar 1 18:45 workflowengine
按照原有的文件所属用户和组修改
chown -R www-data:root onlyoffice/
然后访问服务,点击设置会在设置组里出现一个onlyoffice的节点,输入我们已经创建好的onlyoffice文件服务地址,保存即可
然后我们就可以在线操作word等文件了
nginx反向代理nextcloud
我这边是单独启动了一个nginx的容器
配置文件:nextcloud.conf
server {
listen 443 ssl; # 1.1版本后这样写
server_name cloud.miumiu.com; #填写绑定证书的域名
ssl_certificate /etc/nginx/ssl/www.miumiu.com.crt; # 指定证书的位置,绝对路径
ssl_certificate_key /etc/nginx/ssl/www.miumiu.com.key; # 绝对路径,同上
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://192.168.0.150:8090;
}
}
容器启动以后直接访问:https://cloud.miumiu.com
浏览器显示不能访问,这是需要修改一下nextcloud的配置文件:config.php
添加以下参数:
'overwriteprotocol' => 'https',
'trusted_domains' =>
array (
0 => '192.168.0.150:8090',
1 => 'cloud.miumiu.com', #手动添加域名
),
重启一下nextcloud服务以后就可以正常访问了