NexentaStor NAS 家用环境置备(一):BT 客户端

前言

对于 7*24 运行的家用 NAS 来说,你肯定想装上可通过 Web 界面访问控制的 BT 客户端——通过动态域名服务的支持,种子在办公室或路上就可以扔到上面,苍老师在你回家之前就已躺好了……:D

这一切在 Linux 的诸多发行版下很容易实现,比如 Debian 只需用 apt-get 就基本上搞定了所有事情。而如果你的 NAS 基于 Solaris,比如 NexentaStor,这也有现成的包,但缺失了一些基本的东西——软件包没给你创建服务进程专有的用户,以及没有按照 Solaris 的标准将“服务”给定义出来。

为什么要选用 NexentaStor?NexentaStor 系出 Solaris,在商业化运作的基础上也提供 Community 版本的软件,对 OS 底层封装得非常不错,相比其他 BSD NAS 方案有着良好的用户使用体验!二则是 ZFS 的优良特性,使得其非常适合家庭持久数据的保存。

>nexentastor4
>NexentaStor ACL

下文将解释如何在 NexentaStor 上安装 BT 客户端 Transmission(它也被很多 PT 支持),并将其配置为 svcadm 所能管控的系统服务。

本文使用的 NexentaStor 为 4.0.0 Beta M20,你可以到 NexentaStor Community Beta 网站上关注其更新。

系统准备

NexentaStor 使用了 Debian 的软件包管理机制,支持 apt 方式安装和更新软件包。作为一个尚处于 Beta 阶段的专有 OS,官方并未给 NexentaStor 4.0.0 Beta M20 提供可用的 apt deb source,但由于其核心与 Dilos 一样基于 illumos,且都使用 apt,所以我们把下面这几个源加到 /etc/apt/sources.list 当中应当是可行的: deb http://apt.dilos.org/dilos dilos-unstable main contrib non-free deb http://apt.dilos.org/dilos dilos-testing main contrib non-free

对了,对于 NexentaStor 来说,默认的 Shell 并不是常见的 Bash,而是其封装好的 nmc,你得进到 Bash 才能编辑上述的 sources.list。这你得动点手脚,具体可以点击这里

nmc@nas:/$ option expert_mode = 1
nmc@nas:/$ !bash
You are about to enter the Unix ("raw") shell and execute low-level Unix command(s). Warning: using low-level Unix commands is not recommended! Execute?  (y/n)

按”y”之后,熟悉的bash#就回来了!

root@nas:/volumes#

接下来是导入 dilos 的公钥以验证该 source 的签名,参见“apt-get update 的 NO_PUBKEY 问题解决”:

root@nas:~# gpg --keyserver subkeys.pgp.net --recv-keys 74DA7924C5513486
root@nas:~# gpg --export 74DA7924C5513486 | apt-key add -

更新系统:

root@nas:~# apt-get update
root@nas:~# apt-get install curl
root@nas:~# apt-get install unzip

但是,切记除了安装你需要的软件包,不推荐你运行 apt-get upgrade 或者 apt-get dist-upgrade 来更新系统。

基本安装

同样,我们通过 apt-get install transmission 来完成 Transmission 基本软件包的安装。

root@nas:~# apt-get install transmission
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'network-transmission' instead of 'transmission'
The following extra packages will be installed:
  library-libevent
The following NEW packages will be installed:
  library-libevent network-transmission
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.9 MB of archives.
After this operation, 108 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://apt.dilos.org/dilos/ dilos-unstable/main library-libevent solaris-i386 1.2.10.1 [628 kB]
Get:2 http://apt.dilos.org/dilos/ dilos-unstable/main network-transmission solaris-i386 1.2.10.2 [30.3 MB]
Fetched 30.9 MB in 1min 7s (460 kB/s)                                                                                                                                 
Selecting previously unselected package library-libevent.
(Reading database ... 62440 files and directories currently installed.)
Unpacking library-libevent (from .../library-libevent_1.2.10.1_solaris-i386.deb) ...
Selecting previously unselected package network-transmission.
Unpacking network-transmission (from .../network-transmission_1.2.10.2_solaris-i386.deb) ...
Setting up library-libevent (1.2.10.1) ...
Setting up network-transmission (1.2.10.2) ...

查看 Transmission 版本,2.73,不是最新也尚可:

root@nas:~# transmission-cli --version
transmission-cli 2.73 (13592)

创建一个新用户 torrentd,用于替换 root 来运行 Transmission 服务进程。

root@nas:~# mkdir -p /export/home/torrentd
root@nas:~# cd /export/home/
root@nas:/export/home# useradd -d /export/home/torrentd -s /bin/false torrentd
root@nas:/export/home# chown torrentd:other torrentd/
root@nas:/export/home# ls -la
total 6
drwxr-xr-x 4 root     root  4 Feb  8 00:24 .
drwxr-xr-x 3 root     sys   3 Feb  8  2013 ..
drwxr-xr-x 2 admin    staff 6 Feb  8  2013 admin
drwxr-xr-x 2 torrentd other 2 Feb  8 00:24 torrentd

你可以同时创建 BT 使用的存储目录。NexentaStor 下无疑你希望用上自己的 ZFS 池。

root@nas:~# mkdir -p /volumes/main/stuff/btdownloads
root@nas:~# chown -R torrentd:other /volumes/main/stuff/btdownloads

配置

这些基本步骤过后,我们还需要配置 Transmission,而创建配置文件最方便容易的方式莫过于运行 transmission-daemon,它会为我们创建一个母本。通常情况下,这些配置文件将在当前登录的用户主目录中生成,在多用户环境中这是 OK 的,但在这里的场景下我们把它们放在 /var/transmission 目录中。

root@nas:~# mkdir /var/transmission/
root@nas:~# transmission-daemon --config-dir /var/transmission -f
[00:35:04.262] Transmission 2.73 (13592) started (session.c:720)
[00:35:04.263] RPC Server Adding address to whitelist: 127.0.0.1 (rpc-server.c:803)
[00:35:04.263] RPC Server Serving RPC and Web requests on port 127.0.0.1:9091/transmission/ (rpc-server.c:997)
[00:35:04.263] RPC Server Whitelist enabled (rpc-server.c:1001)
[00:35:04.263] UDP Failed to set receive buffer: No buffer space available (tr-udp.c:58)
[00:35:04.263] UDP Failed to set receive buffer: requested 4194304, got 57344 (tr-udp.c:77)
[00:35:04.263] DHT Generating new id (tr-dht.c:309)
[00:35:04.263] Using settings from "/var/transmission" (daemon.c:517)
[00:35:04.263] Saved "/var/transmission/settings.json" (bencode.c:1731)
[00:35:04.263] Port Forwarding (NAT-PMP) initnatpmp succeeded (0) (natpmp.c:72)
[00:35:04.263] Port Forwarding (NAT-PMP) sendpublicaddressrequest succeeded (2) (natpmp.c:72)
[00:35:12.337] Port Forwarding Port Forwarding (port-forwarding.c:93)
[00:35:12.337] Port Forwarding Port Forwarding (port-forwarding.c:93)
[00:35:37.568] DHT Attempting bootstrap from dht.transmissionbt.com (tr-dht.c:247)

现在进程已经起来,配置文件也已经生成,按 CTRL-C 把 transmission-daemon 进程杀掉。你可以看到一些文件已经生成出来:

root@nas:~# cd /var/transmission/
root@nas:/var/transmission# ls -la
total 11
drwxr-xr-x  5 root root    6 Feb  8 00:37 ./
drwxr-xr-x 41 root sys    41 Feb  8 00:34 ../
drwxr-xr-x  2 root root    2 Feb  8 00:35 blocklists/
drwxr-xr-x  2 root root    2 Feb  8 00:35 resume/
-rw-------  1 root root 2147 Feb  8 00:37 settings.json
drwxr-xr-x  2 root root    2 Feb  8 00:35 torrents/

最重要的文件是 settings.json ,我们需要在其中设置下载目录(download-directory)以及对本地局域网设置白名单(whitelist) (我这里是 192.168.168.*)。

关于设置文件的一个注意事项:你可以任意编辑此文件,但如果你编辑 settings.json 时 transmission-daemon 处于运行状态,那么服务进程停止时设置文件将被覆写。所以要停掉 transmission-daemon 之后再编辑 settings.json。

"download-dir": "/volumes/main/stuff/btdownloads",
...
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "------------",
"rpc-port": 9091,
"rpc-username": "",
"rpc-whitelist": "127.0.0.1,192.168.168.*",
"rpc-whitelist-enabled": true,

Web GUI 的默认端口为 9091,这可以通过编辑 rpc-port 值来变更。

设置文件的更多信息在这里找: https://trac.transmissionbt.com/wiki/EditConfigFiles

然后更变配置文件夹的属主。

root@nas:/var/transmission# chown -R torrentd:other /var/transmission

Transmission 配置为系统服务

最后一步是将 Transmission 集成到系统的 Service Management Facility (smf) 当中。这需要一个描述了 Transmission 服务的 XML 配置文件。

基本的 XML 配置文件在 4amlunch.net 可以找到。但因为该配置文件中需要设置一些特定的目录,所以此处编辑了这个文件以适合本文中的叙述。新文件可以在这里找到: transmission.zip

假设传送至 /tmp 目录。

root@nas:/tmp# unzip transmission.zip
Archive:  transmission.zip
  inflating: transmission-daemon
  inflating: transmission-daemon.xml

root@nas:/tmp# mv transmission-daemon /lib/svc/method/
root@nas:/tmp# chmod +x /lib/svc/method/transmission-daemon
root@nas:/tmp# chown root:bin /lib/svc/method/transmission-daemon
root@nas:/tmp# svccfg import -V transmission-daemon.xml

现在,我们已经将 transmission-daemon 安装成为了 NexentaStor 的一个服务,它可以使用 svcadm 命令来启动及停止,并使用 svcs 来检查其运行状态。

相关命令: svcadm enable transmission-daemon svcadm disable transmission-daemon

以下步骤将启用 Transmission 服务,并检查其状态。

root@nas:/tmp# svcadm enable transmission-daemon
root@nas:/tmp# svcs -x transmission-daemon
svc:/application/transmission-daemon:default (Transmission BitTorrent Client (Daemon))
 State: online since February  8, 2013 01:33:33 AM PST
   See: transmission-daemon(1)
   See: http://www.transmissionbt.org
   See: /var/svc/log/application-transmission-daemon:default.log
Impact: None.

这样就可以了,服务已启动并运行,现在我们可以在端口 9091 访问 Transmission 的 WebGUI: http://YourServerAddress:9091/

>transmission-web-ui

如果希望使用 uTorrent 风格的客户端,那推荐你使用 RPC 客户端来访问 Transmission 守护进程,比如 Transmission Remote GUI,比 Web GUI 更方便强大: https://code.google.com/p/transmisson-remote-gui/

评论

《 “NexentaStor NAS 家用环境置备(一):BT 客户端” 》 有 3 条评论

  1. nabolen 的头像
    nabolen

    你的nexenta怎么是中文的?求告知?

    1. Analyser 的头像

      Beta版本时曾有,现在已经不可选

  2.  的头像
    匿名

    博主能不能分享一下你的中文版镜像

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据