几个常见的 NAS 系统整理及选择

看文章老有几个 NAS 系统被翻来覆去的提到,这里就一起看看 Wiki,看看有什么区别吧。

FreeNAS

开源 NAS 系统中最著名也最强大的一个系统,基于安全和稳定著称的 FreeBSD,集成了 Sun 公司的 ZFS 文件系统,ZFS 拥有很多文件管理的特性,非常适合管理大量可扩展的数据系统。1 目前由 ixsystems 公司维护。

硬件依赖

FreeNAS 对硬件有一定的要求(ECC 内存),达到日常可用需要较大内存,如果要安装插件或者启用虚拟机可能需要更多。FreeNAS 的 ZFS 需要一个基本的内存量来维持基本的运行。2

安装

安装教程:

NAS4Free

基于 FreeNAS 0.7 开发的一个分支,由原 FreeNAS 系统开发者发起创建。

官网:

OpenMediaVault

OpenMediaVault 是一款基于 Debian 的 NAS 操作系统,项目领导人是 Volker Theile,于 GUN GPLv3 下开源。OpenMediaVault 和 FreeNAS 有个很深的缘源,他们都基于 FreeNAS,不过在 2009 主要的两位项目负责人产生分歧,所以 Volker Theile 基于 Linux 重写了 FreeNAS 于是成就了 OpenMediaVault,而另一位 FreeNAS 的创始人 Olivier Cochard-Labbé 则基于 FreeBSD 重写了 FreeNAS,于是成就了今天的 FreeNAS。3

OpenMediaVault 主要面向小型办公环境和家庭,所以体积非常小,并且还有树莓派版本。

个人在对比了开源操作系统之后选择了 OpenMediaVault,日常使用起来基本无问题。

优点

  • 内存占用小
  • 可以充分利用 Debian 的软件生态
  • 支持 Docker
  • 可以借助第三方软件组存储池,磁盘冗余备份

其他参考链接

ESXi

由 VMware 开发,ESXi 是这家以虚拟机著称的公司开发的一款为企业而设计的虚拟机,是VMWare vSphere Hypervisor套件之下重要组件。ESXi 可以方便的安装在服务器中,然后就可以虚拟化安装其他系统。

前身是 ESX,依赖 Linux,后来抛弃 Linux 变成了 ESXi。

界面比较友好,但是硬件兼容性差。

更详细的介绍可以参考这个视频

unRAID

[[unRAID]] 是基于 Slackware 这个 Linux 发行版的 NAS 系统 (6.2RC2 基于 14.2)。unRAID (又有人写作 Unraid, 或者 UnRaid) 是另一款 NAS 操作系统,实现的功能都大同小异 4,unRAID 不通过组 RAID 方式来存储数据,但是可以和 RAID 一样做到冗余备份,简单来说 unRAID 就是带有检验盘的磁盘簇 (JBOD)。

unRAID 另外比较亮眼的就是虚拟化技术以及硬件直通,可以在此基础上虚拟化安装各个操作系统以及充分利用硬件接口。

unRAID Server OS is a Network Attached Storage server operating system that boots from a USB Flash device, and is specifically designed for digital media storage.

unRAID 6 默认使用 XFS 文件系统,但如果定义了 Cache poll,那么会使用 BTRFS 文件系统。

unRAID 优点

  • 系统从 U 盘启动,启动后系统在内存中
  • 集成插件支持,集成 Docker 支持,支持虚拟机
  • 支持硬盘无访问自动休眠
  • 只需要一个校验盘(需大于阵列中最大的盘的容量),整个磁盘阵列允许一个磁盘挂掉,只需要用同等大小的磁盘替换即可
  • 扩容方便,只需要往阵列中继续添加磁盘即可,唯一的限制就是新添加的硬盘容量不能大于校验盘大小。如果新加入的盘容量大于校验盘则需要先将校验盘替换成该硬盘,然后将原来的校验盘作为新盘加入

unRAID 缺点

  • 系统配置在重启后可能丢失,并且基于一个非主流的 Linux 发行版,排查问题可能遇到瓶颈
  • unRAID 是需要授权的,但相反这个对于非技术人员反而可能是优势,毕竟可以有一个技术支持。unRAID 的授权价格从最低 $59(6 块硬盘), $89(12 快硬盘),到 Pro $129 (无限硬盘)5

其他

Openfiler

这是一款基于文件的存储系统。

官网: https://www.openfiler.com/

  • CIFS,NFS,HTTP
  • SAN feature,iSCSI,FC
  • High Availability / Failover
  • Block Replication (LAN & WAN)
  • Web-based Management
  • Cost-free Storage Capacity Expansion

NexentaStor

NexentaStor is an OpenSolaris or more recently Illumos distribution optimized for virtualization, storage area networks, network-attached storage, and iSCSI or Fibre Channel applications employing the ZFS file system. Like OpenSolaris, NexentaStor is a Unix-like operating system.

RockStor

基于 Linux,采用企业级文件系统 BTRFS,提供 SMB/CIFS、NFS 以及 SFTP 常见的共享方式

EasyNAS

Conclusion

总结来讲,FreeNAS 有最好的文件系统 – ZFS,但是对 Docker 支持需要借助虚拟机有一定性能损耗,OpenMediaVault 最轻量,但是对虚拟机不支持硬件直通,unRAID 可以非常方便的扩展硬盘池大小,对虚拟机支持也比较完善。

对于我个人而言,目前我并没有支持 ECC 的内存,也没有备用多余的内存条,我目前的数据也不需要做到实时备份,所以目前我不需要 FreeNAS,而 UnRaid 又有一些我无法容忍的问题(比如配置丢失的问题,作为个人家用虽然可以 24 小时开机,但我不想每次开机后需要重新配置),综合下来 OpenMediaVault 最符合我的需求:

  • 一个稳定的系统,Debian 上的扩展也非常多
  • Docker 也支持
  • 配合 mergerfs 可以实现多物理盘组合,实现 UnRaid 中随时添加磁盘的特性
  • 配合 SnapRAID 可以实现冗余备份
  • 配合 Prometheus 和 Grafana 可以对 NAS 进行全面的监控,弥补起管理后台监控的不足
  • 最重要的就是 OpenMediaVault开放源代码的

reference


2020-02-11 freenas , unraid , esxi , docker , linux , freebsd , openmediavault , nas

从零搭建一台 NAS:软件篇

之前总结过一篇 NAS 硬件 介绍了自组 NAS 可能遇到的一些名词和概念,这里再总结一下相关的软件。

Operating System

首先就是操作系统的选择,这里 也简单总结过 FreeNAS,OpenMediaVault 和 [[unRAID]] 的优缺。

软件的选择

MergerFS

MergerFS 提供了一种简单的,类似于存储池的概念,可以让我们通过简单的方式来访问多块硬盘,和 unRAID, Synology, Qnap 提供的方式类似。总结一下就是 MergerFS 允许我们混合合并多个数据卷到一个挂载点下。

mergerfs is a union filesystem geared towards simplifying storage and management of files across numerous commodity storage devices. It is similar to mhddfs, unionfs, and aufs.

特性:

  • 组合多块磁盘成存储池
  • 支持多块不同格式,不同大小的硬盘
  • 支持增量升级硬盘,可以不用一下子购入一组硬盘来扩充容量
  • 将多个硬盘驱动器组合在一个挂载点进行读取和写入
  • 为每个驱动器提供一个单独可读的文件系统,所以假如想要拆下一块硬盘,那么这块硬盘也可以挂载到其他系统中使用
  • 只运行当前有读写任务的硬盘

官网:

安装

直接从源安装:

apt install mergerfs fuse

或者用 deb 安装:

wget https://github.com/trapexit/mergerfs/releases/download/*/mergerfs_*.debian-stretch_amd64.deb && dpkg -i mergerfs*.deb

Docker

Docker 官方的教程已经足够清晰:

apt install curl
curl -sSL https://get.docker.com | sh

为了管理方便,可以将自己的用户名加入到 Docker 用户组:

usermod -aG docker your-name

Test Docker:

docker run --rm hello-world

snapRAID

snapRAID 是一个备份应用,他可以在一组硬盘中计算 parity,然后通过 parity 来恢复磁盘故障可能带来的数据丢失。snapRAID 是 ‘snapshot’ RAID 的缩写,它不是和 mdadm, ZFS 或者 uRAID 那样实时备份,它需要定时运行 sync 来同步。

snapRAID 支持不同大小的硬盘,但是 partiy 磁盘必须要大于或等于最大的数据盘的容量。

  • snapRAID 支持最多 6 块 parity 磁盘(基于奇偶校验保护),这就使得 snapRAID 可以提供远超过 ZFS 和 BTRFS RAID 的错误容忍。
  • snapRAID 的数据完整性校验使用 128 bit 校验和,类似于 ZFS 的 256bit 校验和,snapRAID 可以自动修复这些错误。
  • 此外,上次同步以后更改的任何文件都可以逐个文件还原,从而在文件级别提供了非常完善的备份解决方案。要知道 RAID 并不是备份。
  • snapRAID 还可以在已经有数据的磁盘中使用,这想比如传统的 RAID,又是一个巨大的进步。
  • 再者,它只会让正在使用的磁盘运转,不像 RAID 即使获取一个文件,也需要所有磁盘运转。

SnapRAID is a backup program for disk arrays. It stores parity information of your data and it recovers from up to six disk failures.

SnapRAID 是为一组不经常修改的文件而设计的,一个常见的用例就是媒体或家用服务器。假设你拥有 2TB 的影片,2TB 的剧集,你多长时间更改他们一次?并不是很经常吧。那么你需要对这些文件进行实时的奇偶校验计算,还是在每天固定时间安静地执行一次?我的想法就是每天一次同步就已经足够保证数据的安全。

再举一个简单的例子,假如你下载了一个文件,并保存为 “WorstMovieEver.mkv”,这个文件立即可以访问到,但直到下一次奇偶校验(或者奇偶校验快照)执行,这个文件都是没有被保护的。这就意味着在下载完成后到执行奇偶校验这个过程中,如果你遇到了磁盘故障,那么这个文件就无法恢复了。值得注意的是,如果文件足够重要,那么手工执行一次 snapraid sync 也是非常简单的。

snapRAID 在 GPL v3 开源许可下开源,snapRAID 支持大量的操作系统,包括但不限于 Linux, OS X, Windows, BSD, Solaris 等等。

官网:

经过上面的一大番解释,相信你已经了解 snapRAID 的运作方式了,在使用 snapRAID 之前请先审视一下自己的使用场景。snapRAID 非常不适用于频繁修改的应用程序,例如数据库或其他类似的应用程序,如果你的使用场景是类似这种,那么请优先考虑实时奇偶校验的解决方案。如果你能够容忍可能造成数据丢失的时间窗口,并且有一批静态的大文件,SnapRAID 就是为你准备的。

安装

@IronicBadger 提供了一键编译脚本:

apt install git
git clone https://github.com/IronicBadger/docker-snapraid.git
cd docker-snapraid/
chmod +x build.sh
./build.sh
cd build/
dpkg -i snapraid*.deb

snapraid -V
# snapraid v11.1 by Andrea Mazzoleni, http://www.snapraid.it

使用

SnapRAID 有详尽的文档.

reference


2020-02-11 nas , software , server , operating-system

使用 tinyMediaManager 整理影视资源

tinyMediaManager (后文简写成 tmm) 可以用来批量处理本地的影视资源,处理后就可以非常漂亮用海报墙的方式展示出来。

下载安装

tinyMediaManager 是 Java 编写的,所以天然的具有跨平台的属性,三大桌面平台全都支持,并且还是开源的。

Mac 下可以使用:

brew install --cask tinymediamanager

功能

特色功能 1

  • 支持从 themoviedb.org, imdb.com, ofdb.de, moviemeter.nl 等等站点抓取电影元信息,海报,图片等等
  • 支持从 opensubtitles.org 自动获取字幕,当然这个站中文的比较少
  • 支持批量重命名

使用

使用过程是比较简单的,添加媒体库,然后 tmm 就能通过文件名在左侧边栏展示出来,然后指定元数据从 themoviedb.org 获取,如果媒体文件命名足够清晰的话,可以直接一键自动匹配所有的影片。

媒体文件的管理

绝大部分影片用 bt 下载后可能的文件名是这样的:

利刃出鞘(中英双字幕).Knives.Out.2019.WEB-1080p.X264.AAC.CHS.ENG-UUMp4.mp4

对于这样的文件名本身就已经告诉了我们很多信息,比如中文片名,英文片名,发行日期,文件格式,编码格式,音频编码格式,中英文字幕情况,以及出处,如果想要在 [[Kodi]],Emby,[[Plex]], 或者 Jellyfin 这些媒体播放器中展示出海报,剧情介绍,演员表等等 metadata,还缺少两样东西:

  • xxx-poster.jpg
  • xxx.nfo

poster.jpg 顾名思义就是电影的海报,而 nfo 文件就是存放该媒体文件 metadata 信息的地方,用 less 或者直接用 vi 查看的话就一目了然了。其中包含着这部电影需要展示的完整的信息,有了这两个文件,不管在那个媒体管理软件中打开存放的目录就能比较漂亮的显示媒体海报墙了。

Extended

安装 tinymediamanager 过程中发现 themoviedb 这个非常棒的网站,不仅完美的代替了豆瓣,界面美观,而且还提供了 API 接口,豆瓣恶心的把 API 关闭后,又频繁删贴,早有点看不下去了。

等那天有空,把我的豆瓣评分同步 过去。2


2020-02-10 media , movie , poster , emby , qnap , tv-serial

自建 RSS Reader

Tiny Tiny RSS

Php 5.6, Postgresql or MySQL

Docker 安装,虽然 ttrss 官方给了自己的解决方案,但似乎刚刚起步,而 linuxserver/tt-rss 的镜像因为拿不到 tt-rss tarball 所以也停止更新了。所以最后折中的方案就是用了 这个镜像

QNAP 下的 PostgreSQL

App store 中可以直接安装,但实际上 QNAP 只是帮用户默认用 docker-compose 安装好了,不过也还行了,连 phpPgAdmin 也安装了。

查看下文件内容:

version: '3'

services:
  db:
	image: postgres:11.4
	restart: on-failure
	ports:
	  - 5432:5432
	volumes:
	  - ./data:/var/lib/postgresql/data
	environment:
	  - POSTGRES_PASSWORD=postgres

  web:
	image: edhongcy/phppgadmin:latest
	restart: on-failure
	ports:
	  - 7070:80
	  - 7443:443
	depends_on:
	  - db
	environment:
	  - PHP_PG_ADMIN_SERVER_DESC=PostgreSQL
	  - PHP_PG_ADMIN_SERVER_HOST=db
	  - PHP_PG_ADMIN_SERVER_PORT=5432
	  - PHP_PG_ADMIN_SERVER_SSL_MODE=allow
	  - PHP_PG_ADMIN_SERVER_DEFAULT_DB=template1
	  - PHP_PG_ADMIN_SERVER_PG_DUMP_PATH=/usr/bin/pg_dump
	  - PHP_PG_ADMIN_SERVER_PG_DUMPALL_PATH=/usr/bin/pg_dumpall

	  - PHP_PG_ADMIN_DEFAULT_LANG=auto
	  - PHP_PG_ADMIN_AUTO_COMPLETE=default on
	  - PHP_PG_ADMIN_EXTRA_LOGIN_SECURITY=false
	  - PHP_PG_ADMIN_OWNED_ONLY=false
	  - PHP_PG_ADMIN_SHOW_COMMENTS=true
	  - PHP_PG_ADMIN_SHOW_ADVANCED=false
	  - PHP_PG_ADMIN_SHOW_SYSTEM=false
	  - PHP_PG_ADMIN_MIN_PASSWORD_LENGTH=1
	  - PHP_PG_ADMIN_LEFT_WIDTH=200
	  - PHP_PG_ADMIN_THEME=default
	  - PHP_PG_ADMIN_SHOW_OIDS=false
	  - PHP_PG_ADMIN_MAX_ROWS=30
	  - PHP_PG_ADMIN_MAX_CHARS=50
	  - PHP_PG_ADMIN_USE_XHTML_STRICT=false
	  - PHP_PG_ADMIN_HELP_BASE=http://www.postgresql.org/docs/%s/interactive/
	  - PHP_PG_ADMIN_AJAX_REFRESH=3

看到了默认密码了吧,QNAP 官方的页面都不写一下,让别人一键安装的去哪里找,还不如直接贴这个让用户自己到 Container 里面自己建呢。

如果安装后发现用默认的用户名:postgres 和默认密码:postgres 登录不了,尝试重启一下服务,然后 netstat -tupln 看看服务 5432 端口有没有启动。

/etc/init.d/postgresql.sh restart

然后就开始安装 ttrss:

docker run -d --name ttrss --restart=unless-stopped \
-e SELF_URL_PATH=http://<your-nas-ip>:181 \
-e DB_HOST=<your-nas-postgresql-host> \
-e DB_PORT=5432 \
-e DB_NAME=ttrss \
-p 181:80 \
wangqiru/ttrss

安装的时候有个坑,启用时遇到如下错误:

PHP Fatal error: Uncaught PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "ttrss_version" does not exist LINE 1

我一般习惯 MySQL 的做法,先到数据库中新建了一个 DB,新建一个用户,然后再用 -e DB_USER=user -e DB_PASS=password 来创建 Docker 容器,没想到遇到了 Bug,首次初始化的时候脚本里有着判断,如果 db 已经存在了就不初始化 sql 了,所以到数据库中把新建的数据库删掉,然后再来一次就好了。

其他说明:

  • --restart 参数可以换成 --restart=always,这样系统重启容器也能重启
  • SELF_URL_PATH 这里需要和启动时的 URL 配置完全一致,否则 ttrss 启动时会出错

其他插件安装可以参考这里,比如全文输出,主题之类,我只想用 ttrss 来订阅几个我日常关注的博主,其他的订阅源还是 InoReader 所以也就不折腾全文不全文了,不全文输出的也就没有订阅的必要了。不过如果你想要实现全文输出也还是有办法的。

Mercury Parser api

docker run -d --name=mercury-parser-api \
--restart=unless-stopped \
-p 3000:3000 -d wangqiru/mercury-parser-api

FreshRSS

FreshRSS 也是 PHP 编写,基本依赖也就是 PHP 和数据库,MySQL 5.5.3+ MariaDb, SQLite, PostgreSQL 9.5+. 界面也比较简洁大方。

在线预览:https://freshrss.org/

用 Docker 安装也比较方便,可以参考这里

安装

docker run -d \
  --name=freshrss \
  -e PUID=1000 \
  -e PGID=100 \
  -e TZ=Asia/Shanghai \
  -p 6080:80 \
  -v /share/Container/freshrss:/config \
  --restart unless-stopped \
  linuxserver/freshrss

NewsBlur

Python, Django, Celery etc

NewsBlur 的在线预览可以点击这里,界面也还是很不错的。

Selfoss

另一款 PHP 编写的 RSS 阅读器,Selfoss 比较简单,依赖也比较简单,PHP,WebServer,Database(sqlite, mysql, PostgreSQL) 就可以,所以安装起来也比较简单,甚至有环境的基础下,下载 zip, 解压,然后修改一下配置即可。

需要注意的是,config.ini 配置文件中的 password 字段,需要访问 http://ip-selfoss-service/password,然后输入密码生成一个 hashcode,然后将该密码 hash 配置到 config.ini 文件中。

然后访问 http://ip-selfoss-service/opml,可以导入 opml 文件。

Android Reader

总结

Selfoss 相对比较简单,定时抓取也要手工 crontab 来触发,但功能一点也不弱,日常用完全没有问题,并且依赖非常少。

排错

在我配置使用 SQLite 作为数据库时,Selfoss 没出现问题,但是当我配置 MySQL 作为数据库时,在日志中给我报了:

[2020-02-10 16:04:21] selfoss.ERROR: PDOStatement: You do not have the SUPER privilege and binary logging
 is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

网上一查似乎是 MySQL 权限问题,但想想我已经给了 Selfoss 的用户整个 selfoss 数据库的权限了,后来一查看到有人和我相同的情况 1,定位到应该就是 MySQL 中创建 Tigger 的权限不足导致。

[2020-02-10 16:09:03] selfoss.ERROR: PDOStatement: Trigger does not exist

结合这个错误,所以我的解决方法就是在安装时临时给 selfoss 这个数据库用户超级权限,安装好后把权限取消。

  • Selfoss 安装好后会在 phpMyAdmin 中能看到 Selfoss 创建了两个 Trigger,insert_updatetime_triggerupdate_updatetime_trigger, 备份时记得备份,mysqldump --triggers --no-create-info --no-data --no-create-db --skip-opt selfoss > selfoss.trigger
  • 删除 triggers from the selfoss database: drop trigger insert_updatetime_trigger; and drop trigger update_updatetime_trigger;
  • replaced the selfoss user in the exported selfoss.trigger file with root (DEFINER=root@localhost)
  • 导入 mysql selfoss < selfoss.trigger

miniflux

Go 编写,依赖 PostgreSQL。

stringer

Ruby 编写

Leed

Php/MySQL

更多自建的 RSS 可以参考这里 大概还有几十种,不同语言,不同实现。

Feedbin

Ruby & Postgres & Redis & Memcached & Elasticsearch

reference

  1. https://selfoss.aditu.de/forum/index.php?mode=thread&id=895 


2020-02-09 rss , reader , self-hosted , linux , docker , qnap , qnap-tutorial , 威联通

威联通折腾篇二十一:Virtualiztion Station 安装 Windows10

平时不会想起用 Windows,因为没有要用的场景,但有的时候不得不用到,所以安装一个以防万一。

导入虚拟机

支持导入的虚拟机格式有:

  • ova
  • ovf
  • vmx
  • qvm

全新安装虚拟机

如果选择新建虚拟机可以用镜像全新安装。

VNC 链接

安装后可以设置 VNC 连接,设置端口 5900,然后就可以通过客户端连接了。

Linux 下可以使用 Remmina:


2020-02-09 qnap , windows , qnap-tutorial

自建邮件服务器可选项

Mail-in-a-Box

maillu

搭建介绍:

mailcow

Open source email server

mailcow 使用介绍:

搭建视频教程:

docker-mailserver

文档不是很全

salmon

一个 Python 写的 smtp 服务

inbucket

Disposable webmail server (similar to Mailinator) with built in SMTP, POP3, RESTful servers; no DB required.

A great tool for email testing.

reference


2020-02-08 mail , linux , docker , smtp , mail-server

威联通折腾篇十九:Calibre-web

借助 QNAP(威联通)的 Container Station 功能,可以展开无限想象,之前也已经分享 过很多的使用 Docker 镜像来安装的教程了。所以今天不展开讲,主要就是来分享一下,最近安装的 calibre-web。因为之前七零八落的收集了很多电子书,文件分散在磁盘的各个地方,一直没有好好整理,正好趁着这个机会把所有的文件都放到一个地方了。

docker

主要是用的镜像是 technosoft2000 制作的 calibre-web:

我尝试了 linuxserver 发布的 calibre-web,也不错,不过缺少了在线预览功能。然后还看到有几个中文的镜像,还没来得及尝试。

源码主要在 https://github.com/janeczku/calibre-web 这里。

docker create --name=calibre-web --restart=always \
-v <your Calibre books folder>:/books \
[-v <your Calibre Web application folder>:/calibre-web/app] \
[-v <your Calibre Web kindlegen folder>:/calibre-web/kindlegen`]
[-v <your Calibre Web config folder>:/calibre-web/config \]
[-e USE_CONFIG_DIR=true \]
[-e APP_REPO=https://github.com/janeczku/calibre-web.git \]
[-e APP_BRANCH=master \]
[-e SET_CONTAINER_TIMEZONE=true \]
[-e CONTAINER_TIMEZONE=<container timezone value> \]
[-e PGID=<group ID (gid)> -e PUID=<user ID (uid)> \]
-p <HTTP PORT>:8083 \
technosoft2000/calibre-web

批量导入书籍

注意下方命令中的 --library-path 需要指定 Calibre 库的位置。

calibredb add --library-path=/books -r /path/to/your/book_dir_you_want_to_add

使用该方法添加的书籍会在原始位置,而 metainfo 则会添加到 Calibre 库中,也就是上面一行的 /books 目录中。

更多关于 calibredb 命令的使用可以参考官网

Goodreads API

获取 Goodreads API

批量导入 Calibre

在 Calibre 界面中可以快速的导入一个目录,但是在 Web UI 里面暂时不能做到,所以借用 Bash 命令 1

if [ "$(ls -A /[autoaddfolder])" ]; then
	 calibredb add -r "/[autoaddfolder]" --library-path="/[calibrelibraryfolder]"
fi

Others

talebook

亮点是支持从豆瓣获取数据,不过我使用的 technosoft2000 的镜像也是支持的。

talebook-calibre-web

gshang2017

  1. https://github.com/janeczku/calibre-web/issues/412 


2020-02-08 qnap , calibre , calibre-web , linux , docker , qnap-tutorial

威联通折腾篇二十:自带 Apache Web 服务器及 SSL 配置

折腾一下威联通自带的 Web 服务器。

vhost

在界面上修改虚拟主机配置,比如 Create New Virtual Host:

  • Host name: blog.nas.com
  • folder: /share/Web/wp
  • protocol: HTTP
  • port number: 80

对应的修改会保存到如下文件:

/etc/config/apache/extra/httpd-vhosts-user.conf

点击应用,QNAP 会应用修改,然后因为我是局域网用,所以修改了我本地 /etc/hosts,把域名 blog.nas.com 指到 QNAP 的局域网地址。

/etc/init.d/Qthttpd.sh reload

然后在自己机器上就能通过域名 (blog.nas.com) 访问 NAS 中 /share/Web/wp 目录。

vhost 配置解析

在 QNAP 上查看 vhost 配置文件 /etc/config/apache/extra/httpd-vhosts-user.conf,可以看到:

NameVirtualHost *:80
<VirtualHost _default_:80>
		DocumentRoot "/share/Web"
</VirtualHost>
<VirtualHost *:80>
<Directory "/share/Web/wp">
		Options FollowSymLinks MultiViews
		AllowOverride All
		Require all granted
</Directory>
		ServerName blog.nas.com
		DocumentRoot "/share/Web/wp"
</VirtualHost>

解释:

  • DocumentRoot 配置了服务器根目录
  • Options MultiViews 使用”MultiViews”搜索,即服务器执行一个隐含的文件名模式匹配,并在其结果中选择。
  • ServerName 主机名字

SSL 配置

reference


2020-02-08 qnap , qnap-tutorial , linux , apache , web-server

NextCloud 和 Joplin 完美合作

今天不经意打开了 NextCloud 管理后台,然后看提示有 App 更新就顺手进去看了一下,然后就发现了宝藏,这一年多来不过把 NextCloud 作为 Dropbox 代替品,做为文件同步工具,没想到后台已经发展出各种“玩法”,安装插件可以在 NextCloud 中启用 Calendar,Contacts,甚至还有视频通话插件,然后通过插件可以将 NextCloud 扩展成 RSS 阅读器,可以变成看板,可以变成电子书阅读器等等。不过让我眼前一亮的是其中有个插件叫做 Joplin Web API。不过该插件目前并不完善,还在 beta 阶段,不过不妨展开想象,如果未来可以借助 NextCloud,那么分享 Joplin 中的笔记,甚至对同一个笔记展开协同合作也不是不可能的。

WebDAV

NextCloud 默认已经启用了 WebDAV, 所以可以在 Joplin 设置,同步设置中直接配:

http://[ip]:[port]/remote.php/dav/files/USERNAME/Joplin

记得 Joplin 文件夹要创建好。

二步验证

开启二步验证后需要在后台生成一个密码,而不能用自己的用户名和密码来同步。

reference


2020-02-08 nextcloud , joplin , file-sync , note , note-taking , open-source

目录列表程序

最简单的 index 就是开启 Apache,或者 Nginx 的 Directory Index Listing。

location /somedirectory/ {
	autoindex on;
}

不过有些简陋而已。

FileBrowser Enhanced

Nginx docker

Nginx index 套了一层皮肤

olaindex

OneDrive directory listing application

h5ai

h5ai 比较简单,放到目录下就能使用,不过源码已经很久没有更新了。

zdir

依赖:

  • PHP

特色功能:


2020-02-07 nginx , server , php , linux , index

电子书

最近文章

  • 读书是否是唯一重要的事? 不久之前和朋友约去了趟植物园,聊起读书是否是第一要务的时候产生了一些分歧,关于是否要去学习如何学习这一件事情产生了一些分歧。我站在的立场是读书是必须的,而我朋友则认为在有限的时间里面实践要优先于读书。而关于要不要学习如何学习这一件事情,他仍然坚持自己的实践而非去了解如何学习。
  • Android 上的 RIME 输入法 trime 同文输入法使用 早之前就已经在 Linux 和 macOS 上配置了 RIME 并且一直使用到现在,但是在主力的 Android 上从最早的触宝输入法,后来切换成 Gboard,日常使用倒是没什么大问题,就是有一些词总是需要翻页才能找到,这让我非常不爽,就想手机上能不能用 RIME,于是就有了这篇水文。
  • Obsidian 使用篇一:使用 markdown-clipper 全文保存网页 之前使用整理 Evernote 代替品 的时候就提出了我自己的一个需求,就是有一个完善的 Web Clip 系统,Evernote 和 WizNote 都做的比较不错。但 Obsidian 并没有提供类似的工具,不过幸好 Obsidian 使用 Markdown 来管理文档,这样的开放程度使得我可以寻找一个将网页变为 Markdown 的浏览器扩展就能做到。
  • 使用了半年 macOS 之后 我又回到了 Linux 的怀抱 我在使用了半年 macOS 之后,又回到了 Linux 的怀抱,虽然 macOS 有其自身的优势,我也不否认 macOS 系统上软件生态的友好,但我发现即使我将日常开发主力机器装回到 Linux,也没有丧失操作系统的便捷性和易用性。这或许和我下意识的只使用跨平台的软件有关,并且最长使用的软件几乎都是一套快捷键。
  • 重置 macOS S.M.C 和 NVRAM 今天用得好好的电脑突然三次黑屏,两次发生在早上刚刚使用的时候,一次发生在晚上回家之后。所以一怒之下就直接上官网联系了 Apple Support,但是也不知道是不是我直接登录的 .com 网站,在我提交了 Support 之后一分钟一个外国小哥打了电话过来,我一下子没反应过来,只能用着不那么熟练的英语开始了 macOS 修复之路。