Comment gérer un réseau social distribué open-source avec une diaspora sous CentOS 7

introduction

Diaspora est un réseau social distribué à source ouverte.

Il diffère de la plupart des autres réseaux sociaux car il est décentralisé - un véritable réseau sans base centrale. Il existe des serveurs (appelés pods) dans le monde entier, chacun contenant les données des utilisateurs qui ont choisi de s’enregistrer avec lui. Ces pods communiquent entre eux de manière transparente afin que vous puissiez vous inscrire à n’importe quel pod et communiquer librement avec vos contacts, où qu’ils se trouvent sur le réseau. Vous pouvez en savoir plus sur la page de la diaspora.

Dans ce tutoriel, nous allons configurer et configurer un module Diaspora. Entre autres choses, vous apprendrez:

  • Comment configurer une application Rails (Diaspora) pour la production

  • Comment configurer MariaDB avec la diaspora

  • Comment configurer Nginx en tant que serveur proxy inverse pour la diaspora

  • Meilleures pratiques pour une configuration SSL pour Nginx

  • Comment écrire des fichiers unitaires systemd personnalisés à utiliser dans une application Rails

  • Pour les personnes sensibles à la sécurité, il y a une section bonus sur la façon de configurer SELinux pour bien jouer avec la diaspora.

  • Déviations par rapport au guide d’installation officiel de la diaspora *

Les guides d’installation de la diaspora wiki suggèrent l’utilisation de Ruby Version Manager. Bien que vous puissiez le faire, nous allons utiliser à la place Ruby, un package système. De cette façon, nous évitons d’installer Ruby à partir de la source et d’avoir à nous soucier d’une autre dépendance comme RVM.

Le guide officiel suggère également l’utilisation de + script / server +, un script qui lance + unicorn + et + sidekiq +, deux applications indispensables à Diaspora. Puisque CentOS 7 utilise systemd, nous allons plutôt écrire nos propres fichiers init pour ces services.

Conditions préalables

Veuillez remplir ces conditions préalables avant de commencer le tutoriel.

  • CentOS 7 avec 1 Go de RAM + La RAM minimale requise pour une petite communauté est de * 1 Go *. Nous allons donc utiliser le * 1 Go / 1 CPU * Droplet.

  • utilisateur sudo + La plupart des commandes ci-dessous nécessitent des privilèges root. Consultez le guide how pour ajouter des utilisateurs pour ajouter votre utilisateur et donner il privilèges sudo. Ce compte utilisateur viendra s’ajouter au compte utilisateur * diaspora * que nous créerons plus tard, et sous lequel les services de Diaspora fonctionneront avec des privilèges plus limités.

  • Certificat SSL + Bien que Diaspora puisse s’exécuter sans certificat SSL, le mécanisme de connexion de Diaspora à d’autres pods nécessite un certificat SSL valide. Pour la production, vous devez disposer d’un payed SSL certificate. Nous avons juste besoin des deux fichiers de cert créés dans cet article (public, privé). Vous pouvez donc ignorer la partie relative à la configuration du serveur Web de ce didacticiel. Nous le ferons nous-mêmes. + Alternativement, à des fins de test, vous pouvez générer un certificat auto-signé. Voir ce tutoriel pour plus de détails, ou simplement pour l’exécuter. cette commande depuis votre répertoire personnel:

openssl req \
  -newkey rsa:2048 -nodes -keyout ssl.key \
  -x509 -days 365 -out ssl.crt

Étape 1 - Installer les utilitaires

Installez quelques paquets pour les utilitaires qui vous seront utiles plus tard:

sudo yum install deltarpm yum-cron vim

Puis mettez à jour notre système:

sudo yum update

Étape 2 - Activer le référentiel EPEL

EPEL signifie Extra Packages for Enterprise Linux et contient certains packages à installer qui ne font pas partie des référentiels CentOS de base.

Activez-le en installant le paquetage + epel-release + et en recherchant les mises à jour de paquetages +:

sudo yum install epel-release
sudo yum update

Si vous êtes invité à importer la clé EPEL 7 gpg comme indiqué ci-dessous, répondez oui:

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <[email protected]>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-5.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
 Is this ok [y/N]:

Étape 3 - Installation des packages pour Ruby et C

Diaspora et ses gemmes ayant des extensions C natives ont besoin des packages suivants.

Installez les paquets:

sudo yum install git ruby ruby-devel libxslt-devel libxml2-devel gcc gcc-c++ automake net-tools libcurl-devel libffi-devel make redis nodejs ImageMagick-devel

Redis est un magasin de données de valeur de clé open source que Diaspora utilise comme base de données. Maintenant que Redis est installé, configurons-le pour qu’il soit activé au démarrage et démarrez le service:

sudo systemctl enable redis
sudo systemctl start redis

Étape 4 - Ajouter un utilisateur dédié à la diaspora

Créez un compte utilisateur pour exécuter Diaspora. Vous pouvez nommer ce compte comme bon vous semble, mais ce tutoriel supposera que cet utilisateur s’appelle * diaspora *.

sudo useradd diaspora

Étape 5 - Configurer le pare-feu

La configuration et le serrage du pare-feu revêtent une grande importance lors de la configuration d’un environnement de production. L’outil que nous allons utiliser est + firewalld +, ce qui simplifie les choses par rapport aux commandes `` iptables + `pures.

Tout d’abord, démarrez le service + firewalld + et activez-le pour démarrer au démarrage:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Maintenant, nous allons autoriser + ssh + sur le port + 22 +, + http sur le port` + 80 + , + https` sur le port + 443 + et + smtp sur le port` +25 + `. En tant qu’utilisateur sudo, ajoutez ces services:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=smtp

Rechargez les règles du pare-feu:

sudo firewall-cmd --reload

Pour plus d’informations sur l’utilisation de + firewalld +, consultez les Etapes supplémentaires recommandées pour les nouveaux serveurs CentOS 7 Didacticiel.

Étape 6 - Installez et sécurisez MariaDB

La prochaine étape importante consiste à mettre en place une base de données pour la diaspora. Dans ce didacticiel, nous utiliserons MariaDB, même si nous inclurons quelques informations pour PostgreSQL tout au long du didacticiel.

Installez les packages requis:

sudo yum install mariadb-server mariadb-devel

Assurez-vous que MariaDB est démarré et activé au démarrage:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Sécurisez l’installation de MariaDB en exécutant la commande suivante:

sudo mysql_secure_installation

Répondez aux questions comme indiqué ci-dessous et ajoutez un mot de passe root fort lorsque vous y êtes invité:

Enter current password for root (enter for none):
Set root password? [Y/n]
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

Étape 7 - Créer un utilisateur et une base de données de la diaspora

Ensuite, nous allons nous connecter à MariaDB pour créer l’utilisateur * diaspora *. Lorsque vous y êtes invité, entrez le mot de passe * root * que vous avez créé ci-dessus:

mysql -u root -p

Créez un utilisateur pour Diaspora. Remplacez ++ dans la commande ci-dessous par un mot de passe réel. Cela ne devrait pas être identique au mot de passe * racine * que vous avez fourni lors de l’installation de + mysql_secure_installation +.

CREATE USER 'diaspora'@'localhost' IDENTIFIED BY '';

Créez la base de données de production de Diaspora:

CREATE DATABASE IF NOT EXISTS `diaspora_production` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_bin`;

Accordez à l’utilisateur MariaDB * diaspora * les autorisations nécessaires sur la base de données:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `diaspora_production`.* TO 'diaspora'@'localhost';

Quittez la session de base de données.

\q

Essayez de vous connecter à la nouvelle base de données avec l’utilisateur * diaspora * (utilisez le mot de passe que vous avez entré pour + IDENTIFIED BY '' + ci-dessus).

mysql -u diaspora -p -D diaspora_production

Vous devriez maintenant voir l’invite: + MariaDB [production de diaspora]> +. Quittez la session + base de données en entrant:

\q

Nous avons maintenant terminé l’installation de la base de données MariaDB.

Pour plus de sécurité, consultez l’article détaillé sur Comment sécuriser MySQL et MariaDB Bases de données.

Ensuite, nous allons récupérer le code source de la diaspora et le configurer pour l’exécuter sur votre VPS.

Étape 8 - Installer Bundler

Bundler est le gestionnaire de paquets pour les gemmes Ruby. Nous allons l’installer pour être disponible dans le monde entier.

sudo gem install bundler

Puisque l’exécutable + bundle + est installé dans + / usr / local / bin / bundle +, créez un lien symbolique afin de l’inclure dans le + PATH + des utilisateurs.

sudo ln -sf /usr/local/bin/bundle /usr/bin/bundle

Étape 9 - Récupérer le code source de la diaspora

La diaspora est développée dans trois branches principales. + stable + contient du code considéré comme stable et devant être publié, + master + contient les versions marquées stables que nous allons utiliser, tandis que + develop + contient le dernier code avec des bugs possibles.

Changez pour le compte utilisateur * diaspora *.

sudo su - diaspora

Découvrez la branche principale. Au moment d’écrire ces lignes, il contient la version de la diaspora + 0.5.1.1 +.

git clone -b master https://github.com/diaspora/diaspora.git

Étape 10 - Configurer la base de données de la diaspora

Maintenant changez dans le répertoire de travail.

cd ~/diaspora/

Copiez l’exemple de fichier de configuration de base de données et ouvrez + database.yml + avec votre éditeur favori.

cp config/database.yml.example config/database.yml
vim config/database.yml

Nous allons maintenant éditer le fichier de configuration pour qu’il corresponde aux paramètres de la base de données créés précédemment.

Editez les toutes premières lignes où l’adaptateur + mysql2 + est défini. (MariaDB est un remplacement instantané de MySQL.) Remplacez * root * par * diaspora * et remplacez le signe ++ par le mot de passe de l’utilisateur de la base de données * diaspora * que vous avez créé précédemment. Ne supprimez pas les guillemets. Lorsque vous avez terminé, enregistrez et fermez le fichier.

mysql: &mysql
 adapter: mysql2
 host: "localhost"
 port: 3306
 username: ""
 password: ""
 encoding: utf8mb4
 collation: utf8mb4_bin

Étape 11 - Configurer les paramètres de base de la diaspora

Commençons par copier l’exemple de fichier de configuration.

cp config/diaspora.yml.example config/diaspora.yml

Vous devrez modifier quelques paramètres dans ce fichier pour que Diaspora fonctionne correctement. Lisez attentivement l’ensemble du fichier pour comprendre ce qu’il fait et comment. C’est assez explicite, mais examinons quelques-uns des paramètres les plus cruciaux.

Ouvrez le fichier dans un éditeur de texte.

vim config/diaspora.yml

Ligne 39 - Décommentez la ligne + url + afin qu’elle se présente comme suit:

url: ""

Remplacez ++ par votre propre nom de domaine. L’URL que vous utilisez ici sera codé en dur dans la base de données, alors assurez-vous de son exactitude. * Lisez les commentaires au-dessus de cette ligne de configuration pour plus de détails *.

Ligne 47 - Décommentez la ligne + certificate_authorities + afin qu’elle se présente comme suit:

certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt'

Ligne 166 - Décommentez la ligne + rails_environment + et remplacez + développement + par ` + production pour obtenir le résultat suivant:

rails_environment: ''

Enregistrez et fermez le fichier.

Ce sont les changements minimum requis pour avoir un pod de la diaspora en état de marche. Il existe de nombreuses autres options à explorer et à configurer selon vos préférences, telles que la connexion à d’autres réseaux sociaux (Twitter, WordPress, Tumblr, Facebook). Veuillez lire le fichier et apporter les modifications souhaitées à la configuration.

Étape 12 - Installer Gems et configurer la base de données

Installez les gems nécessaires, configurez la base de données et précompilez les actifs.

Assurez-vous que vous êtes dans le bon répertoire:

cd /home/diaspora/diaspora/

Tout d’abord, nous demandons à la gem nokogiri d’utiliser la bibliothèque système libxm2 que nous avions précédemment installée:

bundle config build.nokogiri --use-system-libraries

Ensuite, utilisez bundler pour installer les gems nécessaires:

RAILS_ENV=production bin/bundle install --without test development --deployment

Configurez la base de données:

RAILS_ENV=production bin/rake db:create db:schema:load

Précompiler les actifs:

RAILS_ENV=production bin/rake assets:precompile

À ce stade, vous pouvez laisser le compte utilisateur * diaspora * et revenir à l’utilisateur sudo que vous avez créé en suivant les Conditions préalables de ce didacticiel.

exit

Étape 13 - Configurer les services Diaspora systemd

La diaspora comprend deux services principaux devant être gérés:

  • Licorne, le serveur d’applications

  • sidekiq, pour le traitement des travaux en arrière-plan

Un script est fourni pour ce cas, qui réside dans + script / server +, mais nous utiliserons plutôt systemd. systemd est le système init utilisé dans CentOS 7.

Pour une meilleure compréhension du fonctionnement de systemd, lisez les articles suivants:

Créer le répertoire tmpfiles

Créez le répertoire qui contiendra le socket + unicorn + Unix.

sudo mkdir /run/diaspora

Changez de propriétaire en utilisateur * diaspora * et définissez les autorisations.

sudo chown diaspora:diaspora /run/diaspora
sudo chmod 750 /run/diaspora

Les répertoires + / run + et + / var / run + étant volatils, le répertoire + / run / diaspora + que nous venons de créer ne survivra pas au redémarrage du système. Avec systemd, nous pouvons utiliser tmpfiles pour conserver ce répertoire entre les redémarrages.

Ouvrez + / etc / tmpfiles.d / diaspora.conf + pour le modifier.

sudo vim /etc/tmpfiles.d/diaspora.conf

Collez dans la ligne suivante:

/etc/tmpfiles.d/diaspora.conf

d /run/diaspora 0750 diaspora diaspora - -

Le format de configuration est une ligne par chemin, contenant les champs type, chemin, mode, propriété, âge et argument. Vous pouvez en savoir plus sur + tmpfiles.d + sur son official web page ou sa page de manuel.

Licorne

Nous allons d’abord éditer + diaspora.yml + pour que le service écoute un socket Unix. Nous allons revenir à l’utilisateur diaspora pour cela.

sudo su - diaspora

Ouvrez le fichier de configuration pour le modifier:

vim /home/diaspora/diaspora/config/diaspora.yml

Décommentez la ligne 157 pour lire comme suit:

/home/diaspora/diaspora/config/diaspora.yml

listen: 'unix:/run/diaspora/diaspora.sock'

Enregistrez et quittez le fichier.

Revenez maintenant à votre utilisateur sudo.

su -

Créez le fichier + unicorn.service +.

sudo vim /etc/systemd/system/diaspora-unicorn.service

Collez exactement le contenu suivant pour créer le script. N’oubliez pas de consulter les liens précédents sur systemd si vous avez besoin d’aide pour comprendre le contenu de ce fichier:

/etc/systemd/system/diaspora-unicorn.service

[Unit]
Description=Diaspora Unicorn Server
Requires=redis.service
After=redis.service network.target

[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-unicorn
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres

PIDFile=/run/diaspora/unicorn.pid
Restart=always

CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true
NoNewPrivileges=true

ExecStart=/usr/bin/bundle exec "unicorn_rails -c config/unicorn.rb -E production"

[Install]
WantedBy=multi-user.target

Démarrez le service de licorne et activez-le au démarrage.

sudo systemctl start diaspora-unicorn
sudo systemctl enable diaspora-unicorn

Maintenant, vérifiez le statut du service:

systemctl status diaspora-unicorn

Si tout s’est bien passé, cette commande devrait renvoyer une sortie similaire à celle-ci:

diaspora-unicorn.service - Diaspora Unicorn Server
Loaded: loaded (/etc/systemd/system/diaspora-unicorn.service; enabled)
Active: active (running) since Tue 2015-06-23 10:18:25 EDT; 16s ago
Main PID: 16658 (ruby)
CGroup: /system.slice/diaspora-unicorn.service
└─16658 ruby /home/diaspora/diaspora/vendor/bundle/ruby/bin/unicorn_rails -c config/unicorn.rb -E production

Sidekiq

De même avec + sidekiq +, créons le fichier + sidekiq.service +.

sudo vim /etc/systemd/system/diaspora-sidekiq.service

Coller dans ce qui suit:

/etc/systemd/system/diaspora-sidekiq.service

[Unit]
Description=Diaspora Sidekiq Worker
Requires=redis.service
After=redis.service network.target

[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-sidekiq
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres

Restart=always

CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true

ExecStart=/usr/bin/bundle exec "sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1"

[Install]
WantedBy=multi-user.target

Démarrez le service sidekiq et activez-le au démarrage:

sudo systemctl start diaspora-sidekiq
sudo systemctl enable diaspora-sidekiq

Maintenant, lancez:

systemctl status diaspora-sidekiq

Le résultat devrait ressembler à ceci:

diaspora-sidekiq.service - Diaspora Sidekiq Worker
  Loaded: loaded (/etc/systemd/system/diaspora-sidekiq.service; enabled)
  Active: active (running) since Mon 2014-12-29 08:21:45 UTC; 44s ago
Main PID: 18123 (sh)
  CGroup: /system.slice/diaspora-sidekiq.service
          ├─18123 sh -c sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1
          └─18125 sidekiq 2.17.7 diaspora [0 of 5 busy]

Étape 14 - Installez Nginx

Nginx servira de proxy inverse afin que presque toutes les demandes soient envoyées à Unicorn. Seuls les fichiers de + public / + seront directement servis par Nginx.

Commençons par installer le serveur Web.

sudo yum install nginx

Démarrez le service et activez-le au démarrage:

sudo systemctl start nginx
sudo systemctl enable nginx

Étape 15 - Donner des autorisations à Nginx

Pour que Nginx puisse accéder au dossier personnel de l’utilisateur * diaspora *, vous devez ajouter l’utilisateur * nginx * au groupe * diaspora *:

sudo usermod -a -G diaspora nginx

Enfin, nous allons assouplir les autorisations du répertoire de base de l’utilisateur * diaspora * pour permettre un accès en lecture et en exécution au groupe de la diaspora:

sudo chmod 750 /home/diaspora/

Étape 16 - Téléchargez le certificat SSL et activez le secret de transfert

Vous aurez maintenant besoin des fichiers de certificat SSL de votre autorité de certification. Dans l’exemple de configuration ci-dessous, nous utilisons + / etc / ssl / diaspora / ssl.crt + pour le certificat public et + / etc / ssl / diaspora / ssl.key + pour la clé privée.

Créez un répertoire pour stocker les fichiers de certificat.

sudo mkdir /etc/ssl/diaspora

Téléchargez ou déplacez le certificat et les fichiers de clé sur le serveur et placez-les dans le répertoire + que nous venons de créer. SFTP ou SCP peuvent être utilisés pour cela; voir https://www.digitalocean.com/community/tutorials/how-to-use-filezilla-to-transfer-and-manage-files-securely-on-your-vps&this tutorial].

Le secret des transferts est devenu un élément essentiel des communications cryptées SSL / TLS. Pour une explication plus détaillée de la confidentialité des transferts, voir cette Mozilla wiki de sécurité.

Changez encore pour l’utilisateur * root * du système.

sudo su -

Créez le fichier + dhparam.pem +.

openssl dhparam 2048 > /etc/ssl/dhparam.pem

Le fichier dhparam peut prendre plusieurs minutes. Une fois l’opération terminée, reconnectez-vous au compte de votre utilisateur sudo.

su -

Étape 17 - Désactiver le site par défaut dans nginx.conf

Nous allons maintenant modifier + / etc / nginx / nginx.conf + de sorte que le message par défaut Welcome to Nginx n’interfère pas avec le fichier de configuration Diaspora que nous allons créer.

sudo vim /etc/nginx/nginx.conf

Recherchez dans le bloc + serveur + pour les lignes comprenant + default_server; +. Supprimez + default_server + de ces entrées afin que la zone du bloc serveur ressemble à ceci:

/etc/nginx/nginx.conf

server {


server_name localhost;
root /usr/share/nginx/html;

Étape 18 - Création du fichier de configuration Nginx personnel de la diaspora

Créez un nouveau fichier de configuration nginx pour notre pod Diaspora:

sudo vim /etc/nginx/conf.d/diaspora.conf

Coller dans le contenu suivant; des explications sont données juste en dessous du code:

/etc/nginx/conf.d/diaspora.conf

upstream diaspora {
 server unix:/run/diaspora/diaspora.sock fail_timeout=0;
}
server {
 listen [::]:80;
 listen 80;
 server_name _;
 return 301 https://$request_uri;
}
server {
 listen [::]:443 ssl spdy;
 listen 443 ssl spdy;
 server_name ;
 root /home/diaspora/diaspora/public;
 server_tokens off;
 error_log /var/log/nginx/diaspora_error.log;

 # Configure maximum picture size
 # Note that Diaspora has a client side check set at 4M
 client_max_body_size 4M;

 ## SSL settings
 ssl_certificate ;
 ssl_certificate_key ;

 # https://wiki.mozilla.org/Security/Server_Side_TLS
 ssl_dhparam /etc/ssl/dhparam.pem;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';
 ssl_session_timeout 5m;
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:50m;
 add_header Strict-Transport-Security "max-age=31536000";

 location / {
   # Proxy if requested file not found
   try_files $uri $uri/index.html $uri.html @diaspora;
 }

 location @diaspora {
   gzip off;
   proxy_set_header  X-Forwarded-Ssl   on;
   proxy_set_header  X-Real-IP         $remote_addr;
   proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
   proxy_set_header  X-Forwarded-Proto https;
   proxy_set_header  Host              $http_host;
   proxy_set_header  X-Frame-Options   SAMEORIGIN;
   proxy_redirect                      off;
   proxy_pass http://diaspora;
 }
}

Remplacez les variables suivantes:

  • ++ avec votre propre nom de domaine enregistré; vous devrez le faire dans * deux * endroits

  • ++ avec le chemin vers votre propre certificat public

  • ++ avec le chemin de votre propre clé privée

Explication:

  • Le bloc + en amont + est l’endroit où nous configurons le socket Unix que Diaspora écoute (et que nous avons également défini dans Unicorn plus tôt). Ceci est utilisé plus tard comme directive + proxy_pass +.

  • Le premier bloc + serveur + écoute le port HTTP standard + 80 + et redirige toutes les demandes vers HTTPS.

  • Le deuxième bloc + serveur + écoute le port + 443 + (SSL) et définit quelques paramètres SSL forts extraits du wiki de Mozilla.

Pour en savoir plus sur les blocs de serveur Nginx en général, veuillez consulter cet tutoriel.

Une fois toutes les modifications terminées, vérifiez si le fichier de configuration contient des erreurs.

sudo nginx -t

Si tout s’est bien passé, cela devrait revenir:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez Nginx pour appliquer les modifications.

sudo systemctl restart nginx

Si vous visitez maintenant le nom de domaine de votre pod Diaspora dans votre navigateur (+ https: // example.com +, par exemple), vous devriez accéder à la page d’accueil de Diaspora. Toutes nos félicitations!

image: https: //assets.digitalocean.com/articles/socialnetwork_diaspora/diaspora.png [Page d’accueil de la diaspora]

Étape 19 - Créer un utilisateur de la diaspora

Créons votre premier utilisateur de Diaspora. Cliquez sur le lien dans * Commencez par créer un compte. *

Renseignez les détails pour créer un nouvel utilisateur de la diaspora. Ensuite, vous devriez pouvoir voir la page d’accueil de votre utilisateur et commencer à utiliser le réseau social de la diaspora.

Étape 20 - Configurer SELinux (facultatif)

_ * Avertissement: * Si vous ne connaissez pas bien SELinux, sachez que * cela peut casser des choses *. Vous pouvez ignorer cette section et commencer à utiliser la diaspora. _

SELinux est désactivé par défaut dans les gouttelettes CentOS 7. Pour une sécurité maximale, vous pouvez activer SELinux et le configurer pour qu’il fonctionne avec les services de votre pod Diaspora. Si vous êtes nouveau sur SELinux, voici une série de tutoriels auxquels vous pouvez vous référer pour plus d’informations:

Activer SELinux

Ouvrez + / etc / selinux / config + dans un éditeur de texte.

sudo vim /etc/selinux/config

Changez le paramètre + SELINUX + de + disabled + à ++ comme indiqué ci-dessous. Il est d’abord nécessaire de définir un statut permissif, car chaque fichier du système doit avoir son contexte étiqueté avant que SELinux puisse être appliqué.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Enregistrez et fermez le fichier.

Après avoir apporté cette modification, redémarrez le droplet pour que le paramètre prenne effet. Tapez simplement:

sudo reboot

Entrez le mot de passe de votre utilisateur sudo pour redémarrer le système. Ensuite, SSH revient dans Droplet et revenez dans le compte de votre utilisateur sudo avec:

su -

Maintenant, éditez + / etc / selinux / config + une fois de plus et réglez le paramètre + SELINUX + sur ++.

sudo vim /etc/selinux/config

Lorsque vous avez terminé, la ligne devrait indiquer ceci:

SELINUX=

Enregistrez et fermez le fichier. * Redémarrez la Droplet une fois de plus. *

sudo reboot

Ensuite, SSH revient dans votre Droplet après sa remise en ligne.

Politique SELinux Nginx

A partir de là, vous voulez rester en tant qu’utilisateur + root. Si vous visitez maintenant votre domaine, une erreur * 502 * s’affichera. Dans notre cas, SELinux bloque le socket de Nginx et l’accès au répertoire de base de l’utilisateur * diaspora *.

Vous pouvez vérifier les journaux d’audit avec:

grep denied /var/log/audit/audit.log

Vous devriez voir des messages comme ceux ci-dessous:

type=AVC msg=audit(1424394514.632:385): avc:  denied  { search } for  pid=1114 comm="nginx" name="diaspora" dev="vda1" ino=783369 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1424394514.632:386): avc:  denied  { write } for  pid=1114 comm="nginx" name="diaspora.sock" dev="tmpfs" ino=21382 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file

Installez les outils ci-dessous pour commencer à résoudre le problème:

yum install policycoreutils-{python,devel} setroubleshoot-server

Nous allons passer par le fichier + audit.log + et autoriser les entrées Denied dans notre stratégie SELinx. Run:

grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora

La stratégie SELinux générée est stockée dans le fichier + nginx_diaspora.te + dans le répertoire + / home + de votre racine (bien que vous puissiez organiser vos stratégies SELinux à n’importe quel emplacement). Le fichier binaire + nginx_diaspora.pp + doit être transmis à la commande + semodule + pour importer la stratégie. Ouvrez + nginx_diaspora.te + pour voir ce qui est maintenant autorisé par SELinux.

vim nginx_diaspora.te

Il devrait contenir les entrées suivantes. Sinon, remplacez le contenu de + nginx_diaspora.te + par ce qui est montré ci-dessous.

module nginx_diaspora 1.0;

require {
       type var_run_t;
       type httpd_t;
       type user_home_t;
       type init_t;
       class sock_file write;
       class unix_stream_socket connectto;
       class file { read open };
}


#============= httpd_t ==============
allow httpd_t init_t:unix_stream_socket connectto;

#!!!! This avc can be allowed using the boolean 'httpd_read_user_content'
allow httpd_t user_home_t:file { read open };
allow httpd_t var_run_t:sock_file write;

Beaucoup de contextes autorisés pourraient probablement être réduits, mais c’est un bon point de départ. Importons ensuite le module de stratégie.

semodule -i nginx_diaspora.pp

Si vous actualisez maintenant la page dans votre navigateur, vous devriez voir à nouveau la page d’accueil de la diaspora. Félicitations pour la configuration d’un module Diaspora renforcé sur SELinux fonctionnant sous CentOS 7!

Dépannage de SELinux

Si la page d’accueil se charge mais affiche des espaces réservés pour les images brisées et non des images réelles, procédez comme suit:

  1. Exécutez la commande ci-dessous pour "+ grep " via ` audit.log +` et ajoutez de nouvelles entrées Denied à la stratégie Nginx.

grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
  1. Rechargez le module de politique.

semodule -i nginx_diaspora.pp

Vous pouvez répéter ces étapes plusieurs fois.

tail -f /var/log/messages

Voici un exemple de lecture:

. . .

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that nginx should be allowed write access on the  sock_file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep nginx /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

. . .

Conclusion

Maintenant que vous avez configuré votre pod Diaspora, vous pouvez commencer à inviter vos amis et votre famille à s’y connecter. Bien qu’il manque certaines fonctionnalités présentes dans les grands réseaux sociaux commerciaux à sources fermées, l’un des avantages de Diaspora est que vous possédez vos données.

À partir de là, vous pouvez consulter le wiki de la diaspora pour pod mainteners et enregistrer votre pod dans une liste de pods globale afin que d’autres puissent en tirer parti.