[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器

2020-02-19 21:50:00 41点赞 214收藏 49评论

创作立场声明:转载请注明出处,不过我多半也没时间看有没有人盗稿子,反正要是能帮到谁就行,实在没帮到几个,那就当是我写的学习笔记了

当我真的开始搜索了,才发现似乎没人写过在威联通上部署bitwarden......于是我才写了这篇文章

前言

Bitwarden真的是个不错的软件,虽然这小东西没有1password那么精致,而且市面上lastpass这样的软件也是免费服务,但密码这种东西不管软件里面说的怎么本地加密,夸得天花乱坠的,总归是捏在自己手里更舒心一点,而且搭建一个实用并且简单的服务器也是一次很不错的练手机会。本着这样的想法来搭建服务器的我,才会去aliyun搞个云服务器弄这个密码管理。但是把这玩意儿迁移到本地却出现了很麻烦的情况……

广义上来说,nas这东西也是个服务器,我家有两台,一个是跑windows的服务器,另一个是威联通的nas。本着省电和降低散热压力的原则,这俩运算能力都不高,于是跑虚拟机就基本不可能了(卡的要死还怎么玩……),所幸不论是windows还是威联通,配置docker都不算麻烦。但是Windows环境下配置docker在此并不推荐,最大的原因是windows下的docker配置,在网上的教程太少,对于新手学习难度确实高了点,如果是现成的nas诸如群晖或者威联通,配置docker就相对容易很多,教程也一抓一大把。因此我才会选择在威联通上部署这个服务,毕竟人家玩这个也没多久嘛。

但是威联通的用户相对群晖还是太少了,网上大多数docker配置bitwarden的教程基本都是基于群晖写的,威联通的系统不论是docker环境还是linux底层都和群晖有多多少少的区别,直接照搬显然不行。

所幸,威联通的docker也并没有魔改到什么可怕的地步,在威联通系统里面,docker和其他几个容器服务被合并成了ConrainerStation这一个软件

这就是这次要折腾的主体这就是这次要折腾的主体

我明白很多朋友看见两个完全不认识的单词拼凑出来的东西就会发自内心的不想用,不过别怕,这软件也就名字可怕了点……

这东西本质上还是个docker,至少是以docker为主的一个“综合性容器管理界面”(我是这么叫他的)。相对于群晖的docker而言,个人感觉这个平台虽然使用不算简便,但是功能上却一点不输群晖的docker。跑一些简单的业务,我想是完全没问题的。

具体流程:

本次安装参考了以下几位大神的文章,出处先标识在这里,前人挖井后人饮水,这些引用还是得写明白:

《使用 bitwarden_rs 搭建自托管的密码服务器》, https://wiki.wjw.me/posts/1550028650/

《NAS的搞机之旅 篇五:威联通NAS使用百度云Docker教程,超简单!》,https://post.smzdm.com/p/apzee959/

修改威联通qnap的docker加速镜像地址》,http://lok.me/a/2434.html

……


威联通的docker安装容器可以从软件内置的镜像源浏览器直接获取,但是因为未知的原因,我始终无法正常获取bitwarden的镜像。

而且如果通过一般安装的方法创建镜像的话,配置上麻烦了点,威联通的UI设计仍然不算直观,很多地方还不如敲代码来的方便。

按照在群晖创建bitwarden的经验,通常直接获取docker镜像后,配置好目录就可以直接运行了,如果网络通畅,解决不能安装的特殊问题,我想应当是可以获得和群晖一致的体验的,但是现在只能走其他方法。

这时候我注意到创建页面右上方有“创建应用程序”的按钮,点击后出现了一个很熟悉的编辑器页面……

居然能直接使用docker-compose居然能直接使用docker-compose

这时候需要简单解释下docker的安装方法了,docker安装通常有两种方式,一个是直接从镜像源获取配置好的镜像部署到本地,手动部署好环境后就可以运行,另一种方式是通过一个叫“docker-compose”的软件配置,这款软件会根据本地已经写好的yml文件,直接处理相关的docker环境问题,包括镜像的获取,镜像的环境配置,镜像的网络端口映射等等等等,这样在一些需要批量快速处理的场景中,一个docker-compose.yml文件就可以很方便的进行docker的部署。

而弹出来的这个界面,就是docker-compose文件的编辑页面,在这个页面可以直接编辑应用程序名称和yml文件中的相关内容,也就是说,如果有一份合适的部署bitwarden的docker-compose文件,只需要将文件内容粘贴到这个编辑器当中,就有可能直接部署好bitwarden。

当然,docker-compose这个东西本质上是对docker部署的批量化处理,还是需要经过docker镜像下载等一系列操作才行,但是由于docker-compose的文件编辑标准比威联通自己的应用程序更加简单明确,很多ui上难以体现和配置的东西在这个文件里面就是一句话的事,反而会比在网页程序中手动配置来的方便。

那么接下来就是让docker能够快速下载有关镜像,方便程序自动部署,这就需要对镜像源进行一些处理。

威联通docker镜像源配置

Docker的镜像服务器在国外,下载镜像速度必然很慢,更别说一些大一点的镜像下载到一半断掉这种欲哭无泪的事情是经常发生的。所以配置一个docker的国内镜像源很重要。

配置源需要采取以下操作

1,在威联通控制台当中,打开ssh

[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器

2,使用putty等工具连接到威联通的ssh,密码一般是管理员账号密码(这里我用的xshell,个人用户免费,但是很多大佬用的还是putty,实际上市面上的ssh软件很多的,不必局限在某一个上面)

3,打开目录docker源配置目录,命令:“cd /share/CACHEDEV1_DATA/.qpkg/container-station/etc”

[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器

4,使用系统自带的vi编辑器编辑目录中的docker.json文件,命令:“vi docker.json”

这里截图有点问题,是英文句号不是逗号这里截图有点问题,是英文句号不是逗号

5,如果不出其他情况的话,打开后应当是两个大括号在文件中,点击键盘“i”将vi编辑器切换到编辑模式,移动光标结合回车将括号分开到上下两行,中间一行填入docker镜像的相关内容

6,Docker镜像地址可以通过多种渠道获取,我个人使用的是aliyun的docker加速服务,免费,但是需要在aliyun官网注册后免费开启,因为每个账号的加速地址不同,因此无法分享,但是也有可以公开的地址,在这里举例使用中国科技大学的加速镜像。

在中间行输入:“ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]”。记得该行需要首行空两格。(其实还是推荐去申请一个aliyun的加速服务,反正不要钱,阿里云的速度和质量也比大学要好很多,大学那点小水管带宽还是留给莘莘学子吧)

[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器

7,随后重启docker,也就是container-station服务,命令:“/etc/init.d/container-station.sh restart”(不过最简单的还是这时候直接重启nas……)

当然也可以用网页管理直接重启当然也可以用网页管理直接重启

这之后威联通的docker加速就应该配置成功了,下载镜像应该也没什么问题了。


安装bitwarden镜像

前期准备处理的差不多,之后就开始bitwarden服务的部署。

刚才也说了,使用docker-compose要的其实是一个靠谱的docker-compose文件,在这儿我使用了这篇文章作为基础,感谢文章作者提供的教程和灵感,如有冒犯请联系(https://wiki.wjw.me/posts/1550028650/

我们一共需要准备两个文件,一个是config.env文件,一个是docker-compose文件。

首先需要准备的配置文件为config.env,这个文件内容是控制bitwarden安装后的一些基础配置,包括用户开放注册等项目,需要写好之后将文件放在一个docker能够读取到的位置。

我在nas当中开了一个单独的共享目录,专用于存放bitwarden运行中可能形成的相关文件,因此config.env文件最好也存放在这里。

目录名是“/share/Container/bitwarden”,如果没有这个目录可以使用ssh或者网页管理中的filestation自行创建,当然也可以选择到其他目录,只要方便自己管理同时docker能够访问的都可以。

[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器

(注意,如果要在配置文件中引用创建的共享文件,一般所有的共享目录都是在/share这个目录下的)

Config.env文件可以在本地计算机上进行编辑创建后再拷入nas的设定文件夹,config.env文件内容如下:


SIGNUPS_ALLOWED=true

DOMAIN=https://(你的网址)

DATABASE_URL=/data/bitwarden.db

ROCKET_WORKERS=10

WEB_VAULT_ENABLED=true

[威联通QNAP]使用ContainerStaion(docker)搭建Bitwarden服务器


我一行一行解释

1,signups_allowed这条是控制开放用户注册,因为服务器刚刚部署,肯定需要一个最初的账户,这条肯定得是true,不过在注册完毕后,如果需要关闭,也不需要在这里修改,这个文件权重比较低,如果其他配置文件有配置这个就无效了。

2,domain,这条是配置bitwarden服务器的对外域名,如果只是内网使用的话直接填写ip或者不写问题都不大,但是如果需要配置https,ssl加密的话最好还是写上。

3,database_url,这条是密码保存的数据库的路径,注意这个目录是相对于这个容器而言的,而并非相对nas而言,如果不理解用途最好不要随意修改。(容器的目录和nas的目录其实并不匹配,针对容器里面的程序来说,容器会提供给他们一个虚拟的目录以供读写,这个目录叫什么,是什么配置取决于用户在创建容器的时候如何配置,而并非直接按照nas的路径写入,可以理解为对于容器的软件而言,他们有一套独立的文件系统,而这套系统用映射的方式和真实目录对应)

4,rocket_workers,这条是服务器使用的线程数量,这里配置的10条,其实对于nas可以再小一点,具体多少看个人nas的性能来定,不做修改也不存在太大的问题。

5,web_vault_enabled,是否开启web客户端,这条不开的话会没办法进入bitwarden配置页面,肯定得开,但是未来可以根据需要自行关闭。


将config.env文件拷入相关目录之后,就开始着手准备docker-compose.yml文件,这个是我们需要填入网页那一片空白的内容

就是这个大空白就是这个大空白

之后在ContainerStation当中就可以用编辑器创建一个bitwarden的docker容器了,但是不能完全照搬教程中的内容,需要根据自身环境进行一些简单的修改:

编辑器中应当有以下内容:


version: '3'

services:

bitwarden:

image: mprasil/bitwarden:latest

container_name: bitwarden

restart: always

volumes:

- ./data:/data

env_file:

- /share/Container/bitwarden/config.env

ports:

- "6666:80"

这里最后一排并没有显示出来,但是示意已经足够了这里最后一排并没有显示出来,但是示意已经足够了


这个文件的内容相对不需要太多解释,在本次参考的文章当中也有比较清晰的表述,在这里只有几点需要提一下:

前几行的version,services,image,container_name,restart都不要做修改,命令排版也最好不要变动(可以去被引用的原文寻找排版内容https://wiki.wjw.me/posts/1550028650/),但是有几个地方需要处理:

1,volumes,这行下方的“- ./data:/data”,含义是将系统目录中的/data目录挂载到docker镜像环境的/data当中,这也是为什么我前文说到的不要修改config.env文件中data内容的原因,这两个文件的这两条是相互关联的,修改需要一同修改

如果只是修改docker镜像在nas中的文件存储位置,只需要修改./data:/data中前一个data的值,例如我修改成了“- /share/Container/bitwarden:/data”,将/share/container/bitwarden挂载到docker中的/data目录。

2,env_file,本条需要注意,这条需要根据你本身的config.env文件位置进行修改,最好填写完整路径,例如我的config.env文件存储位置在/share/Container/bitwarden/config.env,则我需要将完整路径填写到本条,否则安装过程可能会报错无法找到文件。

3,ports,本条与docker服务对外网络有关,是配置一个端口映射,将外部端口6666映射到docker镜像的80端口,也可以根据自身需要自行选择映射端口。(注意,诸如443,80等外部端口可能会与nas本身系统冲突,最好找个没人用的端口使用)

在将文件写入完成后,点击“验证YAML”可以检查文件配置是否存在问题,如有问题可以根据报错内容自行修改。

如果配置无误,就点击创建,应该就可以访问了。

部署完成会在总览界面呈现这样的形态部署完成会在总览界面呈现这样的形态

bitwaiden的界面也可以直接访问,记得加上端口号,我这里不是例子的6666而是12580bitwaiden的界面也可以直接访问,记得加上端口号,我这里不是例子的6666而是12580

随后就可以通过反向代理或者端口映射之类的操作将网页布置到外网了,最好是申请一个免费的ssl证书挂成https,由于我有另一台windows机器,因此挂https的任务就交给那台机器的iis进行反向代理了,在这里就不多做介绍,如果需要进行https配置的,也可以试试nginx的反向代理教程,网上很多......

结语

有时候对于需求的渴望就会变成学习新技术的巨大动力……穷也是……

自从获得了公网IP之后,我就开始考虑如何把以前因为IP问题而被逼使用特殊手段的服务迁移到本地来,不论是之前的内网穿透还是aliyun上面跑的云服务器,都尽可能的迁移到本地的nas和服务器运行,安全性是一方面,更重要的是省了一年好几百的费用……

之前外网访问本地其实是靠在主路由上跑的frp服务来达成的,frp具体是什么在此不表,总之这是一个通过很简单的操作能够很简单就达成“外网访问本地资源”这一普通人听上去就会觉得没啥卵用但是各路玩家却“趋之若鹜”的特殊需求的特殊服务……但再怎么好的frp也只是折中方案,要根本上解决问题还是得靠公网IP和DDNS。在和运营商“缠绵”许久后,终于可以抛弃frp的我开始考虑如何将云服务器的相关业务迁移到本地,而我的云服务器最主要的功能其实就是作为一个bitwarden密码管理软件的后台服务器,这就回到了文章开头的那一幕。

可能我这篇文章有点冗长,过程写的有些地方也过于细了点,毕竟我职业不在此,全凭兴趣玩玩这个而已,有些地方是我自己摔过跟头的,自然会多做些笔墨,还请各位包涵。而且技术肯定也不算到位,如果有什么问题或者纰漏,还请各路大神多多指教~~~~


展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

2000元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1599元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3499元起

QNAP 威联通 TS-551 5盘位NAS(赛扬J3355、2GB)

QNAP 威联通 TS-551 5盘位NAS(赛扬J3355、2GB)

暂无报价

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

2099元起

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

799元起

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

1899元起
49评论

  • 精彩
  • 最新
  • 我有个问题,自建服务器,是不是可以回到家联网备份下,然后在外就不需要联回家里的NAS了?

    校验提示文案

    提交
    看你拿来干嘛,这个密码管理器实际上相当于一个同步中枢,如果你在A设备上保存了新的密码,要同步到全部设备那就必须所有设备连接到中枢进行一次同步,这也是为什么需要公网ip进行外网访问

    校验提示文案

    提交
    需要配置SSL证书用HTTPS访问

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 我按照你介绍的步骤一步步做下来,最后打开bitwarden的界面了,但是注册账号最后点击提交没有反应

    校验提示文案

    提交
    我在评论区补充了两点,你确认下有没有照做,如果config.env文件的域名栏没有留空可能会出现这种问题,更换浏览器也可能可以解决

    校验提示文案

    提交
    收起所有回复
  • 老哥,能不能做个视频, [观察]

    校验提示文案

    提交
    这个就有点麻烦了,录屏怪烦的,我写的已经挺详细了,慢慢来嘛

    校验提示文案

    提交
    收起所有回复
  • 使用群晖布部署过,在新页面输入新的账号密码后也会提示添加账号密码,但就是保存不到,就放弃了。

    校验提示文案

    提交
    这个问题我还没遇到过,可以发下报错信息么

    校验提示文案

    提交
    没有任何提示,就是不能保存到新账号密码

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 443都倒了,https无用啊

    校验提示文案

    提交
    域名前加https,后面跟个端口号就行了,一样用https协议,只需要避开443端口,而且绝大多数情况是app访问,基本输不了几次网址什么的

    校验提示文案

    提交
    在我认为,隐藏端口才是重要的。

    校验提示文案

    提交
    收起所有回复
  • 请问一下子文件夹可以加密吗?

    校验提示文案

    提交
    你是说qnap的文件夹还是bitwarden的某个我也不知道的功能??

    校验提示文案

    提交
    QNAP的子文件夹,貌似只能限制权限,不能设置子文件夹的密码

    校验提示文案

    提交
    收起所有回复
  • 我用自带的直接pull能安装成功,但是修改不了环境变量。。。 [内伤]

    校验提示文案

    提交
    直接拉镜像下来也行,但是自动创建的目录还是没有手动配置的好使

    校验提示文案

    提交
    一直没看懂qnap这个操作。。。。端口和文件夹路径都能改。。。但是环境变量就改不了。。。。群晖那个就可以,看来只有手动配置了 [小怒]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我的TS-231P最后是部署成功了,但是,但是,但是(重要的事情说三遍),因为CPU是AMR A-15的,从hub上拉下来的docker不支持ARM的cpu,docker大部分只支持Intel的,心塞的不行了。。。

    校验提示文案

    提交
    ......我忘了备注了,这教程应该只对x86有效......
    你可以找找有没有arm的版本,在docker-compose里面改一下镜像名称就行了

    校验提示文案

    提交
    没有arm版本的docker,已经查过了 [哭泣]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 多了一个省钱的新选择,只是不知Bitwarden的易用性和安全性如何?

    校验提示文案

    提交
    易用性个人觉得强于lastpass,但是和1password比还是弱了点,安全性应该是所有里面最强的,毕竟数据在自己手里,加密算法上目前也没什么漏洞

    校验提示文案

    提交
    收起所有回复
  • 打赏支持,很有用的教程,现在在用 Lastpass ,有泄漏的前科不放心。
    1Password 太贵,Keepass 不够方便,
    自建 Bitwarden 服务器也许是个好办法,

    校验提示文案

    提交
  • 幸亏我买的是群晖 [傻笑]

    校验提示文案

    提交
  • 现在发现居然有几个点没写......
    文章修改在哪儿来着????
    总之先在评论区写一下
    1,部署好了bitwarden后,如果需要关闭新用户注册或者web服务,则重新用ssh连接进入config.env文件所在目录,然后用vi编辑config.env文件,把signups_allowed改成flase按照需要也可以把web_vault_enable改了。(这一步也可以使用pc直接修改文件,然后拷贝进去替换掉旧文件,如果你用不惯vi的话......)然后则需要前往威联通web页面的docker管理软件界面,删除刚刚新建立的bitwarden镜像,但是密码和注册的用户因为文件是独立在docker外的所以不会受到删除影响。最后再重新从填写docker-compose文件那一步开始执行操作,只要之前创建的专用文件夹不变,docker-compose填写内容不变,那么创建出来的新的bitwarden就会和之前是一样的,只是关闭了你想关闭的功能而已
    2,如果要配置https,在config.env中填写了域名,则需要配置好反向代理和ssl加密后才能正常执行注册操作,否则请将config.env文件中的域名栏留空

    校验提示文案

    提交
  • 不错 准备搭一个

    校验提示文案

    提交
  • 在用Enpass,密码文件放到nas上通过webdav远程同步

    校验提示文案

    提交
  • 厉害👍🏻,大神!

    校验提示文案

    提交
  • 感谢高手同志的教程,学习到了

    校验提示文案

    提交
  • 按照楼主的教程改完后,我的docker就挂了,一直显示 守护进程 是否在主机上开启,请问这个是啥错误 [损失几个亿]

    校验提示文案

    提交
  • 我搞了两天还没搞定nginx,qnap的docker太反人类了。又没有群晖那种自带的反向代理。

    校验提示文案

    提交
  • 学习了,大佬的文章写的很好

    校验提示文案

    提交
  • 你好,为什么我按照你的修改威联通源,添加成功后重启,打开comtainer一直报错,说已经有服务器自启动,就是打不开?能不能发一个docker.json完整截图看看

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
214
扫一下,分享更方便,购买更轻松