Update vagrant devbox provisioning
- run provisioning script as root - don't load friendica_test_data.sql which is outdated - install friendica and create users via console commands - install cronjob in `/etc/cron.d/friendica` and run as `www-data` user - force to have "vagrant-vbguest" insstalled. We need updated vbguest addins to correctly mount local folder - add "config.hostname" and "system.ssl_policy" values in `local.config.vagrant.php`
This commit is contained in:
parent
6ef9ccbb97
commit
dd1835d15d
3 changed files with 75 additions and 40 deletions
6
Vagrantfile
vendored
6
Vagrantfile
vendored
|
@ -34,10 +34,14 @@ Vagrant.configure(2) do |config|
|
||||||
#
|
#
|
||||||
# # Customize the amount of memory on the VM:
|
# # Customize the amount of memory on the VM:
|
||||||
vb.memory = server_memory
|
vb.memory = server_memory
|
||||||
|
|
||||||
|
unless Vagrant.has_plugin?("vagrant-vbguest")
|
||||||
|
raise 'vagrant-vbguest plugin is not installed! Install with "vagrant plugin install vagrant-vbguest"'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Enable provisioning with a shell script.
|
# Enable provisioning with a shell script.
|
||||||
config.vm.provision "shell", path: "./bin/dev/vagrant_provision.sh"
|
config.vm.provision "shell", path: "./bin/dev/vagrant_provision.sh", privileged: true
|
||||||
# run: "always"
|
# run: "always"
|
||||||
# run: "once"
|
# run: "once"
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
#!/bin/bash
|
#!/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
|
# DO NOT RUN on your physical machine as this won't be of any use
|
||||||
#and f.e. deletes your /var/www/ folder!
|
# and f.e. deletes your /var/www/ folder!
|
||||||
echo "Friendica configuration settings"
|
#
|
||||||
sudo apt-get update
|
# Run as root by vagrant
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
# Install virtualbox guest additions
|
ADMIN_NICK="admin"
|
||||||
sudo apt-get install virtualbox-guest-x11
|
ADMIN_PASSW="admin"
|
||||||
|
|
||||||
|
USER_NICK="user"
|
||||||
|
USER_PASSW="user"
|
||||||
|
|
||||||
|
##
|
||||||
|
|
||||||
|
echo "Friendica configuration settings"
|
||||||
|
apt-get update
|
||||||
|
|
||||||
#Selfsigned cert
|
#Selfsigned cert
|
||||||
echo ">>> Installing *.xip.io self-signed SSL"
|
echo ">>> Installing *.xip.io self-signed SSL"
|
||||||
|
@ -23,32 +33,32 @@ localityName=New Haven/
|
||||||
commonName=$DOMAIN/
|
commonName=$DOMAIN/
|
||||||
subjectAltName=DNS:$EXTRADOMAIN
|
subjectAltName=DNS:$EXTRADOMAIN
|
||||||
"
|
"
|
||||||
sudo mkdir -p "$SSL_DIR"
|
mkdir -p "$SSL_DIR"
|
||||||
sudo openssl genrsa -out "$SSL_DIR/xip.io.key" 4096
|
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
|
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"
|
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
|
#Install apache2
|
||||||
echo ">>> Installing Apache2 webserver"
|
echo ">>> Installing Apache2 webserver"
|
||||||
sudo apt-get install -y apache2
|
apt-get install -qq apache2
|
||||||
sudo a2enmod rewrite actions ssl
|
a2enmod rewrite actions ssl
|
||||||
sudo cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost
|
cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost
|
||||||
sudo chmod guo+x /usr/local/bin/vhost
|
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
|
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
|
a2dissite 000-default
|
||||||
sudo service apache2 restart
|
service apache2 restart
|
||||||
|
|
||||||
#Install php
|
#Install php
|
||||||
echo ">>> Installing PHP7"
|
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
|
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
|
||||||
sudo systemctl restart apache2
|
systemctl restart apache2
|
||||||
|
|
||||||
#Install mysql
|
#Install mysql
|
||||||
echo ">>> Installing Mysql"
|
echo ">>> Installing Mysql"
|
||||||
sudo debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root"
|
debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root"
|
||||||
sudo debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root"
|
debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root"
|
||||||
sudo apt-get install -qq mariadb-server
|
apt-get install -qq mariadb-server
|
||||||
# enable remote access
|
# enable remote access
|
||||||
# setting the mysql bind-address to allow connections from everywhere
|
# 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
|
sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
|
||||||
|
@ -66,41 +76,60 @@ $MYSQL -uroot -proot -e "FLUSH PRIVILEGES"
|
||||||
systemctl restart mysql
|
systemctl restart mysql
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#configure rudimentary mail server (local delivery only)
|
#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'.
|
#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/mailname string friendica.local"
|
||||||
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'"
|
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'"
|
||||||
sudo apt-get install -y postfix mailutils libmailutils-dev
|
apt-get install -qq postfix mailutils libmailutils-dev
|
||||||
sudo echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && sudo newaliases
|
echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && newaliases
|
||||||
|
|
||||||
# Friendica needs git for fetching some dependencies
|
# Friendica needs git for fetching some dependencies
|
||||||
sudo apt-get install -y git
|
echo ">>> Installing git"
|
||||||
|
apt-get install -qq git
|
||||||
|
|
||||||
#make the vagrant directory the docroot
|
#make the vagrant directory the docroot
|
||||||
sudo rm -rf /var/www/
|
echo ">>> Symlink /var/www to /vagrant"
|
||||||
sudo ln -fs /vagrant /var/www
|
rm -rf /var/www/
|
||||||
|
ln -fs /vagrant /var/www
|
||||||
|
|
||||||
# install deps with composer
|
# install deps with composer
|
||||||
sudo apt install unzip
|
echo ">>> Installing php requirements"
|
||||||
|
apt install unzip
|
||||||
cd /var/www
|
cd /var/www
|
||||||
sudo -u www-data php bin/composer.phar install
|
php bin/composer.phar install
|
||||||
|
|
||||||
# initial config file for friendica in vagrant
|
|
||||||
cp /vagrant/mods/local.config.vagrant.php /vagrant/config/local.config.php
|
echo ">>> Setup Friendica"
|
||||||
|
|
||||||
# copy the .htaccess-dist file to .htaccess so that rewrite rules work
|
# copy the .htaccess-dist file to .htaccess so that rewrite rules work
|
||||||
cp /vagrant/.htaccess-dist /vagrant/.htaccess
|
cp /vagrant/.htaccess-dist /vagrant/.htaccess
|
||||||
|
|
||||||
# create the friendica database
|
# create the friendica database
|
||||||
echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot
|
echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot
|
||||||
# import test database
|
# import test database (disabled because too old)
|
||||||
$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql
|
#$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"
|
||||||
|
|
||||||
|
# set the admin
|
||||||
|
bin/console config config admin_email ""$ADMIN_NICK@friendica.local""
|
||||||
|
|
||||||
|
|
||||||
# create cronjob - activate if you have enough memory in you dev VM
|
# create cronjob - activate if you have enough memory in you dev VM
|
||||||
echo "*/10 * * * * cd /vagrant; /usr/bin/php bin/worker.php" >> friendicacron
|
# cronjob runs as www-data user
|
||||||
sudo crontab friendicacron
|
echo ">>> Installing cronjob"
|
||||||
sudo rm friendicacron
|
echo "*/10 * * * * www-data cd /vagrant; /usr/bin/php bin/worker.php" >> /etc/cron.d/friendica
|
||||||
|
|
||||||
# friendica needs write access to /tmp
|
# friendica needs write access to /tmp
|
||||||
sudo chmod 777 /tmp
|
chmod 777 /tmp
|
||||||
|
|
|
@ -29,6 +29,7 @@ return [
|
||||||
// ****************************************************************
|
// ****************************************************************
|
||||||
|
|
||||||
'config' => [
|
'config' => [
|
||||||
|
'hostname' => 'friendica.local',
|
||||||
'admin_email' => 'admin@friendica.local',
|
'admin_email' => 'admin@friendica.local',
|
||||||
'sitename' => 'Friendica Social Network',
|
'sitename' => 'Friendica Social Network',
|
||||||
'register_policy' => \Friendica\Module\Register::OPEN,
|
'register_policy' => \Friendica\Module\Register::OPEN,
|
||||||
|
@ -38,5 +39,6 @@ return [
|
||||||
'default_timezone' => 'UTC',
|
'default_timezone' => 'UTC',
|
||||||
'language' => 'en',
|
'language' => 'en',
|
||||||
'basepath' => '/vagrant',
|
'basepath' => '/vagrant',
|
||||||
|
'ssl_policy' => \Friendica\App\BaseURL::SSL_POLICY_SELFSIGN,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in a new issue