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

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

操作系统

硬件配置 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的方式有很多种,都是很简单的。

一键安装脚本

官网提供一键安装脚本:
https://download.nextcloud.com/server/installer/setup-nextcloud.php
创建文件夹

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' => '\\OC\\Memcache\\Redis',  
'redis' => array (                                       
    'host' => 'localhost',                      
    'port' => 6379,                             
),                                            
'memcache.locking' => '\\OC\\Memcache\\Redis',

配置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配置文件,在VirtualHost内添加配置

sudo vim /etc/apache2/sites-enabled/000-default.conf
<Directory /var/www/nextcloud>
    AllowOverride All
</Directory>

编辑/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转发的方式
采用的是frps一款很方便的开源的局域网穿透工具
https://github.com/fatedier/frp/releases

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下自启动
https://github.com/kohsuke/winsw/releases 下载release包解压
拷贝winsw.exe(可能不叫这个名字)到frpc同目录,新建同名的winsw.xml文件,写入

<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>

打开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的搭建基本完成,nextcloud官网提供桌面和手机客户端,同时有很多插件可供选择,可以使其更好用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容