Pixelfed
Updated 19 Mai 2020
- Introduction
- Préparation d'un contenant LXC
- Installation et configuration de PostgreSQL
- Installation et configuration de Nginx
- Installer Pixelfed
- Configuration HTTPS
- Lancer le démon PixelFed pour effectuer des tâches d'arrière-plan
- Ajouter un nouvel utilisateur
- Prise en charge des paramètres vidéo
- Actualiser la configuration
- Mettre à jour PixelFed
Introduction
PixelFed est une plateforme de partage d'images basée sur le protocole ActivityPub.
Préparation d'un contenant LXC
Nous vous recommandons d'installer Pixelfed dans un conteneur séparé et de le configurer conformément au manuel.
Installation et configuration de PostgreSQL
Installez et configurez PostgreSQL selon le manuel. Remplacez la base de données dbtest avec pixelfed, et l'utilisateur test avec pixelfed.
Installation et configuration de Nginx
Installez et configurez votre serveur Nginx, puis configurez PHP-FPM conformément au manuel.
Installer Pixelfed
Voilà comment installer Pixelfed depuis le code source.
Configuration du cache
Redis implémente un service de mise en cache de la mémoire vive, basé sur une table de hachage. Pour activer Redis, installez-le d'abord en tant que paquet :
emerge dev-db/redis
Ajouter Redis au démarrage automatique et le démarrer, effectivement :
* service redis added to runlevel default
php-fpm | * Starting redis ... [ ok ]
Important
Évitez d'installer le paquet dev-php/pecl-redis
, car il risque d'interférer avec la mise en cache de Pixelfed.
Télécharger et décompresser Pixelfed
Commencez par installer les logiciels dont Pixelfed aura besoin :
emerge -a dev-php/composer
Téléchargez le code source depuis Git :
mkdir -p /var/calculate/www
cd /var/calculate/www
git clone -b dev https://github.com/pixelfed/pixelfed.git pixelfed
cd pixelfed
Attribuez les privilèges nécessaires et passez à nginx
:
chown -R nginx. .
su nginx -s /bin/bash
Copiez le fichier .env.example
dans .env
:
cp .env.example .env
Configurez Pixelfed en remplaçant ~pixelfed.example.org~~ par l'adresse de votre site :
/var/calculate/www/pixelfed/.env
APP_NAME="Pixelfed Example" APP_URL=https://pixelfed.example.org APP_DOMAIN="pixelfed.example.org" ADMIN_DOMAIN="pixelfed.example.org" SESSION_DOMAIN="pixelfed.example.org" DB_CONNECTION=pgsql DB_HOST=localhost DB_PORT=5432 DB_DATABASE=pixelfed DB_USERNAME=pixelfed DB_PASSWORD=pixelfedpass MAIL_DRIVER=smtp MAIL_HOST=smtp.example.org MAIL_PORT=25 MAIL_FROM_ADDRESS="pixelfed@example.org" MAIL_FROM_NAME="Pixelfed"
Ajoutez le paramètre suivant pour finaliser l'enregistrement :
/var/calculate/www/pixelfed/.env
OPEN_REGISTRATION=false
Pour se connecter à l'ActivePub distribué, ajoutez les paramètres suivants :
/var/calculate/www/pixelfed/.env
ACTIVITY_PUB=true REMOTE_FOLLOW=true ACTIVITYPUB_INBOX=true ACTIVITYPUB_SHAREDINBOX=true
Pour activer l'API mobile, procédez comme suit :
/var/calculate/www/pixelfed/.env
OAUTH_ENABLED=true
Installez les composants nécessaires, créez une clé et actualisez le cache :
composer install --no-ansi --no-interaction --no-progress --no-scripts --optimize-autoloader
php artisan key:generate
php artisan horizon:install
php artisan passport:keys
php artisan config:cache
php artisan route:cache
php artisan migrate --force
php artisan horizon:purge
php artisan storage:link
php artisan cache:clear
php artisan optimize:clear
php artisan optimize
exit
Configurer Nginx pour PixelFed
Configurez Nginx pour pixelfed.example.org :
upstream php-handler { server unix:/run/php-fpm.socket; } server { listen 80 server_name pixelfed.example.org; root /var/calculate/www/pixelfed/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi.conf; fastcgi_pass php-handler; fastcgi_index index.php; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
Configurer PHP-FPM
Configurez les variables d'environnement PHP-FPM :
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from ; the current environment. ; Default Value: clean env env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
Redémarrez Nginx et PHP-FPM pour valider :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx | * Checking nginx configuration ... [ ok ] nginx | * Refreshing nginx configuration ... [ ok ]
php-fpm | * Stopping PHP FastCGI Process Manager ... [ ok ] php-fpm | * Testing PHP FastCGI Process Manager config ... [ ok ] php-fpm | * Starting PHP FastCGI Process Manager ... [ ok ]
Configuration HTTPS
Obtenir le certificat Let's Encrypt
Procurez-vous un certificat de domaine pixelfed.example.org pour Nginx en suivant les instructions du manuel.
Activer la prise en charge de HTTPS dans Nginx
Configurez Nginx conformément au manuel, pour assurer la prise en charge le protocole HTTPS.
Configuration HTTPS pour PixelFed
Configurez Nginx pour pixelfed.example.org :
upstream php-handler { server unix:/run/php-fpm.socket; } server { listen 80; server_name pixelfed.example.org; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name pixelfed.example.org; root /var/calculate/www/pixelfed/public; ssl_certificate /etc/nginx/ssl/pixelfed.example.org/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/pixelfed.example.org/privkey.pem; include ssl.conf; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi.conf; fastcgi_pass php-handler; fastcgi_index index.php; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
Lancer le démon PixelFed pour effectuer des tâches d'arrière-plan
Créez un script OpenRC pour assurer la gestion de PixelFed :
#!/sbin/openrc-run # Copyright 2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="PixelFed-Horizon daemon" description="PixelFed-Horizon daemon" pidfile="/run/pixelfed-horizon.log" command_user=nginx output_log="/var/log/pixelfed-horizon.log" error_log="/var/log/pixelfed-horizon.log" directory="/var/calculate/www/pixelfed" command="php" command_args="artisan horizon" command_background=true depend() { use net } start_pre() { checkpath -f -o nginx -m 0600 $output_log }
Définissez les autorisations de démarrage :
chmod 755 /etc/init.d/pixelfed-horizon
Lancez le démon :
/etc/init.d/pixelfed-horizon start
Ajoutez pixelfed à la liste de démarrage automatique :
rc-update add pixelfed-horizon
Ajouter un nouvel utilisateur
Si vous avez désactivé l'enregistrement sur le site, utilisez la commande suivante pour ajouter votre utilisateur :
su nginx -s /bin/bash
cd /var/calculate/www/pixelfed
Creating a new user... Name: > Administrator Username: > admin Email: > admin@example.org Password: > Confirm Password: > Make this user an admin? (yes/no) [no]: > yes Manually verify email address? (yes/no) [no]: > yes Are you sure you want to create this user? (yes/no) [no]: > yes Created new user!
Note
Si vous devez ajouter un nouvel utilisateur avec vérification de l'adresse e-mail, répondez non à la question Vérifier manuellement l'adresse e-mail.
Prise en charge des paramètres vidéo
Installez l'ensemble des décodeurs vidéo :
emerge media-video/ffmpeg
Activez la prise en charge du format video/mp4
:
/var/calculate/www/pixelfed/.env
MEDIA_TYPES='image/jpeg,image/png,image/gif,video/mp4'
Actualisez le cache des paramètres de Pixelfed :
su nginx -s /bin/bash
cd /var/calculate/www/pixelfed
php artisan config:cache
Augmentez la taille maximale de téléchargement pour PHP :
... ; Maximum size of POST data that PHP will accept. ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 1G ... ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 1G ...
Augmentez la taille maximale de téléchargement pour Nginx :
/etc/nginx/sites-enabled/pixfield.calculate.social.conf
...
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
client_max_body_size 10G;
...
Redémarrez Nginx et PHP-FPM :
/etc/init.d/nginx restart
/etc/init.d/php-fpm restart
Actualiser la configuration
Réinitialisez le cache chaque fois que vous modifiez les paramètres dans /var/calculate/www/pixelfed/.env. Pour ce faire :
su nginx -s /bin/bash
cd /var/calculate/www/pixelfed
php artisan config:cache
php artisan route:cache
exit
su nginx -s /bin/bash
cd /var/calculate/www/pixelfed
php artisan passport:keys
echo OAUTH_ENABLED=true >>/var/calculate/www/pixelfed/.env
php artisan config:cache
php artisan route:cache
exit
Mettre à jour PixelFed
Récupérez le code source le plus récent de PixelFed :
su nginx -s /bin/bash
cd /var/calculate/www/pixelfed
git pull
Mettez à jour le code source, ainsi que tous ses composants :
composer install --no-ansi --no-interaction --no-progress --no-scripts --optimize-autoloader
Si ce n'est pas encore fait, créez des clés OAUTH :
php artisan passport:keys
Actualisez les paramètres et la base de données :
php artisan config:cache
php artisan route:cache
php artisan migrate --force
php artisan horizon:purge
php artisan storage:link
exit
Redémarrez PHP-FPM :
/etc/init.d/php-fpm restart