]> git.mxchange.org Git - friendica.git/blobdiff - bin/dev/vagrant_provision.sh
Converted in tabs
[friendica.git] / bin / dev / vagrant_provision.sh
index fc3e266f2e802eea483e0cd9d98fe08deef6218c..3992550ee15e4ff1a2819310c0c5d95f86000dc5 100755 (executable)
@@ -1,13 +1,23 @@
 #!/bin/bash
-#Script to setup the vagrant instance for running friendica
+# Script to setup the vagrant instance for running friendica
 #
-#DO NOT RUN on your physical machine as this won't be of any use
-#and f.e. deletes your /var/www/ folder!
-echo "Friendica configuration settings"
-sudo apt-get update
+# DO NOT RUN on your physical machine as this won't be of any use
+# and f.e. deletes your /var/www/ folder!
+#
+# Run as root by vagrant
+#
+##
+
+ADMIN_NICK="admin"
+ADMIN_PASSW="admin"
+
+USER_NICK="user"
+USER_PASSW="user"
+
+##
 
-# Install virtualbox guest additions
-sudo apt-get install virtualbox-guest-x11
+echo "Friendica configuration settings"
+apt-get update
 
 #Selfsigned cert
 echo ">>> Installing *.xip.io self-signed SSL"
@@ -16,41 +26,47 @@ DOMAIN="*.xip.io"
 EXTRADOMAIN="friendica.local"
 PASSPHRASE="vaprobash"
 SUBJ="
-C=US
-ST=Connecticut
-O=Vaprobash
-localityName=New Haven
-commonName=$DOMAIN
+C=US/
+ST=Connecticut/
+O=Vaprobash/
+localityName=New Haven/
+commonName=$DOMAIN/
 subjectAltName=DNS:$EXTRADOMAIN
-organizationalUnitName=
-emailAddress=
 "
-sudo mkdir -p "$SSL_DIR"
-sudo openssl genrsa -out "$SSL_DIR/xip.io.key" 4096
-sudo openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE
-sudo openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt"
+mkdir -p "$SSL_DIR"
+openssl genrsa -out "$SSL_DIR/xip.io.key" 4096
+openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE
+openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt"
 
 
 #Install apache2
 echo ">>> Installing Apache2 webserver"
-sudo apt-get install -y apache2
-sudo a2enmod rewrite actions ssl
-sudo cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost
-sudo chmod guo+x /usr/local/bin/vhost
-    sudo vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local
-    sudo a2dissite 000-default
-    sudo service apache2 restart
+apt-get install -qq apache2
+a2enmod rewrite actions ssl
+cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost
+chmod guo+x /usr/local/bin/vhost
+vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local
+a2dissite 000-default
+service apache2 restart
 
 #Install php
 echo ">>> Installing PHP7"
-sudo apt-get install -y php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip
-sudo systemctl restart apache2
+apt-get install -qq php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip
+systemctl restart apache2
+
+echo ">>> Installing PHP8"
+apt-get install -qq -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg
+echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
+wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
+apt update
+apt-get install -qq php8.0 php8.0-cli php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-imagick php8.0-zip
+systemctl restart apache2
 
 #Install mysql
 echo ">>> Installing Mysql"
-sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password root"
-sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password root"
-sudo apt-get install -qq mysql-server
+debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root"
+debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root"
+apt-get install -qq mariadb-server
 # enable remote access
 # setting the mysql bind-address to allow connections from everywhere
 sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
@@ -68,35 +84,49 @@ $MYSQL -uroot -proot -e "FLUSH PRIVILEGES"
 systemctl restart mysql
 
 
-
 #configure rudimentary mail server (local delivery only)
 #add Friendica accounts for local user accounts, use email address like vagrant@friendica.local, read the email with 'mail'.
+echo ">>> Installing 'Local Only' postfix"
 debconf-set-selections <<< "postfix postfix/mailname string friendica.local"
 debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'"
-sudo apt-get install -y postfix mailutils libmailutils-dev
-sudo echo -e "friendica1:      vagrant\nfriendica2:    vagrant\nfriendica3:    vagrant\nfriendica4:    vagrant\nfriendica5:    vagrant" >> /etc/aliases && sudo newaliases
+apt-get install -qq postfix mailutils libmailutils-dev
+echo -e "$ADMIN_NICK:  vagrant\n$USER_NICK:    vagrant" >> /etc/aliases && newaliases
+
+# Friendica needs git for fetching some dependencies
+echo ">>> Installing git"
+apt-get install -qq git
 
 #make the vagrant directory the docroot
-sudo rm -rf /var/www/
-sudo ln -fs /vagrant /var/www
+echo ">>> Symlink /var/www to /vagrant"
+rm -rf /var/www/
+ln -fs /vagrant /var/www
 
-# install deps with composer
-sudo apt install unzip
+# Setup Friendica
 cd /var/www
-php bin/composer.phar install
+echo ">>> Setup Friendica"
 
-# initial config file for friendica in vagrant
-cp /vagrant/util/htconfig.vagrant.php /vagrant/.htconfig.php
+# copy the .htaccess-dist file to .htaccess so that rewrite rules work
+cp /vagrant/.htaccess-dist /vagrant/.htaccess
 
 # create the friendica database
 echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot
-# import test database
-$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql
+
+# install friendica
+bin/console autoinstall -f /vagrant/mods/local.config.vagrant.php
+
+# add users
+# (disable a bunch of validation because this is a dev install, deh, it needs invalid emails and stupid passwords)
+bin/console config system disable_email_validation 1
+bin/console config system disable_password_exposed 1
+bin/console user add "$ADMIN_NICK" "$ADMIN_NICK" "$ADMIN_NICK@friendica.local" en
+bin/console user password "$ADMIN_NICK" "$ADMIN_PASSW"
+bin/console user add "$USER_NICK" "$USER_NICK" "$USER_NICK@friendica.local" en
+bin/console user password "$USER_NICK" "$USER_PASSW"
 
 # create cronjob - activate if you have enough memory in you dev VM
-echo "*/10 * * * * cd /vagrant; /usr/bin/php bin/worker.php" >> friendicacron
-sudo crontab friendicacron
-sudo rm friendicacron
+# cronjob runs as www-data user
+echo ">>> Installing cronjob"
+echo "*/10 * * * *    www-data    cd /vagrant; /usr/bin/php bin/worker.php" >> /etc/cron.d/friendica
 
 # friendica needs write access to /tmp
-sudo chmod 777 /tmp
+chmod 777 /tmp