威联通折腾篇十六:为 Container Station 更换镜像

都知道其实 QNAP 的 Container Station 就是 Docker,所以桌面版可以修改的国内镜像地址,QNAP 系统上也能够修改,可以快速提高镜像的下载速度。

其实在网页管理段也能够手动添加,在 Container Station 属性中,Registry 服务器可以手动添加。

或者我们可以 SSH 登录到后台,然后手动编辑配置文件,docker 的路径是 /share/CACHEDEV1_DATA/.qpkg/container-station/

然后在改目录下有 etc/docker.json 文件,手动修改该文件:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

然后重启 Container Station 服务:

/etc/init.d/container-station.sh restart

可用的镜像地址,可以参考我另外一篇文章。

备份一下用的 Docker Container

bookstack

version: "2"
services:
  bookstack:
	image: linuxserver/bookstack
	container_name: bookstack
	environment:
	  - PUID=1000
	  - PGID=1000
	  - DB_HOST=10.0.3.1:3306
	  - DB_USER=bookstack
	  - DB_PASS=password
	  - DB_DATABASE=bookstack
	volumes:
	  - /share/Container/bookstack_config:/config
	ports:
	  - 6875:80
	restart: unless-stopped

FileRun

version: '2'

services:
  filerun:
    image: afian/filerun
    container_name: filerun
    environment:
      FR_DB_HOST: 10.0.3.1
      FR_DB_PORT: 3306
      FR_DB_NAME: filerun
      FR_DB_USER: filerun
      FR_DB_PASS: password
      APACHE_RUN_USER: www-data
      APACHE_RUN_USER_ID: 1000
      APACHE_RUN_GROUP: www-data
      APACHE_RUN_GROUP_ID: 100
    ports:
      - "30080:80"
    volumes:
      - /share/filerun/html:/var/www/html
      - /share/filerun/user-files:/user-files
    restart: unless-stopped

Calibre-web

docker run --name=calibre-web --restart=always \
-v /share/vol4Book/CalibreBooks:/books \
-v /share/Container/calibre-web/app:/calibre-web/app \
-v /share/Container/calibre-web/kindlegen:/calibre-web/kindlegen \
-v /share/Container/calibre-web/config:/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=Asia/Shanghai \
[-e PGID=100 -e PUID=1000 \]
-p 8083:8083 \
technosoft2000/calibre-web

Nextcloud

docker run -d \
    -v /share/NextCloud:/var/www/html \
	-p 20080:80 \
    nextcloud

Gogs

docker run --name=gogs \
-p 10022:22 \
-p 10080:3000 \
-v /share/gogs:/data \
gogs/gogs

TT RSS

Tiny Tiny RSS

docker run -d --name ttrss --restart=unless-stopped \
-e SELF_URL_PATH=http://192.168.2.200:181 \
-e DB_HOST=10.0.3.1 \
-e DB_PORT=5432 \
-e DB_NAME=ttrss \
-p 181:80 \
wangqiru/ttrss

全文插件:

docker run -d \
--name=mercury-parser-api \
-p 3080:3000 \
wangqiru/mercury-parser-api

weblate

version: '3'
services:
  weblate:
    image: weblate/weblate
    volumes:
      - /share/Container/weblate/weblate-data:/app/data
    env_file:
      - ./environment
    restart: always
	ports:
	  - 5080: 8080
    depends_on:
      - database
      - cache
  database:
    image: postgres:11-alpine
    env_file:
      - ./environment
    volumes:
      - /share/Container/weblate/postgres-data:/var/lib/postgresql/data
    restart: always
  cache:
    image: redis:4-alpine
    restart: always
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - /share/Container/weblate/redis-data:/data

还需要把这个项目 中的 environment 文件拷贝过来,然后再:

docker-compose build
docker-compose up

rrshare

docker run -d \
--name rrshare \
-p 3001:3001 \
-v /share/rrshare:/opt/work/store \
oldiy/rrshare64:latest

Lychee

docker run -d \
--name=lychee-laravel \
--restart always \
-v /share/Container/lychee/conf:/conf \
-v /share/Picture/Lychee:/uploads \
-e PHP_TZ=Asia/Shanghai \
-e PHP_MAX_EXECUTION_TIME=600 \
-e DB_CONNECTION=sqlite \
-e DB_DATABASE=/conf/lychee.db \
-p 90:80 \
80x86/lychee:latest

flexget

docker run -d \
    --name=flexget \
    -p 3539:3539 \
    -v /share/Container/flexget/data:/data \
    -v /share/Container/flexget/config:/config \
    -e FG_WEBUI_PASSWD=password \
    -e FG_LOG_LEVEL=info \
    -e PUID=1000 \
    -e PGID=1000 \
    -e TZ=Asia/Shanghai \
    wiserain/flexget

2020-01-16 qnap , qnap-tutorial , linux , docker , mirror

备份数据及系统思考

上周五 NAS 系统盘挂掉后一个周末都没有过好,一边忙着备份数据,一边要忙着整理系统应用和配置。早以前除了云端同步数据曾经出现过一两次数据丢失的情况,本地保存的数据还没有出现过管理的问题,系统会用 Clonezilla 全量备份,笔电数据则辅以同步工具 Dropbox 和自建的 NextCloud,平时丢数据的可能倒是比较小,但唯一疏漏的 NAS,因为硬盘不是一次性买全而是分了几次,所以从一开始就没有规划好存储与备份,而系统的酷狼 4T 盘可能经过几次家里停电,SMART INFO 出现警告的时候也没有来得及备份,所以造成了从周五开始突然系统盘只读状态,无奈只能立即开启 rsync 手动先将系统盘中的数据备份到其他盘。等到周日把损坏的系统盘送修之后,是时候来思考一下如何管理本地数据了。

经过这一次的“事故”,倒是没有丢到多少数据,但是却是一件非常闹心的事情,去年花了一年的时间渐渐的逃离了云端服务,将照片从 Google Photos 离线到本地,将音乐从网易云音乐离线备份了一份到本地,想想这一切非常美好,没想到发生这么一件事情,所以也渐渐感受到本地 RAID 的重要性,对于重要的数据在本地一定要有一份备份。

数据划分等级

原来我对数据的划分非常模糊,一股脑的备份笔电磁盘中所有数据,当然这种不会出现漏备份某些文件的情况,但这也是成本比较高的一种做法,不仅备份数据量大,并且备份的过程也比较长。而经过这次的事故,渐渐的对需要备份的数据有了一定区分度,由我产生的文件,比如写下的文本(包括笔记,博客,TODO),拍摄的照片视频,代码文件,配置以及数据库文件(当然绝大部分代码都是 git 在另外有备份),不过还有一种非常容易忽略的就是,创建的比如音乐歌单,读书列表,当然大部分情况下都是对应的服务中,网易云音乐就曾经莫名其妙地弄丢我一个歌单,这些”文件”都需要提高备份级别。

数据分类存储

所以简单的来说数据需要分类处理,依据重要程度不同需要备份的方法也可以有对应不同,就目前我个人遇到的情况而言。

备份方法

代码等文本使用 git 备份

对于纯文本的内容,适合 git 来备份,commit && push 就能够至少在两地有备份了。Git 的分布式特性天然的适合文本的存档和备份管理。

适合 git 来备份的有:

  • code
  • dotfiles
  • rime config
  • idea config
  • software config

Dropbox NextCloud

对于云同步工具,适合同步二进制文件,比如文档或者图片

  • 常用的 word, ppt, pdf 等
  • 常用照片
  • 自动脚本备份的网站数据,或者 SQL
  • Joplin 数据
  • 各种二进制导出的配置
  • 日常需要同步的文件

Hard Drive backup

对于需要备份,但是查看次数非频繁的文档,适合单独使用硬盘来备份,比如:

  • 一段时间拍摄的照片,视频等
  • 整理的电子书
  • 音乐
  • 电影,电视剧

对于媒体文件,尤其是较大的电影,电视剧,图片,等等适合使用单独的备份盘来备份。

数据重要程度分级

对于我个人的使用场景而言,有这几类的文件需要重要备份:

  • 系统配置,以及 vim, tmux, zsh 等等配置
  • 个人数据,包括文本的,媒体的
  • 个人整理的笔记
  • 自建的应用数据库

对于不同的数据备份方法照上面提到的方法也不尽相同。

根据作用隔离磁盘

对磁盘的管理,对数据的种类进行划分,对不同的数据进行不同的备份处理。

如果磁盘存放的是个人数据,则要尽量减少磁盘的写入,尽量在备份的时候对磁盘写入,从而延长磁盘的寿命,如果可能这部分个人数据尽量使用 RAID1 或者 RAID5,做到即使有一块磁盘故障时数据不会丢失。

而另外一类场景则是下载电影,当使用 BT 或者 PT 时,磁盘会有大量的读写会大大减少磁盘的寿命,所以我的建议是单独使用一块磁盘作为下载盘,有对磁盘的大量不间断读写时都存放到该磁盘,并周期性对磁盘进行维护,比如使用同步工具定时将数据移动或者拷贝到另外的磁盘中进行保存。

网上有一种说法,说家用 RAID 实际用途并不大,这句话并不完全正确,如果家用 24h 挂机 PT 的话,如果数据是写到 RAID5 中,那么实际上三块磁盘都在工作,无形中就同时降低了三块磁盘的寿命。如果是常年 PT 的话,还是根据个人事情情况来选择最合适的方案。


2020-01-12 backup , data , system , nas

QNAP 上 SQL server 数据备份

平时没有注意备份 QNAP 上系统盘的数据,从昨天开始系统盘突然只读,而无法写入,发现磁盘有问题了,无奈只能边申请售后,边想着怎么备份数据,还要恢复这么多的配置。

平常的哪些文件备份倒是还好说,但是一直有用 QNAP 提供的 SQL server 服务,这部分数据平时也没有 mysqldump 下来,所以这就变得比较尴尬,但是 sql server 还有一种方法可以从物理文件中恢复。

用 ps 工具查看可以看到 1

/bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/var/lock/qmysql.pid --user=admin

datadir 就是 marialdb 真正存放数据的地方,ssh 进后台,备份该部分数据。

在该目录中能看到不同的文件

  • FRM 表定义
  • MYD 文件保存真实数据
  • MYI 是索引文件

通常情况下 linux 是在 /var/lib/mysql/ 文件夹下,QNAP 的地址是 /usr/local/mysql/var 目录下。

Backup

使用 rsync 将该目录下的数据全部备份到另外的磁盘上

rsync -azvhP --progress /usr/local/mysql/var/ /share/Backup/mysql_var/

Restore

等 QTS 系统安装完成后,再使用 rsync 来将数据恢复回来。


2020-01-11 qnap , sql-server , mysql , maria , sql , backup

云服务 free tier

AWS

EC2

750 小时的运行时间,Amazon Elastic Compute Cloud (Amazon EC2) 是一种 Web 服务,可以在云中提供安全并且可调整大小的计算容量。

S3

对象存储服务

  • 5G 存储
  • 20000 GET
  • 2000 PUT

RDS

MySQL、PostgreSQL、MariaDB、Oracle BYOL 或 SQL Server 的托管关系数据库服务。

  • 750 小时 / 月
  • 20G SSD
  • 20G 备份

Amazon DynamoDB

快速灵活的 NoSQL 数据库,具有无缝可扩展性。

  • 25G
  • 足以处理每月最多 2 亿次请求

Lambda

计算服务

  • 1000000 次请求
  • 320 万秒免费

SNS

快速、灵活、完全托管的推送消息收发服务。

腾讯云


2020-01-05 cloud , aws , amazon , tencent

在 Linux Mint 上使用 PlayOnLinux 安装网易云音乐

虽然网易云音乐发布了 Linux 版本的客户端,但网易隐藏的云音乐的上传入口只有 Windows 版本的也有,所以这里记录一下如何在 Linux Mint 下使用 PlayOnLinux 来安装网易云音乐 Windows 客户端。

准备工作

  1. Linux Mint 中准备好 PlayOnLinux,并准备好 3.x 以上版本的 Wine
  2. 下载好网易云音乐的 exe 安装包

安装

安装过程比较简单,我个人使用 Wine 3.20 版本,然后按照 PlayOnLinux 提示的步骤一步步执行即可。

playonlinux install netease music


2020-01-01 playonlinux , wine , linux , linux-mint , netease-music

关于 Rime 输入法思考和整理

很多年前写过一篇 Rime 配置,这几年陆陆续续,用过搜狗,也用回过 Rime,还试过 Linux 上其他的输入法,但是最后终于在 2019 年完全的切换到 Rime 下,并且经过一系列的折腾发现 Rime 的能力远远超过我的想象。其实输入法是一个及其有依赖性的工具,输入习惯,输入的常用词等等,都累积在了输入法中。这些年输入法引入了云同步功能,但我倒是觉得带来的便利性甚至不如其带来的缺点,唯一的好处是记录输入习惯,和常用词库,但是实际上可能带来的问题更多,比如

  • 隐私没有得到有效保护,有没有发现有的时候输入了某些词,可能一会儿广告就来了
  • 安全问题,甚至有过报道输入法将用户输入的内容不加密传输到服务器,假如真的能够拿到一个用户的输入历史记录,真的可以查到这个用户非常多的习惯,甚至有可能会泄漏用户密码等等
  • 我在弃用搜狗的时候甚至不允许用户删除自己的云端词库,这一部分原本属于用户的资产,无形中变成了一个商业公司的资产

多输入法

就像 Rime 自己说的那样,Rime 是一个输入方案的合集。所以只要有合适的输入方案,就可以输入对应的语言,从方言,到世界其他各国的语言,Rime 都可以轻松的实现,甚至可以借助 Rime 来实现一套自己的输入编码方案,比如官网教学中的一套输入中文大写数字的输入方案,定义 schema, 字典,然后就实现了一套中文大写数字的输入法。

安全

Rime 输入法不会联网,所有的配置都以文本的方式保存在本地,虽然一定成都上削弱了 Rime 的便捷性,但实际上就加强了 Rime 的安全性。只要保证自己的电脑安全,所有的数据都是安全的。

完全可配置

Rime 输入法从外观到词库,到甚至到输入方案都可以自己定制。熟悉 Rime 的机制后,完全可以使用 Git 将一整套配置管理起来。你可以使用一个输入法输入多国语言,Ctrl</kdb> + \` 非常轻松的就可以实现。

自定义短语

输入的候选词也能够配置,

可以在 custom_phrase.txt 中配置:

地平线:黎明时分	hzd	2

这样在输入法中输入 hzd 就可以直接出现前面的短语,只要在配置方案中配置了 custom_phrase,就可以使用。

custom_phrase:
  db_class: stabledb
  dictionary: ""
  enable_completion: false
  enable_sentence: false
  initial_quality: 1
  user_dict: custom_phrase

然后在 translators 中加入该词典:

translators:
  - xxxxx
  - "table_translator@custom_phrase"

2019-12-30 rime , linux , input-method , fcitx

终端的输入历史以及管理

配置终端历史文件地址

bash 会将所有终端的输入历史保存在 ~/.bash_history 中,同理,zsh 会保存在 ~/.zsh_history 中。

zsh 使用 HISTFILE 变量来管理保存的 zsh_history 文件,默认一般保存在 ~/.zsh_history 中。

配置 zsh 中记录的终端历史条数

在 zsh 的配置中:1

说明:

  • HISTSIZE 是终端历史中保存的最大行数 2
  • SAVEHIST 是保存在历史文件中的最大行数
  1. https://unix.stackexchange.com/a/273863/115007

    HISTFILE=”$HOME/.zsh_history” HISTSIZE=10000000 SAVEHIST=10000000 setopt BANG_HIST # Treat the ‘!’ character specially during expansion. setopt EXTENDED_HISTORY # Write the history file in the “:start:elapsed;command” format. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. setopt SHARE_HISTORY # Share history between all sessions. setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. setopt HIST_IGNORE_DUPS # Don’t record an entry that was just recorded again. setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt HIST_IGNORE_SPACE # Don’t record an entry starting with a space. setopt HIST_SAVE_NO_DUPS # Don’t write duplicate entries in the history file. setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. setopt HIST_VERIFY # Don’t execute immediately upon history expansion. setopt HIST_BEEP # Beep when accessing nonexistent history. 

  2. http://zsh.sourceforge.net/Doc/Release/Parameters.html#index-HISTSIZE 


2019-12-26 terminal , history , clear , command , cli

重拾 Wikipedia

时隔这么多年再来说 Wikipedia, 甚至显得有些落伍,毕竟这个时代,甚至说起 Wikipedia 就像是再谈论一个上世纪的东西,但是其实想想 Wikipedia 诞生也快靠近 20 年。就像之前发出的感慨一样,这些年用了很多的应用,很多的网络服务,但仔细想想曾经 Web2.0 所谓的人人可贡献,就我自己的感受来说,那些我曾经大量使用的服务, 在 Google+ 上分享的内容,在 Google Reader 上分享的文章,都随着关闭烟消云散,反而是我曾经不经意间在 Wikipedia 写下的词条,上传的照片这么多年还依然在,并且曾经的词条在经过更多人修订过后更加可信,更加丰富。

所以上个月开始,我不再给豆瓣添加词条,而把所有的条目内容整理到了 Wikipedia,真的开始了解 Wikipedia 之后我才发现, Wikipedia 的世界看似无秩序,但实际对词条的撰写有着比较严格的要求。

想象在这个世界里每个人都能自由分享所有人类知识的总和。 – 吉米·威尔士

在此,推荐每一个人都去尝试编辑一下 Wikipedia,在这里你能学到尊重他人,你能学到如何搜寻信息,你能学会如何书写可靠来源,你能学到如何保持中立,能学到如何培养版权意识。

可靠来源

在编辑 Wikipedia 的时候最常被编辑提及的就是缺乏“可靠来源”,在编辑每个词条内容的时候,每一句写下的话都要有可靠来源,Wikipedia 毕竟不是个人抒发观点的地方,所以给每句话写下可靠的引用。而可靠的引用又指的什么呢,不能是用户产生的内容,我被拒的其中一个原因就是,引用过多的豆瓣信息,而我也知道豆瓣的条目都是用户贡献的。

The fact that the info is not user-generated is certainly encouraging.

说实话要做到“正确”是非常困难的,但是要做到 Fact-Check 还是比较容易的。某一些内容可能放在现在是正确的,但是可能过一段时间就不正确了,所以 Wikipedia 要时时刻刻准备着被修改。

关于版权保护

之所以上面提到为什么编辑 Wikipedia 会学习到版权保护,那是因为,每一个编辑都需要为自己写下的每一句话负责,严禁复制粘贴原文,并且引用的图片必须要做到合理使用,在上传每一个文件时,Wikipedia 都会列出非常详细的说明。也就是在这个过程中,我知道了维基百科对版权重视。

版权法保护的是思想的表现形式(比如一段介绍“相对论”的文字敘述),而不是思想本身(比如相对论本身這一理論)

创建新条目

像我一样的新手,有些时候看到中文 Wikipedia 没有一个词条,便直接新建了一个词条,不妨用新词条向导来新建,如果不清楚该词条是否满足关注度等等要求,甚至可以先编辑 Draft 然后让其他编辑来审核,或者来一同修改。

reference


2019-12-26 wikipedia , wiki , knowledge

kswapd0 占用 99% 的 CPU

这两天办公用的 Ubuntu 总是在内存将用尽的时候死机,所有的界面卡住不同,进 tty 用 top 看一眼后发现 kswapd0 这个进程竟然占用 90~100% 左右的 CPU,网上一查说这个进程是用来管理虚拟内存的。

一般的 Linux 都会有 RAM,swap, 和 EXT4 这几个部分,EXT4 分区就是用来存放一般的文件,可以在机械硬盘或者 SSD 上划分出 ext4 分区来保存文件,相对 RAM(内存)来说要稍微慢一些,RAM 就是日常所说的内存,用来做程序运行时的高速缓存,而 SWAP 是交换分区,一般在物理内存比较小的机器上会划分一块物理磁盘来作为 swap 分区。

swap top

swap 分区是一款虚拟的 RAM,一般在 HDD/SSD 上,当运行比较小的物理内存时,可能经常缺内存,那么系统就会使用 swap 分区,将物理内存中的内容搬迁到 swap 分区中暂存。当可用物理内存比较小的时候,kswapd0 进程就会将相对比较不常用的程序移动到 swap 分区中,这个时候就可能造成这些程序比较卡顿。加入又一台机器物流内存是 4G,而要运行一个需要 5G RAM 的游戏,那么至少有 1G 的内存会放到 swap 分区中。kswapd0 移动内存的过程就会造成 CPU 的大量使用。要解决这个问题有这样几个方式。

在网络上有些教程会提醒用户,当计算机使用了比较大的物理内存的时候,就不需要划分 swap 分区了,一定程度上这种说法也没问题,但是如果 disable swap 分区后,如果遇到程序内存泄漏或者物理内存用完的情况,那么整个计算机就会进入卡死状态。所以推荐还是不要禁用 swap,虽然 swap 分区不会有 RAM 那么快,但是当 RAM 耗尽的时候,swap 分区可以提供一层额外的保护。如果对 swap 比较感兴趣,可以参考这里 阅读更多的相关知识。1

在 askubuntu 的回答中有句话说的很好

Just realize that the SWAP is a failsafe for the RAM.

failsafe 及时发生了故障也要有故障保护机制,否则系统就会 fail.

配置 /etc/sysctl.conf

配置 /etc/sysctl.conf 文件,来告诉 kswapd0 进程只有当物理内存用尽的时候再做移动内存的事情

echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf

这里 0 表示物理内存还剩余的百分比,这个值的取值范围是 0-100,配置 0 也就意味着只有当没有物理内存可用时再执行 kswapd0.

关闭一些不用的程序

降低或者减少物理内存的使用,也可以降低 kswapd0 过于频繁执行的问题。

购买更多物理内存

一劳永逸的解决内存短缺的问题。也就是换内存条。

手动添加 swap 分区

因为工作的 Ubuntu 是从一盘机械硬盘复制到 SSD 中的,当时 swap 分区没有划分,如果要手动添加 swap 分区可以如下操作。

根据详细的步骤,分区,以及格式化参考之前的文章

编辑 /etc/fstab 文件,增加新的 swap 分区:

sudo vi /etc/fstab

增加类似这样一行:

UUID=735b3be3-779c-4d21-a944-b033225f3ab4 none   swap    sw      0       0

分区的 UUID,可以通过 blkid 命令来获取:

sudo blkid /dev/sda2

假设 /dev/sda2 就是划分的新的 swap 分区。


2019-12-23 swap , linux , memory

优秀开源项目推荐:BookStack 一款高效简单的 Wiki 系统

已经忘记了什么契机,BookStack 就存在了我的 ToDo List 中,一直想要找一款能够快速记录一些常用到的,但是却不太容易记住的东西,原来的方法就是用 markdown + git, 或者如果手边有笔记本,或者手机就记录在 WizNote 中,但这样一来很多内容都散布在各个不同的软件或者应用中,以前也整理过 gitbook 但是一直没有那么系统的想要说整理出一本书这样,所以一直依赖还是用这个博客,记录点点滴滴的学习笔记

Info

GitHub 地址:

开源协议: MIT license

安装依赖条件:

  • PHP & Laravel
  • MySQL

浏览 BookStack 的官网 主页上列举了一些 Feature 都是一些非常贴心的功能。

  • 完整的权限管理
  • WYSIWYG 编辑器,避免了每次我都要 Vim 打开,也使得图片等其他资源管理比较方便
  • 搜索,索引,不用每次都要我 rg 先搜索下在编辑了
  • 可订制化,从名字到 Logo,到注册选项,虽然我个人用并用不到
  • Optional Markdown Editor,这一点非常舒服
  • Multi-lingual, 其实我自己用 EN 就够了,不过有时间也给这个项目翻译一下好了
  • 支持不同格式的文件导出,赞

这一些功能集合到一起就像是整合版本的 GitBook,支持多人编辑,还有权限管理,完美的解决了使用 markdown + git 管理当文件太多的情况下管理的不便。基于这些理由,所以就在我的 NAS 上,用 Docker 搞了一个。目前先自己用着记录一些暂时未整理好,或者暂时不能公开的内容吧。

安装的过程也非常简单了,官网给出的教程非常详细了,请参考官网.

QNAP 上使用 Docker 安装

首先开启 QNAP 上的 MySQL 服务,然后给 bookstack 新建一个数据库 bookstack,并且给 bookstack 这个数据单独创建一个用户 bookstack。然后因为我的 Docker 配置的网关地址是 10.0.3.1 所以就写了宿主机的地址。然后就不用上面提到的教程单独给 BookStack 开一个 MySQL 实例了,共享宿主机的 MySQL 就行了。

version: "2"
services:
  bookstack:
	image: linuxserver/bookstack
	container_name: bookstack
	environment:
	  - PUID=1000
	  - PGID=1000
	  - DB_HOST=10.0.3.1:3306
	  - DB_USER=bookstack
	  - DB_PASS=<password>
	  - DB_DATABASE=bookstack
	volumes:
	  - /share/Container/bookstack_config:/config
	ports:
	  - 6875:80
	restart: unless-stopped

然后等待启动即可。

如果遇到这个问题:

nc: getaddrinfo: Name does not resolve

可以参考 stackoverflow


2019-12-20 qnap , qnap-tutorial , github , bookstack , open-source , self-host , wiki

电子书

最近文章

  • 使用 assh 来管理 SSH config 前两天一直在思考如何管理我的 SSH config 配置,最后的解决办法就是通过 git 版本管理起来。但这两天由冒出一个新的问题,那就是经常在国内直连 aws 或者 oracle 的机器时 ssh 连不上,但是通过国内的 VPS 中转就非常快,那这就意味着,我每一次连接国外的机器时必须先登录腾讯云的机器,然后在从腾讯云的机器上连过去,有些麻烦,但那天在 Twitter 上看到有人分享了一个 SSH 管理的命令行工具 assh,大致的看了一下使用简介,通过配置就可以完美的解决这个问题。
  • 备份和恢复从 Chrome Webstore 中下架的 Google Chrome Extension 这两天重装系统同步 Chrome 的数据才发现,我一直使用的 Dream Afar New Tab 这个我用了很久的扩展从 Chrome Webstore 消失了,不清楚是 Google 主动下架,还是作者很久没有更新被 Webstore 下了还是为什么。但这个扩展经过了很多的 Chrome 版本依然运行良好至今为止都能每天给我提供世界不同地方的美景。
  • Docker 网络与容器互联 简单整理一下 Docker 中 network 子命令,以及 docker 中相关 network 方面的内容。
  • MacBook Pro 初始设置记录 这里就简单的记录一下我从 Linux Mint 迁移到 MacOS 根据我的个人需求来初始化新的 MacBook Pro 的一些设置,和一些基本的感想。下面的内容会按照我自身的需求出发,我会列举我想要的功能然后在此基础上我需要借助哪些工具来实现。在切换到 MacBook Pro 之前,我使用了大约 6 年多的 Linux Mint,我已经有一套我自己的 Workflow,在切换到 Mac OS 之前我就在想哪一些的事情我是必须有 Mac 的软硬件才能做到,并且很提高某一方面的效率的,我列了一些
  • 多设备间同步 ssh 配置及密钥 ssh 客户端会在用户目录 ~/.ssh/ 目录下存放配置信息 (~/.ssh/config) 和公钥和私钥,如果有多个设备不同设备间的同步和管理就会成为一个比较头疼的问题。我在 Reddit 上抛出这个问题 后,我本来想的是通过 git 版本控制来进行管理,但有人说因为公钥和私钥都是二进制的文件,其实没有必要使用 git,任何一个同步工具就能够解决。