Win10下基于NextCloud的可公网访问的家庭云盘搭建

2018-12-19 17:42:27 34点赞 296收藏 36评论

追加修改(2018-12-19 18:57:52):
winsw配置文件有误,应为: “ <configuration> <!-- ID of the service. It should be unique accross the Windows system--> <id>FRPC</id> <!-- Display name of the service --> <name>frpc client (powered by WinSW)</name> <!-- Service description --> <description>内网穿透工具</description> <!-- Path to the executable, which should be started --> <executable>frpc.exe</executable> <arguments>-c frpc.ini</arguments> <logmode>reset</logmode> </configuration> ”

购买理由

因为某度网盘离线下载关了,同步盘不好用,会员太贵等原因,自建网盘的需求逐渐提上日程。

目标: 主要在局域网访问,经过局域网穿透绑定域名,外网也可以轻度访问。

恰逢家里有一台限制的MacMini,于是购买了一个硬盘盒,接上硬盘,开搞。

Apple Mac mini台式电脑 (Core i5 处理器/4GB内存/500G存储 MGEM2CH/A)3548元老款丐版MacMini京东去购买YottaMaster 移动硬盘盒底座2.5/3.5英寸硬盘座通用USB3.0玩客云台式笔记本外置固态硬盘盒子 黑K100-U369元外接硬盘盒,不贵,还算稳定。可以买双盘位的,带有一键备份功能。京东去购买希捷(SEAGATE)酷鱼系列 4TB 5400转256M SATA6Gb/s 台式机机械硬盘(ST4000DM004)679元普通硬盘京东去购买


文字版,记录和分享一下过程和经历的坑。

操作系统

硬件配置

i5-4200U 双核四线程 1.4GHz的弱鸡CPU,4G内存

软件配置

用bootcamp安装了最新版的win10,build 1809。
控制面板程序启用或关闭Window功能,打开“适用与Linux的Windows子系统”,以下简称“WSL”。
打开自带应用商店,搜索ubuntu,下载安装,当前版本为Ubuntu 18.04.
打开cmd命令行,输入bash即可进入WSL子系统(以下操作除非特殊说明,均在bash命令行下)。

安装依赖软件

PHP

主要安装php及其扩展

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install openssl php7.2-common php7.2-mcrypt php7.2-cli php7.2-xml php7.2-mysql php7.2-gd php7.2-imap php7.2-intl php7.2-json php7.2-ldap php7.2-imagick php-ssh2 php7.2-recode php7.2-tidy php7.2-xmlrpc php7.2-mbstring php7.2-curl php7.2-redis php7.2-zip php7.2-sqlite3

Apache

默认安装和配置就好,默认网站存放位置/var/www/html

sudo apt install apache2 libapache2-mod-php7.2

mariadb(mysql亦可)

数据库服务,默认配置

sudo apt install mariadb-server

配置root用户密码

mysql
UPDATE mysql.user SET password = PASSWORD('newpassword') WHERE USER = 'root';
FLUSH PRIVILEGES;

完成后重启数据库

sudo service mysql restart

Redis

缓存服务,默认配置

sudo apt install redis

nextcloud安装

安装nextcloud的方式有很多种,都是很简单的。值得注意的是,目前离线下载插件只支持到13.0版本,更新的14和最新15的版本尚未支持。

一键安装脚本

官网提供一键安装脚本
创建文件夹

sudo mkdir /var/www/nextcloud

修改权限

sudo chown -R www-data:www-data /var/www/nextcloud

进入文件夹

cd /var/www/nextcloud

下载脚本

sudo -u www-data wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

执行脚本

sudo -u www-data php setup-nextcloud.php

等待下载安装完成,过程中会选择安装路径 按.选择当前(/var/www/nextcloud)即可。
配置apache主页

sudo vim /etc/apache2/sites-enabled/000-default.conf

将其中的DocumentRoot的值改为/var/www/nextcloud
提醒: vim编辑器,非编辑状态hjkl控制上下左右,i进入编辑状态,esc推出编辑状态,非编辑状态下:wq保存退出,非编辑状态下:q!不保存退出,不了解的同学建议搜索vim相关快捷键和操作。
配置完成,重启apache

sudo service apache2 restart

即可打开localhost,观察结果并进行后续操作。

snap安装

该安装方式不需要手动安装依赖软件

sudo snap install nextcloud

等待安装结束即可打开localhost,观察结果并进行后续操作。

其他

手动安装和虚拟机安装以及docker方式在此不再赘述。

nextcloud配置

安装

如果软件包安装顺利,那么这时在win10下打开网页localhost,应该会出现首次运行的配置界面。
填入用户名密码,数据库选择mysql/mariadb,数据库地址localhost:3306,数据库名nextcloud。
选择数据存放位置,比如/home/lidemingzi/yunpan,在命令行创建目录并配置该目录权限

sudo mkdir /home/lidemingzi/yunpan
sudo chown -R www-data:www-data /home/lidemingzi/yunpan
sudo chmod -R 0770 /home/lidemingzi/yunpan

回到网页,确认安装,等待安装结束就会进入nextcloud云盘界面

优化

进入程序目录,编辑配置文件

cd /var/www/nextcloud
sudo vim config/config.php

在array格式的配置里,加入redis的配置

'memcache.local' => 'OCMemcacheRedis',
'redis' => array (
'host' => 'localhost',
'port' => 6379,
),
'memcache.locking' => 'OCMemcacheRedis',

配置apache,允许路由转发和设置header

sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
sudo cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

开发apache配置文件

sudo vim /etc/apache2/sites-enabled/000-default.conf

在VirtualHost内添加配置


AllowOverride All

编辑/var/www/nextcloud/.user.ini

sudo vim /var/www/nextcloud/.user.ini

修改:

upload_max_filesize=16G
post_max_size=16G
memory_limit=513M

并新增

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

upload_max_filesize和post_max_size是配置上传文件最大限制。
复制一份到php的配置目录

sudo cp .user.ini /etc/php/7.2/apache2/conf.d/user.ini

重启apache即可

配置外网访问

此处采用云服务器vps转发的方式
采用的是frp一款很方便的开源的局域网穿透工具

VPS服务器端

下载对应系统的release包并解压,修改frps.ini

[common]
bind_port = 7000
vhost_http_port = 8080

配置成自启动,以ubuntu为例,新建配置文件

sudo vim /lib/systemd/system/frps.service

写入以下内容

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的abc的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini
[Install]
WantedBy=multi-user.target

配置完成后,可通过 "你的vps域名:8080" 方式访问你本地的nextcloud,当然也可以配置80端口,或者通过配置nginx等的端口转发功能把子域名的80端口转发到8080上。
以nginx为例,在配置文件中http节点内添加配置

server {
listen 80;
server_name cloud.lideyuming.com;

location / {
proxy_pass http://cloud.lideyuming.com:8080;
}
}

本地电脑Win10

下载windows的release包,解压至合适的目录,修改配置文件frpc.ini,x.x.x.x为你的vps地址或者域名

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.你要绑定的域名.com

配置在windows下自启动
下载release包解压
拷贝winsw.exe(可能不叫这个名字)到frpc同目录,新建同名的winsw.xml文件,写入



FRPC

frpc client (powered by WinSW)

内网穿透工具

frpc.exe
-c frpc.ini
reset

打开windows的cmd,进入winsw的所在目录, 运行

winsw.exe install

安装完成后,在任务管理器的服务标签,找到FRPC服务,并启动。

打开防火墙的80和相关端口

本地电脑WSL

修改配置文件

sudo vim /var/www/nextcloud/config/config.php

在trusted_domains的配置项array中加入你绑定的域名(如果有的话),重启apache

数据迁移和备份

数据迁移

不推荐直接在系统层面对文件进行操作。
如需将旧文件迁移进来,将文件移动到数据存放位置,比如/home/lidemingzi/yunpan/lidemingzi/files,然后进入安装目录执行nextcloud自带的扫描程序,比如:

cd /var/www/nextcloud
sudo -u www-data php occ files:scan --all

备份

nextcloud商店有ftp支持插件,自身也支持webdav访问,在另一台电脑上使用GoodSync等程序定期备份即可。

一些坑

自启动

win10的WSL不能跟随系统启动,需要手动添加启动脚本
新建一个文本文件,改名为wslstartup.bat,里面写入如下内容

powershell.exe -WindowStyle Hidden -c "bash /init.sh "

打开运行,输入shell:startup回车,打开windows启动文件夹,将创建的批处理脚本移动进去
在WSL命令行下,创建init文件,写入以下内容,123456替换为你的密码

sudo vim /init.sh

写入:

#!/bin/bash
echo "123456" | sudo -S /usr/sbin/service mysql start
echo "123456" | sudo -S /usr/sbin/service apache2 start
echo "123456" | sudo -S /usr/sbin/service redis-server start

配置权限

sudo chmod 755 /init.sh
sudo chown lidemingzi:lidemingzi /init.sh

挂载的windows盘符的权限问题

在WSL中,win10的c盘d盘,自动挂载在了/mnt/c /mnt/d下,但是这些文件和文件夹的权限都是1001并且无法通过chown和chmod更改,因此需要使用drvfsf方法重新挂载

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=11

为了方便,把如下脚本加入到/init.sh中,WSL启动时就执行

echo "123456" | sudo -S /bin/umount /mnt/c
echo "123456" | sudo -S /bin/umount /mnt/d
echo "123456" | sudo -S /bin/mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=11
echo "123456" | sudo -S /bin/mount -t drvfs P: /mnt/d -o metadata,uid=1001,gid=1001,umask=22,fmask=11

完成

至此,旧电脑物尽其用,nextcloud的搭建基本完成,其官网提供桌面和手机客户端,同时有很多插件可供选择,可以使其更好用。

运行效果运行效果

展开 收起
36评论

  • 精彩
  • 最新
  • 全是linux软件为什么不直接用linux,只是带这点东西的话精简安装整机128m的内存就够用,还稳定省电。

    校验提示文案

    提交
    mac装linux不太好搞呀,另外win10还有别的用

    校验提示文案

    提交
    不过我回头在我网件路由器上试试,梅林其实也是一linux,感谢提供思路。

    校验提示文案

    提交
    收起所有回复
  • PHPStudy+可道云kodbox,安装5分钟内解决,不用这么麻烦,可以挂载多个盘符,包括对象存储等,卤煮试试

    校验提示文案

    提交
    后来mac出了,入了星际蜗牛,目前稳定一年多,挺好

    校验提示文案

    提交
    请问下这个需要linux子系统吗?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 我是win10,开hyper,然后黑群+nextcloud,其中nextcloud是一键部署的,适合我这种入门汉。黑群备份照片,下载电影好评,就是自动匹配字幕不完美,揪心。。。

    校验提示文案

    提交
    你这样也很方便,我也只是提供其中一种方式😁我的这台机器配置太低,开了虚拟机太卡,本来还想在弄个gitlab的,都要卡死了。

    校验提示文案

    提交
    收起所有回复
  • 其实白苹果跑php比win10和ubuntu快很多,用brew安装也很方便。我是敲php的,我们都是用的mac来开发的

    校验提示文案

    提交
    我敲dotnet也是用mac [得意] mac天下第一 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 不懂就问,那个frp的网速是不是取决于vps的网速呢 [观察] [观察]

    校验提示文案

    提交
    是的,不过它也有点对点穿透模式,不过成功率不高,具体可以看下他的文档,有中文的。

    校验提示文案

    提交
    收起所有回复
  • 你这……直接在mac上装就好啦,整个homebrew啥不能装 [喜极而泣] [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    留着win10还有点别的用处。。

    校验提示文案

    提交
    收起所有回复
  • docker了解下?

    校验提示文案

    提交
    详情见nextcloud安装第三段 [鬼脸]

    校验提示文案

    提交
    收起所有回复
  • 在刷了毛子固件的 旧路由上体验了下
    效果还不错
    有个问题,app用户,自动上传
    多用户的话,会有区分么,还是都传到同一个目录下了?

    校验提示文案

    提交
    不同用户是不同的目录。类似于: /data/nextcloud/user1/files /data/nextcloud/user2/files 这样子

    校验提示文案

    提交
    收起所有回复
  • MacMini里面装win10,win10里面装ubuntu,ubuntu里装nextcloud...

    校验提示文案

    提交
    还好意思说自己是it男

    校验提示文案

    提交
    让大神您见笑了

    校验提示文案

    提交
    收起所有回复
  • 我居然不是在看CSDN

    校验提示文案

    提交
  • 我以为看的是csdn [口水]

    校验提示文案

    提交
  • 一脸懵逼的进来,一脸懵逼的出去。。。 [装大款]

    校验提示文案

    提交
  • 嗯,看不懂。。。

    校验提示文案

    提交
  • 从头至尾就1幅图,其他都是文字(代码),业界良心。但是新手看这么多代码会手足无措的,还是需要配图的。

    校验提示文案

    提交
  • 发现我完全看不懂,还是太年轻了

    校验提示文案

    提交
  • 套娃么这是。。。 [喜极而泣]

    校验提示文案

    提交
  • 收藏学习了~牛*牛*

    校验提示文案

    提交
  • 还不错紫薯布丁

    校验提示文案

    提交
  • 大佬大佬,一个字也看不懂 [喜极而泣]

    校验提示文案

    提交
  • 看懂了,就缺macmini了

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
296
扫一下,分享更方便,购买更轻松