mirror of
https://github.com/elisspace/rtinst.git
synced 2026-10-06 17:16:22 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
64e998b2de | ||
|
|
bfee5f27fe | ||
|
|
2f7ad34e5b | ||
|
|
0652fe19eb | ||
|
|
90072e5226 | ||
|
|
ab34ec9fd4 | ||
|
|
4ca8cbc9a4 | ||
|
|
2dd915d800 | ||
|
|
2ecf699e9d | ||
|
|
3b2b6789a2 | ||
|
|
bb7e6bf87b | ||
|
|
2d2d1dff59 | ||
|
|
1f2a1b1f29 | ||
|
|
334659eb40 | ||
|
|
6a8bbafe95 | ||
|
|
78d70f57cd | ||
|
|
060a4b7660 | ||
|
|
4ead4b71e1 | ||
|
|
0c6d410dbe | ||
|
|
9ca5721d08 | ||
|
|
f3ee539bd4 | ||
|
|
9f13ecbfa6 | ||
|
|
7d200e9f58 | ||
|
|
986b24086d | ||
|
|
884d3e73bd | ||
|
|
9c14c2a82d | ||
|
|
25fa01635a | ||
|
|
4588907f07 | ||
|
|
318573ed63 | ||
|
|
5035ab0a95 | ||
|
|
1b9794ee7d | ||
|
|
eaffb50529 | ||
|
|
00aed27199 | ||
|
|
fe023bed1a | ||
|
|
37354f386a | ||
|
|
54f12f7877 | ||
|
|
c366ab575c | ||
|
|
d732810e83 | ||
|
|
79dd712da1 | ||
|
|
6ba83f6097 | ||
|
|
d3cb5e57e9 | ||
|
|
7bb8b0dd88 | ||
|
|
29a3ad947b | ||
|
|
98cac8525e | ||
|
|
c7d5d4a7ef | ||
|
|
ac23d1d943 |
@@ -1,5 +1,7 @@
|
||||
## rtinst
|
||||
|
||||
### Note: Now installs Lets Encrypt SSL certificates
|
||||
|
||||
#### 30 Second Guide
|
||||
|
||||
Ubuntu and Debian Seedbox Installation
|
||||
@@ -23,16 +25,18 @@ It takes about 10 minutes to run, depending on your server setup. After you have
|
||||
|
||||
It has been tested with clean installs of:
|
||||
|
||||
Ubuntu 12 (unsupported)
|
||||
Ubuntu 13 (unsupported)
|
||||
Ubuntu 14
|
||||
Ubuntu 15
|
||||
Ubuntu 12 (old release)
|
||||
Ubuntu 13 (old release)
|
||||
Ubuntu 14 (old release)
|
||||
Ubuntu 15 (old release)
|
||||
Ubuntu 16
|
||||
Ubuntu 17
|
||||
Ubuntu 18
|
||||
Debian 7 "Wheezy" (unsupported)
|
||||
Debian 8 "Jessie"
|
||||
Ubuntu 19
|
||||
Debian 7 "Wheezy" (old release)
|
||||
Debian 8 "Jessie" (old release)
|
||||
Debian 9 "Stretch"
|
||||
Debian 10 "Buster"
|
||||
|
||||
Services that will be installed and configured are
|
||||
|
||||
|
||||
+6
-2
@@ -1,5 +1,6 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
#server_name <Domain Name>;
|
||||
root /var/www;
|
||||
|
||||
@@ -35,8 +36,11 @@ server {
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
#server_name <Domain Name>;
|
||||
listen 443 ssl http2 default_server;
|
||||
listen [::]:443 ssl http2 default_server;
|
||||
|
||||
#server_name <Domain Name>;
|
||||
|
||||
root /var/www;
|
||||
index index.html index.php index.htm;
|
||||
|
||||
|
||||
+3
-1
@@ -8,13 +8,15 @@ method.insert = cfg.basedir, private|const|string, (cat,"<user home>/rtorren
|
||||
method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
|
||||
|
||||
#method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
|
||||
#method.insert = cfg.logfile, private|const|string, (cat,(c fg.logs),"rtorrent-",(system.time),".log")
|
||||
#method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
|
||||
|
||||
session.path.set = (cat,(cfg.basedir),".session")
|
||||
directory.default.set = (cat,(cfg.basedir),"download")
|
||||
|
||||
schedule = watch_directory,5,5,((load.start,(cat,(cfg.watch),"*.torrent")))
|
||||
|
||||
#system.umask.set = 0000
|
||||
|
||||
### BitTorrent
|
||||
# Global upload and download rate in KiB, `0` for unlimited
|
||||
throttle.global_down.max_rate.set = 0
|
||||
|
||||
@@ -43,6 +43,7 @@ $pathToExternals = array(
|
||||
"gzip" => '/bin/gzip', // Something like /usr/bin/gzip. If empty, will be found in PATH.
|
||||
"id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be found in PATH.
|
||||
"stat" => '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
|
||||
"pgrep" => '/usr/bin/pgrep', // Something like /usr/bin/pgrep. If empty, will be found in PATH.
|
||||
);
|
||||
|
||||
$localhosts = array( // list of local interfaces
|
||||
|
||||
@@ -100,6 +100,8 @@ enabled = yes
|
||||
enabled = yes
|
||||
|
||||
;; Disabled
|
||||
[_cloudflare]
|
||||
enabled = no
|
||||
[check_port]
|
||||
enabled = no
|
||||
[chunks]
|
||||
@@ -120,5 +122,7 @@ enabled = no
|
||||
enabled = no
|
||||
[scheduler]
|
||||
enabled = no
|
||||
[spectrogram]
|
||||
enabled = no
|
||||
[xmpp]
|
||||
enabled = no
|
||||
|
||||
@@ -31,6 +31,20 @@ if [ "$(id -u)" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# kill apt-daily.service if running
|
||||
if [[ $(systemctl list-units --all apt-daily.service | fgrep -c apt-daily.service) -gt 0 ]]; then
|
||||
systemctl stop apt-daily.service > /dev/null 2>&1
|
||||
systemctl kill --kill-who=all apt-daily.service > /dev/null 2>&1
|
||||
|
||||
# wait until `apt-get updated` has been killed
|
||||
while ! (systemctl list-units --all apt-daily.service | fgrep -q dead)
|
||||
do
|
||||
sleep 1;
|
||||
done
|
||||
fi
|
||||
|
||||
apt-get -qq update
|
||||
|
||||
if [ $(dpkg-query -W -f='${Status}' git 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
||||
echo "Installing git"
|
||||
apt-get -yqq install git 2>&1 >> /dev/null
|
||||
|
||||
+56
-29
@@ -22,8 +22,9 @@ sshport=$(grep 'Port ' /etc/ssh/sshd_config | sed 's/[^0-9]*//g')
|
||||
ftpport=$(grep 'listen_port=' /etc/vsftpd.conf | sed 's/[^0-9]*//g')
|
||||
cronline1="@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent"
|
||||
cronline2="*/10 * * * * /usr/local/bin/rtcheck irssi rtorrent"
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
check_ssh=1
|
||||
rtdstatus=$(rtdload)
|
||||
|
||||
#get user list
|
||||
cd /var/www/rutorrent/conf/users
|
||||
@@ -33,6 +34,28 @@ user_list=*
|
||||
### FUNCTIONS ###
|
||||
###############################
|
||||
|
||||
#function to determin if unix user name is valid
|
||||
valid_name(){
|
||||
until [[ $user =~ ^[a-z][-a-z0-9_]{2,31}$ ]]
|
||||
do
|
||||
echo "Enter user name (lowercase, numbers, dash and underscore):"
|
||||
read user
|
||||
done
|
||||
}
|
||||
|
||||
# function to ask user for y/n response
|
||||
ask_user(){
|
||||
local answer
|
||||
while true
|
||||
do
|
||||
read answer
|
||||
case $answer in [Yy]* ) return 0 ;;
|
||||
[Nn]* ) return 1 ;;
|
||||
* ) echo "Enter y or n";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
genpasswd() {
|
||||
local genln=$1
|
||||
[ -z "$genln" ] && genln=8
|
||||
@@ -183,34 +206,39 @@ fi
|
||||
###############################
|
||||
|
||||
if [ -z "$user" ]; then
|
||||
echo "Enter the name of the user to add"
|
||||
echo "Enter the name of the user"
|
||||
echo "It can be an existing user or a new user"
|
||||
echo
|
||||
|
||||
confirm_name=1
|
||||
while [ $confirm_name = 1 ]
|
||||
do
|
||||
read -p "Enter user name: " answer
|
||||
addname=$answer
|
||||
check_name=1
|
||||
if [ "$addname" = "root" ]; then
|
||||
echo "Cannot create root"
|
||||
exit
|
||||
valid_name
|
||||
echo -n "Confirm that user name is $user y/n? "
|
||||
if ask_user; then
|
||||
confirm_name=0
|
||||
else
|
||||
user=''
|
||||
fi
|
||||
|
||||
while [ $check_name = 1 ]
|
||||
do
|
||||
read -p "Is $addname correct? " answer
|
||||
case $answer in [Yy]* ) confirm_name=0 && check_name=0 ;;
|
||||
[Nn]* ) confirm_name=1 && check_name=0 ;;
|
||||
* ) echo "Enter y or n";;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
user=$addname
|
||||
else
|
||||
if ! [[ $user =~ ^[a-z][-a-z0-9_]{2,31}$ ]]; then
|
||||
echo "$user is not a valid user name please enter again"
|
||||
confirm_name=1
|
||||
while [ $confirm_name = 1 ]
|
||||
do
|
||||
valid_name
|
||||
echo -n "Confirm that user name is $user y/n? "
|
||||
if ask_user; then
|
||||
confirm_name=0
|
||||
else
|
||||
user=''
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "User name is $user"
|
||||
|
||||
if id -u $user >/dev/null 2>&1; then
|
||||
echo "$user already exists"
|
||||
else
|
||||
@@ -220,6 +248,13 @@ else
|
||||
adduser --gecos "" $user --disabled-password
|
||||
echo "$user:$unixpass" | sudo chpasswd
|
||||
fi
|
||||
|
||||
if id -u $user >/dev/null 2>&1; then
|
||||
echo "$user successfully created"
|
||||
else
|
||||
echo "create user failed - exiting process"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
home=$(eval echo "~$user")
|
||||
@@ -363,14 +398,6 @@ fi
|
||||
su $user -c '/usr/local/bin/rt restart'
|
||||
su $user -c '/usr/local/bin/rt -i restart'
|
||||
|
||||
dload_line=$(grep "include /etc/nginx/conf.d/rtdload;" /etc/nginx/sites-available/default)
|
||||
dload_hash=$(echo $dload_line | sed 's/[^#]*//g')
|
||||
if [ ! -z "$dload_line" -a -z "$dload_hash" ]; then
|
||||
dload_flag=0
|
||||
else
|
||||
dload_flag=1
|
||||
fi
|
||||
|
||||
echo "$user setup complete"
|
||||
echo "SCGI Port: $newscgi"
|
||||
echo "RPC Mount: $newrpc"
|
||||
@@ -391,7 +418,7 @@ echo
|
||||
fi
|
||||
echo "ftp client should be set to explicit ftp over tls using port $ftpport" | tee -a $home/rtinst.info
|
||||
echo
|
||||
if [ $dload_flag = 0 ]; then
|
||||
if [ "$rtdstatus" = "enabled" ]; then
|
||||
echo "https downloads can be accessed at https://$serverip/download/$user" | tee -a $home/rtinst.info
|
||||
echo
|
||||
fi
|
||||
|
||||
+6
-4
@@ -23,9 +23,10 @@ while true
|
||||
[5] ) rtupdate && return 0 ;;
|
||||
[6] ) rutupgrade && return 0 ;;
|
||||
[7] ) rtwebmin && return 0 ;;
|
||||
[8] ) rtsslcert && return 0 ;;
|
||||
[8] ) rtletsencrypt && return 0 ;;
|
||||
[9] ) rtsslcert && return 0 ;;
|
||||
[Qq] ) exit ;;
|
||||
* ) echo "Enter 1-8 (q to quit)";;
|
||||
* ) echo "Enter 1-9 (q to quit)";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
@@ -49,11 +50,12 @@ echo "Select from the following options:"
|
||||
echo "1.) rtsetup - update the rtinst scripts"
|
||||
echo "2.) rtadduser - add new user"
|
||||
echo "3.) rtremove - delete a user"
|
||||
echo "4.) rtdload $rtdaction - $rtdaction http downloads"
|
||||
echo "4.) rtdload $rtdaction - $rtdaction https downloads"
|
||||
echo "5.) rtupdate - up/down-grade rtorent/libtorrent"
|
||||
echo "6.) rutupgrade - upgrade to latest version of RuTorrent"
|
||||
echo "7.) rtwebmin - install webmin"
|
||||
echo "8.) rtsslcert - generate new self signed ssl certificate"
|
||||
echo "8.) rtletsencrypt - install Lets Encypt ssl certificate"
|
||||
echo "9.) rtsslcert - generate new self signed ssl certificate"
|
||||
echo "Enter option or q to quit"
|
||||
|
||||
select_task
|
||||
|
||||
+150
-45
@@ -20,7 +20,7 @@ rtorrentrel='0.9.6'
|
||||
#url's of the major components
|
||||
rt_url="http://rtorrent.net/downloads/"
|
||||
|
||||
xmlrpc_url="https://svn.code.sf.net/p/xmlrpc-c/code/stable/"
|
||||
xmlrpc_url="https://svn.code.sf.net/p/xmlrpc-c/code/advanced/"
|
||||
xmlrpc_url_alt="https://github.com/mirror/xmlrpc-c"
|
||||
|
||||
ru_url="https://github.com/Novik/ruTorrent/"
|
||||
@@ -35,31 +35,64 @@ fullrel=$(lsb_release -sd)
|
||||
osname=$(lsb_release -si)
|
||||
relno=$(lsb_release -sr | cut -d. -f1)
|
||||
|
||||
phpver=php5
|
||||
phploc=/etc/php5
|
||||
geoipver=php5-geoip
|
||||
libcver=libcurl3
|
||||
# Fallback if lsb_release -si returns nothing
|
||||
if [ "$osname" = "" ]; then
|
||||
osname=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
|
||||
osname=${osname^}
|
||||
fi
|
||||
|
||||
# Fallback if lsb_release -sr returns nothing
|
||||
if [ "$relno" = "" ]; then
|
||||
relno=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
|
||||
fi
|
||||
|
||||
if [ "$relno" = "16" ] || [ "$relno" = "17" ] || [ "$relno" = "9" ]; then
|
||||
phpver=php7.0
|
||||
phploc=/etc/php/7.0
|
||||
geoipver=php-geoip
|
||||
libcver=libcurl3
|
||||
fi
|
||||
|
||||
if [ $(lsb_release -sr) = "17.10" ]; then
|
||||
if [ "$(lsb_release -sr)" = "17.10" ]; then
|
||||
phpver=php7.1
|
||||
phploc=/etc/php/7.1
|
||||
geoipver=php-geoip
|
||||
libcver=libcurl3
|
||||
fi
|
||||
|
||||
if [ "$relno" = "18" ]; then
|
||||
if [ "$relno" = "18" ] || [ "$relno" = "19" ]; then
|
||||
phpver=php7.2
|
||||
phploc=/etc/php/7.2
|
||||
geoipver=php-geoip
|
||||
libcver=libcurl4
|
||||
fi
|
||||
|
||||
export serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
if [ "$relno" = "10" ]; then
|
||||
phpver=php7.3
|
||||
phploc=/etc/php/7.3
|
||||
libcver=libcurl4
|
||||
fi
|
||||
|
||||
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
serveripb=$(wget -qO- ipecho.net/plain)
|
||||
|
||||
if [ "$serveripa" = "$serveripb" ]; then
|
||||
serverip=$serveripa
|
||||
else
|
||||
echo "Select the IP address to use:"
|
||||
echo "1.) "$serveripa
|
||||
echo "2.) "$serveripb
|
||||
|
||||
while true
|
||||
do
|
||||
read answer
|
||||
case $answer in [1] ) serverip=$serveripa && break ;;
|
||||
[2] ) serverip=$serveripb && break ;;
|
||||
* ) echo "Enter 1 or 2";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
echo "IP set to "$serverip
|
||||
|
||||
|
||||
export logfile="/dev/null"
|
||||
webpass=''
|
||||
cronline1="@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent"
|
||||
@@ -72,7 +105,7 @@ sshport=''
|
||||
rudevflag=1
|
||||
rurelease=master
|
||||
passfile='/etc/nginx/.htpasswd'
|
||||
package_list="sudo nano autoconf build-essential ca-certificates comerr-dev curl cfv dtach htop irssi libcloog-ppl-dev libcppunit-dev $libcver libncurses5-dev libterm-readline-gnu-perl libsigc++-2.0-dev libperl-dev libtool libxml2-dev ncurses-base ncurses-term ntp patch pkg-config $phpver-fpm $phpver $phpver-cli $phpver-dev $phpver-curl $geoipver $phpver-xmlrpc python-scgi screen subversion texinfo unzip zlib1g-dev libcurl4-openssl-dev mediainfo software-properties-common aptitude $phpver-json nginx-full apache2-utils git libarchive-zip-perl libnet-ssleay-perl libhtml-parser-perl libxml-libxml-perl libjson-perl libjson-xs-perl libxml-libxslt-perl libjson-rpc-perl libarchive-zip-perl"
|
||||
package_list="sudo nano autoconf build-essential ca-certificates comerr-dev curl dtach htop irssi libcppunit-dev $libcver libncurses5-dev libterm-readline-gnu-perl libsigc++-2.0-dev libperl-dev libtool libxml2-dev ncurses-base ncurses-term ntp patch pkg-config $phpver-fpm $phpver $phpver-cli $phpver-dev $phpver-curl php-geoip $phpver-xmlrpc $phpver-xml python-scgi screen subversion texinfo unzip zlib1g-dev libcurl4-openssl-dev mediainfo software-properties-common aptitude $phpver-json nginx-full apache2-utils git libarchive-zip-perl libnet-ssleay-perl libhtml-parser-perl libxml-libxml-perl libjson-perl libjson-xs-perl libxml-libxslt-perl libjson-rpc-perl libarchive-zip-perl"
|
||||
Install_list=""
|
||||
unixpass=""
|
||||
passflag=0
|
||||
@@ -111,6 +144,18 @@ else
|
||||
fi
|
||||
}
|
||||
|
||||
#function to determin if unix user name is valid
|
||||
valid_name(){
|
||||
until [[ $user =~ ^[a-z][-a-z0-9_]{2,31}$ ]]
|
||||
do
|
||||
echo "Enter user name (lowercase, numbers, dash and underscore):"
|
||||
read user
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#function to generate random password
|
||||
genpasswd() {
|
||||
local genln=$1
|
||||
@@ -234,11 +279,11 @@ if [ "$(id -u)" != "0" ]; then
|
||||
fi
|
||||
|
||||
# determine system
|
||||
if ([ "$osname" = "Ubuntu" ] && [ $relno -ge 14 ]) || ([ "$osname" = "Debian" ] && [ $relno -ge 8 ]) || ([ "$osname" = "Raspbian" ] && [ $relno -ge 8 ]); then
|
||||
if ([ "$osname" = "Ubuntu" ] && [ $relno -ge 16 ]) || ([ "$osname" = "Debian" ] && [ $relno -ge 9 ]) || ([ "$osname" = "Raspbian" ] && [ $relno -ge 9 ]); then
|
||||
echo $fullrel
|
||||
else
|
||||
echo $fullrel
|
||||
echo "Only Ubuntu release 14 and later, and Debian and Raspbian release 8 and later, are supported"
|
||||
echo "Only Ubuntu release 16 and later, and Debian and Raspbian release 9 and later, are supported"
|
||||
echo "Your system does not appear to be supported"
|
||||
echo "Check https://github.com/arakasi72/rtinst/wiki/Installing-on-Older-OS to see if it is supported by an earlier rtinst release"
|
||||
exit
|
||||
@@ -316,9 +361,10 @@ echo
|
||||
[ $forceyes = 1 ] && enter_ip
|
||||
|
||||
echo "Your server's IP is set to $serverip"
|
||||
export serverip
|
||||
|
||||
# Determine domain name using server ip address
|
||||
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
|
||||
export serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
|
||||
if [ -z "$serverdn" ]; then
|
||||
echo "Unable to determine domain"
|
||||
else
|
||||
@@ -356,25 +402,39 @@ if [ -z "$user" ]; then
|
||||
echo "This will be your primary user"
|
||||
echo "It can be an existing user or a new user"
|
||||
echo
|
||||
|
||||
confirm_name=1
|
||||
while [ $confirm_name = 1 ]
|
||||
do
|
||||
read -p "Enter user name: " answer
|
||||
addname=$answer
|
||||
echo -n "Confirm that user name is $answer y/n? "
|
||||
valid_name
|
||||
echo -n "Confirm that user name is $user y/n? "
|
||||
if ask_user; then
|
||||
confirm_name=0
|
||||
else
|
||||
user=''
|
||||
fi
|
||||
done
|
||||
|
||||
user=$addname
|
||||
|
||||
else
|
||||
user=$SUDO_USER
|
||||
fi
|
||||
else
|
||||
if ! [[ $user =~ ^[a-z][-a-z0-9_]{2,31}$ ]]; then
|
||||
echo "$user is not a valid user name please enter again"
|
||||
confirm_name=1
|
||||
while [ $confirm_name = 1 ]
|
||||
do
|
||||
valid_name
|
||||
echo -n "Confirm that user name is $user y/n? "
|
||||
if ask_user; then
|
||||
confirm_name=0
|
||||
else
|
||||
user=''
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "User name is $user"
|
||||
|
||||
if id -u $user >/dev/null 2>&1; then
|
||||
echo "$user already exists"
|
||||
else
|
||||
@@ -382,8 +442,16 @@ else
|
||||
adduser --gecos "" $user
|
||||
else
|
||||
adduser --gecos "" $user --disabled-password
|
||||
echo "$user:$unixpass" | sudo chpasswd
|
||||
echo "$user:$unixpass" | chpasswd
|
||||
fi
|
||||
|
||||
if id -u $user >/dev/null 2>&1; then
|
||||
echo "$user successfully created"
|
||||
else
|
||||
echo "create user failed - exiting process"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
home=$(eval echo "~$user")
|
||||
@@ -449,6 +517,19 @@ echo "No more user input required, you can complete unattended"
|
||||
echo "It will take approx 10 minutes for the script to complete"
|
||||
echo
|
||||
|
||||
# kill apt-daily.service if running
|
||||
if [[ $(systemctl list-units --all apt-daily.service | fgrep -c apt-daily.service) -gt 0 ]]; then
|
||||
systemctl stop apt-daily.service >> $logfile 2>&1
|
||||
systemctl kill --kill-who=all apt-daily.service >> $logfile 2>&1
|
||||
|
||||
# wait until `apt-get updated` has been killed
|
||||
while ! (systemctl list-units --all apt-daily.service | fgrep -q dead)
|
||||
do
|
||||
sleep 1;
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
#update amd upgrade system
|
||||
echo "Updating package lists" | tee $logfile
|
||||
apt-get -qq update | tee -a $logfile
|
||||
@@ -475,6 +556,11 @@ for package_name in $package_list
|
||||
fi
|
||||
done
|
||||
|
||||
# Installs a package needed to prevent arm64 architectures from "WARNING: Unable to start rtorrent"
|
||||
if [ "$(uname --m)" == "aarch64" ] || [ "$(dpkg --print-architecture)" == "arm64" ] ; then
|
||||
sudo apt-get install libxmlrpc-core-c3-dev
|
||||
fi
|
||||
|
||||
test -z "$install_list" || apt-get -qq install $install_list >> $logfile 2>&1
|
||||
if ! [ $? = 0 ]; then
|
||||
echo "Problem installing packages. Check log and rerun once it is resolved" && exit
|
||||
@@ -493,13 +579,13 @@ if [ $osname = "Debian" ] && ! installed unrar; then
|
||||
do
|
||||
attempts=$(( $attempts + 1 ))
|
||||
if [ "$(uname -m)" = "x86_64" ]; then
|
||||
wget http://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz >> $logfile 2>&1
|
||||
tar xvzf rarlinux-x64-5.5.0.tar.gz >> $logfile 2>&1
|
||||
rm rarlinux-x64-5.5.0.tar.gz
|
||||
wget http://www.rarlab.com/rar/rarlinux-x64-5.7.1.tar.gz >> $logfile 2>&1
|
||||
tar xvzf rarlinux-x64-5.7.1.tar.gz >> $logfile 2>&1
|
||||
rm rarlinux-x64-5.7.1.tar.gz
|
||||
elif [ "$(uname -m)" = "x86_32" ]; then
|
||||
wget http://www.rarlab.com/rar/rarlinux-5.5.0.tar.gz >> $logfile 2>&1
|
||||
tar xvzf rarlinux-5.5.0.tar.gz >> $logfile 2>&1
|
||||
rm rarlinux-5.5.0.tar.gz
|
||||
wget http://www.rarlab.com/rar/rarlinux-5.7.1.tar.gz >> $logfile 2>&1
|
||||
tar xvzf rarlinux-5.7.1.tar.gz >> $logfile 2>&1
|
||||
rm rarlinux-5.7.1.tar.gz
|
||||
fi
|
||||
done
|
||||
if [ -d rar ]; then
|
||||
@@ -520,19 +606,7 @@ fi
|
||||
#install ffmpeg
|
||||
if ! [ $osname = "Raspbian" ] && [ $(dpkg-query -W -f='${Status}' "ffmpeg" 2>/dev/null | grep -c "ok installed") = 0 ]; then
|
||||
echo "Installing ffmpeg"
|
||||
if [ $relno = 14 ]; then
|
||||
apt-add-repository -y ppa:mc3man/trusty-media >> $logfile 2>&1
|
||||
apt-get -qq update >> $logfile 2>&1
|
||||
apt-get -qq install ffmpeg >> $logfile 2>&1
|
||||
elif [ $relno = 8 ]; then
|
||||
grep "deb http://www.deb-multimedia.org jessie main" /etc/apt/sources.list >> /dev/null || echo "deb http://www.deb-multimedia.org jessie main" >> /etc/apt/sources.list
|
||||
apt-get -qq update >> $logfile 2>&1
|
||||
apt-get -qq --force-yes install deb-multimedia-keyring >> $logfile 2>&1
|
||||
apt-get -qq update >> $logfile 2>&1
|
||||
apt-get -qq --force-yes install ffmpeg >> $logfile 2>&1
|
||||
else
|
||||
apt-get -qq install ffmpeg >> $logfile 2>&1
|
||||
fi
|
||||
apt-get -qq install ffmpeg >> $logfile 2>&1
|
||||
fi
|
||||
|
||||
echo "Completed installation of required packages "
|
||||
@@ -602,7 +676,14 @@ echo "SSH port set to $sshport"
|
||||
###############################
|
||||
|
||||
# calls the script rtsslcert to generate the ssl certificated for vsftpd and nginx
|
||||
rtsslcert -d
|
||||
if rtletsencrypt ; then
|
||||
leflag=0
|
||||
echo "Lets Encrypt Certificates installed"
|
||||
else
|
||||
rtsslcert -d
|
||||
leflag=1
|
||||
echo "Self signed certificats installed"
|
||||
fi
|
||||
|
||||
###############################
|
||||
### INSTALL FTP ###
|
||||
@@ -645,6 +726,11 @@ grep -Pq "^\s*ssl_tlsv1" /etc/vsftpd.conf && sed -i '/^\s*ssl_tlsv1/ c\ssl_tlsv
|
||||
grep -Pq "^\s*require_ssl_reuse" /etc/vsftpd.conf && sed -i '/^\s*require_ssl_reuse/ c\require_ssl_reuse=NO' /etc/vsftpd.conf || echo "require_ssl_reuse=NO" >> /etc/vsftpd.conf
|
||||
grep -Pq "^\s*ssl_ciphers" /etc/vsftpd.conf && sed -i '/^\s*ssl_ciphers/ c\ssl_ciphers=HIGH' /etc/vsftpd.conf || echo "ssl_ciphers=HIGH" >> /etc/vsftpd.conf
|
||||
|
||||
if [ $leflag = 0 ]; then
|
||||
sed -i "/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=/etc/letsencrypt/live/$serverdn/fullchain.pem" /etc/vsftpd.conf
|
||||
sed -i "/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=/etc/letsencrypt/live/$serverdn/privkey.pem" /etc/vsftpd.conf
|
||||
fi
|
||||
|
||||
service vsftpd restart 1>> $logfile
|
||||
|
||||
ftpport=$(grep 'listen_port=' /etc/vsftpd.conf | sed 's/[^0-9]*//g')
|
||||
@@ -717,6 +803,14 @@ echo "location ~* \.(jpg|jpeg|gif|css|png|js|woff|ttf|svg|eot)$ {" > /etc/nginx/
|
||||
echo " expires 30d;" >> /etc/nginx/conf.d/cache
|
||||
echo "}" >> /etc/nginx/conf.d/cache
|
||||
|
||||
if [ $leflag = 0 ]; then
|
||||
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverdn;" /etc/nginx/sites-available/default
|
||||
sed -i "/ssl_certificate / c\ ssl_certificate /etc/letsencrypt/live/$serverdn/fullchain.pem;" /etc/nginx/sites-available/default
|
||||
sed -i "/ssl_certificate_key / c\ ssl_certificate_key /etc/letsencrypt/live/$serverdn/privkey.pem;" /etc/nginx/sites-available/default
|
||||
else
|
||||
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverip;" /etc/nginx/sites-available/default
|
||||
fi
|
||||
|
||||
service nginx restart && service $phpver-fpm restart
|
||||
|
||||
if [ $dlflag = 0 ]; then
|
||||
@@ -934,7 +1028,13 @@ if [ -z $ru_current ]; then
|
||||
echo " RuTorrent was not installed" | tee -a $home/rtinst.info
|
||||
else
|
||||
echo " RuTorrent $ru_current installed" | tee -a $home/rtinst.info
|
||||
echo " rutorrent can be accessed at https://$serverip/rutorrent" | tee -a $home/rtinst.info
|
||||
|
||||
if [ $leflag = 0 ]; then
|
||||
echo " rutorrent can be accessed at https://$serverdn/rutorrent" | tee -a $home/rtinst.info
|
||||
else
|
||||
echo " rutorrent can be accessed at https://$serverip/rutorrent" | tee -a $home/rtinst.info
|
||||
fi
|
||||
|
||||
if [ $passflag = 1 ]; then
|
||||
echo " rutorrent password set to $webpass" | tee -a $home/rtinst.info
|
||||
elif [ $passflag = 2 ]; then
|
||||
@@ -944,7 +1044,12 @@ else
|
||||
fi
|
||||
echo " to change rutorrent password enter: rtpass" | tee -a $home/rtinst.info
|
||||
echo | tee -a $home/rtinst.info
|
||||
echo " If enabled, access https downloads at https://$serverip/download/$user" | tee -a $home/rtinst.info
|
||||
|
||||
if [ $leflag = 0 ]; then
|
||||
echo " If enabled, access https downloads at https://$serverdn/download/$user" | tee -a $home/rtinst.info
|
||||
else
|
||||
echo " If enabled, access https downloads at https://$serverip/download/$user" | tee -a $home/rtinst.info
|
||||
fi
|
||||
fi
|
||||
|
||||
echo | tee -a $home/rtinst.info
|
||||
|
||||
Executable
+110
@@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
|
||||
#########################################################################################
|
||||
#
|
||||
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
|
||||
#
|
||||
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
#########################################################################################
|
||||
|
||||
|
||||
headless=0
|
||||
osname=$(lsb_release -si)
|
||||
[ -z $logfile ] && logfile="/dev/null"
|
||||
if [ -z $serverip ]; then
|
||||
headless=1
|
||||
fi
|
||||
|
||||
#check it is being run as root
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "Must be run from root or using sudo" && exit 1
|
||||
fi
|
||||
|
||||
if [ $headless = 1 ]; then
|
||||
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
serveripb=$(wget -qO- ipecho.net/plain)
|
||||
if [ "$serveripa" = "$serveripb" ]; then
|
||||
serverip=$serveripa
|
||||
else
|
||||
echo "Select the IP address to use:"
|
||||
echo "1.) "$serveripa
|
||||
echo "2.) "$serveripb
|
||||
|
||||
while true
|
||||
do
|
||||
read answer
|
||||
case $answer in [1] ) serverip=$serveripa && break ;;
|
||||
[2] ) serverip=$serveripb && break ;;
|
||||
* ) echo "Enter 1 or 2";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
|
||||
fi
|
||||
|
||||
echo "IP: $serverip"
|
||||
echo "DN: $serverdn"
|
||||
|
||||
if [ -z $serverdn ]; then
|
||||
echo "Unable to determine domain name cannot setup Lets Encypt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Installing Certbot
|
||||
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
|
||||
echo "Installing certbot"
|
||||
|
||||
if [ "$osname" = "Ubuntu" ]; then
|
||||
apt-get -q update >> $logfile 2>&1
|
||||
add-apt-repository -y universe >> $logfile 2>&1
|
||||
add-apt-repository -y ppa:certbot/certbot >> $logfile 2>&1
|
||||
apt-get -q update >> $logfile 2>&1
|
||||
apt-get install -y certbot python-certbot-nginx >> $logfile 2>&1
|
||||
else
|
||||
deb_name=$(lsb_release --codename --short)
|
||||
grep "^deb http\:\/\/deb\.debian\.org\/debian $deb_name-backports main" /etc/apt/sources.list > /dev/null || echo "deb http://deb.debian.org/debian $deb_name-backports main" >> /etc/apt/sources.list
|
||||
apt-get -q update >> $logfile 2>&1
|
||||
apt-get install -y certbot python-certbot-nginx -t $deb_name-backports >> $logfile 2>&1
|
||||
fi
|
||||
else
|
||||
echo "certbot already installed"
|
||||
fi
|
||||
|
||||
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
|
||||
echo "Install Failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#Generating Certificates
|
||||
certbot -q --nginx --register-unsafely-without-email --agree-tos certonly -d $serverdn >> $logfile 2>&1
|
||||
|
||||
if [ $? = 1 ]; then
|
||||
echo "unable to generate certificates"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Certificates Generated"
|
||||
|
||||
if [ $headless = 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -d "/etc/letsencrypt/live/$serverdn" ]; then
|
||||
echo "Replacing certificates in nginx and vsftpd"
|
||||
|
||||
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverdn;" /etc/nginx/sites-available/default
|
||||
sed -i "/ssl_certificate / c\ ssl_certificate /etc/letsencrypt/live/$serverdn/fullchain.pem;" /etc/nginx/sites-available/default
|
||||
sed -i "/ssl_certificate_key / c\ ssl_certificate_key /etc/letsencrypt/live/$serverdn/privkey.pem;" /etc/nginx/sites-available/default
|
||||
|
||||
service nginx restart
|
||||
|
||||
sed -i "/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=/etc/letsencrypt/live/$serverdn/fullchain.pem" /etc/vsftpd.conf
|
||||
sed -i "/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=/etc/letsencrypt/live/$serverdn/privkey.pem" /etc/vsftpd.conf
|
||||
|
||||
service vsftpd restart
|
||||
fi
|
||||
|
||||
|
||||
|
||||
+22
-6
@@ -8,7 +8,6 @@
|
||||
#
|
||||
#########################################################################################
|
||||
|
||||
|
||||
forceyes=1
|
||||
headless=1
|
||||
selfsign=1
|
||||
@@ -60,6 +59,7 @@ fi
|
||||
if [ -f /etc/nginx/sites-available/default ]; then
|
||||
sed -i '/ssl_certificate / c\ ssl_certificate \/etc\/ssl\/ruweb\.crt;' /etc/nginx/sites-available/default
|
||||
sed -i '/ssl_certificate_key/ c\ ssl_certificate_key \/etc\/ssl\/private\/ruweb\.key;' /etc/nginx/sites-available/default
|
||||
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverip;" /etc/nginx/sites-available/default
|
||||
service nginx restart >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
@@ -95,11 +95,27 @@ if [ $# -gt 0 ]; then
|
||||
fi
|
||||
|
||||
if [ -z $serverip ]; then
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
|
||||
elif ! valid_ip $serverip; then
|
||||
echo "$serverip is not a valid IP address"
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
|
||||
echo "will use $serverip instead"
|
||||
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
serveripb=$(wget -qO- ipecho.net/plain)
|
||||
if [ "$serveripa" = "$serveripb" ]; then
|
||||
serverip=$serveripa
|
||||
else
|
||||
echo "Select the IP address to use:"
|
||||
echo "1.) "$serveripa
|
||||
echo "2.) "$serveripb
|
||||
|
||||
while true
|
||||
do
|
||||
read answer
|
||||
case $answer in [1] ) serverip=$serveripa && break ;;
|
||||
[2] ) serverip=$serveripb && break ;;
|
||||
* ) echo "Enter 1 or 2";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
echo "IP set to "$serverip
|
||||
echo
|
||||
fi
|
||||
|
||||
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
|
||||
|
||||
+21
-23
@@ -14,20 +14,20 @@ osname=$(lsb_release -si)
|
||||
relno=$(lsb_release -sr | cut -d. -f1)
|
||||
sourcedir='http://rtorrent.net/downloads/'
|
||||
|
||||
xmlrpc_url='https://svn.code.sf.net/p/xmlrpc-c/code/stable/'
|
||||
xmlrpcloc='svn://svn.code.sf.net/p/xmlrpc-c/code/stable/'
|
||||
xmlrpc_url='https://svn.code.sf.net/p/xmlrpc-c/code/advanced/'
|
||||
xmlrpcloc='svn://svn.code.sf.net/p/xmlrpc-c/code/advanced/'
|
||||
|
||||
xmlrpc_url_alt='https://github.com/mirror/xmlrpc-c'
|
||||
xmlrpcloc_alt='https://github.com/mirror/xmlrpc-c/trunk/stable'
|
||||
xmlrpcloc_alt='https://github.com/mirror/xmlrpc-c/trunk/advanced'
|
||||
|
||||
rtdevrel=1
|
||||
|
||||
if [ $relno = 9 ] || [ $(lsb_release -sr) = 17.10 ] || [ $relno = 18 ]; then
|
||||
if [ $(lsb_release -sr) = 17.10 ]; then
|
||||
rtdevrel=0
|
||||
fi
|
||||
|
||||
if [ $rtdevrel = 0 ]; then
|
||||
sourcedir='https://github.com/rakshasa/'
|
||||
if ([ "$osname" = "Debian" ] || [ "$osname" = "Raspbian" ] && [ $relno -ge 9 ]) || ([ "$osname" = "Ubuntu" ] && [ $relno -ge 18 ]); then
|
||||
rtdevrel=0
|
||||
fi
|
||||
|
||||
listsize=6
|
||||
@@ -137,15 +137,13 @@ if [ -z $passed_rtvers ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# checks if the OS is debian 9, and forces the version to 0.9.6 of it is
|
||||
# checks if the OS is debian 9, and forces the version to 0.9.7 of it is
|
||||
if [ $rtdevrel = 0 ]; then
|
||||
libvers='0.13.6'
|
||||
rtvers='0.9.6'
|
||||
echo "Debian 9, and Ubuntu 17.10 and later, are only supported by libtorrent-0.13.6/rtorrent-0.9.6"
|
||||
else
|
||||
list_version
|
||||
echo "For Debian 9, and Ubuntu 17.10 and later, recommend libtorrent-0.13.7/rtorrent-0.9.7 or later"
|
||||
fi
|
||||
|
||||
|
||||
list_version
|
||||
|
||||
echo "Install libtorrent-$libvers and rtorrent-$rtvers"
|
||||
echo "Your rtorrent config, torrents, and data will not be lost or changed"
|
||||
echo -n "Continue? "
|
||||
@@ -164,11 +162,11 @@ else
|
||||
rtvers=$passed_rtvers
|
||||
fi
|
||||
|
||||
# checks if the OS is debian 9, and forces the version to 0.9.6 of it is
|
||||
# checks if the OS is debian 9, and forces the version to 0.9.7 of it is
|
||||
if [ $rtdevrel = 0 ]; then
|
||||
libvers='0.13.6'
|
||||
rtvers='0.9.6'
|
||||
echo "Debian 9, and Ubuntu 17.10 and later, are only supported by libtorrent-0.13.6/rtorrent-0.9.6"
|
||||
libvers='0.13.8'
|
||||
rtvers='0.9.8'
|
||||
echo "Debian 9, and Ubuntu 17.10 and later, are only supported by libtorrent-0.13.7/rtorrent-0.9.7 or later"
|
||||
fi
|
||||
|
||||
fi
|
||||
@@ -192,13 +190,13 @@ rm -rf xmlrpc libtorrent* rtorrent*
|
||||
echo "Fetching source files"
|
||||
|
||||
|
||||
if [ $rtdevrel = 0 ]; then
|
||||
git clone -q -b feature-bind --single-branch https://github.com/rakshasa/libtorrent.git libtorrent-$libvers
|
||||
git clone -q -b feature-bind --single-branch https://github.com/rakshasa/rtorrent.git rtorrent-$rtvers
|
||||
else
|
||||
#if [ $rtdevrel = 0 ]; then
|
||||
# git clone -q -b feature-bind --single-branch https://github.com/rakshasa/libtorrent.git libtorrent-$libvers
|
||||
# git clone -q -b feature-bind --single-branch https://github.com/rakshasa/rtorrent.git rtorrent-$rtvers
|
||||
#else
|
||||
curl -# http://rtorrent.net/downloads/libtorrent-$libvers.tar.gz | tar xz
|
||||
curl -# http://rtorrent.net/downloads/rtorrent-$rtvers.tar.gz | tar xz
|
||||
fi
|
||||
#fi
|
||||
|
||||
if [ $xmlrpc_repo = 0 ]; then
|
||||
svn co $xmlrpcloc xmlrpc >> $logfile 2>&1
|
||||
@@ -225,7 +223,7 @@ make -s install >> $logfile 2>&1
|
||||
cd ../rtorrent-$rtvers
|
||||
echo "Installing rtorrent" | tee -a $logfile
|
||||
./autogen.sh >> $logfile 2>&1
|
||||
./configure --prefix=/usr --with-xmlrpc-c >> $logfile 2>&1
|
||||
./configure --prefix=/usr --with-xmlrpc-c --enable-ipv6 >> $logfile 2>&1
|
||||
make -j$(nproc) >> $logfile 2>&1
|
||||
make -s install >> $logfile 2>&1
|
||||
ldconfig >> $logfile 2>&1
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
######################################################################
|
||||
|
||||
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
|
||||
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "Must be run as root, directly or with sudo"
|
||||
|
||||
Reference in New Issue
Block a user