Last active
January 21, 2018 22:25
-
-
Save vanyasem/6e893bd2ca373f1a895ad4852437b478 to your computer and use it in GitHub Desktop.
Ubuntu Server 16.04 - Deploy Nextcloud
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Server Config: Pentium D 945 2 cores, 1 Gb DDR2 RAM, WD 750 Gb SATA HDD | |
# Installs: | |
# Nextcloud (Apache + PHP 7, MariaDB) | |
# Collabora Online Development Edition (CODE) via Docker | |
# LetsEncrypt with Apache support | |
read -p 'Nextcloud domian: ' nextclouddomian | |
read -p 'Nextcloud domian escaped (i.e: nextcloud\\.domian\\.org): ' collaboradomianescaped | |
read -p 'Collabora domian: ' collaboradomian | |
read -p 'Server Admin Email: ' adminemail | |
read -p 'MySQL root password: ' sqlroot | |
sudo add-apt-repository -y ppa:dawidd0811/neofetch | |
sudo apt update | |
sudo apt install -y tree htop neofetch | |
sudo apt install -y linux-image-extra-$(uname -r) linux-image-extra-virtual aufs-tools | |
curl https://get.docker.com | bash | |
sudo apt install -y unzip | |
sudo apt install -y letsencrypt python-letsencrypt-apache | |
sudo apt install -y apache2 mariadb-server libapache2-mod-php7.0 | |
sudo apt install -y php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring | |
sudo apt install -y php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip | |
sudo apt upgrade -y | |
sudo a2enmod rewrite | |
sudo a2enmod headers | |
sudo a2enmod env | |
sudo a2enmod dir | |
sudo a2enmod mime | |
sudo a2enmod ssl | |
sudo a2ensite default-ssl | |
sudo a2enmod proxy | |
sudo a2enmod proxy_wstunnel | |
sudo a2enmod proxy_http | |
wget https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip -O ~/nextcloud.zip | |
unzip ~/nextcloud.zip -d ~/ | |
sudo cp -r ~/nextcloud /var/www | |
# for nginx: https://icewind.nl/entry/collabora-online/ | |
sudo su -c 'echo """<VirtualHost *:80> | |
ServerName $nextclouddomian | |
ServerAdmin $adminemail | |
DocumentRoot /var/www/nextcloud/ | |
ErrorLog /error.log | |
CustomLog /access.log combined | |
<Directory /var/www/nextcloud/> | |
Options +FollowSymlinks | |
AllowOverride All | |
<IfModule mod_headers.c> | |
Header always set Strict-Transport-Security \"max-age=15552000; includeSubDomains\" | |
</IfModule> | |
<IfModule mod_dav.c> | |
Dav off | |
</IfModule> | |
SetEnv HOME /var/www/nextcloud | |
SetEnv HTTP_HOME /var/www/nextcloud | |
</Directory> | |
</VirtualHost>""" > /etc/apache2/sites-available/nextcloud.conf' | |
sudo a2ensite /etc/apache2/sites-available/nextcloud.conf | |
sudo su -c 'echo """opcache.enable=1 | |
opcache.enable_cli=1 | |
opcache.interned_strings_buffer=8 | |
opcache.max_accelerated_files=10000 | |
opcache.memory_consumption=128 | |
opcache.save_comments=1 | |
opcache.revalidate_freq=1""" >> /etc/php/7.0/apache2/php.ini' | |
sudo su -c 'echo """<VirtualHost *:80> | |
ServerName $collaboradomian | |
AllowEncodedSlashes NoDecode | |
SSLProxyEngine On | |
SSLProxyVerify None | |
SSLProxyCheckPeerCN Off | |
SSLProxyCheckPeerName Off | |
ProxyPreserveHost On | |
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 | |
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet | |
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 | |
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery | |
ProxyPassMatch \"/lool/(.*)/ws$\" wss://127.0.0.1:9980/lool/$1/ws nocanon | |
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws | |
ProxyPass /lool https://127.0.0.1:9980/lool | |
ProxyPassReverse /lool https://127.0.0.1:9980/lool | |
</VirtualHost>""" > /etc/apache2/sites-available/codeserver.conf' | |
sudo a2ensite /etc/apache2/sites-available/codeserver.conf | |
sudo chown -R www-data:www-data /var/www/nextcloud/ | |
sudo letsencrypt --apache -d $nextclouddomian -m $adminemail --agree-tos --hsts | |
sudo letsencrypt --apache -d $collaboradomian -m $adminemail --agree-tos --hsts | |
sudo mkdir /etc/systemd/system/docker.service.d | |
sudo su -c 'echo """[Service] | |
ExecStart= | |
ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd://""" > /etc/systemd/system/docker.service.d/DeviceMapper.conf' | |
sudo systemctl stop mysql | |
sudo mysqld_safe --skip-grant-tables --skip-networking & | |
sudo mysql -uroot | |
# use mysql; | |
# update user set password=PASSWORD("$sqlroot") where User='root'; | |
# flush privileges; | |
# quit | |
sudo systemctl start mysql | |
sudo mysql | |
# use mysql; | |
# update user set plugin='' where User='root'; | |
# flush privileges; | |
# exit | |
sudo systemctl daemon-reload | |
sudo systemctl restart docker | |
sudo systemctl enable docker | |
sudo systemctl restart mysql | |
sudo systemctl restart apache2 | |
sudo docker pull collabora/code | |
sudo docker run -t -d -p 127.0.0.1:9980:9980 -e \ | |
"$collaboradomianescaped" --restart always --cap-add MKNOD collabora/code | |
sudo apt autoremove -y | |
# sudo scp -r user@domain:/path/to/nextcloud /var/www | |
# sudo -u www-data php occ files:scan | |
sudo chown -R www-data:www-data /var/www/nextcloud/ | |
sudo nano /var/www/nextcloud/config/config.php | |
# 'htaccess.RewriteBase' => '/', | |
sudo -u www-data php occ maintenance:update:htaccess | |
crontab -e | |
# 15 5 * * 5 letsencrypt renew >> /var/log/le-renew.log |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment