|
#!/bin/bash |
|
|
|
# Helper function for making passwords |
|
make_password () { |
|
PASS=`< /dev/urandom tr -dc A-Za-z0-9 | head -c28;` |
|
} |
|
|
|
if [ "$(whoami)" != "root" ]; then |
|
SUDO=sudo |
|
fi |
|
|
|
cd ~ |
|
|
|
# Install sury.org package source |
|
${SUDO} apt-get update |
|
${SUDO} apt-get -y install apt-transport-https lsb-release ca-certificates |
|
${SUDO} wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg |
|
${SUDO} sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' |
|
${SUDO} apt-get update |
|
|
|
# Install Erlang Solutions repo |
|
${SUDO} wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb |
|
${SUDO} apt-get update |
|
# Install Elixir |
|
${SUDO} apt-get install -y erlang-dev erlang-xmerl erlang-parsetools elixir |
|
|
|
# Install Node.js 10.x |
|
${SUDO} wget -qO- https://deb.nodesource.com/setup_10.x | sudo -E bash - |
|
${SUDO} apt-get install -y nodejs build-essential |
|
|
|
# Install Git, htop, bmon, mc and misc tools required by pixelfed |
|
${SUDO} apt-get install -y git htop bmon mc pngquant optipng jpegoptim gifsicle |
|
|
|
# Install PHP 7.2 FPM + additional extensions requiredd by pixelfed |
|
${SUDO} apt-get install -y php7.2-fpm php7.2 php7.2-common php7.2-cli php7.2-gd php7.2-mbstring php7.2-xml php7.2-json php7.2-bcmath php7.2-pgsql php7.2-curl |
|
|
|
# Install Nginx, Redis and Postgres |
|
${SUDO} apt-get install -y nginx redis-server postgresql |
|
|
|
# Configure Redis supervised by systemd |
|
${SUDO} sed -i "s/supervised no/supervised systemd/" /etc/redis/redis.conf |
|
${SUDO} systemctl restart redis |
|
|
|
# Install svgo required by pixelfed |
|
${SUDO} npm install -g svgo |
|
|
|
# Install composer |
|
${SUDO} curl -s https://getcomposer.org/installer | php |
|
${SUDO} mv composer.phar /usr/local/bin/composer |
|
${SUDO} chmod +x /usr/local/bin/composer |
|
|
|
# Create pixelfed user/group |
|
${SUDO} groupadd pixelfed |
|
${SUDO} useradd -g pixelfed pixelfed |
|
|
|
# Create pixelfed php pool |
|
${SUDO} cp ./pixelfed.fpm.conf /etc/php/7.2/fpm/pool.d/pixelfed.conf |
|
${SUDO} systemctl restart php7.2-fpm |
|
|
|
# Create pixelfed vhost directory |
|
${SUDO} mkdir /var/www/vhosts |
|
${SUDO} mkdir /var/www/vhosts/pixelfed |
|
${SUDO} mkdir /var/www/vhosts/pixelfed/httpdocs |
|
${SUDO} mkdir /var/www/vhosts/pixelfed/logs |
|
|
|
# Install pixelfed into vhost |
|
${SUDO} git clone https://github.com/dansup/pixelfed.git /var/www/vhosts/pixelfed/httpdocs |
|
${SUDO} chown pixelfed:pixelfed /var/www/vhosts/pixelfed/httpdocs/ -R |
|
${SUDO} su pixelfed -c 'cd /var/www/vhosts/pixelfed/httpdocs && composer install' |
|
${SUDO} su pixelfed -c 'cp /var/www/vhosts/pixelfed/httpdocs/.env.example /var/www/vhosts/pixelfed/httpdocs/.env' |
|
${SUDO} su pixelfed -c 'cd /var/www/vhosts/pixelfed/httpdocs && php artisan key:generate' |
|
${SUDO} su pixelfed -c 'cd /var/www/vhosts/pixelfed/httpdocs && php artisan storage:link' |
|
|
|
# Create pixelfed database user and database |
|
make_password |
|
sudo -u postgres psql --command "CREATE ROLE pixelfed PASSWORD '${PASS}' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN" |
|
sudo -u postgres createdb -O pixelfed pixelfed_prod |
|
|
|
${SUDO} sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=pgsql/" /var/www/vhosts/pixelfed/httpdocs/.env |
|
${SUDO} sed -i "s/DB_DATABASE=.*/DB_DATABASE=pixelfed_prod/" /var/www/vhosts/pixelfed/httpdocs/.env |
|
${SUDO} sed -i "s/DB_USERNAME=.*/DB_USERNAME=pixelfed/" /var/www/vhosts/pixelfed/httpdocs/.env |
|
${SUDO} sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${PASS}/" /var/www/vhosts/pixelfed/httpdocs/.env |
|
${SUDO} sed -i "s/DB_PORT=.*/DB_PORT=5432/" /var/www/vhosts/pixelfed/httpdocs/.env |
|
|
|
${SUDO} su pixelfed -c 'cd /var/www/vhosts/pixelfed/httpdocs && php artisan migrate' |
|
|
|
# Create pleroma user/group |
|
${SUDO} groupadd pleroma |
|
${SUDO} useradd -g pleroma pleroma |
|
|
|
# Create pleroma vhost directory |
|
${SUDO} mkdir /var/www/vhosts/pleroma |
|
${SUDO} mkdir /var/www/vhosts/pleroma/httpdocs |
|
${SUDO} mkdir /var/www/vhosts/pleroma/logs |
|
|
|
${SUDO} git clone https://git.pleroma.social/pleroma/pleroma.git /var/www/vhosts/pleroma/httpdocs |
|
${SUDO} chown -R pleroma:pleroma /var/www/vhosts/pleroma/httpdocs |
|
|
|
# Lets Encrypt |
|
${SUDO} apt-get install -y python-certbot-nginx -t stretch-backports |