我的家用 NAS 方案 - 软件集成
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 优点在于服务端会根据上传的影视文件,自动同步信息元数据,包括海报、简介、评分和背景音乐等。
OwnCloud
使用 OwnCloud 云网盘,达到多端(工作笔记本、手机、Ipad、服务器)数据的同步备份、共享和成员分享。
系统是 VMWareWorkStationPro 14 虚拟化的 Ubuntu 16.04.4-server-amd64,需要注意两点:
- 网络模式选择 Bridge ,并手动配置固定 192.168.1.x 段 IP
- 添加两块硬盘,系统盘存放在宿主机 SSD 盘,数据盘存放在宿主机硬盘存储池
0- 创建虚机
配置好网络及两块硬盘即可,过程略。
1- 安装系统
宿主机的 SSD 系统盘只有 120G,资源宝贵,只能给虚机提供系统空间,所以网盘的数据空间 (var) 都放在宿主机的机械盘存储池上。存储池分出的空间用 Mirror 模式,数据安全有保障。
宿主机划出网盘专用数据空间
虚拟机分区规划
系统盘 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- 部署 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- 激活
访问网页,设置管理员账号和数据库信息
7- 事物文件锁
默认基于数据库,需要替换成基于内存
安装 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 页面加载任务
推荐使用系统 crontab
先在页面上选择第三项 ‘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',
),
...
即时生效