2020年1月

视频点此

对Windows 7 的支持已结束,然后就有不少的Linux发行版想蹭一波热度,趁机把Windows 7 用户拉过来。不过,用户真的就适合过渡到Linux吗?

其实作为一个纯Linux用户来说,我倒也挺希望能多点儿用户的

一、“钻空子”的软件商

如果你关注的话,会发现不少的发行版都在趁机拉拢,无论这些公司推出的发行版到底出不出名。比如Tmax推出的TmaxOS、Hancom推出的Gurem、Invesume推出的HamoniKR,你可能挺逗没听说过,但没关系,我也头回听说。不过也有一些知名的比如Ubuntu、Linux lite这些。

不过,真能如它们所愿吗?

二、为什么值得换

你可以翻我过往的内容,涉及到用什么操作系统的话题,我从来都讲因人而异。可能Linux有堆积如山的优点,但因为一个关键的软件不适配,那么就说明它并不适合。所以说,先让我们来看看Ubuntu的产品经理说的这些理由

  • 原本的程序在Linux依旧可以使用,包括谷歌Chrome、Spotify、Blender和微软自己的Skype

    With these apps, most PC users will be able to function as normal. You can continue to search the web, listen to music, watch films, talk with your friends and download new apps.
  • Linux安装软件更容易

    For general users, there is still a preconception that Linux is complicated... Plus, installing software on Ubuntu is actually easier than on Windows... On Ubuntu users install apps using the Software Centre and the Snap Store. Both are similar to the android and ios app stores you are used to but have been around much longer. And then installing is just a case of clicking install. Without needing to click through Windows asking to make changes to your computer.
  • Web app提供更多样的体验,如Microsoft Office Suite
  • 强大的社区支持

    It is free for anyone in the world to use, for anyone to contribute to, and so anyone can suggest or request new things. Even Microsoft is contributing in order to have their say.
  • 安全

    Every line of code is thoroughly reviewed and vetted by Canonical or a member of the community... If a bug in your system is found the update rolls out automatically to fix it without you needing to do anything. It’s done in the background to keep your computer secure by default.

至于Linux Lite,则直接模仿了Win7的界面,让用户感受到一种亲切感。

三、为什么不值得

纵使有各种优势摆到用户前面,也并不足以说服用户去更换他们的操作系统。就像Ubuntu的产品经理提到的:

Though to be clear, there are things that do not hold up. The two biggest stand out differences at the moment are gaming, and Microsoft Office.

...For example, installing Steam on Linux is really easy and there are lots of popular games available (Dota 2, Counter-Strike: Global Offensive, Hitman, Dota) to play. However, a lot of other popular games are not yet available to run natively. To play, they require work which could present a big challenge for the average user.

这是老生常谈的两个问题,也是一直在改善的两个问题,我之前有聊过,这里也就不多说了。

四、我的观点

现在回到开头的问题:这股热情到底能不能为Linux带来用户量激增的现象呢?

我认为并不能,有这么几个理由。

1、用户习惯

还在使用Win7的用户中,大多数人都不喜欢Win10的强制更新策略。因此坚持使用Windows 7是保留传统Windows体验的唯一途径。也就是说,这些用户只想要一个看起来和感觉像家一样亲切的东西,并不想做任何导致需要他们重新学习如何使用电脑的改变。因此这些用户不太可能迁移到Linux,反而可能会迁移到不再强制推送更新的WIn10上(我记得Win10应该可以了吧…)

2、安全不重要

就像前边那位产品经理提到的,Windows 7可以转移到Ubuntu,从而在无需硬件升级的情况下获得额外的安全保障。(Install Linux on any computer you like.

但话又说回来,既然支持已经结束了,而这些用户还在使用,那安不安全大概也不是这些用户看中的东西。

3、技术控

可能有人感觉喜欢折腾电脑的会更有可能换到Linux。诚然,这些人可能确实对探索非Windows世界感兴趣,但如果感兴趣,那么这些人应该早就开始使用Linux了,不感兴趣的话,那应该早就跑到Win10上了,Win7结束不结束的,关他们啥事?

4、盗版用户

曾经我买过一张Win7的安装盘,家庭高级版、专业版、旗舰版三合一的,5块钱。当年这种5块钱安装盘遍地都是。那你想想,你有关注过它能不能进行Windows update吗?

5、老软件使用者

还有那些使用老程序的用户,比如电车go通勤篇,这游戏在Windows XP上面都不一定跑得起来。假如说就有这么一个职业的电车go通勤篇玩家,那微软结束Win7的支持与运行Win98的他能有什么关系?

所以,尽管Windows7结束支持相比Windows Vista结束支持话题更热——或者说,Vista在去年4月份结束支持时候根本没人在意——但是我感觉Linux这边对此的期望确实过大了。Linux在技术行业中有自己的位置,使用它的人也有自己的理由。但说到底,到底怎么选择是用户自己的事情,就像推销员无论怎么说,我也不会买一款翡翠打造的担架的。所以Linux会因为Windows世界的变化而能吸引许多新用户吗?有人过来应该还可以,但大规模过渡,我觉得不行。

视频点此

之前留下了一个问题:为什么现在不用传统的三维寻址了呢?

因为不好用了呗。但为什么不好用了呢?这就说到今天介绍的问题了:碟片上的扇区都有哪些划分方式。注意哦,我说的是碟片,所以这就包括了硬盘、CD在内的很多圆盘样的存储设备了。慢慢说。

在正式开始之前,先用这种方式来简单理解一下扇区:固定时间间隔,读写头一时间单位在碟片上面划过的长度。再记住线速度与角速度关系的公式:v=Ω·r. 好了,可以开始了。

1、CLV

一开始的技术叫做CLV:恒定线速度。核心:整张盘的线速度都相同。根据刚才说到的公式:如果v一定,则r同Ω成反比。也就是说,磁头越接近内圈,需要的转速越高。所以这种技术需要马达不断的调整转速,寿命自然也非常短,通常用在低于12倍速光驱中。

2、CAV

CLV因为不停的更改机器的转速,会对机器的寿命造成一定的影响,而且磁盘转速也不能无限制的加快。所以后来又有了一种磁盘技术叫做CAV:恒定角速度,即马达的转速恒定。显然这对马达有了很不错的保护。而根据公式,角速度一定时,线速度同半径是成正比的。所以越靠近外圈,碟片的线速度就越快。再根据前边提到的扇区定义,很轻易就能得到一个结论:越靠近外圈,一个扇区的面积会越大。但这为硬盘带来了几个优势:一个扇区的面积越大,对应的磁介质就会越稀疏,而相互之间干扰出错的可能性就会越小。因此硬盘留下了一个传统:靠前的分区在磁盘外圈。

换一个角度来看:角速度一定,Ω/t就是一个定值(记为k),进而可以得出,360°/k是一个定值。因此CAV模式下,不仅越外圈的扇区密度越小,每个磁道拥有的扇区数还是相同的。这就让CHS有了极大地用武之地:磁头、柱面、扇区,这三个量每个量都是从0到一个固定值的,管理起来就能方便很多。

3、ZDR

但随后的ZDR——区域数据记录技术——让CHS疑惑了。

简单来说,ZDR就是分区CAV:每个区域内为恒定角速度,而各个区域内的角速度不同。从磁盘的最外圈到内圈划分出若干个区域,每个区域内的每磁道扇区一致,但靠内的区域比外侧的区域的每磁道扇区数要少,从而可以根据不同的磁道长度来合理设定扇区的数量,以达到充分利用磁盘存储空间的目的。

可以想象,虽然磁头和磁道还是可确定的范围,但扇区却根据磁道所处区域的不同而有不同的范围,这种情况下的CHS显然就没那么好用了。而由于密度可以做到内外圈类似,所以越靠近外圈读写可以越快,因此第一个分区放在最外圈依旧是一个好的习惯。

还有一些其他的划分方式,比如P-CAV(内圈CAV外圈CLV)、Z-CLV(划块线速度)就不详细介绍了,这些都是在上面的基础之上进行的组合和改良。

正是ZDR的出现,让传统CHS变的不再那么好用了。所以也催生了LBA的产生。而现在的SSD,更是进一步舍弃了CHS三元素,让物理CHS更彻底的成为了历史。

大多数现代Linux桌面系统都预装了Nvidia驱动程序——一种新的开源图形设备驱动程序。因此,一般不需要安装闭源驱动——只要没有那么强烈的独显性能需求。

但如果想完全发挥独显的性能,闭源驱动 便派上用场了。一些Linux发行版提供了预打包的专有驱动程序放在了源中,使得安装驱动程序非常容易。

也可以自行前往英伟达官网获取驱动,然后手动安装。但这样可能需要更多的手工干预,所以只要硬件不是特别的新 ,通常源中的版本已经足够了。

再次警告

从第三方源(如Nvidia.com或通过PPA存储库的专有Nvidia驱动)安装Nvidia驱动程序可能会导致系统不稳定。因此,如果不是必须的,建议继续使用开源的新版本驱动程序。

如何逐步安装最新的Nvidia专有驱动

1、检查Nvidia VGA型号

第一步是检查Nvidia VGA卡型号。对于大多数Linux发行版,通过下述代码获得

$ lspci -vnn | grep VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) (prog-if 00 [VGA controller])

从上面的输出可以看出我们的系统配备了 GTX 1060 6GB 显卡。

2、检查当前安装的VGA驱动程序

使用下面的命令查看当前加载的VGA驱动程序以及VGA卡型号的信息:

$ lspci -k | grep -EA3 'VGA|3D|Display'
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
        Subsystem: ASUSTeK Computer Inc. GP106 [GeForce GTX 1060 6GB]
        Kernel driver in use: nouveau
        Kernel modules: nvidiafb, nouveau

可以看到,目前使用的是nouveau 驱动程序和内核模块。如果安装有专有驱动,则上述命令的输出可能如下所示:

$ lspci -k | grep -EA3 'VGA|3D|Display'
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
        Subsystem: ASUSTeK Computer Inc. GP106 [GeForce GTX 1060 6GB]
        Kernel driver in use: nvidia
        Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

3、检查当前的Nvidia驱动程序版本:

在继续进行最新的驱动程序安装之前,请检查当前版本的位置:

$ nvidia-settings --version
nvidia-settings:  version 430.50

4、接下来安装专有驱动:

暂不讨论手工安装和GUI安装

几乎所有操作都要求sudo权限

对于Intel和NVIDIA双显卡,可能需要额外配置(bumblebee/xrandr等)

接下来的方法适用于

完成后重启,安装结束。

视频点此

先说结果:在官网将Win10对应驱动更改为DCH版本后,Windows对比Arch系就一样了;更改之前或更早的Windows版本,Arch系更容易;对于其他Linux分支,何时都是更困难的。

这次的内容主要是回答之前有朋友问到的问题。所以主要来看Manjaro和Debian 10。

不过,为了回答这个题目,先来简单解释一下Windows要怎么装。

装好Win10后,Windows Update会自动安装DCH版本驱动。待驱动安装完毕,去往Windows应用商店搜索安装英伟达控制面板。安装结束。

其他版本的WIndows,则需要去往英伟达官网,在驱动中心下载后安装。

好了,Windows的安装方法说完了,现在来看Manjaro。

问我这个问题的朋友的原话是

nvidia-dkms装不上

可能是因为用了自定义内核吧所以需要这个。不过manjaro同Arch是不同的,它优化并维护着自己的驱动仓库,所以不需要也没必要考虑nvidia-dkms。Manjaro安装只需三步:

  1. 打开终端
  2. 输入:sudo mhwd -a pci nonfree 0300
  3. 回车

不必嫌难,因为不需要你理解什么意思。只需照着敲进去,回车,你的驱动和控制面板便安装好了。

哦,当然,也可以使用图形界面,但是可能没有终端直接:

  1. 打开设置
  2. 找到Manjaro设置管理器,打开
  3. 切换到硬件配置
  4. 对NVIDIA项目,勾选non-free
  5. 点击Install

好了,简单地操作到此结束。接下来看困难的Debian10。这是另一位朋友问的,原话如下

1.nVidia开源驱动与闭源驱动的bumblebee配置及xrandr配置

2.运行nvidia-xconfig后重启黑屏的原因及解决办法

3.显卡切换面板支持怎么弄? (目前Debian10,i5-8250u+MX250,一直无法切换显卡,只能用显卡运行程序(optirun))

先来说闭源驱动安装。

  1. 启用闭源源——我没写错。Debian的源分为开源和闭源两类,默认情况下用户只能检索到开源程序。所以这里需要启用“闭源”源

    1. sudo模式编辑/etc/apt/sources.list
    2. 在每一行后面增加contrib non-free
    3. 保存后,更新缓存:sudo apt update && sudo apt upgrade
  2. 安装头文件——黑屏的一个可能就因为这里:sudo apt-get install module-assistant
  3. 编译它们:sudo m-a prepare
  4. 安装探测程序查看自己需要装哪个驱动包

    1. 安装nvidia-detect:sudo apt -y install nvidia-detect
    2. 运行nvidia-detect,得到推荐选项。如:

      # nvidia-detect
      Detected NVIDIA GPUs:
      01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1)
      
      Checking card:  NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
      Your card is supported by the default drivers and legacy driver series 390.
      It is recommended to install the
          nvidia-driver
      package.
  5. 根据推荐,输入命令完成驱动的安装:sudo apt install nvidia-driver

然后,bumblebee我以前专门说过,这里便不赘述了;而xrandr、nvidia-xconfig与bumblebee是一种“互斥”的状态,如果bumblebee配置好了则不需调整xrandr及nvidia-xconfig,否则需要。而xrandr的写法我以前同样提过,所以请参考安装KDE桌面的内容,出现在大概在12分钟位置。

这也是我现在宁可挖坑也不把一次的内容做的很多的原因:标题表现不出来涉及到的所有内容,就很麻烦。

至于nvidia-xconfig,只要xrandr配置正常,nvidia-xconfig可能不需要单独生成。如果不行,也只需终端sudo运行一次便会自动生成配置文件,此时应该就不会有什么问题了。

如果xrandr和nvidia-xconfig都配置过了但还是黑屏,那么问题可能出现在gdm上面因为这里貌似有一个bug但没有解决。尝试换成sddm或lightdm,或者使用bumblebee去代替xrandr和nvidia-xconfig

第三件事儿,很不幸,Debian现在是没有切换面板的。也就是说,要么完全使用闭源驱动提供的PRIME,即无论何时都使用独显驱动,要么就是大黄蜂,在需要使用独显的时候通过optirun实现独显加载。

到这里,问题便说完了。顺便呢,也希望能让你发现Linux和你印象中的差别吧。同时呢,也希望你能意识到:发行版的选择其实也是门学问。

视频点此

一、尽量在Linux下做所有的工作

我感觉,先将自己置身在Linux是最重要的一步。我党有句话:从群众中来,到群众中去。学习Linux就有这么一个思路:先去用Linux,遇到问题时就去学习,然后返回到Linux中解决它。其实也不止Linux,学数学物理这种也是这么个路子,只不过从现实抽象这一步骤放到了前人的身上了而已。

而在使用的过程中,坚持一个原则:避免提问,善用搜索——尤其是刚接触Linux的一大拦路虎:软件缺失。我不止一次的说过,现在的Linux有绝大多数可以对应Windows专属的软件,仅仅是你不会使用搜索引擎而已。就像很多人说的CAD。说实话,每次看到这种说法我就觉得这人“学傻了”。但是转念一想,检索技巧在大学也是一门课,所以不会用百度也是正常的。至于搜索这部分,我一会儿再细说。

二、阅读帮助文档

使用中针对出现的问题学习无疑能学到对于你自己最实用的一些知识,但是想要系统的学习还是需要一些资料来阅读。其中,帮助文档就是最容易得到的——无论是Windows还是Linux。只需要鼠标轻点,loading一下即可万事大吉。对于命令行的指令,Linux下也可通过在命令前加一个man来获得手册。

但是这有一个问题:受限于汉化程度的不同,有些手册你可以无痛理解,有些可能需要你配备一本英汉词典来使用。而且这对于解决问题往往没什么帮助——因为它平铺直叙了所有可能的操作方法,但并不能告诉你出现什么错误可能会是哪里导致的。这时候,Wiki或官方网站可能就是一个更好地选择了。

三、Wiki/官网

不只是发行版,一些开源项目,wiki或官网也是很有用的工具。这个的优势很明显:

内容完整。对于一个项目来说,wiki作为知识库的存在,可以拥有最完善的介绍体系。

步骤细致。作为作者发布的教程,wiki通常会写出这个项目需要的所有依赖、可配置的参数和所有可行的部署方法。所以很多时候只需要无脑复制粘贴命令即可,甚至不需要理解这些指令都在做什么。

官方的疑难解答,这是相对于帮助文档突出的一点。一些常见问题在wiki中会有详细的解决方案,比盲目的网上检索针对性更强。

实时更新。任何新版本的改动,作为与作者关系最近的wiki自然会得到最先的调整。

但缺点也存在:

很多wiki可能使用英文编写,或根本不存在。

对于学习Linux,我会推荐两个Wiki:ArchWiki和DebianWiki。

Archwiki,内容全面而完善,所有的发行版都可以将Archwiki作为参考资料使用。而且有些内容会附带常见问题的可能的解决方案,很有参考性。即使不是为了查找出错的解决方法,单独当做ArchLinux入门来看也是个不错的“教材”。但部分页面的中文翻译跟最新的英文原版内容有脱节的现象,所以有的时候可能需要查看英文原版的页面。而且因为Arch的包比较多,包管理器又跟Debian、RHEL之类的不一样,所以对于Debian分支,Debianwiki也是个不错的工具。

DebianWiki,很显然是根据Debian分支的命根子——Debian而出现的百科,所以这个wiki下面的内容通常可以对应到各个基于Debian的发行版中。只不过Debian的包往往比较老旧,所以如果有些东西编写的年代比较早了,那配合着ubuntuwiki来看会是一个不错的方法。但我可能不会单独推荐ubuntuwiki。一来,Ubuntu相对Debian有很多改动的地方,所以其他的Debian发行版不一定能通过Ubuntuwiki适配上,二来感觉Ubuntuwiki的内容不是很多的样子,但这可能是我不会用吧…

四、社区

在此之下的路子,就是各个开源社区了。社区这个概念具体我就不介绍了,总之社区就是一个由相同兴趣的人聚齐而成的一个讨论区。因此往往会有一些歪门邪道但很好用的小技巧能学到,对于疑难解答也是不错的地方。这里主要列举几个还不错的位置。

Discord。虽然更主要的是用在了游戏讨论或联机语音上,但作为Linux社区,同样有相关的分类。而正因为其最本质的功能,所以这里的实时性很不错。但语言基本就是英语确定了,而且可能访问上面有点儿问题。

Reddit。所谓美版天涯+贴吧。用户基数很大,相关的问题也很多且基本都有很有效的解决方法。如果你注意过的话,百度一些Linux或者开源相关的问题经常会引导到Reddit的帖子上,且很有效。但是跟Discord一样,语言基本就是英语了,可访问性也有点儿飘忽不定。

项目GitHub的issue。这自然是针对特定开源项目的一个“社区”。因为所有话题都围绕着一个软件产生,所以更容易看到与自己类似的情况,且能获得作者的解答。但不一定每一个项目都把issue维护的那么好,而且可能看到世界各地的各种各样的语言。

放眼国内,Linux相关的综合社区不算太多。我注意到的就是Linux社区和Linux中国。这俩都是老牌的Linux相关“发布站”,有时候也有一些其他的开源项目的使用教学。不过交流性不强,更适合作为信息获取平台而非解答平台。

开源中国也很出名,内容覆盖的多而广。但针对Linux的内容就有些不好找了。

与开源社区对应的,就是以独立单位发布的自媒体了。这包括博客和视频两类。

博客,可以说层出不穷,而且经常有很多实用的解决方案和操作技巧的文章出现。但受限于SEO的问题,除了CSDN这种博客外,很多个人博客有可能很难找到。且由于是个人维护,时效性便得不到保证了。因此如果使用个人博客的内容,建议先看一看文章的发布时间和最后修改时间。

视频,其实针对Linux的自频道在国内可以说是很罕见了。放眼全球,中文语言的Linux自频道数量也不多。所以虽然视频演示的话相比博客会更容易理解,但想寻找到关于这类的中文自频道就比较困难了。所以视频这方面我就直接推荐几个英语频道吧。有兴趣的可以看一看。

Chris Titus Tech,也是我一直在看的一个频道。围绕Linux的包括但不限于基本操作教学的各种内容,也有一小部分Windows的视频。总体来说质量还挺好的。

DistroTube,一个倾向于介绍各种发行版的频道。跟随它可以第一时间跟进各种热门发行版的新特性以及发行版之间的各种比拼。这是一个很纯粹、完全不涉及其他类型系统的频道。

TLG // Technology · Linux · Gaming,看频道名也明白了,这个频道专门发布Gaming on Linux内容的视频。我认为看过这个频道之后,就能破除很多人对Linux的那种停留在十多年前的印象了。

ExplainingComputers,诺丁汉大学教授运营的一个频道。内容涉及从Linux系统到计算机硬件层面的内容。对于学习Linux来说,可能不如前面三个频道来得快,不过这个频道能很好的拓宽你的视野。

五、检索

想要聚合上面说到的所有资源,搜索自然是最好的一个聚合工具了。显然,综合了各种可能的资源,一起展现是搜索引擎最大的优势。而且都是根据你搜索的内容筛选的结果,针对性更高。但大量的结果也对应一些问题:结果掺杂广告是一方面,由于Linux及开源的性质,越有用的信息,英文占比越大是一方面,需自行对有价值的结果进行筛选才是最有难度的一个问题。而为了最大程度优化初筛的结果(也就是输入了搜索条件后点击搜索按钮后得到的页面结果),这里不得不提一些检索相关的技巧了。

第一,使用关键词搜索而不是一句话,关键词用空格隔开。

这是最应记住的基本的检索技巧。通过关键词检索,你的检索条件有用信息占比可以达到最高水平,自然就能最大程度命中最符合你的检索需求的内容了。

第二,不管你信不信,国外在开源方面的讨论更有技术性,通常也更有帮助。所以寻找解决方案的时候,使用英语关键词在必应国际版或谷歌上搜索,效率会更高。

至于中文方面,个人博客通常更有参考性。因此如果实在不想读英语,使用中文关键词在必应国内版或谷歌上进行检索,也会有还算不错的结果展现。

最后,才应该想到提问这个路子。就我本人来说,从09年开始用Linux到现在,我一直没有提出过问题,仅仅检索到的东西就足够应对出现的问题了。事实也是这样。毕竟Linux出现了半个世纪了,啥可能的坑都有前人踩过了,因此很难出现一直到现在还没有人问过的问题。所以如果用作日常使用的话,可以检索到的内容应该足以解决问题。解决不了只能说明是检索技巧出现了差错。

所以说,提问仅仅在你竭尽所能的利用检索技巧但仍没有有用的信息时的一个解决方案。而去社区提问是最佳选择,所谓人多力量大。

反之,最下策才是向个人提问。一来个人不可能拥有那么多那么全的经验,而且时延太没谱了。

可能有人不明白:上学时候总说不懂的要问,怎么这里反而不推荐了呢?

首先,问到的结果一来自己不容易记住,二来得到的解答无脑照着操作,得不到任何提升,最后,Linux的自定义性太高了,所以如果不自己理解的话,往往会把本身是解决方案的解答判断成无效的方案。也正因最后一点,如果提问的时候仅仅描述了出现了什么问题,那么这个提问可以被称作是一个无效问题了。所以,一个最容易得到有效解答的提问最好包含下面几点:

想干什么的时候出现了什么错误;

出现此问题前都对系统进行过哪些调整;

尝试过了哪些方案;

与此出错操作有关系的组件都处在什么状态,部署在了什么文件夹中;

用户配置文件是什么样的;

用的哪个发行版;

相关的软/硬件环境如何

如果不了解自己的Linux的这些内容,那么最好的解决方案还是重装吧…不知道这些内容说明对Linux还不是很熟悉,而解答者不知道这些内容,也就只能给出通用方案。而面对这个通用方案,提问者往往又不能根据自己的电脑做对应的修改,也就成了死结了。

以上就是我学习Linux的一些来源和方法了。总结一下,核心是使用,在使用中自然会遇到不知道的问题,这时候针对问题来查找解决方法,而一个解决方法往往连带出一些基本的操作,所以慢慢的,对Linux的理解自然就提升上来了。

我曾一度认为我不需要密码托管这种软件。

直到我发现我无论如何也想不起来北京摇号官网的登录密码了。

使用现成的第三方服务很好,但一来要注册,二来有些服务会收费。

那还不如自己部署一个。

其实可供自己部署的不算很多,我最终选择了bitwarden

Bitwarden 是一款开源密码管理器,它会将所有密码加密存储在服务器上,工作方式与 LastPass、1Password 或 Dashlane 相同。

官方的版本搭建对服务器要求很高,搭建不容易,github上有人用 Rust 实现了 Bitwarden 服务器,项目叫 bitwarden_rs,并且提供了 Docker 镜像,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。这个项目目前在github也有2k的star,所以说用的人还是有不少的。

此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。下面简单记录怎么搞。

一、基本组件

  1. 拉取镜像:docker pull bitwardenrs/server:latest
  2. 启动:docker run -d --name bitwarden -v /bw-data/:/data/ -p 6666:80 bitwardenrs/server:latest

    1. -v 定义一个保存数据的文件夹
    2. -p 定义一个监听端口

如果仿照上面的步骤,设定了6666端口的话,现在浏览器输入ip:6666可能有几种情况:

  • 访问成功
  • 弹出logo,但登陆界面不能加载
  • UNSAFE_PORT

这是因为项目要求https。所以要么申请一个证书,要么自签名一个证书。我则使用了另一个方法:套在cloudflare的解析上,依靠cf的证书实现。但这些都需要你拥有一个域名。

域名申请就不细说了,下面主要说说如何把域名和服务绑定上——反向代理。

二、域名绑定服务

  1. 我有宝塔,所以直接宝塔新建一个站点,域名自然是要绑定到这个服务的域名
  2. 建立后,在站点修改窗口,点击反向代理 - 添加反向代理

    1. 代理名称任意
    2. 目标URL写入http://127.0.0.1:6666(端口是之前开启docker时候配置的)
    3. 提交

Cloudflare端,将https相关的设置打开

  1. DNS标签下,做解析和开启缓存(箭头穿过小云彩而不是绕过)
  2. SSL/TLS - Overview标签下,加密模式选择Flexible
  3. SSL/TLS - Edge Certificates标签下,启用Always Use HTTPS

三、建立自己的用户

现在,访问域名,应该能正常显示了。按提示建立自己的用户即可。

四、关闭注册

如果并没有公开服务的打算的话。

  1. 停止容器:docker stop bitwarden
  2. 删除容器:docker rm bitwarden
  3. 启动容器,加入禁注册参数-e SIGNUPS_ALLOWED=false

五、使用

可以从浏览器通过域名来管理自己的账户。

密码自动填写、自动保存等通过软件实现:

  • PC中,Chrome有插件,可管理浏览器用户名密码
  • 安卓中,有APP,可全局监控(类似谷歌的密码管理)
  • iOS中,有APP,可用范围不知道