实现步骤如下:
- docker安装owncloud owncloud
- 申请1元阿里云域名+免费“赛门铁克”https证书
- 设置路由动态解析域名,设置端口映射,实现广域网访问
- nginx+https反向代理owncloud
一. docker安装owncloud
1. 给树莓派安装系统
a. 首先给树莓派安装系统,可选择respbian,ubuntu,debian等,我安装的是 respbian-lite 精简版系统,因为作为文件服务器并不需要太多桌面版的功能;
b.将树莓派连接到网络中;
c.可以开启树莓派ssh服务,方便使用电脑操作,运行pi@raspberrypi:~ $ raspi-config
开启,具体操作,可以自己查教程。
2. 安装docker-owncloud
a. 安装docker,这里有完整树莓派docker安装教程
b. docker安装mysql(非必须)
(owncloud默认使用sqlite存储用户和文件信息,如果图简单,也可以不安装mysql,当然,理论上mysql的速度要比sqlite快,所以云服务器性能会好些)
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 hypriot/rpi-mysql
c. docker安装owncloud
下面分别是使用mysql和不使用的owncloud安装语句
- 使用mysql
docker run -p 8080:80 -d --link mysql:mysql -v /data/owncloud/:/var/www/html owncloud
- 不使用mysql
docker run -p 8080:80 -d -v /data/owncloud/:/var/www/html owncloud
说明:
- 这里的8080端口映射不是必须的,如果只是作为内网使用的owncloud就没有必要使用8080端口,可以直接
80:80
就行了,但是如果需要广域网访问,最好还是做一下映射,端口可自定义;
- 具体的docker语句不在此做太多解释,需要注意的是
-v /data/owncloud/:/var/www/html
,这里是将owncloud的 【前端界面文件和用户的上传文件(docker容器/var/www/html/data
下)】映射到了树莓派的本地磁盘下的/data/owncloud
下,便于管理和用户文件的备份等操作;
- 我使用的是一个32G的SD卡,平时只是做一些小文件的备份,所以并没有挂硬盘,如果你使用了硬盘,则需要将此处的映射
/data/owncloud
改成你的硬盘下的目录;
完成上面的步骤,我们的owncloud已经在运行了,使用ifconfig查询树莓派当前局域网IP,打开浏览器访问 http://树莓派局域网IP:8080
设置管理员用户名密码,如果使用了mysql,还需要配置mysql:
数据库用户:root
数据库密码:123456(或者自定义的其他密码)
数据库名:owncloud (提前新建空数据库)
localhost: mysql(忘了是直接填入mysql 还是填上 localhost:mysql,填错会报错,所以可以多次尝试)
点击安装完成,稍等片刻,即可进入文件管理界面,内网版owncloud创建完成,如果需要广域网访问,请继续往下看
2. 申请1元阿里云域名+免费“赛门铁克”https证书
重要: 我使用的是k2p路由器,刷的荒野无灯固件,可以直接解析阿里云域名,如果你的路由器不支持阿里云域名解析,则需要考虑其他服务商的域名服务了,这里只介绍阿里云的域名解析方法
a. 申请1元域名
百度搜索 “阿里云1元域名”,即可进入申请,具体步骤很简单,不会的自行搜索方法;
申请到域名后其实就可以直接路由动态解析域名+端口映射完成广域网访问了,但是此时的连接使用的http协议,owncloud使用的明文传输,谁也不希望自己的文件就这么在互联网里裸奔,所以我们还需要做下面的工作:
b. 申请赛门铁克证书并下载证书
申请SSL证书
Xnip2019-05-12_10-14-09.jpg
Xnip2019-05-12_10-18-08.jpg
证书申请之后需要下载对应服务器的版本留作备用,这里我使用了nginx的反向代理,所以下载了nginx版
Xnip2019-05-12_10-21-38.jpg
3. 设置路由动态解析域名,设置端口映射,实现广域网访问
k2p 路由器动态域名解析 owncloud.example.com,443端口映射到树莓派443端口
Xnip2019-05-12_10-27-15.jpg
Xnip2019-05-12_10-24-26.jpg
Xnip2019-05-12_10-25-34.jpg
4. nginx+https反向代理owncloud服务
a.安装nginx
运行
pi@raspberrypi:~ $ sudo apt install nginx
安装nginx
b. 导入https证书(root操作)
mkdir -p /etc/nginx/cert //创建证书目录
cp 上面步骤的证书目录/* /etc/nginx/cert
c. 添加 /etc/nginx/conf.d/default.conf,修改配置如下(root操作)
server {
listen 443;
server_name 你的域名;
ssl on;
ssl_certificate cert/证书文件.pem;
ssl_certificate_key cert/证书key文件.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:$
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
//转发全部443请求到8080端口
location / {
proxy_pass http://127.0.0.1:8080;
index index.php index.html index.htm;
client_max_body_size 1000M;
}
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
//自动将http请求转发到https请求
server {
listen 80;
server_name 你的域名;
rewrite ^(.*)$ https://$host$1 permanent;
}
将域名和证书文件填替换上述配置中,
此时访问 https://你的域名
就可以直接访问到你的owncloud服务了
注意事项:
- owncloud远程网页管理器有个bug,当你使用nginx代理,远程访问时,点击注销和其他少数功能时,会出现访问错误的情况,这是因为他在这些地方使用了绝对路径(本来应该是 /logout,他写成了 ‘http://127.0.0.1:8080/index.php/logout’ ),导致无法访问的问题,不过不影响使用,平时也不怎么使用网页管理,所以我就没有去改他的源码,如果你有强迫证,可以自行修改;
- 手机版的owncloud是收费的,可以使用nextcloud作为替代品,因为nextcloud是owncloud的翻版,app兼容
完成
网友评论