我的家用 NAS 方案 - 软件集成

2 分钟读完

Windows 10

操作系统使用 Win10 教育版

1- 远程桌面端口变更/防火墙

把默认的 3389 改成自定端口,需要修改多处注册表,略。

2- 存储池

用两块机械硬盘组成存储池,再根据需要分配磁盘的备份模式,类似 Raid。

对于存储重要数据的空间,采用双向镜像模式,具体过程略。

路由器

V1.0

1- 虚拟主机

使用路由器的虚拟主机功能,完成端口映射:把各项业务端口,映射到外网 IP 上,略。

2- DDNS

外网 IP 会变动,在路由器上设置好 DDNS 代理商,使用域名访问各业务,略。

V2.0

经过一个月使用检测,电信光猫对 DDNS 支持非常不稳定,将其改为桥接模式连接 TPLINK,在 TPLINK 里配置宽带账号后,设置虚拟主机及普联自带的 DDNS 服务。

PLEX

使用 PLEX 做家庭影院系统

配置方法很简单,有 Windows 服务端,电视安装安卓客户端即可,可参考官网

手机和 iPad 上需要支付 6 元,此外,服务端可以自动开启远程端口,非常省心。

PLEX 优点在于服务端会根据上传的影视文件,自动同步信息元数据,包括海报、简介、评分和背景音乐等。

plex-01

OwnCloud

使用 OwnCloud 云网盘,达到多端(工作笔记本、手机、Ipad、服务器)数据的同步备份、共享和成员分享。

系统是 VMWareWorkStationPro 14 虚拟化的 Ubuntu 16.04.4-server-amd64,需要注意两点:

  • 网络模式选择 Bridge ,并手动配置固定 192.168.1.x 段 IP
  • 添加两块硬盘,系统盘存放在宿主机 SSD 盘,数据盘存放在宿主机硬盘存储池

0- 创建虚机

配置好网络及两块硬盘即可,过程略。

1- 安装系统

宿主机的 SSD 系统盘只有 120G,资源宝贵,只能给虚机提供系统空间,所以网盘的数据空间 (var) 都放在宿主机的机械盘存储池上。存储池分出的空间用 Mirror 模式,数据安全有保障。

宿主机划出网盘专用数据空间

软集-1

虚拟机分区规划

系统盘 Disk-OS 分配 30G SSD 空间

数据盘 Disk-DATA 分配 320G 存储池空间

ZCloud
│
├──Disk-OS
│    └── vg-os
│          ├── lv-os-boot       ---   1G xfs
│          ├── lv-os-swap       ---   1G swap
│          └── lv-os            ---  28G xfs
│
└── Disk-DATA
     └── vg-data
           └── lv-var           --- 320G xfs

如下图例

软集-2

2- 部署 OwnCloud

安装依赖包

# apt-get install -y apache2 mariadb-server libapache2-mod-php7.0 \
          openssl php-imagick php7.0-common php7.0-curl php7.0-gd \
          php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring \
          php7.0-mcrypt php7.0-mysql php7.0-pgsql php-smbclient php-ssh2 \
          php7.0-sqlite3 php7.0-xml php7.0-zip

安装 OwnCloud tar 包

# wget https://download.owncloud.org/community/owncloud-10.0.8.tar.bz2

# tar xjvf owncloud-10.0.8.tar.bz2

# cp -r owncloud /var/www/

3- 配置 Apache 服务

添加配置文件

# vim /etc/apache2/sites-available/owncloud.conf
Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud

</Directory>

# ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf

开启 Apache 推荐模块

# a2enmod rewrite headers env dir mime

配置应用目录所属

# chown -R www-data:www-data /var/www/owncloud/

启动服务

# service apache2 start

4- 数据库

默认的 SQLite 性能有限,替换为 MariaDB

安全初始化、设置密码

# mysql_secure_installation

创建数据库 mycloud 、用户 zeastion 及赋权

MariaDB [(none)]> create database mycloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on mycloud.* to zeastion@localhost identified by '********';
Query OK, 0 rows affected (0.01 sec)

5- 配置 SSL

使用简单的自签名证书

# a2enmod ssl

# a2ensite default-ssl

开启 HSTS,配置文件加入如下字段

Header always set Strict-Transport-Security “max-age=63072000; includeSubdomains; preload”

# vim /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
...

重启服务

# service apache2 restart

6- 激活

访问网页,设置管理员账号和数据库信息

软集-3

7- 事物文件锁

默认基于数据库,需要替换成基于内存

软集-4

安装 Redis

# apt-get install redis-server php-redis -y

添加配置

# vim /var/www/owncloud/config/config.php
...
  'memcache.local' => '\OC\Memcache\Redis',
  'redis' => [
      'host' => 'localhost',
      'port' => 6379,
  ],
  'memcache.locking' => '\OC\Memcache\Redis',
...

重启服务

# service apache2 restart

8- 计划任务

OwnCloud 默认使用 AJAX 页面加载任务

软集-5

推荐使用系统 crontab

软集-6

先在页面上选择第三项 ‘Cron’

系统使用软件包里自带的预配置 cron.php,每 15 分钟执行一次

# crontab -u www-data -e
*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/cron.php

# crontab -u www-data -l
...
*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/cron.php

9- Apache 安全加固

关闭默认首页和列目录展示

# rm /var/www/html/index.html

# curl -I localhost
HTTP/1.1 200 OK
Date: Wed, 02 May 2018 09:12:55 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Type: text/html;charset=UTF-8

# vim /etc/apache2/apache2.conf
...
<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
...

# curl -I localhost
HTTP/1.1 403 Forbidden
Date: Wed, 02 May 2018 09:11:56 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1

关闭错误详情页

# vim /etc/apache2/conf-available/security.conf
...
ServerTokens Prod
ServerSignature Off
...

# service apache2 restart

# curl -I localhost
HTTP/1.1 403 Forbidden
Date: Wed, 02 May 2018 09:21:55 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1

10- 添加信任域

添加访问域名

# vim /var/www/owncloud/config/config.php
...
  array (
      0 => 'www.abc.com',
      1 => '192.168.2.x',
  ),
...

即时生效

分类:

更新时间: