Configure Ubuntu to the NAS

Table of Contents

系统配置

  1. IP修改成固定IP,域名解析修改为本地路由器。 /etc/network , /etc/resolvconf
  2. apt源修改为本地镜像,修正extras源的no-pubkey的错误。 /etc/apt
  3. 双网卡: 修改网络配置为双网卡绑定,mode 6。/etc/modules, modprobe bonding, /etc/network

基础服务

  • openssh-server:SSH服务
  • iotop:监控硬盘IO
  • lm-sensors:CPU温度监控
  • hddtemp:硬盘温度监控
  • exfat-fuse:挂载exfat分区
  • trash-cli:替代rm命令,安全第一
  • screen
  • LAMP: sudo tasksel
  • hdparm: linux下硬盘休眠通过hdparm的-B参数设定硬盘的advanced power managemant值。0-127之间是允许休眠,128-254之间是不休眠,值越大相对功耗就越大,但性能高。原来的相当于设定在254,所以硬盘一直在全速转,导致温度长期居高不下。有鉴于此,将此值设定为127,为了重启后有效,还需修改 /etc/hdparm.conf 配置文件。 (http://hd-idle.sourceforge.net/)
  • aria2:最好的HTTP下载
  • forked-daapd:iTunes媒体共享
  • webmin: 网页管理系统
  • sysv-rc-conf: 服务管理程序
  • tightvncserver: vnc server

XBMC

  • xinit xorg alsa-utils pulseaudio:X Server,未来可以用wayland了
  • xbmc xbmc-standalone:XBMC
  • upower acpi-support:XBMC的关机支持

数据盘

  1. 挂载数据盘LVM文件系统。 VMware RDM, lvm, rescan scsi, /etc/fstab
  2. vmtools安装。 apt-get install open-vm-tools
  3. 数据冗余/容错:
    • 安装LVM,使用LVM RAID1,制作镜像,LVM技术成熟,基本不会丢数据。
    • 或者安装ZFS,使用ZFS制作ZRAID1/RAID5等数据冗余,相较于LVM,ZFS管理较为方便(只需要两条命令),但是对内存开销较大.另外值得注意的是,由于OS DataBlock大小的关系,在创建ZPool的时候,记得加上 -o ashift=12 参数,以大幅提升ZFS的性能。
      sudo add-apt-repository ppa:zfs-native/stable
      sudo aptitude update
      sudo aptitude install ubuntu-zfs
      

SAMBA1

$ sudo apt-get update
$ sudo apt-get install samba

创建一个 Anonymous share

sudo vi /etc/samba/smb.conf

在文件末尾添加如下内容:

[share] 
    comment = Ubuntu File Server 
    path = /srv/samba/share 
    browsable = yes 
    guest ok = yes 
    read only = no

创建 share 目录,对该目录的Others权限添加w

$ sudo mkdir -p /srv/samba/share
$ sudo chmod o+w /srv/samba/share

重启Samba服务使配置生效

$ sudo restart smbd
$ sudo restart nmbd

Samba服务器配置完成,现在,可以在Windows Explorer 的地址栏中输入Samba 服务器所在主机的主机名:

\\hostname
or
\\IP

创建一个 Secured share

$ mkdir -p /srv/samba/secret

创建一个用于访问这个 secured share 的用户,下面创建一个名为sambauser1 的用户, 将用户 sambauser1 加入到本地的 smbpasswd file:

smbpasswd is the command.

$ sudo useradd [sambauser1] -s /usr/sbin/nologin
$ sudo smbpasswd -a [sambauser1]

修改共享目录的User为sambauser1

$ sudo chown sambauser1:sambauser1 /srv/samba/secret

修改 Samba 配置文件

sudo vi /etc/samba/smb.conf 

[secret]
    comment = Secret File
    path = /srv/samba/secret
    valid user = sambauser1
    guest ok = no
    writable = yes
    browsable = yes
$ sudo restart smbd
$ sudo restart nmbd

bt: rtorrent + rutorrent2, 3

替代transmission-daemon(http://localhost:9091/transmission/web/) BT/PT 下载. 这里以nginx测试

nginx + php

sudo apt-get install nginx
sudo service nginx start
sudo apt-get install  php5-fpm php5-cli php5-gd php5-xdebug php-apc
sudo service php5-fpm start

rtorrent

sudo apt-get install rtorrent
  • create rTorrent Configuration from rTorrent Configuration Template
    basedir="$HOME/rtorrent"
    mkdir -p "$basedir"/{.session,download,log,watch/load,watch/start}
    
    curl -s https://raw.githubusercontent.com/wiki/rakshasa/rtorrent/CONFIG-Template.md \
        | grep -A9999 '^######' | grep -B9999 '^### END' >~/.rtorrent.rc
    
  • rtorrent xmlrpc-c 配置为rutorrent连接

    xmlrpc-c 配置可参见官方文档《Using XMLRPC with rtorrent》本文以Nginx为例来说明。

    cat >>~/.rtorrent.rc<<EOF
    execute_nothrow=rm,/tmp/rpc.socket
    scgi_local = /tmp/rpc.socket
    schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"
    EOF
    

    最后的基本配置为: .rtorrent.rc

  • rtorrent 运行方法
    • method1

      下载此脚本 ./Files/rtorrent.sh

      mv rtorrent.sh /etc/init.d/rtorrent
      chmod a+x /etc/init.d/rtorrent
      
    • method2

      通过Screen使用rTorrent,然后通过+A+D挂起、screen -r 恢复

    • method3

      直接在终端运行,然后通过+Q 退出

      /usr/bin/rtorrent
      

rutorrent

安装配置ruTorrent需保证,支持php和xmlrpc-c的Web环境已经配置好,否则出错。

  • Nginx配置
    sudo mkdir /var/www
    sudo chown www-data:www-data /var/www
    

    Add user to ww-data group:

    sudo usermod -a -G www-data USERNAME
    

    修改nginx配置文件 /etc/nginx/sites-available/default

    root /var/www;
    index index.php index.html index.htm;
    
            location ~ \.php$ {
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
            }
    

    在server字段加入下面内容。

    location /RPC2 {
        include scgi_params;
        #scgi_pass 127.0.0.1:5000;
        scgi_pass unix:///tmp/rpc.socket;
    }
    
  • rutorrent安装
    #需要的一些依赖包:
    sudo add-apt-repository ppa:mc3man/trusty-media
    sudo apt-get update
    sudo apt-get install ffmpeg mediainfo curl
    
    
    wget http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz
    wget http://dl.bintray.com/novik65/generic/plugins-3.6.tar.gz
    sudo tar xvf rutorrent-3.6.tar.gz -C /var/www
    sudo tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
    sudo chown www-data:www-data -R /var/www/rutorrent
    
    sed -i 's/\/\/ $scgi/$scgi/g' /var/www/rutorrent/conf/config.php
    sed -i 's/$scgi_port = 5000/\/\/ $scgi_port = 5000/g' /var/www/rutorrent/conf/config.php
    sed -i 's/$scgi_host = "127/\/\/ $scgi_host = "127/g' /var/www/rutorrent/conf/config.php
    # change below lines
    "curl" ==> '/usr/bin/curl', // Something like /usr/bin/curl. If empty, will be found in PATH.
    "stat" ==> '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
    
  • ruTorrent 访问密码保护
    sudo apt-get install apache2-utils
    sudo htpasswd -b -c /var/www/rutorrent/.htpasswd USERNAME PASSWD
    sudo chown www-data:www-data /var/www/rutorrent/.htpasswd
    

    修改 nginx 配置文件 /etc/nginx/sites-available/default, 在server字段加入下面内容。

    location /rtorrent {
        auth_basic "ruTorrent login";
        auth_basic_user_file /var/www/rtorrent/.htpasswds;
    }
    

    最后nginx的default文件: default

    sudo service nginx start
    sudo service php5-fpm start
    # 访问
    http://localhost/rutorrent/
    

一键安装rtorrent+rutorrent+Web

wget –no-check-certificate -O autodl-setup http://sourceforge.net/projects/autodl-irssi/files/autodl-setup/download
sudo sh autodl-setup

在安装的过程中一般直接按回车采用默认方式就可以了。 安装到一定程度会提示 你输入rut的用户名 和密码,请填写一个本机存在的用户名称,这里可以添加多用户,如果不需要,在添加一个完毕之后添加下一个的时候按回车跳过,否则会无限循环(或者使用useradd命令添加一个新用户,如果添加新用户,请在安装之前)

最后还会提示输入webmin的用户名和密码,注意不要和rut的混淆。 然后,然后么在浏览器中输入 ip/rutorrent 就可以开始使用了,就是这么简单。

NFS服务器

服务器端:

sudo apt-get install nfs-kernel-server

/etc/exports

客户端:

sudo apt-get install nfs-common

修改 /etc/fstab 自动挂载分区:

example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr

DLNA服务器

use minidlna

sudo apt-get install minidlna
sudo service minidlna restart

/etc/minidlna.conf

friendly_name=MediaCentre       代表在別的設備上要看到的名稱
inotify=yes     把前面 #號去掉,代表 inode一旦有改變,就會更改到資料庫上。

BitTorrent Sync (闭源软件)

下载Linux版,解压缩即可执行,修改/etc/rc.local实现开机执行: https://www.resilio.com/individuals/

or: Installing Sync Package On Linux: https://help.getsync.com/hc/en-us/articles/206178924

Guide To Linux, And Sync Peculiarities: https://help.getsync.com/hc/en-us/articles/204762449-Guide-to-Linux

Xware Desktop迅雷下载

bcloud 百度云

bcloud百度云原始Git 没有进一步更新,使用 Yufeikang的bcloud Git

sudo apt-get install python3-pip
sudo pip3 install cssselect
git clone git@github.com:Yufeikang/bcloud.git
cd bcloud
python3 setup.py install

tagspace

不需要在服务器安装,只需要在手机、台式机、笔记本等终端安装,同时使用 btsync配合可以实现取代evernote等云笔记的功能

外网访问

use ngrok.

Modify your DNS

Use the DNS management tools to create an A record which points *.ngrok.dreamrunner.org to the IP address of the server that runs ngrokd.

server编译

sudo apt-get install mercurial git gcc golang make
git clone https://github.com/inconshreveable/ngrok.git

证书生成:

cd ~/ngrok

NGROK_DOMAIN="ngrok.dreamrunner.com"

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

执行完以上命令,在ngrok目录下就会新生成6个文件:

device.crt  device.csr  device.key
rootCA.key  rootCA.pem  rootCA.srl
cp  rootCA.pem assets/client/tls/ngrokroot.crt
cp  device.crt assets/server/tls/snakeoil.crt
cp  device.key assets/server/tls/snakeoil.key
make release-server

编译客户端的 ngrok

GOOS=linux GOARCH=amd64 make release-client
GOOS=windows GOARCH=amd64 make release-client
GOOS=linux GOARCH=arm make release-client
  • Linux 平台 32 位系统:GOOS=linux GOARCH=386
  • Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
  • Windows 平台 32 位系统:GOOS=windows GOARCH=386
  • Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
  • MAC 平台 32 位系统:GOOS=darwin GOARCH=386
  • MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
  • ARM 平台:GOOS=linux GOARCH=arm
tar -zcvf Bin.tar.gz ./bin/

通过scp之类的工具下载。

  • 服务端: ngrokd
  • 客户端: ngrok

运行ngrokd服务

NGROK_DOMAIN="ngrok.dreamrunner.org"
#http
bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":6060" -httpsAddr=":6061" -tunnelAddr=":6062" 
#https设置了tls
#bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":6060" -httpsAddr=":6061" -tunnelAddr=":6062" -tlsKey=./device.key -tlsCrt=./device.crt
  • httpAddr 是访问普通的http使用的端口号,用后面用 子域名.ngrok.dreamrunner.org:6060 来访问服务
  • httpsAddr 是访问的https使用的端口号,同上,只不过是需要https的服务访问才用这个端口
  • tunnelAddr 是通道的端口号,这个端口是Ngrok用来通信的,所以这个端口在服务器上和客户端上设置必须要对应才可以正常的链接,默认不填写是4433

验证一下端口是否打开:

nc -v -w 10 -z 127.0.0.1 6060-6062

如果需要打开防火墙:

iptables -A INPUT -p tcp --dport 6060-6062 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6060-6062 -j ACCEPT

Ubuntu运行ngrok客户端

ngrok.cfg

server_addr: "ngrok.dreamrunner.org:6062"
trust_host_root_certs: false
ngrok -log=ngrok_log.txt -subdomain=test -config="ngrok.cfg" 80

TODO

DNS服务器: dnsmasq+dnscrypt[TODO]

CardDAV、CalDAV服务器(手机通讯录同步) [TODO]4

  • 安装 sqlite: sudo apt-get install sqlit3 php5-sqlite
  • 从baikal 的官方网站下载 baikal-regular
  • 安装baikal: 根据压缩包中的INSTALL.md文档进行安装
  • 记住sqlite3的数据库文件必须放在web服务器无法访问的地方。
  • 手机客户端使用DAVDorid

HTTPS apache ssl模块安装,baikal使用HTTPS连接

  • 修改 /etc/ssl/openssl.cnf 配置,确认如下设置 basicConstraints=CA:TRUE ,便于做CA自签名证书
  • 生成证书
    openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/apache.pem -out /etc/ssl/private/apache.pem -nodes -days 999
    
  • 修改apache的关于baikal的vhost配置,加入
    SSLEngine on
    SSLCertificateFile    /etc/ssl/private/apache.pem
    
  • 重启apache服务器浏览器中测试https连接。
  • 在浏览器中出现证书为自签名不可信时,将证书输出导入到信任的根证书中。
  • 导出证书给手机客户端使用
    openssl x509 -in apache.pem -outform DER -out tigerhill.crt
    
  • 手机客户端,在 设置>安全>导入证书中将导出的证书导入系统,如成功导入,但不显示,则需确认第一步是否将openssl的配置basicConstraints设置为 CA:TRUE
  • 手机客户端中配置为https开始同步

cc


Footnotes:

Author: Shi Shougang

Created: 2017-10-07 Sat 15:32

Emacs 24.3.1 (Org mode 8.2.10)

Validate