<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>我的家用NAS设置日记</title>
  <id>https://meownas.fun</id>
  <updated></updated>
  <link href="https://meownas.fun"></link>
  <entry>
    <title>给自家的NAS搞一个导航页面嘛</title>
    <updated>2021-11-12T13:27:50+08:00</updated>
    <id>tag:meownas.fun,2021-11-12:/articles/2021/11/12/1636694870246</id>
    <link href="https://meownas.fun/articles/2021/11/12/1636694870246" rel="alternate"></link>
    <summary type="html">&lt;p&gt;嗯…简单地说嘛，就是，其实我突然发现这个博客也可以作为导航页，只要置顶一个博客，这个博客里面全都是链接就可以了哈哈哈哈&lt;/p&gt;&#xA;&lt;p&gt;认真地说，其实我是用威联通自带的 Web 服务器功能搞的导航页&lt;/p&gt;&#xA;&lt;p&gt;首先，下载一个喜欢的导航页面，比如说这些：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://post.smzdm.com/p/adwlg5rn/&#34; rel=&#34;nofollow&#34;&gt;https://post.smzdm.com/p/adwlg5rn/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;然后呢，把下载好的页面解压成文件夹，传到 NAS 里面，然后在威联通的管理页面中，点设置-Web 服务器-虚拟主机，设置一下这个网站的名字、端口，选择好刚才上传的文件夹&lt;/p&gt;&#xA;&lt;p&gt;其实到这一步就可以了，不过我还是发现了一个难题，就是这个超链接吧，怎么连接到同一域名（或者 ip）、不同端口的服务呢？&lt;/p&gt;&#xA;&lt;p&gt;然后我就从网上抄来了这个方案，以下是我的部分 HTML 页面源代码：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-fallback highlight-chroma&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&#xA;&amp;lt;html&amp;gt;&#xA;&#x9;&amp;lt;head&amp;gt;&#xA;&#x9;    &#x9;&amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt;&#xA;&#x9;&#x9;&amp;lt;meta http-equiv=&amp;#34;Content-Type&amp;#34; content=&amp;#34;text/html; charset=utf-8&amp;#34; /&amp;gt;&#xA;&#x9;    &#x9;&amp;lt;title&amp;gt;喵喵喵&amp;lt;/title&amp;gt;&#xA;&#x9;&#x9;&amp;lt;link rel=&amp;#34;icon&amp;#34; type=&amp;#34;image/x-icon&amp;#34; href=&amp;#34;favicon.ico&amp;#34;/&amp;gt;  &#xA;&#x9;    &#x9;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;css/style.css&amp;#34;&amp;gt;&#xA;&#x9;&#x9;&amp;lt;script&amp;gt;&#xA;&#x9;&#x9;&#x9;function setHref() {&#xA;&#x9;&#x9;&#x9;&#x9;document.getElementById(&amp;#39;admin&amp;#39;).href = &amp;#34;https://&amp;#34; + window.location.hostname + &amp;#34;:端口号&amp;#34;;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&amp;lt;/script&amp;gt;&#xA;&#x9;&amp;lt;/head&amp;gt;&#xA;&#x9;&amp;lt;body onload=&amp;#34;setHref()&amp;#34;&amp;gt;&#xA;&#x9;&#x9;&amp;lt;a href=&amp;#34;#&amp;#34; id=&amp;#34;admin&amp;#34; class=&amp;#34;slide-link control-selection&amp;#34; title=&amp;#34;NAS管理页面&amp;#34;&amp;gt;&#xA;&#x9;&#x9;    &amp;lt;img src=&amp;#34;img/admin.png&amp;#34;&amp;gt;&#xA;&#x9;&#x9;    &amp;lt;span class=&amp;#34;text&amp;#34;&amp;gt;管理页面&amp;lt;/span&amp;gt;&#xA;&#x9;&#x9;    &amp;lt;span class=&amp;#34;right-arrow&amp;#34;&amp;gt;&amp;lt;/span&amp;gt;&#xA;&#x9;&#x9;&amp;lt;/a&amp;gt;&#xA;&#x9;&amp;lt;/body&amp;gt;&#xA;&amp;lt;/html&amp;gt;&#xA;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;</summary>
    <author>
      <name>Orange</name>
    </author>
  </entry>
  <entry>
    <title>威联通NAS配置Bitwarden，不用再花钱购买证书啦</title>
    <updated>2021-11-12T13:27:16+08:00</updated>
    <id>tag:meownas.fun,2021-11-12:/articles/2021/11/12/1636694836631</id>
    <link href="https://meownas.fun/articles/2021/11/12/1636694836631" rel="alternate"></link>
    <summary type="html">&lt;h1&gt;序言&lt;/h1&gt;&#xA;&lt;p&gt;Bitwarden 在心里种草好久了，毕竟把自家的密码放在自己家里能安心一点嘛（Keepass 是啥）&lt;/p&gt;&#xA;&lt;p&gt;结果上网一翻教程嘿，还得花钱买 SSL 证书的，要不然就得在 Let&amp;#39;s Encrypt 反复来回申请证书（关键是，还要一个域名，我可不想跑去备案…），给我整得差点弃坑不玩了&lt;/p&gt;&#xA;&lt;p&gt;但是呢，种草的东西不弄一份怎么行呢？乖乖回来研究，结果部署过程中主要难度出在自签名证书这里了。当然，后续配置 WebSocket 服务之类的也花了一些工夫，但那倒是没什么关系啦&lt;/p&gt;&#xA;&lt;p&gt;都搞好了以后，反而想买个域名了……所以下一步打算就是把服务器配置到固定的域名上，而不是像现在一样配置到 ip 上，这样等 ip 地址到期就不必重新配置一遍了&lt;/p&gt;&#xA;&lt;p&gt;先是一个大致的目录，说明一下要做什么：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;（推荐）安装 Docker 版 Portainer，方便后期管理各 Docker 容器&lt;/li&gt;&#xA;&lt;li&gt;生成自签名证书&lt;/li&gt;&#xA;&lt;li&gt;申请一个邮箱（推荐 outlook），用来给 Bitwarden 的服务端发邮件用&lt;/li&gt;&#xA;&lt;li&gt;安装 Docker 版 Bitwarden，即 vaultwarden/server&lt;/li&gt;&#xA;&lt;li&gt;安装 nginx，做好 WebSocket 服务器相关的配置&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1&gt;Portainer&lt;/h1&gt;&#xA;&lt;p&gt;这段命令是从网上抄的，原文地址……忘了（其实如果不是为了备案，我也不会跑来写博客呢）&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;docker run -d -p 9000:9000 -name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /share/CACHEDEV1_DATA/Container/Docker/portainer_data:/data portainer/portainer&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里注意一下端口的设置，前面那个 9000 是服务器的端口，可以按需要修改，后边的 9000 就不要动了&lt;/p&gt;&#xA;&lt;p&gt;还有就是，后面的映射路径&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;/share/CACHEDEV1_DATA/Container/Docker/portainer_data&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;可以按需要修改&lt;/p&gt;&#xA;&lt;h1&gt;生成自签名证书&lt;/h1&gt;&#xA;&lt;p&gt;这个……是从外面抄来的方案，我都不知道怎么做到的，但它就是能用哈哈哈&lt;/p&gt;&#xA;&lt;h2&gt;安装 OpenSSL&lt;/h2&gt;&#xA;&lt;p&gt;在 Windows 系统就可以了，下载 OpenSSL 的 Win64 版本，安装，配置环境变量&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;PATH: C:\Program Files\OpenSSL-Win64\bin&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;在 cmd 中敲 openssl 看一下配置成功没有&lt;/p&gt;&#xA;&lt;h2&gt;编写配置文件和脚本&lt;/h2&gt;&#xA;&lt;p&gt;把以下三个文件放到一个文件夹里：&lt;/p&gt;&#xA;&lt;p&gt;server_rootCA.csr.cnf&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;[req]&#xA;default_bits = 2048&#xA;prompt = no&#xA;default_md = sha256&#xA;distinguished_name = dn&#xA;&#xA;[dn]&#xA;C=CN&#xA;ST=A&#xA;L=A&#xA;O=A&#xA;OU=local_RootCA&#xA;emailAddress=.&#xA;CN = 服务器域名或ip地址&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;v3.ext&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;authorityKeyIdentifier=keyid,issuer&#xA;basicConstraints=CA:FALSE&#xA;keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment&#xA;subjectAltName = @alt_names&#xA;&#xA;[alt_names]&#xA;IP = 服务器域名或ip地址&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;do.bat&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-Plain highlight-chroma&#34;&gt;openssl genrsa -out server_rootCA.key 2048&#xA;openssl req -x509 -new -nodes -key server_rootCA.key -sha256 -days 36500 -out server_rootCA.pem&#xA;openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server_rootCA.csr.cnf&#xA;openssl x509 -req -in server.csr -CA server_rootCA.pem -CAkey server_rootCA.key -CAcreateserial -out server.crt -days 36500 -sha256 -extfile v3.ext&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2&gt;运行脚本，生成证书&lt;/h2&gt;&#xA;&lt;p&gt;运行 do.bat，会要求输入一次信息，这里就随便编一个虚假的机构名就可以了（比如 MiaoMiaoMiao），不用填 ip 地址或者域名啥的&lt;/p&gt;&#xA;&lt;p&gt;生成的文件有 5 个，server.crt 和 server.key 这俩是要拿给 Bitwarden 用的，留给下一步备用&lt;/p&gt;&#xA;&lt;p&gt;server_rootCA.pem 复制到 Android 上，导入 CA 证书&lt;/p&gt;&#xA;&lt;p&gt;server_rootCA.pem 重命名为.cer，在 Windows 上，导入受信任的根证书颁发机构&lt;/p&gt;&#xA;&lt;p&gt;这样等下配置好的 Bitwarden 就可以和客户端通信了&lt;/p&gt;&#xA;&lt;h1&gt;安装 Bitwarden&lt;/h1&gt;&#xA;&lt;p&gt;到这就简单啦，跟着我的配置来吧&lt;/p&gt;&#xA;&lt;p&gt;申请一个邮箱用来给 Bitwarden 发邮件用，outlook 的就很好&lt;/p&gt;&#xA;&lt;p&gt;在 Container Station 里面选 Create，然后搜索 vaultwarden/server，点 Install&lt;/p&gt;&#xA;&lt;h2&gt;安装配置&lt;/h2&gt;&#xA;&lt;h3&gt;文件夹映射&lt;/h3&gt;&#xA;&lt;p&gt;先配置一下映射的文件夹，把容器的/data 映射到随便什么地方就好了，比如，我的配置是：&lt;/p&gt;&#xA;&lt;p&gt;左边/Container/bitwarden_data（这个文件夹你得先在 File Station 里面创建好），右边/data&lt;/p&gt;&#xA;&lt;h3&gt;环境变量&lt;/h3&gt;&#xA;&lt;p&gt;在环境变量选项卡中，加入以下这些环境变量：&lt;br/&gt;&#xA;&lt;img data-src=&#34;/api/storage/2021/11/07f6752292a980eaacf8c2f234b2a732-env.png&#34; alt=&#34;env.png&#34;/&gt;&lt;/p&gt;&#xA;&lt;p&gt;其中，DOMAIN 这个就只有一个用处，就是系统给你发邮件的时候，它把这个变量写在链接里，所以就算暂时配置不好也完全没关系（比如你正在备案域名？），之后再改也完全来得及&lt;/p&gt;&#xA;&lt;p&gt;ROCKET_TLS 这里面就是存放服务器证书的地址，还记得之前做的 server.key 和 server.crt 吗？按照我上图中的环境变量配置，我就要在刚才创建的 bitwarden_data 文件夹中再建一个 cert 文件夹，然后把这俩放进去&lt;/p&gt;&#xA;&lt;h3&gt;网络端口&lt;/h3&gt;&#xA;&lt;p&gt;把 3012 端口映射到 3012，把 80 端口映射到随便哪个空闲的端口，比如说 236&lt;/p&gt;&#xA;&lt;p&gt;都放好以后，就点 Create，然后等它下载映像，安装，启动就可以了&lt;/p&gt;&#xA;&lt;h1&gt;nginx&lt;/h1&gt;&#xA;&lt;p&gt;也是在 Container Station 里面就可以，把网络设置改成 Host 模式，文件夹映射的话加上这个：&lt;/p&gt;&#xA;&lt;p&gt;/etc/nginx 映射到 /Container/nginx&lt;/p&gt;&#xA;&lt;p&gt;安装就行了&lt;/p&gt;&#xA;&lt;p&gt;安装后它启动不了，因为还需要在/Container/nginx 里面放一个 nginx.conf&lt;/p&gt;&#xA;&lt;p&gt;内容大概这样就可以了：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-fallback highlight-chroma&#34;&gt;user  nginx;&#xA;worker_processes  1;&#xA;&#xA;error_log  /etc/nginx/error.log warn;&#xA;pid        /etc/nginx.pid;&#xA;&#xA;events {&#xA;    worker_connections  1024;&#xA;}&#xA;http{&#xA;&#x9;server {&#xA;&#x9;&#x9;listen 235 ssl;&#xA;&#xA;&#x9;&#x9;ssl on;&#xA;        ssl_certificate /etc/nginx/ssl/server.crt;&#xA;        ssl_certificate_key /etc/nginx/ssl/server.key;&#xA;        ssl_session_timeout 5m;&#xA;&#x9;&#x9;ssl_protocols TLSv1.2 TLSv1.1 TLSv1 SSLv3;&#xA;&#x9;&#x9;ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;&#xA;        ssl_prefer_server_ciphers on;&#xA;&#xA;&#x9;&#x9;client_max_body_size 128M;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;location / {&#xA;&#x9;&#x9;&#x9;proxy_pass https://127.0.0.1:236/;&#xA;&#x9;&#x9;&#x9;proxy_set_header Host $host;&#xA;&#x9;&#x9;&#x9;proxy_set_header X-Real-IP $remote_addr;&#xA;&#x9;&#x9;&#x9;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&#xA;&#x9;&#x9;&#x9;proxy_set_header X-Forwarded-Proto $scheme;&#xA;&#x9;&#x9;}&#xA;&#xA;&#x9;&#x9;location /notifications/hub {&#xA;&#x9;&#x9;&#x9;proxy_pass http://127.0.0.1:3012;&#xA;&#x9;&#x9;&#x9;proxy_set_header Upgrade $http_upgrade;&#xA;&#x9;&#x9;&#x9;proxy_set_header Connection &amp;#34;upgrade&amp;#34;;&#xA;&#x9;&#x9;}&#xA;&#xA;&#x9;&#x9;location /notifications/hub/negotiate {&#xA;&#x9;&#x9;&#x9;proxy_pass https://127.0.0.1:236;&#xA;&#x9;&#x9;}&#xA;&#x9;}&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里面 ssl_certificate 和 ssl_certificate_key 两处配置，就自己把之前申请的证书放进去就可以了&lt;/p&gt;&#xA;&lt;p&gt;端口的问题上，我这里是监听了 235 端口，实际使用上，在 Bitwarden 的客户端里也填https://ip:235就可以了&lt;/p&gt;&#xA;&lt;h1&gt;齐活&lt;/h1&gt;&#xA;&lt;p&gt;后面就是一些细节性的，比如说把证书文件藏好，别泄露出去啊，什么的&lt;/p&gt;&#xA;&lt;p&gt;https://ip:235/admin 是管理员页面，密码就是之前设置的 ADMIN_TOKEN 环境变量&lt;/p&gt;&#xA;</summary>
    <author>
      <name>Orange</name>
    </author>
  </entry>
  <entry>
    <title>上传一下网站图标，以及本服务器的证书</title>
    <updated>2021-11-12T13:19:00+08:00</updated>
    <id>tag:meownas.fun,2021-11-12:/articles/2021/11/12/1636694340965</id>
    <link href="https://meownas.fun/articles/2021/11/12/1636694340965" rel="alternate"></link>
    <summary type="html">&lt;p&gt;&lt;a href=&#34;/api/storage/2021/12/64d1666ef7ac9559b2263d3f08937cf6-server_rootCA.cer&#34; rel=&#34;nofollow&#34;&gt;serverrootCA.cer&lt;/a&gt;&lt;br/&gt;&#xA;&lt;a href=&#34;/api/storage/2021/12/64d1666ef7ac9559b2263d3f08937cf6-server_rootCA.pem&#34; rel=&#34;nofollow&#34;&gt;serverrootCA.pem&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img data-src=&#34;/api/storage/2021/11/8eaace085eb75839091415597412c218-orange.png&#34; alt=&#34;orange.png&#34;/&gt;&lt;/p&gt;&#xA;</summary>
    <author>
      <name>Orange</name>
    </author>
  </entry>
</feed>