]> BookStack Code Mirror - devops/blob - scripts/installation-ubuntu-16.04.sh
Added nginx subpath proxy example config
[devops] / scripts / installation-ubuntu-16.04.sh
1 #!/bin/sh
2 # This script will install a new BookStack instance on a fresh Ubuntu 16.04 server.
3 # This script is experimental and does not ensure any security.
4
5 echo ""
6 echo -n "Enter the domain you want to host BookStack and press [ENTER]: "
7 read DOMAIN
8
9 myip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/')
10
11 export DEBIAN_FRONTEND=noninteractive
12 apt update
13 apt install -y software-properties-common python-software-properties
14 add-apt-repository -yu ppa:ondrej/php
15 apt install -y git nginx curl php7.4 php7.4-fpm php7.4-curl php7.4-mbstring php7.4-ldap \
16 php7.4-tidy php7.4-xml php7.4-zip php7.4-gd php7.4-mysql mysql-server-5.7
17
18 # Set up database
19 DB_PASS="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13)"
20 mysql -u root --execute="CREATE DATABASE bookstack;"
21 mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED BY '$DB_PASS';"
22 mysql -u root --execute="GRANT ALL ON bookstack.* TO 'bookstack'@'localhost';FLUSH PRIVILEGES;"
23
24 # Download BookStack
25 cd /var/www
26 git clone https://github.com/ssddanbrown/BookStack.git --branch release --single-branch bookstack
27 BOOKSTACK_DIR="/var/www/bookstack"
28 cd $BOOKSTACK_DIR
29
30 # Install composer
31 EXPECTED_SIGNATURE=$(wget https://composer.github.io/installer.sig -O - -q)
32 curl -s https://getcomposer.org/installer > composer-setup.php
33 ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');")
34
35 if [ "$EXPECTED_SIGNATURE" = "$ACTUAL_SIGNATURE" ]
36 then
37     php composer-setup.php --quiet
38     RESULT=$?
39     rm composer-setup.php
40 else
41     >&2 echo 'ERROR: Invalid composer installer signature'
42     rm composer-setup.php
43     exit 1
44 fi
45
46 # Install BookStack composer dependencies
47 php composer.phar install --no-dev
48
49 # Copy and update BookStack environment variables
50 cp .env.example .env
51 sed -i.bak "s@APP_URL=.*\$@APP_URL=http://$DOMAIN@" .env
52 sed -i.bak 's/DB_DATABASE=.*$/DB_DATABASE=bookstack/' .env
53 sed -i.bak 's/DB_USERNAME=.*$/DB_USERNAME=bookstack/' .env
54 sed -i.bak "s/DB_PASSWORD=.*\$/DB_PASSWORD=$DB_PASS/" .env
55
56 # Generate the application key
57 php artisan key:generate --no-interaction --force
58 # Migrate the databases
59 php artisan migrate --no-interaction --force
60
61 # Set file and folder permissions
62 chown www-data:www-data -R bootstrap/cache public/uploads storage && chmod -R 755 bootstrap/cache public/uploads storage
63
64 # Add nginx configuration
65 curl -s https://raw.githubusercontent.com/BookStackApp/devops/master/config/nginx/ubuntu-1604-install-config > /etc/nginx/sites-available/bookstack
66 sed -i.bak "s/bookstack.dev/$DOMAIN/" /etc/nginx/sites-available/bookstack
67 ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/bookstack
68
69 # Remove the default nginx configuration
70 rm /etc/nginx/sites-enabled/default
71
72 # Restart nginx to load new config
73 service nginx restart
74
75 echo ""
76 echo "Setup Finished, Your BookStack instance should now be installed."
77 echo "You can login with the email '[email protected]' and password of 'password'"
78 echo "MySQL was installed without a root password, It is recommended that you set a root MySQL password."
79 echo ""
80 echo "You can access your BookStack instance at: http://$myip/"