Configure Ubuntu to the NAS
Table of Contents
系统配置
- IP修改成固定IP,域名解析修改为本地路由器。 /etc/network , /etc/resolvconf
- apt源修改为本地镜像,修正extras源的no-pubkey的错误。 /etc/apt
- 双网卡: 修改网络配置为双网卡绑定,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的关机支持
数据盘
- 挂载数据盘LVM文件系统。 VMware RDM, lvm, rescan scsi, /etc/fstab
- vmtools安装。 apt-get install open-vm-tools
- 数据冗余/容错:
- 安装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
- method1
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开始同步