前言
对于 7*24 运行的家用 NAS 来说,你肯定想装上可通过 Web 界面访问控制的 BT 客户端——通过动态域名服务的支持,种子在办公室或路上就可以扔到上面,苍老师在你回家之前就已躺好了……:D
这一切在 Linux 的诸多发行版下很容易实现,比如 Debian 只需用 apt-get 就基本上搞定了所有事情。而如果你的 NAS 基于 Solaris,比如 NexentaStor,这也有现成的包,但缺失了一些基本的东西——软件包没给你创建服务进程专有的用户,以及没有按照 Solaris 的标准将“服务”给定义出来。
为什么要选用 NexentaStor?NexentaStor 系出 Solaris,在商业化运作的基础上也提供 Community 版本的软件,对 OS 底层封装得非常不错,相比其他 BSD NAS 方案有着良好的用户使用体验!二则是 ZFS 的优良特性,使得其非常适合家庭持久数据的保存。
下文将解释如何在 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/
如果希望使用 uTorrent 风格的客户端,那推荐你使用 RPC 客户端来访问 Transmission 守护进程,比如 Transmission Remote GUI,比 Web GUI 更方便强大: https://code.google.com/p/transmisson-remote-gui/