fixes for stable + remove testing

This commit is contained in:
enoch85 2016-06-26 20:44:45 +02:00
parent 9bf96074ad
commit 296b453a5e
6 changed files with 19 additions and 1177 deletions

View File

@ -10,7 +10,7 @@ PW_FILE=/var/mysql_password.txt # Keep in sync with nextcloud_install_production
IFACE=$(lshw -c network | grep "logical name" | awk '{print $3}')
CLEARBOOT=$(dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get -y purge)
PHPMYADMIN_CONF="/etc/apache2/conf-available/phpmyadmin.conf"
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm"
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm/master"
STATIC="https://raw.githubusercontent.com/nextcloud/vm/master/static"
LETS_ENC="https://raw.githubusercontent.com/nextcloud/vm/lets-encrypt"
UNIXUSER=ncadmin
@ -25,10 +25,8 @@ UNIXPASS=nextcloud
fi
# Set correct interface
CURRENTIFACE1=$(cat /etc/network/interfaces | sed -n '/lo/,/iface/p' | awk '{print $3}'| sed "3d" | sed "1d")
CURRENTIFACE2=$(cat /etc/network/interfaces | sed -n '/iface/,/inet/p' | awk '{print $2}' | sed "1d" | sed "2d" | sed "1d")
sed -i "s|$CURRENTIFACE1|$IFACE|g" /etc/network/interfaces
sed -i "s|$CURRENTIFACE2|$IFACE|g" /etc/network/interfaces
{ sed '/# The primary network interface/q' /etc/network/interfaces; printf 'auto %s\niface %s inet dhcp\n# This is an autoconfigured IPv6 interface\niface %s inet6 auto\n' "$IFACE" "$IFACE" "$IFACE"; } > /etc/network/interfaces.new
mv /etc/network/interfaces.new /etc/network/interfaces
service networking restart
# Check network
@ -41,9 +39,7 @@ wget -q --spider http://github.com
else
echo
echo "Network NOT OK. You must have a working Network connection to run this script."
echo "You could try to change network settings of this VM to 'Bridged Mode'".
echo "If that doesn't help, please try to un-check 'Replicate physical host' in"
echo "the network settings of the VM."
echo "Please report this issue here: https://github.com/nextcloud/vm/issues/new"
exit 1
fi
@ -122,7 +118,7 @@ fi
if [ -f $SCRIPTS/setup_secure_permissions_nextcloud.sh ];
then
rm $SCRIPTS/setup_secure_permissions_nextcloud.sh
wget -q $STATIC/setup_secure_permissions_nextcloud.sh
wget -q $STATIC/setup_secure_permissions_nextcloud.sh -P $SCRIPTS
else
wget -q $STATIC/setup_secure_permissions_nextcloud.sh -P $SCRIPTS
fi
@ -166,15 +162,15 @@ chown $UNIXUSER:$UNIXUSER $SCRIPTS/nextcloud.sh
clear
echo "+--------------------------------------------------------------------+"
echo "| This script will configure your Nextcloud and activate SSL. |"
echo "| This script will configure your Nextcloud and activate SSL. |"
echo "| It will also do the following: |"
echo "| |"
echo "| - Generate new SSH keys for the server |"
echo "| - Generate new MySQL password |"
echo "| - Install phpMyadmin and make it secure |"
echo "| - Upgrade your system to latest version |"
echo "| - Set secure permissions to Nextcloud |"
echo "| - Set new passwords to Ubuntu Server and Nextcloud |"
echo "| - Set secure permissions to Nextcloud |"
echo "| - Set new passwords to Ubuntu Server and Nextcloud |"
echo "| - Set new keyboard layout |"
echo "| - Change timezone |"
echo "| - Set static IP to the system (you have to set the same IP in |"
@ -366,7 +362,7 @@ cat /dev/null > /var/log/apache2/error.log
cat /dev/null > /var/log/cronjobs_success.log
sed -i "s|sudo -i||g" /home/$UNIXUSER/.bash_profile
cat /dev/null > /etc/rc.local
cat << RCLNCAL > "/etc/rc.local"
cat << RCLOCAL > "/etc/rc.local"
#!/bin/sh -e
#
# rc.local
@ -382,7 +378,7 @@ cat << RCLNCAL > "/etc/rc.local"
exit 0
RCLNCAL
RCLOCAL
clear
echo

View File

@ -36,7 +36,7 @@ HTTP_CONF="/etc/apache2/sites-available/nextcloud_http_domain_self_signed.conf"
IFACE=$(lshw -c network | grep "logical name" | awk '{print $3}')
ADDRESS=$(hostname -I | cut -d ' ' -f 1)
# Repositories
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm"
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm/master"
STATIC="https://raw.githubusercontent.com/nextcloud/vm/master/static"
NCREPO="https://download.nextcloud.com/server/releases/"
GPGKEY="https://nextcloud.com/nextcloud.asc"
@ -478,9 +478,6 @@ rm $SCRIPTS/security.sh
#sudo -u www-data php $NCPATH/occ app:enable calendar
#fi
# Set secure permissions final (./data/.htaccess has wrong permissions otherwise)
bash $SCRIPTS/setup_secure_permissions_nextcloud.sh
# Change roots .bash_profile
if [ -f $SCRIPTS/change-root-profile.sh ];
then
@ -588,6 +585,9 @@ then
rm /root/*.sh
fi
# Set secure permissions final (./data/.htaccess has wrong permissions otherwise)
bash $SCRIPTS/setup_secure_permissions_nextcloud.sh
# Reboot
reboot

View File

@ -3,22 +3,22 @@
clear
cat << INST1
+-----------------------------------------------------------------------+
| Thank you for downloading this Nextcloud VM made by Tech and Me! |
| Thank you for downloading this Nextcloud VM made by Tech and Me! |
| |
INST1
echo -e "|" "\e[32mTo run the startup script type the sudoer password. This will either\e[0m |"
echo -e "|" "\e[32mbe the default ('nextcloud') or the one chosen during installation.\e[0m |"
echo -e "|" "\e[32mbe the default ('nextcloud') or the one chosen during installation.\e[0m |"
cat << INST2
| |
| If you have never done this before you can follow the complete |
| installation instructions here: https://goo.gl/3FYtz6 |
| |
| You can schedule the Nextcloud update process using a cron job. |
| You can schedule the Nextcloud update process using a cron job. |
| This is done using a script built into this VM that automatically |
| updates Nextcloud, sets secure permissions, and logs the successful |
| updates Nextcloud, sets secure permissions, and logs the successful |
| update to /var/log/cronjobs_success.log |
| Detailed instructions for setting this up can be found here: |
| https://www.techandme.se/set-automatic-nextcloud-updates/ |
| https://www.techandme.se/set-automatic-nextcloud-updates/ |
| |
| ####################### Tech and Me - 2016 ######################## |
+-----------------------------------------------------------------------+

View File

@ -1,162 +0,0 @@
<!DNCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Nextloud VM</title>
<style>
body {
background-color: #0082c9;
font-weight: 300;
font-size: 1em;
line-height: 1.6em;
font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
color: white;
height: auto;
margin-left: auto;
margin-right: auto;
align: center;
text-align: center;
background: #0082c9; /* Old browsers */
background: -moz-linear-gradient(top, #0082c9 0%, #35537a 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#0082c9), color-stop(100%,#35537a)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #0082c9 0%,#35537a 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #0082c9 0%,#35537a 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #0082c9 0%,#35537a 100%); /* IE10+ */
background: linear-gradient(top, #0082c9 0%,#35537a 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0082c9', endColorstr='#35537a',GradientType=0 ); /* IE6-9 */
}
div.logotext {
width: 50%;
margin: 0 auto;
}
div.logo {
background-image: url('/nextcloud/core/img/logo-icon.svg');
background-repeat: no-repeat; top center;
width: 50%;
height: 25%;
margin: 0 auto;
background-size: 40%;
margin-left: 40%;
margin-right: 20%;
}
pre {
padding:10pt;
width: 50%
text-align: center;
margin-left: 20%;
margin-right: 20%;
}
div.information {
align: center;
width: 50%;
margin: 10px auto;
display: block;
padding: 10px;
background-color: rgba(0,0,0,.3);
color: #fff;
text-align: left;
border-radius: 3px;
cursor: default;
}
/* unvisited link */
a:link {
color: #FFFFFF;
}
/* visited link */
a:visited {
color: #FFFFFF;
}
/* mouse over link */
a:hover {
color: #E0E0E0;
}
/* selected link */
a:active {
color: #E0E0E0;
}
</style>
<br>
<div class="logo">
</div>
<div class="logotext">
<h2>Nextcloud VM - <a href="https://www.techandme.se/pre-configured-nextcloud-installaton/" target="_blank">Tech and Me</a></h2>
</div>
<br>
<div class="information">
<p>Thank you for downloading the pre-configured Nextcloud VM! If you see this page, you have successfully mounted the Nextcloud VM on the computer that will act as host for Nextcloud.</p>
<p>To complete the installation, please run the setup script. You can find login details in the middle of this page.
<p>Don't hesitate to ask if you have any questions. My email is: <a href="mailto:daniel@techandme.se?Subject=Before%20login%20-%20Nextcloud%20VM" target="_top">daniel@techandme.se</a> You can also check the <a href="https://www.techandme.se/complete-install-instructions-nextcloud/" target="_blank">complete install instructions</a>.</p>
<p>Please <a href="https://www.techandme.se/thank_you">donate</a> if you like it. All the donations will go to server costs and developing, making this VM even better.</p>
</div>
<h2><a href="https://www.techandme.se/user-and-password/" target="_blank">Login</a> to Nextcloud</h2>
<div class="information">
<p>Default User:</p>
<h3>ncadmin</h3>
<p>Default Password:</p>
<h3>nextcloud</h3>
<p>Note: The setup script will ask you to change the default password to your own. It's also recommended to change the default user. Do this by adding another admin user, log out from ncadmin, and login with your new user, then delete ncadmin.</p>
<br>
<center>
<h3> How to mount the VM and and login:</h3>
</center>
<p>Before you can use Nextcloud you have to run the setup script to complete the installation. This is easily done by just typing 'nextcloud' when you log in to the terminal for the first time.</p>
<p>The full path to the setup script is: /var/scripts/nextcloud-startup-script.sh. When the script is finnished it will be deleted, as it's only used the first time you boot the machine.</p>
<center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/jhbkTQ9yA-4" frameborder="0" allowfullscreen></iframe>
</center>
</div>
<h2>Access Nextcloud</h2>
<div class="information">
<p>Use one of the following addresses, HTTPS is preffered:
<h3>
<ul>
<li><a href="http://<?=$_SERVER['SERVER_NAME'];?>/nextcloud" >http://<?=$_SERVER['SERVER_NAME'];?></a> (HTTP)
<li><a href="https://<?=$_SERVER['SERVER_NAME'];?>/nextcloud" >https://<?=$_SERVER['SERVER_NAME'];?></a> (HTTPS)
<p>
</ul>
</h3>
<p>Note: Please accept the warning in the browser if you connect via HTTPS. It is recommended
<br> to <a href="https://www.techandme.se/publish-your-server-online" target="_blank">buy your own certificate and replace the self-signed certificate to your own.</a>
<br>
<p>Note: Before you can login you have to run the setup script, as descirbed in the video above.
</div>
<h2>Access Webmin</h2>
<div class="information">
<p>Use one of the following addresses, HTTPS is preffered:
<h3>
<ul>
<li><a href="http://<?=$_SERVER['SERVER_NAME'];?>:10000" >http://<?=$_SERVER['SERVER_NAME'];?></a> (HTTP)
<li><a href="https://<?=$_SERVER['SERVER_NAME'];?>:10000" >https://<?=$_SERVER['SERVER_NAME'];?></a> (HTTPS)
<p>
</ul>
</h3>
<p>Note: Please accept the warning in the browser if you connect via HTTPS.</p>
<h3>
<a href="https://www.techandme.se/user-and-password/" target="_blank">Login details</a>
</h3>
<p> Note: Webmin is installed when you run the setup script. To access Webmin externally you have to open port 10000 in your router.</p>
</div>
<h2>Access phpMyadmin</h2>
<div class="information">
<p>Use one of the following addresses, HTTPS is preffered:
<h3>
<ul>
<li><a href="http://<?=$_SERVER['SERVER_NAME'];?>/phpmyadmin" >http://<?=$_SERVER['SERVER_NAME'];?></a> (HTTP)
<li><a href="https://<?=$_SERVER['SERVER_NAME'];?>/phpmyadmin" >https://<?=$_SERVER['SERVER_NAME'];?></a> (HTTPS)
<p>
</ul>
</h3>
<p>Note: Please accept the warning in the browser if you connect via HTTPS.</p>
<h3>
<a href="https://www.techandme.se/user-and-password/" target="_blank">Login details</a>
</h3>
<p>Note: Your external IP is set as approved in /etc/apache2/conf-available/phpmyadmin.conf, all other access is forbidden.<p/>
</div>

View File

@ -1,421 +0,0 @@
#!/bin/bash
# Tech and Me - ©2016, https://www.techandme.se/
WWW_ROOT=/var/www
NCPATH=$WWW_ROOT/nextcloud
NCDATA=/var/ncdata
SCRIPTS=/var/scripts
PW_FILE=/var/mysql_password.txt # Keep in sync with nextcloud_install_production.sh
IFACE=$(lshw -c network | grep "logical name" | awk '{print $3}')
CLEARBOOT=$(dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get -y purge)
PHPMYADMIN_CONF="/etc/apache2/conf-available/phpmyadmin.conf"
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm"
STATIC="https://raw.githubusercontent.com/nextcloud/vm/master/static"
LETS_ENC="https://raw.githubusercontent.com/nextcloud/vm/lets-encrypt"
UNIXUSER=ncadmin
UNIXPASS=nextcloud
# Check if root
if [ "$(whoami)" != "root" ]; then
echo
echo -e "\e[31mSorry, you are not root.\n\e[0mYou must type: \e[36msudo \e[0mbash $SCRIPTS/nextcloud-startup-script.sh"
echo
exit 1
fi
# Set correct interface
CURRENTIFACE1=$(cat /etc/network/interfaces | sed -n '/lo/,/iface/p' | awk '{print $3}'| sed "3d" | sed "1d")
CURRENTIFACE2=$(cat /etc/network/interfaces | sed -n '/iface/,/inet/p' | awk '{print $2}' | sed "1d" | sed "2d" | sed "1d")
sed -i "s|$CURRENTIFACE1|$IFACE|g" /etc/network/interfaces
sed -i "s|$CURRENTIFACE2|$IFACE|g" /etc/network/interfaces
service networking restart
# Check network
echo "Testing if network is OK..."
sleep 2
sudo ifdown $IFACE && sudo ifup $IFACE
wget -q --spider http://github.com
if [ $? -eq 0 ]; then
echo -e "\e[32mOnline!\e[0m"
else
echo
echo "Network NOT OK. You must have a working Network connection to run this script."
echo "You could try to change network settings of this VM to 'Bridged Mode'".
echo "If that doesn't help, please try to un-check 'Replicate physical host' in"
echo "the network settings of the VM."
exit 1
fi
ADDRESS=$(hostname -I | cut -d ' ' -f 1)
echo "Getting scripts from GitHub to be able to run the first setup..."
# Get the latest nextcloud_update.sh
if [ -f $SCRIPTS/update.sh ];
then
rm $SCRIPTS/update.sh
wget -q $STATIC/update.sh -P $SCRIPTS
else
wget -q $STATIC/update.sh -P $SCRIPTS
fi
# phpMyadmin
if [ -f $SCRIPTS/phpmyadmin_install_ubuntu16.sh ];
then
rm $SCRIPTS/phpmyadmin_install_ubuntu16.sh
wget -q $STATIC/phpmyadmin_install_ubuntu16.sh -P $SCRIPTS
else
wget -q $STATIC/phpmyadmin_install_ubuntu16.sh -P $SCRIPTS
fi
# Update Config
if [ -f $SCRIPTS/update-config.php ];
then
rm $SCRIPTS/update-config.php
wget -q $STATIC/update-config.php -P $SCRIPTS
else
wget -q $STATIC/update-config.php -P $SCRIPTS
fi
# Activate SSL
if [ -f $SCRIPTS/activate-ssl.sh ];
then
rm $SCRIPTS/activate-ssl.sh
wget -q $LETS_ENC/activate-ssl.sh -P $SCRIPTS
else
wget -q $LETS_ENC/activate-ssl.sh -P $SCRIPTS
fi
# The update script
if [ -f $SCRIPTS/nextcloud_update.sh ];
then
rm $SCRIPTS/nextcloud_update.sh
wget -q $GITHUB_REPO/nextcloud_update.sh -P $SCRIPTS
else
wget -q $GITHUB_REPO/nextcloud_update.sh -P $SCRIPTS
fi
# Sets trusted domain in when nextcloud-startup-script.sh is finished
if [ -f $SCRIPTS/trusted.sh ];
then
rm $SCRIPTS/trusted.sh
wget -q $STATIC/trusted.sh -P $SCRIPTS
else
wget -q $STATIC/trusted.sh -P $SCRIPTS
fi
# Sets static IP to UNIX
if [ -f $SCRIPTS/ip.sh ];
then
rm $SCRIPTS/ip.sh
wget -q $STATIC/ip.sh -P $SCRIPTS
else
wget -q $STATIC/ip.sh -P $SCRIPTS
fi
# Tests connection after static IP is set
if [ -f $SCRIPTS/test_connection.sh ];
then
rm $SCRIPTS/test_connection.sh
wget -q $STATIC/test_connection.sh -P $SCRIPTS
else
wget -q $STATIC/test_connection.sh -P $SCRIPTS
fi
# Sets secure permissions after upgrade
if [ -f $SCRIPTS/setup_secure_permissions_nextcloud.sh ];
then
rm $SCRIPTS/setup_secure_permissions_nextcloud.sh
wget -q $STATIC/setup_secure_permissions_nextcloud.sh
else
wget -q $STATIC/setup_secure_permissions_nextcloud.sh -P $SCRIPTS
fi
# Change MySQL password
if [ -f $SCRIPTS/change_mysql_pass.sh ];
then
rm $SCRIPTS/change_mysql_pass.sh
wget -q $STATIC/change_mysql_pass.sh
else
wget -q $STATIC/change_mysql_pass.sh -P $SCRIPTS
fi
# Get figlet Tech and Me
if [ -f $SCRIPTS/nextcloud.sh ];
then
rm $SCRIPTS/nextcloud.sh
wget -q $STATIC/nextcloud.sh -P $SCRIPTS
else
wget -q $STATIC/nextcloud.sh -P $SCRIPTS
fi
# Get the Welcome Screen when http://$address
if [ -f $SCRIPTS/index.php ];
then
rm $SCRIPTS/index.php
wget -q $GITHUB_REPO/testing/index.php -P $SCRIPTS
else
wget -q $GITHUB_REPO/testing/index.php -P $SCRIPTS
fi
mv $SCRIPTS/index.php $WWW_ROOT/index.php && rm -f $WWW_ROOT/html/index.html
chmod 750 $WWW_ROOT/index.php && chown www-data:www-data $WWW_ROOT/index.php
# Change 000-default to $WEB_ROOT
sed -i "s|DocumentRoot /var/www/html|DocumentRoot $WWW_ROOT|g" /etc/apache2/sites-available/000-default.conf
# Make $SCRIPTS excutable
chmod +x -R $SCRIPTS
chown root:root -R $SCRIPTS
# Allow $UNIXUSER to run figlet script
chown $UNIXUSER:$UNIXUSER $SCRIPTS/nextcloud.sh
clear
echo "+--------------------------------------------------------------------+"
echo "| This script will configure your Nextcloud and activate SSL. |"
echo "| It will also do the following: |"
echo "| |"
echo "| - Generate new SSH keys for the server |"
echo "| - Generate new MySQL password |"
echo "| - Install phpMyadmin and make it secure |"
echo "| - Upgrade your system to latest version |"
echo "| - Set secure permissions to Nextcloud |"
echo "| - Set new passwords to Ubuntu Server and Nextcloud |"
echo "| - Set new keyboard layout |"
echo "| - Change timezone |"
echo "| - Set static IP to the system (you have to set the same IP in |"
echo "| your router) https://www.techandme.se/open-port-80-443/ |"
echo "| |"
echo "| The script will take about 10 minutes to finish, |"
echo "| depending on your internet connection. |"
echo "| |"
echo "| ####################### Tech and Me - 2016 ####################### |"
echo "+--------------------------------------------------------------------+"
echo -e "\e[32m"
read -p "Press any key to start the script..." -n1 -s
clear
echo -e "\e[0m"
# Change IP
echo -e "\e[0m"
echo "The script will now configure your IP to be static."
echo -e "\e[36m"
echo -e "\e[1m"
echo "Your internal IP is: $ADDRESS"
echo -e "\e[0m"
echo -e "Write this down, you will need it to set static IP"
echo -e "in your router later. It's included in this guide:"
echo -e "https://www.techandme.se/open-port-80-443/ (step 1 - 5)"
echo -e "\e[32m"
read -p "Press any key to set static IP..." -n1 -s
clear
echo -e "\e[0m"
ifdown $IFACE
sleep 2
ifup $IFACE
sleep 2
bash $SCRIPTS/ip.sh
ifdown $IFACE
sleep 2
ifup $IFACE
sleep 2
echo
echo "Testing if network is OK..."
sleep 1
echo
bash $SCRIPTS/test_connection.sh
sleep 2
echo
echo -e "\e[0mIf the output is \e[32mConnected! \o/\e[0m everything is working."
echo -e "\e[0mIf the output is \e[31mNot Connected!\e[0m you should change\nyour settings manually in the next step."
echo -e "\e[32m"
read -p "Press any key to open /etc/network/interfaces..." -n1 -s
echo -e "\e[0m"
nano /etc/network/interfaces
clear
echo "Testing if network is OK..."
ifdown $IFACE
sleep 2
ifup $IFACE
sleep 2
echo
bash $SCRIPTS/test_connection.sh
sleep 2
clear
# Change Trusted Domain and CLI
bash $SCRIPTS/trusted.sh
echo "Generating new SSH keys for the server..."
echo
sleep 1
rm -v /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
# Generate new MySQL password
echo
bash $SCRIPTS/change_mysql_pass.sh
rm $SCRIPTS/change_mysql_pass.sh
# Install phpMyadmin
bash $SCRIPTS/phpmyadmin_install_ubuntu16.sh
rm $SCRIPTS/phpmyadmin_install_ubuntu16.sh
clear
# Set keyboard layout
echo "Current keyboard layout is Swedish"
echo "You must change keyboard layout to your language"
echo -e "\e[32m"
read -p "Press any key to change keyboard layout... " -n1 -s
echo -e "\e[0m"
dpkg-reconfigure keyboard-configuration
echo
clear
# Change Timezone
echo "Current timezone is Europe/Stockholm"
echo "You must change timezone to your timezone"
echo -e "\e[32m"
read -p "Press any key to change timezone... " -n1 -s
echo -e "\e[0m"
dpkg-reconfigure tzdata
echo
sleep 3
clear
if [ "$UNIXUSER" = "ncadmin" ]
then
# Change password
echo -e "\e[0m"
echo "For better security, change the Linux password for [$UNIXUSER]"
echo "The current password is [$UNIXPASS]"
echo -e "\e[32m"
read -p "Press any key to change password for Linux... " -n1 -s
echo -e "\e[0m"
sudo passwd $UNIXUSER
if [[ $? > 0 ]]
then
sudo passwd $UNIXUSER
else
sleep 2
fi
echo
clear
echo -e "\e[0m"
echo "For better security, change the Nextcloud password for [$UNIXUSER]"
echo "The current password is [$UNIXPASS]"
echo -e "\e[32m"
read -p "Press any key to change password for Nextcloud... " -n1 -s
echo -e "\e[0m"
sudo -u www-data php $NCPATH/occ user:resetpassword $UNIXUSER
if [[ $? > 0 ]]
then
sudo -u www-data php $NCPATH/occ user:resetpassword $UNIXUSER
else
sleep 2
fi
clear
else
echo "Not changing password as you already changed <user> and <pass> in the script"
fi
clear
# Upgrade system
echo System will now upgrade...
sleep 2
echo
echo
apt-get update -q2
aptitude full-upgrade -y
# Cleanup 1
apt-get autoremove -y
apt-get autoclean
echo "$CLEARBOOT"
clear
ADDRESS2=$(grep "address" /etc/network/interfaces | awk '$1 == "address" { print $2 }')
# Success!
echo -e "\e[32m"
echo "+--------------------------------------------------------------------+"
echo "| Congratulations! You have successfully installed Nextcloud! |"
echo "| |"
echo -e "| \e[0mLogin to Nextcloud in your browser:\e[36m" $ADDRESS2"\e[32m |"
echo "| |"
echo -e "| \e[0mPublish your server online! \e[36mhttps://goo.gl/iUGE2U\e[32m |"
echo "| |"
echo -e "| \e[0mYour MySQL password is stored in: \e[36m$PW_FILE\e[32m |"
echo "| |"
echo -e "| \e[91m#################### Tech and Me - 2016 ####################\e[32m |"
echo "+--------------------------------------------------------------------+"
echo
read -p "Press any key to continue..." -n1 -s
echo -e "\e[0m"
echo
# Cleanup 2
sudo -u www-data php $NCPATH/occ maintenance:repair
rm $SCRIPTS/ip.sh
rm $SCRIPTS/trusted.sh
rm $SCRIPTS/test_connection.sh
rm $SCRIPTS/update-config.php
rm $SCRIPTS/instruction.sh
rm $NCDATA/nextcloud.log
rm $SCRIPTS/nextcloud-startup-script.sh
sed -i "s|instruction.sh|nextcloud.sh|g" /home/$UNIXUSER/.bash_profile
cat /dev/null > ~/.bash_history
cat /dev/null > /var/spool/mail/root
cat /dev/null > /var/spool/mail/$UNIXUSER
cat /dev/null > /var/log/apache2/access.log
cat /dev/null > /var/log/apache2/error.log
cat /dev/null > /var/log/cronjobs_success.log
sed -i "s|sudo -i||g" /home/$UNIXUSER/.bash_profile
cat /dev/null > /etc/rc.local
cat << RCLNCAL > "/etc/rc.local"
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
RCLNCAL
clear
echo
echo
cat << LETSENC
+-----------------------------------------------+
| Ok, now the last part - a proper SSL cert. |
| |
| The following script will install a trusted |
| SSL certificate through Let's Encrypt. |
+-----------------------------------------------+
LETSENC
# Let's Encrypt
function ask_yes_or_no() {
read -p "$1 ([y]es or [N]o): "
case $(echo $REPLY | tr '[A-Z]' '[a-z]') in
y|yes) echo "yes" ;;
*) echo "no" ;;
esac
}
if [[ "yes" == $(ask_yes_or_no "Do you want to install SSL?") ]]
then
bash $SCRIPTS/activate-ssl.sh
else
echo
echo "OK, but if you want to run it later, just type: sudo bash $SCRIPTS/activate-ssl.sh"
echo -e "\e[32m"
read -p "Press any key to continue... " -n1 -s
echo -e "\e[0m"
fi
# Reboot
reboot
exit 0

View File

@ -1,571 +0,0 @@
#!/bin/bash
# Tech and Me, ©2016 - www.techandme.se
#
# This install from Nextcloud daily build with PHP 7, MySQL 5.7 and Apche 2.4.
# Ubuntu 16.04 is required.
set -e
# Ubuntu version
DISTRO=$(grep -ic "Ubuntu 16.04 LTS" /etc/lsb-release)
# Nextcloud apps
CONVER=v1.3.0.0
CONVER_FILE=contacts.tar.gz
CONVER_REPO=https://github.com/nextcloud/contacts/releases/download
CALVER=v1.3.0
CALVER_FILE=calendar.tar.gz
CALVER_REPO=https://github.com/nextcloud/calendar/releases/download
# Passwords
SHUF=$(shuf -i 13-15 -n 1)
MYSQL_PASS=$(cat /dev/urandom | tr -dc "a-zA-Z0-9@#*=" | fold -w $SHUF | head -n 1)
PW_FILE=/var/mysql_password.txt
# Directories
SCRIPTS=/var/scripts
HTML=/var/www
NCPATH=$HTML/nextcloud
NCDATA=/var/ncdata
# Apache vhosts
SSL_CONF="/etc/apache2/sites-available/nextcloud_ssl_domain_self_signed.conf"
HTTP_CONF="/etc/apache2/sites-available/nextcloud_http_domain_self_signed.conf"
# Network
IFACE=$(lshw -c network | grep "logical name" | awk '{print $3}')
ADDRESS=$(hostname -I | cut -d ' ' -f 1)
# Repositories
GITHUB_REPO="https://raw.githubusercontent.com/nextcloud/vm"
STATIC="https://raw.githubusercontent.com/nextcloud/vm/master/static"
NCDAILY="https://download.nextcloud.com/server/daily/"
DAILYVERSION="nextcloud-9-daily-2016-06-13"
# Commands
CLEARBOOT=$(dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get -y purge)
# Linux user, and Nextcloud user
UNIXUSER=ncadmin
UNIXPASS=nextcloud
# Check if root
if [ "$(whoami)" != "root" ]; then
echo
echo -e "\e[31mSorry, you are not root.\n\e[0mYou must type: \e[36msudo \e[0mbash $SCRIPTS/nextcloud_install_production.sh"
echo
exit 1
fi
# Check Ubuntu version
if [ $DISTRO -eq 1 ]
then
echo "Ubuntu 16.04 LTS OK!"
else
echo "Ubuntu 16.04 LTS is required to run this script."
echo "Please install that distro and try again."
exit 1
fi
# Check if repo is available
if wget -q --spider "$NCDAILY" > /dev/null; then
echo "Nextcloud repo OK"
else
echo "Nextcloud repo is not available, exiting..."
exit 1
fi
# Check if it's a clean server
echo "Checking if it's a clean server..."
if [ $(dpkg-query -W -f='${Status}' mysql-common 2>/dev/null | grep -c "ok installed") -eq 1 ];
then
echo "MySQL is installed, it must be a clean server."
exit 1
fi
if [ $(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed") -eq 1 ];
then
echo "Apache2 is installed, it must be a clean server."
exit 1
fi
if [ $(dpkg-query -W -f='${Status}' php 2>/dev/null | grep -c "ok installed") -eq 1 ];
then
echo "PHP is installed, it must be a clean server."
exit 1
fi
if [ $(dpkg-query -W -f='${Status}' nextcloud 2>/dev/null | grep -c "ok installed") -eq 1 ];
then
echo "Nextcloud is installed, it must be a clean server."
exit 1
fi
if [ $(dpkg-query -W -f='${Status}' ubuntu-server 2>/dev/null | grep -c "ok installed") -eq 0 ];
then
echo "'ubuntu-server' is not installed, this doesn't seem to be a server."
echo "Please install the server version of Ubuntu and restart the script"
exit 1
fi
# Create $UNIXUSER if not existing
if id "$UNIXUSER" >/dev/null 2>&1
then
echo "$UNIXUSER already exists!"
else
adduser --disabled-password --gecos "" $UNIXUSER
echo -e "$UNIXUSER:$UNIXPASS" | chpasswd
usermod -aG sudo $UNIXUSER
fi
if [ -d /home/$UNIXUSER ];
then
echo "$UNIXUSER OK!"
else
echo "Something went wrong when creating the user... Script will exit."
exit 1
fi
# Create $SCRIPTS dir
if [ -d $SCRIPTS ]; then
sleep 1
else
mkdir -p $SCRIPTS
fi
# Change DNS
if ! [ -x "$(command -v resolvconf)" ]; then
apt-get install resolvconf -y -q
dpkg-reconfigure resolvconf
else
echo 'reolvconf is installed.' >&2
fi
echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/base
echo "nameserver 8.8.4.4" >> /etc/resolvconf/resolv.conf.d/base
# Check network
if ! [ -x "$(command -v nslookup)" ]; then
apt-get install dnsutils -y -q
else
echo 'dnsutils is installed.' >&2
fi
if ! [ -x "$(command -v ifup)" ]; then
apt-get install ifupdown -y -q
else
echo 'ifupdown is installed.' >&2
fi
sudo ifdown $IFACE && sudo ifup $IFACE
nslookup google.com
if [[ $? > 0 ]]
then
echo "Network NOT OK. You must have a working Network connection to run this script."
exit 1
else
echo "Network OK."
fi
# Update system
apt-get update -q2
# Set locales
apt-get install language-pack-en-base -y
sudo locale-gen "sv_SE.UTF-8" && sudo dpkg-reconfigure --frontend=noninteractive locales
# Install aptitude
apt-get install aptitude -y
# Write MySQL pass to file and keep it safe
echo "$MYSQL_PASS" > $PW_FILE
chmod 600 $PW_FILE
chown root:root $PW_FILE
# Install MYSQL 5.7
apt-get install software-properties-common -y
echo "mysql-server-5.7 mysql-server/root_password password $MYSQL_PASS" | debconf-set-selections
echo "mysql-server-5.7 mysql-server/root_password_again password $MYSQL_PASS" | debconf-set-selections
apt-get install mysql-server-5.7 -y
# mysql_secure_installation
apt-get -y install expect
SECURE_MYSQL=$(expect -c "
set timeout 10
spawn mysql_secure_installation
expect \"Enter current password for root:\"
send \"$MYSQL_PASS\r\"
expect \"Would you like to setup VALIDATE PASSWORD plugin?\"
send \"n\r\"
expect \"Change the password for root ?\"
send \"n\r\"
expect \"Remove anonymous users?\"
send \"y\r\"
expect \"Disallow root login remotely?\"
send \"y\r\"
expect \"Remove test database and access to it?\"
send \"y\r\"
expect \"Reload privilege tables now?\"
send \"y\r\"
expect eof
")
echo "$SECURE_MYSQL"
apt-get -y purge expect
# Install Apache
apt-get install apache2 -y
a2enmod rewrite \
headers \
env \
dir \
mime \
ssl \
setenvif
# Set hostname and ServerName
sudo sh -c "echo 'ServerName nextcloud' >> /etc/apache2/apache2.conf"
sudo hostnamectl set-hostname nextcloud
service apache2 restart
# Install PHP 7.0
apt-get update -q2
apt-get install -y \
libapache2-mod-php7.0 \
php7.0-common \
php7.0-mysql \
php7.0-intl \
php7.0-mcrypt \
php7.0-ldap \
php7.0-imap \
php7.0-cli \
php7.0-gd \
php7.0-pgsql \
php7.0-json \
php7.0-sqlite3 \
php7.0-curl \
php7.0-xml \
php7.0-zip \
php7.0-mbstring
# Install Unzip
apt-get install unzip -y
# Download and install Nextcloud
wget $NCDAILY/$DAILYVERSION.zip -P $HTML
unzip $HTML/$DAILYVERSION.zip -d $HTML
rm $HTML/$DAILYVERSION.zip
# Secure permissions
wget -q $STATIC/setup_secure_permissions_nextcloud.sh -P $SCRIPTS
bash $SCRIPTS/setup_secure_permissions_nextcloud.sh
# Install Nextcloud
cd $NCPATH
sudo -u www-data php occ maintenance:install --data-dir "$NCDATA" --database "mysql" --database-name "nextcloud_db" --database-user "root" --database-pass "$MYSQL_PASS" --admin-user "$UNIXUSER" --admin-pass "$UNIXPASS"
echo
echo "Nextcloud version:"
sudo -u www-data php $NCPATH/occ status
echo
sleep 3
# Prepare cron.php to be run every 15 minutes
crontab -u www-data -l | { cat; echo "*/15 * * * * php -f $NCPATH/cron.php > /dev/null 2>&1"; } | crontab -u www-data -
# Change values in php.ini (increase max file size)
# max_execution_time
sed -i "s|max_execution_time = 30|max_execution_time = 3500|g" /etc/php/7.0/apache2/php.ini
# max_input_time
sed -i "s|max_input_time = 60|max_input_time = 3600|g" /etc/php/7.0/apache2/php.ini
# memory_limit
sed -i "s|memory_limit = 128M|memory_limit = 512M|g" /etc/php/7.0/apache2/php.ini
# post_max
sed -i "s|post_max_size = 8M|post_max_size = 1100M|g" /etc/php/7.0/apache2/php.ini
# upload_max
sed -i "s|upload_max_filesize = 2M|upload_max_filesize = 1000M|g" /etc/php/7.0/apache2/php.ini
# Install Figlet
apt-get install figlet -y
# Generate $HTTP_CONF
if [ -f $HTTP_CONF ];
then
echo "Virtual Host exists"
else
touch "$HTTP_CONF"
cat << HTTP_CREATE > "$HTTP_CONF"
<VirtualHost *:80>
### YOUR SERVER ADDRESS ###
# ServerAdmin admin@example.com
# ServerName example.com
# ServerAlias subdomain.example.com
### SETTINGS ###
DocumentRoot $NCPATH
<Directory $NCPATH>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Satisfy Any
</Directory>
Alias /nextcloud "$NCPATH/"
<IfModule mod_dav.c>
Dav off
</IfModule>
<Directory "$NCDATA">
# just in case if .htaccess gets disabled
Require all denied
</Directory>
SetEnv HOME $NCPATH
SetEnv HTTP_HOME $NCPATH
</VirtualHost>
HTTP_CREATE
echo "$HTTP_CONF was successfully created"
sleep 3
fi
# Generate $SSL_CONF
if [ -f $SSL_CONF ];
then
echo "Virtual Host exists"
else
touch "$SSL_CONF"
cat << SSL_CREATE > "$SSL_CONF"
<VirtualHost *:443>
Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
SSLEngine on
### YOUR SERVER ADDRESS ###
# ServerAdmin admin@example.com
# ServerName example.com
# ServerAlias subdomain.example.com
### SETTINGS ###
DocumentRoot $NCPATH
<Directory $NCPATH>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Satisfy Any
</Directory>
Alias /nextcloud "$NCPATH/"
<IfModule mod_dav.c>
Dav off
</IfModule>
<Directory "$NCDATA">
# just in case if .htaccess gets disabled
Require all denied
</Directory>
SetEnv HOME $NCPATH
SetEnv HTTP_HOME $NCPATH
### LOCATION OF CERT FILES ###
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
SSL_CREATE
echo "$SSL_CONF was successfully created"
sleep 3
fi
# Enable new config
a2ensite nextcloud_ssl_domain_self_signed.conf
a2ensite nextcloud_http_domain_self_signed.conf
a2dissite default-ssl
service apache2 restart
## Set config values
# Experimental apps
sudo -u www-data php $NCPATH/occ config:system:set appstore.experimental.enabled --value="true"
# Default mail server as an example (make this user configurable?)
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpmode --value="smtp"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpauth --value="1"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpport --value="465"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtphost --value="smtp.gmail.com"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpauthtype --value="LOGIN"
sudo -u www-data php $NCPATH/occ config:system:set mail_from_address --value="www.techandme.se"
sudo -u www-data php $NCPATH/occ config:system:set mail_domain --value="gmail.com"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpsecure --value="ssl"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtpname --value="www.techandme.se@gmail.com"
sudo -u www-data php $NCPATH/occ config:system:set mail_smtppassword --value="techandme_se"
# Install Libreoffice Writer to be able to read MS documents.
sudo apt-get install --no-install-recommends libreoffice-writer -y
# Install packages for Webmin
apt-get install -y zip perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
# Install Webmin
sed -i '$a deb http://download.webmin.com/download/repository sarge contrib' /etc/apt/sources.list
wget -q http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
apt-get update -q2
apt-get install webmin -y
# Add extra security
wget -q $STATIC/security.sh -P $SCRIPTS
bash $SCRIPTS/security.sh
rm $SCRIPTS/security.sh
# Download and install Documents
#if [ -d $NCPATH/apps/documents ]; then
#sleep 1
#else
#wget -q https://github.com/nextcloud/documents/archive/master.zip -P $NCPATH/apps
#cd $NCPATH/apps
#unzip -q master.zip
#rm master.zip
#mv documents-master/ documents/
#fi
# Enable documents
#if [ -d $NCPATH/apps/documents ]; then
#sudo -u www-data php $NCPATH/occ app:enable documents
#sudo -u www-data php $NCPATH/occ config:system:set preview_libreoffice_path --value="/usr/bin/libreoffice"
#fi
# Download and install Contacts
#if [ -d $NCPATH/apps/contacts ]; then
#sleep 1
#else
#wget -q $CONVER_REPO/$CONVER/$CONVER_FILE -P $NCPATH/apps
#tar -zxf $NCPATH/apps/$CONVER_FILE -C $NCPATH/apps
#cd $NCPATH/apps
#rm $CONVER_FILE
#fi
# Enable Contacts
#if [ -d $NCPATH/apps/contacts ]; then
#sudo -u www-data php $NCPATH/occ app:enable contacts
#fi
# Download and install Calendar
#if [ -d $NCPATH/apps/calendar ]; then
#sleep 1
#else
#wget -q $CALVER_REPO/$CALVER/$CALVER_FILE -P $NCPATH/apps
#tar -zxf $NCPATH/apps/$CALVER_FILE -C $NCPATH/apps
#cd $NCPATH/apps
#rm $CALVER_FILE
#fi
# Enable Calendar
#if [ -d $NCPATH/apps/calendar ]; then
#sudo -u www-data php $NCPATH/occ app:enable calendar
#fi
# Set secure permissions final (./data/.htaccess has wrong permissions otherwise)
bash $SCRIPTS/setup_secure_permissions_nextcloud.sh
# Change roots .bash_profile
if [ -f $SCRIPTS/change-root-profile.sh ];
then
echo "change-root-profile.sh exists"
else
wget -q $STATIC/change-root-profile.sh -P $SCRIPTS
fi
# Change $UNIXUSER .bash_profile
if [ -f $SCRIPTS/change-ncadmin-profile.sh ];
then
echo "change-ncadmin-profile.sh exists"
else
wget -q $STATIC/change-ncadmin-profile.sh -P $SCRIPTS
fi
# Get startup-script for root
if [ -f $SCRIPTS/nextcloud-startup-script.sh ];
then
echo "nextcloud-startup-script.sh exists"
else
wget -q $GITHUB_REPO/nextcloud-startup-script.sh -P $SCRIPTS
fi
# Welcome message after login (change in /home/$UNIXUSER/.profile
if [ -f $SCRIPTS/instruction.sh ];
then
echo "instruction.sh exists"
else
wget -q $STATIC/instruction.sh -P $SCRIPTS
fi
# Get nextcloud-startup-script.sh
if [ -f $SCRIPTS/nextcloud-startup-script.sh ];
then
echo "nextcloud-startup-script.sh exists"
else
wget -q $GITHUB_REPO/testing/nextcloud-startup-script.sh -P $SCRIPTS
fi
# Clears command history on every login
if [ -f $SCRIPTS/history.sh ];
then
echo "history.sh exists"
else
wget -q $STATIC/history.sh -P $SCRIPTS
fi
# Change root profile
bash $SCRIPTS/change-root-profile.sh
if [[ $? > 0 ]]
then
echo "change-root-profile.sh were not executed correctly."
sleep 10
else
echo "change-root-profile.sh script executed OK."
rm $SCRIPTS/change-root-profile.sh
sleep 2
fi
# Change $UNIXUSER profile
bash $SCRIPTS/change-ncadmin-profile.sh
if [[ $? > 0 ]]
then
echo "change-ncadmin-profile.sh were not executed correctly."
sleep 10
else
echo "change-ncadmin-profile.sh executed OK."
rm $SCRIPTS/change-ncadmin-profile.sh
sleep 2
fi
# Get script for Redis
if [ -f $SCRIPTS/redis-server-ubuntu16.sh ];
then
echo "redis-server-ubuntu16.sh exists"
else
wget -q $STATIC/redis-server-ubuntu16.sh -P $SCRIPTS
fi
# Make $SCRIPTS excutable
chmod +x -R $SCRIPTS
chown root:root -R $SCRIPTS
# Allow $UNIXUSER to run these scripts
chown $UNIXUSER:$UNIXUSER $SCRIPTS/instruction.sh
chown $UNIXUSER:$UNIXUSER $SCRIPTS/history.sh
# Install Redis
bash $SCRIPTS/redis-server-ubuntu16.sh
rm $SCRIPTS/redis-server-ubuntu16.sh
# Upgrade
aptitude full-upgrade -y
# Cleanup
echo "$CLEARBOOT"
apt-get autoremove -y
apt-get autoclean
if [ -f /home/$UNIXUSER/*.sh ];
then
rm /home/$UNIXUSER/*.sh
fi
if [ -f /root/*.sh ];
then
rm /root/*.sh
fi
# Reboot
reboot
exit 0