分类目录归档:Seedbox

一份目前为止理论上能用的纸片人相关资源的 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

关于近期出现的大量公网 libtorrent BT 客户端的问题

经确认,如果 IP 来源为 CN,且客户端类型汇报为 libtorrent 这个库而非其他正常客户端的 peer,既有可能是迅雷等下载软件的离线客户端。对于一部分同样表现的海外 IP 暂时未能确认,不确定是否有一些极小众的客户端表现确实如此,对于此问题,在 qBittorrent 增强版未作修改之前,建议采取 ipfilter 的方式屏蔽这些客户端。

IP Filter 来源如下:https://emulefans.com/offline-server-ip-170205/

也可以直接下载

关于 qBittorrent 编译的一些问题

您可能是开源软件的受害者!

您可能是开源软件的受害者!

您可能是开源软件的受害者!

重要的事情说三遍。

实际上这次也没做什么理论上很麻烦的事情,就是 clone 一个 qBittorrent 4.0.4.3 的源码,配合 libtorrent 1.0.11 编译一下,理论上不应该有什么问题的对吧。然而就是出问题了……

编译的过程很顺利,安装 Deluge PPA 的 libtorrent-rasterbar-dev 和一些 boost 库之后开始编译,然后到了 linking 的过程就报错了:src/base/bittorrent/private/filterparserthread.cpp:99: reference to `boost::asio::ip::address_v4::address_v4(std::array<unsigned char, 4u> const&)'

按照 GitHub Issue #6721,这个问题可能是因为 std::arrayboost::array 这两个名称的选择在 libtorrent 和 qbittorrent 里面不同,在没有使用 stdc++11 编译的时候,使用的是 boost::array,反之使用 std::array,考虑到 qbittorrent 默认需要 C++ 11,所以 libtorrent 应该使用同样的 CXXFLAGS 编译才能在 linking 的时候不报错。因此既然出现了现在这个问题,就证明 Deluge PPA 的 libtorrent 是没有使用 C++11 编译的。

之前在编译 qb 3.3.16 的时候并没有出现这个错误,可能是 qb3 不要求 C++11 的原因。

那么如果要解决这个问题,就必须从源码开始编译 libtorrent。考虑到 lt1.1.x 至今无法解决 U2 的双栈 IP 汇报问题,因此只能采用 lt1.0。

git clone https://github.com/arvidn/libtorrent.git
cd libtorrent
git checkout $(git tag | grep libtorrent-1_0_ | sort -t _ -n -k 3 | tail -n 1)
./autotool.sh
./configure --disable-debug --enable-encryption --with-libgeoip=system CXXFLAGS=-std=c++11

在编译完成之后,checkinstall 安装,然后再去编译 qb 就应该可以了。

关于 Boost 版本

Boost 版本的选择也有一些讲究,Ubuntu Package 默认的是 1.58 版本的 boost,qb 经过测试,最高只能使用 1.65.1 版本的 boost,如果想要使用新一些的版本,只能自己编译。

我在编译 1.65.1 的时候,遇到了一个以前从来没有的问题,找不要 pyconfig.h,这个文件本应该存在于 /usr/include/python 或者 python2.7 或者 python3.5 的目录下(取决于默认 Python 版本),但是我那个 Python 2 就是没有这个文件,因此将 Python 默认改为 3.5(sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 10)才让 boost 的编译器找到对应的 Python 头文件。如果出现这样的问题需要注意。

使用 echo -e '#include <boost/version.hpp>\nBOOST_VERSION' | gcc -x c++ -E - 这个命令可以查看当前 include 的 boost 版本。

Python 版本切换的注意点

如果安装了 Deluge,然后再切换到 Python3,可能会让 Python 找不到 Deluge 的包,然后无法运行,解决方法是修改 /usr/bin/deluged 和 /usr/bin/deluge-web 的第一行,用 python2.7 运行。或者也可以编译完 boost 以后再把默认 python 改回来。

 

关于 qBittorrent 部分问题的记录

首先是这个反复弹出 Tracker Authentication 窗口的问题,这个是因为 Tracker 对未授权的种子返回了 HTTP/401 错误,导致 qb 弹出窗口要求验证。这是一个正常行为,如果不需要它:

  • 在 qBittorrent/src/base/bittorrent/torrenthandle.cpp 文件的 void TorrentHandle::handleTrackerErrorAlert(libtorrent::tracker_error_alert *p) 函数中注释掉关于 401 错误的两行即可。

然后就是在 qb 中有大量种子的情况下,同时开始会导致 Tracker 始终处于 “Not Working” 状态,如果一个一个启动,那么就是好的,这个应该是qb本身并发设计不良导致的问题。

修改版 qbittorrent 封禁迅雷、百度等吸血客户端

写在前面

公网分流是否有必要封禁迅雷,这个问题我自己也没有一个很明确的答案。支持者认为,迅雷对于整体 BT 社区的健康发展完全没有贡献,给他们上传完全是浪费带宽。但是从另外一个角度来说,一个字幕 / Raw 组需要分流人员,是为了让观众能够更快地下载到本组的作品,使用迅雷下载的人也是观众,封禁他们就和建立分流组的初衷相悖。我个人倒是倾向于赞成封禁迅雷,因为从我的经验来看,迅雷的 BT 模块存在严重的问题,其可见进度永远是 0,这样让会让正常的客户端无所适从,无法就当前的 peer 列表情况选择合适的上传策略,从整体上来说,是不利于分享的。

下面进入正题

这篇文章想要介绍的是一个 qbittorrent 的修改版,作者为其加入了自动封禁迅雷的能力,非常适合我的使用情况。原发布帖子在这里,GitHub的代码树则在这里。我推荐使用 v3_3_x 这个 Branch,因为相对全是 bug 的 qb4,3 要稳定很多。

具体编译方面,参照 qb 官方的文档编译即可,记得使用 checkinstall 帮助自己管理软件包。

emmmm,本来还以为可以写很多,结果发现没几句话就写完了。主要目的本来就是为了介绍一下这个修改版,至于是否使用,各位就见仁见智了。

编译安装 qBittorrent 3.3.16 并处理依赖

写在前面

我想说,开源软件都是垃圾。但是问题在于,很多时候我们并没有比垃圾更好的东西用。此外,本文中处理依赖的方式为权宜之计,因此会给出依赖的下载

qb 自从更新了 4.0,bug 就一天比一天多。最近 PPA 上最新的 4.0.3 版本的 build 在安装之后,除了之前的各种 bug 以外,甚至无法正常启动,好不容易启动了以后,也不能正常地加载种子列表,我实在是不想用了。然而,官方的 PPA build 中并没有老版本的 binary,无奈之下,只好自己编译。

此次,我选择了相对稳定的 3.3.16 版本。

准备

在官方的 SourceForge 页面上获取一份源代码(这里是我自己的缓存),并且解压到某个目录下。

qb 的编译安装需要自己处理 libtorrent 的依赖,关于这点,由于我需要保持和本地 Deluge PPA 版本的兼容,因此我并不愿意选择完全从头编译的方法,只能尝试使用 Deluge PPA 的 libtorrent binary,因此遇到了一些问题。

在这里需要谈一谈 pkg-config 这个组件,由于 Linux 存在编译依赖的问题,在没有包管理器的情况下,如果想要在编译时看到链接库所需要的 CFLAGS,需要通过 pkg-config 这个程序来查看,在编译安装第一步执行的 ./configure 完成的一部分工作就是由 pkg-config 得到这些 FLAGS。在之前说过,我的盒子上已经安装了 libtorrent-rasterbar8,也就是所需要的二进制库已经安装,但是在编译前预配置时仍然返回找不到 libtorrent。经过查询,发现是因为 pkg-config 无法返回 linking 所需的编译器标志,也就是这个 binary 并没有注册到系统。所幸在一个 AskUbuntu 答案中,我发现了 libtorrent-rasterbar-dev 这个包,里面向系统注册了编译所需的头文件,安装之后,就没有出错了。

需要注意的是,仍然需要安装 Deluge PPA 对应的 libtorrent-rasterbar-dev 版本并通过 apt-mark hold 防止升级。

除了 libtorrent,还有其他的几个依赖包,不过都可以通过 apt 完成:

sudo apt-get install build-essential pkg-config automake libtool git
sudo apt-get install libboost-dev libboost-system-dev libboost-chrono-dev libboost-random-dev libssl-dev
sudo apt-get install qtbase5-dev qttools5-dev-tools libqt5svg5-dev

编译

这个相对简单

./configure
make -j$(nproc)
sudo make install

即可

在输出了一大堆日志之后,完成了安装

cd src/ && ( test -e Makefile || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /root/Software/qbittorrent-3.3.16/src/src.pro QMAKE_LRELEASE= -o Makefile ) && make -f Makefile install
make[1]: Entering directory '/root/Software/qbittorrent-3.3.16/src'
install -m 644 -p /root/Software/qbittorrent-3.3.16/doc/qbittorrent.1 /usr/local/share/man/man1/
install -m 644 -p /root/Software/qbittorrent-3.3.16/src/icons/qbittorrent.desktop /usr/local/share/applications/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/qbittorrent.appdata.xml /usr/local/share/appdata/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/16x16/apps/qbittorrent.png /usr/local/share/icons/hicolor/16x16/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/22x22/apps/qbittorrent.png /usr/local/share/icons/hicolor/22x22/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/24x24/apps/qbittorrent.png /usr/local/share/icons/hicolor/24x24/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/32x32/apps/qbittorrent.png /usr/local/share/icons/hicolor/32x32/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/36x36/apps/qbittorrent.png /usr/local/share/icons/hicolor/36x36/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/48x48/apps/qbittorrent.png /usr/local/share/icons/hicolor/48x48/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/64x64/apps/qbittorrent.png /usr/local/share/icons/hicolor/64x64/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/72x72/apps/qbittorrent.png /usr/local/share/icons/hicolor/72x72/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/96x96/apps/qbittorrent.png /usr/local/share/icons/hicolor/96x96/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/128x128/apps/qbittorrent.png /usr/local/share/icons/hicolor/128x128/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/192x192/apps/qbittorrent.png /usr/local/share/icons/hicolor/192x192/apps/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/16x16/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/16x16/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/22x22/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/22x22/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/24x24/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/24x24/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/32x32/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/32x32/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/36x36/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/36x36/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/48x48/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/48x48/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/64x64/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/64x64/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/72x72/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/72x72/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/96x96/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/96x96/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/128x128/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/128x128/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/192x192/status/qbittorrent-tray.png /usr/local/share/icons/hicolor/192x192/status/
install -m 644 -p /root/Software/qbittorrent-3.3.16/dist/unix/menuicons/128x128/apps/qbittorrent.png /usr/local/share/pixmaps/
install -m 755 -p qbittorrent /usr/local/bin/qbittorrent
strip /usr/local/bin/qbittorrent

Known Issues

降级之后,不用担心配置文件的问题。无论是 apt-get purge(会移除 /etc 下的配置文件),还是 apt-get remove(不移除配置文件)的方式卸载新版本 qb,都不会影响 $HOME 下的用户配置文件,因此种子列表和配置并不会丢失。

降级之后可能发生种子列表 GUI 紊乱的问题,会出现大量的空白,这个把所有的信息都勾上显示出来,再取消即可解决。

所有的种子的分享率限制可能会莫名其妙变成 0,如果发现无法启动种子,一直保持 Completed 状态,可以检查一下种子的分享率限制(不是 qb 全局)。

References

https://github.com/qbittorrent/qBittorrent/wiki/Compiling-qBittorrent-on-Debian-and-Ubuntu

https://askubuntu.com/questions/837960/how-to-install-qbittorrent-in-ubuntu-16-10

https://askubuntu.com/questions/231562/what-is-the-difference-between-apt-get-purge-and-apt-get-remove

https://sourceforge.net/projects/qbittorrent/files/qbittorrent/qbittorrent-3.3.16/

调整 Deluge 使用的 libtorrent-rasterbar 版本以实现双栈 IP 汇报

最近一版的 qBittorrent 更新之后,Deluge 所依赖的 libtorrent 变成了 1.1.5(libtorrent-rasterbar9 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1),然而 Deluge 的双栈 IP 汇报是一件很玄学的事情,目前只有 libtorrent-rasterbar8 1.0.11-1~xenial~ppa1.1(也就是目前 Deluge PPA 上面的版本)才能实现对 U2 和 CMCT 的双栈 IP 汇报,因此需要做一些调整。

经过查询一些资料,发现 Deluge 通过 python-libtorrent 这个包实现对于 libtorrent 版本的绑定,该软件包的版本决定了底层使用的 libtorrent 版本。

先看一下 1.1.5 版的 libtorrent 安装后,系统上的软件包情况:

$ dpkg -l|grep libtorrent
ii  libtorrent-rasterbar8                1.0.11.1+git20170907.c074e87885-1ppa1~xenial1                amd64        C++ bittorrent library by Rasterbar Software
ii  libtorrent-rasterbar9                1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 amd64        C++ bittorrent library by Rasterbar Software
ii  python-libtorrent                    1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 amd64        Python bindings for libtorrent-rasterbar
ii  qbittorrent                          4.0.1.99~201711271728-6211-f977d12~ubuntu16.04.1             amd64        bittorrent client based on libtorrent-rasterbar with a Qt4 GUI

可以看到,python-libtorrent 和 libtorrent-rasterbar9 一样,使用了 1.1.5 的版本,那么如何降级呢?

经过 apt-cache policy <package name> 命令的查询,我们发现其实是可以安装 1.0.11 版本的 python-libtorrent 的:

$ apt-cache policy python-libtorrent
python-libtorrent:
  Installed: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1
  Candidate: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1
  Version table:
 *** 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 100
        100 /var/lib/dpkg/status
     1.0.11-1~xenial~ppa1.1 500
        500 http://ppa.launchpad.net/deluge-team/ppa/ubuntu xenial/main amd64 Packages
     1.0.7-1build1 500
        500 http://mirrors.online.net/ubuntu xenial/universe amd64 Packages

$ apt-cache policy libtorrent-rasterbar8
libtorrent-rasterbar8:
  Installed: 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1
  Candidate: 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1
  Version table:
 *** 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1 100
        100 /var/lib/dpkg/status
     1.0.11-1~xenial~ppa1.1 500
        500 http://ppa.launchpad.net/deluge-team/ppa/ubuntu xenial/main amd64 Packages
     1.0.7-1build1 500
        500 http://mirrors.online.net/ubuntu xenial/universe amd64 Packages

$ apt-cache policy libtorrent-rasterbar9
libtorrent-rasterbar9:
  Installed: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1
  Candidate: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1
  Version table:
 *** 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 500
        500 http://ppa.launchpad.net/qbittorrent-team/qbittorrent-stable/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status

从输出结果中可以看出,python-libtorrent 有三个版本,1.1.5 1.0.11 和 1.0.7,我们在这里需要 1.0.11 的版本。同时,为了保证依赖完整,我们需要安装相同版本的 libtorrent-rasterbar8,这个操作可以通过 apt-get install <package name>=<version name> 的命令完成。

之后,还需要做的一件事是方式 apt-get upgrade 的时候更新了我们已经降级的软件包。这个操作通过 apt-mark hold <package name> 完成,在执行了这个命令以后,我们可以看一下效果:

$ dpkg --get-selections|grep libtorrent
libtorrent-rasterbar8				hold
libtorrent-rasterbar9				install
python-libtorrent				hold

可以发现对应的软件包已经被锁定,重启 deluged 之后也成功降级到了 1.0.11 版本。

综上,解决方案如下:

apt-get install libtorrent-rasterbar8=1.0.11-1~xenial~ppa1.1 python-libtorrent=1.0.11-1~xenial~ppa1.1
apt-mark hold libtorrent-rasterbar8 python-libtorrent
dpkg --get-selections|grep libtorrent

.deb 依赖包下载,以防 Deluge PPA 更新导致方法无效:https://down.gloriousdays.pw/Tools/Deluge-libtorrent-1.0.11.tar.xz

Kimsufi 独服购买的一些套路

作为一个玩盒子玩了快一年的人,Online.net、Kimsufi 这样的便宜独服商家如果都没接触过,实在是说不过去,我也不例外。在盒子价格愈发上升的当下,这两家的价格依旧那么便宜也确实是不可多得的一件事。不过独服不像 VPS,首次购买都存在一个设置费的问题,如果在购买了之后很短的时间内发现同款可以以更低的价格买到,就会非常纠结,究竟是应该选择更低的续费价格且再出一笔设置费,还是考虑到设置费的成本,不再去管那一点点的差价(对,KS-2E 说的就是你)。

不过这篇文章想要讨论的并不是 KS 的独服又出特价了的问题,而是想记录一下购买 Kimsufi 独服的一些可以省钱的小技巧。

抛开法国人可能根本就搞不清自己在卖什么的问题不谈(比如 17 年年初可以用 KS-3C 的价格开出 KS-4C 的高配之类),先来说一说 Kimsufi 的网站账户体系。无论访问 Kimsufi 哪一个 TLD 的域名(.ie / .fr / .com),最终都会导向至 Kimsufi.com 下的一个分支。据我的观察,主要有三套账户体系:

  1. kimsufi.com/en 和 kimsufi.com/fr
  2. kimsufi.com/ca/en 和 kimsufi.com/ca/fr
  3. kimsufi.com/us/en

其中第一个可以通过 kimsufi.ie 跳转得到,使用欧元结算,设置费 9.99 EUR 且存在 20% 的 VAT,虽然可以免掉,但是对于中国大陆用户来说非常不友好,因为需要提交英文的地址和信息证明。

第二个可以通过 kimsufi.ca 跳转得到,使用加拿大元结算,设置费 13.99 CAD,不存在欧盟增值税的问题。但是由于购买需要提供合法的加拿大地址和手机号,因此对于中国大陆用户来说也不是很方便。

第三个可以在利用美国 IP 地址访问 kimsufi.com 时自动跳转得到,使用美元结算,设置费 13.99 USD,不存在增值税的问题。相比之下,虽然有的时候可能价格相对欧洲区贵一点点,但是考虑到 VAT 的问题,反而便宜不少。因此这个区域的账户对于中国用户来说是一个好的选择。

接下来说促销的问题,我们知道 Kimsufi 的服务器经常出现一些促销,比如 KS-2E 和 KS-3C 等等。促销的购买链接一般是这样的:

  • https://www.kimsufi.com/fr/commande/kimsufi.xml?reference=<productID>
  • https://www.kimsufi.com/ca/en/order/kimsufi.xml?reference=<productID>
  • https://www.kimsufi.com/en/order/kimsufi.xml?reference=<productID>
  • https://www.kimsufi.com/ca/fr/commande/kimsufi.xml?reference=<productID>
  • https://www.kimsufi.com/us/en/order/kimsufi.xml?reference=<productID>

根据我的观察,无论 Kimsufi 在哪个区域进行促销,即其他区域的网站不存在这样的促销,所有区域的购买链接都会可用,但是价格会根据 OVH 内部的一套汇率规则将促销区域的价格换算到你所购买的区域的价格。比如欧洲区 6.99 EUR 促销的 KS-2E,使用美区账号购买就会变成 8.39 USD,换算回欧元的话,就是 7 欧多一点点,考虑到 VAT 的问题,仍然相当实惠,因为如果使用欧元区账号购买,同款就需要 8.39 EUR了。

综上所述,如果需要购买 Kimsufi 的便宜独立服务器,还是注册一个美区账号比较好。加上 OVH 的 Paypal 付款无法支持银联通道结算,如果使用欧元结算,通过 VISA / MasterCard 通道结算有时会面临一个货币转换费的问题,因此无论是从价格方面考虑,还是考虑到免税的各种麻烦,都应该选择 Kimsufi 美区账号。

Online Dedibox IPv6 配置

Online 的 IPv6 配置真是不一般地蛋疼,官方文档上面那个 DHClient6 完全不能用,在 U2 上有人推荐使用 Dibbler,但是在上一台挂掉的盒子上也还是不好用,平均三天会挂掉一次。在最新的一台盒子上尝试放弃 Online 自己的 IPv6 线路,使用 HE 的 TunnelBroker,然而根本没办法加载网络设备,我也是没有任何办法。

现在又找到了一版 DHClient6 配置,记录如下:

将如下内容写入 /etc/network/interfaces

iface eno1 inet6 static
  address <one IPv6 address from your block from Online>
  netmask 56
  accept_ra 1
  pre-up /sbin/dhclient -1 -v -pf /run/dhclient6.eno1.pid -lf /var/lib/dhcp/dhclient6.eno1.leases -cf /etc/dhcp/dhclient6.conf -6 -P eno1

创建 /etc/dhcp/dhclient6.conf

interface "eno1" {
  send dhcp6.client-id <your DUID for the subnet>;
  request;
}

之后运行 systemctl reload-or-restart networking.service

按照我之前的经历,DHClient6 获得的 IPv6 地址只能存活 12 小时,所以我先继续配置,等待 12 小时之后再来更新。

更新:已经将近 24 小时,目前 IPv6 仍然存活,认为配置成功。

从零开始的盒子:Online Dedibox 盒子配置记录

讲真,我也记不得这是我第几次配盒子了,但是这次我的主力盒子 & 杂活独立服务器挂掉还是给我造成了很大的损失。一方面,我损失了所有的盒子配置,包括澄空学园字幕组和 LoliHouse 的公网分流记录和文件,还有一些刷 PT 的环境;另一方面,我损失了虚拟机上的 Windows 压制环境;还有一些特定用途的杂活类服务,比如 Node.js 环境、Python / Anaconca 环境等等。为了以后维护方便,也为了给有同样需求的人一个参考,我在这里记录一下配置的历程。

先说点别的吧,关于这个盒子为什么会突然挂掉。起因是昨天(2017 年 10 月 9 日)下午至晚上,某国的大型网络过滤系统突然发威,在全国范围内干掉了我盒子的 IP 地址,我就很奇怪,我盒子一不做代理、二不放网站,就几个 BT 客户端的 WebUI 跑在上面,怎么就无缘无故给我过滤掉了。发现了 IP 问题之后,我尝试订购了一个 Failover IP 地址作为备用 IP。在配置的时候,由于我想要把这个 IP 作为我的主 IP 而改动了路由表,然后就被上级交换机锁了网络端口,与客服沟通之后,由于问题在短时间内无法解决,进而选择换机,我也丢失了所有数据。

先整理一下大致需求:

  1. Server As a Seedbox
    1. Update Kernel & BBR & BBR_powered
    2. Deluge ( Main BT/PT Client )
    3. Transmission ( Secondary PT Client )
    4. UTserver ( Specialized BT Client for SumiSora_Initial )
    5. Tixati ( Specialized BT Client for SumiSora_Main )
    6. qBittorrent ( Specialized BT Client for LoliHouse )
    7. Jailed SSH User ( For SumiSora_Initial SFTP Upload )
    8. SSHFS (Map Wishosting Stroage KVM Disk, not decided yet; maybe let Tixati work on this disk )
  2. Server As an Encoding Server
    1. VMware WorkStation
    2. gcc6
    3. Windows 7 & Activation
    4. Runtime Library
    5. Python & VapourSynth
    6. BaiduNetDisk
  3. Server As a Computer
    1. Node.js Http Server
    2. Anaconda Environment in Windows VM
    3. IPv6 Configuration
    4. Xfce & VNCserver
    5. Wine
    6. Firefox
  4. Server As a Storage Box
    1. Jailed SSH User ( Website Backup )

接下来开始安装:

  • 系统安装

系统仍然选择了我熟悉的 Ubuntu 16.04 LTS Server,由于我的服务器硬盘是 SoftRaid,在配置的时候还遇到了一些问题。最主要的问题就是 SWAP 分区不能使用 RAID0,如果这么选择安装操作系统就会报错。

  • 预配置及软件源添加
sudo apt-get install python-software-properties software-properties-common
sudo add-apt-repository ppa:transmissionbt/ppa
sudo add-apt-repository ppa:deluge-team/ppa
sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo dpkg --add-architecture i386 
wget -nc https://dl.winehq.org/wine-builds/Release.key 
sudo apt-key add Release.key 
sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  • 安装一系列软件
sudo apt update
sudo apt install xfce4 vnc4server deluged deluge-web qbittorrent transmission-daemon sshfs nodejs firefox build-essential fonts-noto gtk3-engines-xfce xfce4-goodies xfce4-power-manager
sudo apt-get install --install-recommends winehq-stable
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --config gcc
  • Kernel Update & BBR_powered

在 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 上下载 4.11 版本的内核,4.12 存在 VirtIO 方面的 bug,4.13+ 无法适配 BBR_powered 模块,所以采用 4.11.12

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.12/linux-headers-4.11.12-041112_4.11.12-041112.201707210350_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.12/linux-headers-4.11.12-041112-generic_4.11.12-041112.201707210350_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.12/linux-image-4.11.12-041112-generic_4.11.12-041112.201707210350_amd64.deb
sudo dpkg -i linux*.deb
sudo update-grub
sudo reboot

wget -O ./tcp_tsunami.c https://down.gloriousdays.pw/Tools/tcp_tsunami.c
echo "obj-m:=tcp_tsunami.o" > Makefile
make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
sudo cp tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/drivers/
echo 'tcp_tsunami' | sudo tee -a /etc/modules
sudo depmod
sudo modprobe tcp_tsunami
sudo bash -c "echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf"
sudo bash -c "echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf"
sudo sysctl -p
  • IPv6 配置

鉴于 Online 的蛋疼实现,另起一篇在这里

  • BT 客户端配置
sudo systemctl stop transmission-daemon.service
sudo vi /var/lib/transmission-daemon/info/settings.json
#Change the following lines to the content that you want
"rpc-password": "{62b16db87b89a91dd49a5110a7cafc06d20eb4f2wtK6kqPj",
"rpc-username": "transmission",
"rpc-whitelist": "*",
"umask": 2,

一、utserver
这个比较简单

前往utserver的官网: http://www.utorrent.com/downloads/linux 下载编译好的程序
文件名一般是utserver.tar.gz
注意适用的发行版。

目前最新的3.3已经可用。

部署:
sudo tar xvzf utserver.tar.gz -C /opt/

#释放到opt目录

sudo chmod -R 777 /opt/utorrent-server-alpha-v3_3/
#给予目录权限,这里的目录名视情况而定。可以先敲sudo chmod -R 777 /opt/ut 再按下TAB自动补全

sudo ln -s /opt/utorrent-server-alpha-v3_3/utserver /usr/bin/utserver

#链接可执行文件,建立快捷方式。目录名问题同上。
utserver -settingspath /opt/utorrent-server-alpha-v3_3/
#(测试)运行。目录名问题同上。

如果这是没有出错提示,恭喜已经成功了
访问 [server_ip]:8080/gui 登陆webui
用户名 admin, 密码为空
登陆后开始设置

如果提示libssl.so package missing
运行
sudo apt-get install libssl0.9.8:i386
#补全依赖

因为一旦登出,utserver -settingspath /opt/utorrent-server-alpha-v3_3 这个命令终止导致ut停止运行
可以使用tmux或者nohup后台运行
nohup utserver -settingspath /optutorrent-server-alpha-v3_3 >/dev/null 2>&1 &

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

[Service]
ExecStart=/usr/bin/sudo -u <username> /path/to/utserver/bin -settingspath /path/to/utserver/dir/
ExecStop=kill -9 $(cat /run/utserver.pid)
Restart=always
PIDFile=/run/utserver.pid
TimeoutStopSec=300
RestartSec=3

[Install]
WantedBy=multi-user.target
  • VNCserver 配置

修改 ~/.vnc/xstartup 以启动 Xfce 桌面环境

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
startxfce4 &

修改 /usr/bin/vncserver 中 VNCserver 的配置,这个需要 root 权限

$geometry="1024x768"
$vncPort = 5900 + $displayNumber
$depth = 16 #(may cause problems with Windows VM if set to 24)
  • Jailed SSH User 进一步配置

由于我不想打开 SSH 的 Password Authentication, 但是 LNMP 脚本的备份又需要通过密码认证的 SSH 连接实现,因此寻找了可以打开单个用户的密码认证的方法:

在 /etc/ssh/sshd_config 中写入如下代码块即可

Match User <username1>,<username2>
    PasswordAuthentication yes
Match all  #This line is to end the match block
  • systemd 自启动脚本的设定

参照之前我写的这篇文章和 SSHFS 设置的这篇文章