分类目录归档:Resources

关于 Linux 用户界面字体

Noto Sans 是个好东西,但是要选好才好看。

Noto Sans 是个不错的字体,中日英混排也算做得还不错。由于其无衬线 / 黑体设计,注定很适合作为一个屏幕字体而使用。但是在操作系统 UI 这个显示场景下,部分字体显的过宽,看起来就让人很烦躁。在经过一番调试以后,总结出了一些比较好的搭配方式。

Noto Sans 在不考虑地区版本(如 CJK)和等宽版本的情况下,主要有非 UI 和 UI 两个后缀。也就是说曾存在有 Noto Sans Arabic 和 Noto Sans Arabic UI 这样两个版本,其主要区别在与 UI 版本的纵向宽度更窄,根据 Google 的设计指引,带有 UI 后缀的字体应该被使用在 UI 设计的场景下,虽然原文中说的是阿拉伯语,但是从我的经验看来,在 UI 场景下使用纵向较窄的一些的特化版本无论在什么语言下都是一个好的选择。

接下来就是很吊诡的一件事了,Ubuntu 的 fonts-noto 包在 16.04 到 18.04 版本中做了较大的改动,原来的版本中包含 Noto Sans 和 Noto Sans UI 这两个字体,因此对于英文场景,直接照着选就完事了。然而在 18.04 中,不知是不是上游的改动,删除了 Noto Sans UI 这个字体。由于一直没找到比较好的纵向较窄的替代品,因此那个较宽的版本让我眼镜不舒服了很长一段时间。

后来发现,Ubuntu 自带的版本中,有一个叫 Noto Sans Display 的版本,这个相比 Noto Sans,仅仅是修改了字符纵向的宽度,符合 UI 的设计特点。在经过一番调试以后,发现确实是一个很不错的选择。

经过测试的字体配置如下,桌面环境为 Xfce:

  • 窗口内文(Appearance 设置项中)Noto Sans Display Regular 9pt
  • 窗口标题(Window Manager 设置项中)Noto Sans Display Bold 9pt
  • Slight Hinting
  • 96/120 dpi(这个一定要设置)

对于 Seedbox 的 VNC 的场景,如果觉得字体略小阅读吃力,可以使用更大一些配置:

  • 窗口内文 Noto Sans Display Regular 10pt
  • 窗口标题 Noto Sans Bold 9pt(注意这里,使用 NSD 会导致窗口标题显得太窄而和内容不协调)
  • Slight Hinting
  • 96 dpi

其实这个配置在我曾经的某个盒子上被配出来过,但是一直没有将其标准化,所以也一直没有记得……

 

一份目前为止理论上能用的纸片人相关资源的 Tracker 列表

我现在才意识到,花园外站的种子对 Linux 下的 BT 客户端有多么不友好。它在给种子塞进去一大堆tracker 的同时,还会把所有的 Tracker 的 Tier 设置为 0,这个对于相当一部分客户端是一个十分不友好的行为。如果是本地用 utorrent 下载,那大可忽略这个问题,但是如果是为了长期开机跑公网分流,那么在可能的情况下,我建议去 bangumi.moe 下载种子文件,那里的种子要规范得多。

然后是一份目前为止能用的 Tracker 列表,其中应该是包含了花园、萌番、ACG.RIP 和 Nyaa 的统计 Tracker,所以可以放心使用。

http://open.acgtracker.com:1096/announce

http://t.nyaatracker.com:80/announce

http://104.238.198.186:8000/announce

http://tr.bangumi.moe:6969/announce

http://t.acg.rip:6699/announce

http://tracker1.itzmx.com:8080/announce

http://opentracker.acgnx.se/announce

http://nyaa.tracker.wf:7777/announce

http://tracker.kamigami.org:2710/announce

http://tracker2.itzmx.com:6961/announce

http://tracker3.itzmx.com:6961/announce

http://tracker4.itzmx.com:2710/announce

https://tr.bangumi.moe:9696/announce

http://share.camoe.cn:8080/announce

http://tracker.kisssub.org:2015/announce

http://sukebei.tracker.wf:8888/announce

udp://tracker.kamigami.org:2710/announce

udp://t.nyaatracker.com:80/announce

udp://tr.bangumi.moe:6969/announce

或者你也可以直接下载 Tracker List.txt 文件。

以上 Tracker 都经过分流机长期的测试,虽然不保证 7×24 能用,但是至少在本文写作的三天之内,它们是有过反应的。

虽然不知道维护者都是谁,不过还是感谢 Open Tracker 的维护者们做出的贡献。

Project NyaaTracker

ACG Tracker

Syncthing 配合 Nextcloud 搭建私有云

写在前面

首先感谢 youlun 大佬介绍了 Syncthing 这个好用的文件同步工具,一次性解决了 Nextcloud 同步残废的问题。

有人可能会问,Nextcloud 不就已经可以搭建私有云平台了吗,为什么还要借助 Syncthing 这样一个同步工具呢?如果文件量不大的话,可能这并不是什么大问题,但是由于 Nextcloud 即使是使用它的客户端,也只能通过网页方式上传,在遇到较大的文件的时候,就会遇到各种各样的限制,比如上传超时或者是文件过大不能上传等等。但是 Syncthing 就不存在这样的问题,可以顺畅地进行文件同步。那么,有没有办法让二者配合工作,即 Syncthing 负责文件同步,Nextcloud 负责网页端的界面和移动端访问的功能呢?答案是有的,而且非常可行,考虑到没有现成的教程,因此在这里记录一下。

LNMP 环境部署

WebServer 环境依然使用了 LinuxEye 的 LNMP 一键包,需要注意的问题是 PHP 选择 7.1 版本(Nextcloud 13.0.1 的依赖),以及需要通过 addon.sh 安装 fileinfo 这个 PHP 模块。

Nextcloud 安装

在部署完成环境之后,添加一个 nginx vhost,现在最新版的一键包中已经加入了 Nextcloud 的 Rewrite Rule,这个给我们的安装带来了极大的方便,再也不用去折腾那些重写规则了。

然后需要调整一下 Zend OPcache 的设置,不然在下载源码之后无法进入配置。具体步骤为在 /usr/local/php/etc/php.d/ 文件夹中找到 opcache 的 .ini 配置文件,将里面的数值按照如下的错误信息调整:

之后在官网下载 tar.bz2 的安装包,解压之后拷贝进 wwwroot,注意这里需要将所有的文件权限改为 www:www,默认一般是登录的用户,会造成无法访问,之后在 MariaDB 中创建一个数据库,在初始化的时候填进 Nextcloud 中,这一步还是比较方便的。

然后更改一下 Nextcloud 的配置,消除缓存的警告。在 <site root>/config/config.php 中添加如下字段即可:

'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
   'host' => 'localhost',
   'port' => 6379,
),

至此 Nextcloud 应该就可以正常使用了。

Syncthing 的配置

首先需要安装 Syncthing,官方文档中给出了 Ubuntu .deb 的链接,按照它配置即可。

这时候就会遇到一个问题,Syncthing 需要以 www 用户启动才能在和 Nextcloud 一同工作时避免一些权限的问题,但是 www 用户默认是 nologin 配置的,如何登陆进这个用户完成一些初始的设置是一个比较麻烦的问题。由于 www 用户无法登录,所以不能使用一般的 su <user> 来进行用户切换,以该用户的权限启动一个 bash 又不能完成完整的用户环境切换操作。在搜索之后,以一种比较 Tricky 的方法登录了进去:

su -s /bin/bash www

这条命令的意思是 override www 默认的 shell,再登录,然后就会发现你已经切换到 www 用户下了。运行 syncthing,该做什么做什么。

Nginx 反代

Syncthing 默认监听 localhost:8384 端口,那么在远端 VPS 上,如何进行配置呢?有两个方案,一个是修改监听端口,让程序监听 0.0.0.0:8384,另外一个是通过 nginx 配置一个反代。显然,第二个方案无论是在安全性,还是便利性(不用在域名后面输入端口号)上都优于第一个,所以我们就采用第二个方案。

Nginx 配置文件的关键部分如下:

server {
  listen 80;
  listen 443 ssl http2;

  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

  location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host localhost;
          proxy_set_header X-NginX-Proxy true;
          proxy_pass http://localhost:8384;
  }
}

需要注意的一点就是 proxy header 中的 Host 字段必须改为 localhost,否则 Syncthing 发现你的访问地址不是它的监听地址,就会拒绝访问,返回“Host check error“。

之后就是正常的 Syncthing 使用,这个不难,看官方文档就可以了。

Syncthing 和 Nextcloud 配合工作

一开始我以为,把 Syncthing 的同步文件夹设置为我的 Nextcloud 的数据目录就可以完成同步,实际上 Nextcloud 的文件列表并不是实时的,需要运行 OCC 重新进行扫描,但是这样的扫描并不能保证数据完全无损,而且在使用时也不可能频繁 SSH 上去进行重扫,因此必须采取其他的方法。

关于这个问题,官方给出的答案是 External Storage,在 Nextcloud 中启用 External Storage 这个组件以后,在设置中挂载外部的文件夹,这个可以是本地,也可以是 SFTP/FTP/Amazon S3/WebDAV 等等,在这个情况下,我们选择本地,然后添加对应的文件夹就可以在 Nextcloud 文件列表中看到我们的文件了,无论是网页版还是手机都可以。

Syncthing 自动启动

在 Ubuntu 上,我们通过 systemd 服务来完成:

[Unit]
Description=syncthing
After=network-online.target

[Service]
ExecStart=/usr/bin/syncthing -no-browser -home="/home/www/.config/syncthing"
ExecStop=/bin/kill -9 $(/bin/cat /run/syncthing.pid)
Restart=always
PIDFile=/run/syncthing.pid
TimeoutStopSec=300
User=www

[Install]
WantedBy=multi-user.target

在 Windows 上,我们可以通过这样一个 .bat 完成启动:

start "Syncthing" syncthing.exe -no-console -no-browser

参考资料

https://docs.syncthing.net/
https://docs.nextcloud.com/server/13/admin_manual/
https://serverfault.com/questions/333321/executing-a-command-as-a-nologin-user
https://www.jianshu.com/p/4235cc85c32d

搭建 JetBrains 激活服务器

首先需要 screen 和 curl 两个组件,apt-get install curl screen 进行安装

一键脚本:wget https://down.gloriousdays.pw/Tools/JetBrains/jetbrain.sh && sh ./jetbrain.sh

会出现两个空,用于输入端口号和默认用户名,建议直接回车,否则可能会出现莫名其妙的错误。

将最后那个License sever地址记下,之后激活用。

分分钟应该就会弹出提示,一劳永逸解决激活问题。