Pixelfed Install

This is a setup using an Ubuntu 18.04 Droplet at DigitalOcean. These are just my instructions for myself after trying to get PixelFed running a few times – and finally getting it running in decent shape. It’s not very clean, it relied on a lot of Googling for stuff.

For the most part, this creates a running PixelFed instance, the only thing that I found that is still broken is the registration. When I register my first user, after clicking register, it results in an error. Reloading the page gets me to the page to send the email confirmation.

Since I am bringing this up as a new droplet, I run (yes, bad habit) everything as root unless specified.

The files needed can be found in this git repo: https://github.com/ultramookie/pixelfed-confs

Requirements

apt-get -y install php7.2-fpm php7.2-gd php7.2-mbstring php-imagick  php7.2-mysql mysql-server-5.7 redis-server graphicsmagick php-json php-services-json jpegoptim nginx-full optipng pngquant gifsicle composer php7.2-bcmath zip unzip

mysql Stuff

mysql -e 'create database pixels'

mysql -e "grant all on pixels.* to 'pixels'@'localhost' identified by 'INSERT_PASSWORD'"

nginx Stuff

This SSL certificate stuff will depend on you and if you have certs. I use origin certs from Cloudflare and have Cloudflare do SSL termination for me.

mv yourcert.pem /etc/ssl/certs/

mv yourcert.key /etc/ssl/private/

You’ll need to edit the pixelfed-site.conf file to adjust the SSL certificate lines in there before doing the next step.

mv pixelfed-site.conf /etc/nginx/sites-available/

ln -s /etc/nginx/sites-available/pixelfed-site.conf /etc/nginx/sites-enabled/pixelfed-site.conf

rm /etc/nginx/sites-enabled/default

service nginx restart

php Stuff

mv pixelfed-fpm.conf /etc/php/7.2/fpm/pool.d/

service php7.2-fpm restart

Get Ready

adduser pixelfed

usermod -aG pixelfed www-data

git clone https://github.com/dansup/pixelfed.git

cd pixelfed

Run as pixelfed (sudo - pixelfed)

composer install

cp .env.example .env

Conf Editing

Changed to production

APP_ENV=production

Change to your domain

APP_URL=http://domain.tld

ADMIN_DOMAIN="domain.tld"

APP_DOMAIN="domain.tld"

The default config has mail going to log. Need to change that.

MAIL_DRIVER=smtp

Running Init

Run this stuff as pixelfed (sudo - pixelfed)

php artisan key:generate

php artisan storage:link

php artisan migrate

Horizon Service

mv pixelfed-horizon.service /etc/systemd/system/

systemctl enable pixelfed-horizon

service pixelfed-horizon start

Becoming an Admin

I cheated and need to find out if there’s a better way of doing this. But, I made my user (the first one registered) and admin by connecting to the mysql database directly and setting the is_admin to 1.

update users set is_admin='1' where id='1';