PHP

Ajouter les sources du dépôt PHP

sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo tee /etc/apt/sources.list.d/php.sources <<EOF
Types: deb
URIs: https://packages.sury.org/php/
Suites: $(lsb_release -sc)
Components: main
Signed-By: /usr/share/keyrings/debsuryorg-archive-keyring.gpg
EOF
sudo apt update

Installer PHP et son module Apache

sudo apt install -y php8.5-cli libapache2-mod-php8.5

Installer les modules supplémentaires requis par Pixelfed

sudo apt install -y php8.5-{bcmath,ctype,curl,exif,gd,iconv,imagick,intl,mbstring,mysqli,redis,tokenizer,xml,zip}

PHP-FPM

sudo apt install -y php8.5-fpm

Configurer un pool

sudo cp /etc/php/8.5/fpm/pool.d/www.conf /etc/php/8.5/fpm/pool.d/pixelfed.conf
sudo nano /etc/php/8.5/fpm/pool.d/pixelfed.conf

Modifier les lignes non commentées

; pool name ('www' here)
[pixelfed]
; Unix user/group of the child processes
user = pixelfed
group = pixelfed

; The address on which to accept FastCGI requests.
listen = /run/php/pixelfed.sock
; Set permissions for unix socket, if one is used.
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
pm.max_children = 4

Éditer le fichier de configuration PHP

sudo nano /etc/php/8.5/apache2/php.ini

Modifier les valeurs de ces paramètres

; Maximum execution time of each script, in seconds
max_execution_time = 120

; Maximum amount of time each script may spend parsing request data
max_input_time = 120
; Maximum amount of memory a script may consume
memory_limit = 1024M
; Maximum size of POST data that PHP will accept.
post_max_size = 256M
; Maximum allowed size for uploaded files.
upload_max_filesize = 256M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 500

Imports Instagram

Ces paramètres ont une incidence sur les importations depuis Instagram. Si vous activez les importations, vous devrez définir la variable post_max_size à la taille maximale que devrait avoir une archive Instagram*, la variable upload_max_filesize à la taille maximale que devraient avoir les photos Instagram individuelles, et la variable max_file_uploads au nombre maximal de photos (et non de publications) qu'une archive Instagram devrait contenir.

Source : Pixelfed Docs

* l'archive est le fichier exporté de données personnelles envoyé par Meta, habituellement nommé instagram-user_name-YYYY-MM-DD-hash.zip

Modifier ces mêmes lignes dans la configuration de PHP-FPM

sudo nano /etc/php/8.5/fpm/php.ini

Redémarrer le service PHP-FPM

sudo systemctl restart php8.5-fpm.service

Composer

cd ~/
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
HASH=`curl -sS https://composer.github.io/installer.sig`
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Si ces commandes affichent Installer verified, installer Composer:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer