ports:web:diaspora

Ceci est une ancienne révision du document !


en cours d'écriture

Papoter sur Diaspora

Diaspora est un service de réseau social décentralisé.

Cet article va vous décrire l'installation d'un serveur Diaspora, dans une jail.

Vous devez vous préparer à fournir les ports suivants:

  1. un serveur web, ici nginx;
  2. un mécanisme pour fournir des clefs pour https, ici py-certbot-nginx;

Ainsi qu'un serveur de base de données PostgreSQL, installée dans une jail en 192.168.0.10, pour cet exemple.

Préparez une jail nommée diaspora, dans le répertoire /jails/diaspora avec les paramètres suivants:

/etc/jail.conf
matrix {
	ip4.addr = "lo1|192.168.0.13";          # IP address of the jail
        mount.devfs;  				# /dev/random pour SSL
	path ="/jails/diaspora";                  # Path to the jail
	exec.start = "/bin/sh /etc/rc";         # Start command
	exec.stop = "/bin/sh /etc/rc.shutdown"; # Stop command
	depend=pg; # depend on postgresql jail
}

Adaptez la configuration de la jail diapora:

matrix/etc/rc.conf.local
hostname="diaspora"

Préparez votre base de donnée pour Diaspora. Dans cet exemple, le serveur est confiné dans une jail nommée pg.

Créer un utilisateur, diaspora, qui a le droits de créer des bases:

root@pg:/ # su - postgres
$ createuser -P -d diaspora
Enter password for new role: 
Enter it again: 

Restreindre l'accès au serveur de base de données à cet utilisateur, pour les demandes venant de la jail diaspora en 192.168.0.13.

/jails/pg/var/db/postgres/data11/pg_hba.conf
host    all				diaspora        192.168.0.13/32            password

Créez une entrée DNS, ici diaspora.lapinbilly.eu, pour votre serveur et rediriger le tout vers la jail diaspora.

Obtenez un certificat SSL.

root@popeye:/jails# certbot certonly --nginx -d diaspora.lapinbilly.eu

Rediriger les requêtes vers votre jail, pour cela, on va définir un fichier dédié pour nginx.

/usr/local/etc/nginx/diaspora.conf
server {
    root  /jails/diaspora/usr/home/diaspora/diaspora/public/;
    # Configure maximum picture size
    # Note that Diaspora has a client side check set at 4M
    client_max_body_size 5M;
    client_body_buffer_size 256K;
    ssl_certificate /usr/local/etc/letsencrypt/live/diaspora.lapinbilly.eu/fullchain.pem;
    ssl_certificate_key /usr/local/etc/letsencrypt/live/diaspora.lapinbilly.eu/privkey.pem;
 
    # Proxy if requested file not found
    try_files $uri @diaspora;
 
    location /assets/ {
      expires max;
      add_header Cache-Control public;
    }
 
    # Camo support
    #location /camo/ {
    #  proxy_redirect off;
    #  proxy_pass http://camo/;
    #  break;
    #}
 
    location @diaspora {
      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_redirect off;
      proxy_pass http://diaspora_server;
    }
  }
  upstream diaspora_server {
    server unix:/jails/diaspora/usr/home/diaspora/diaspora/tmp/diaspora.sock;
  }

Et l'utiliser dans nos serveurs nginx

/usr/local/etc/nginx/nginx.conf
   server {
            listen 443 ssl http2 ;
            listen [::]:443 ssl http2 ;
            server_name diaspora.lapinbilly.eu;
            include diaspora.conf;
    }

Installez les ports suivants dans la jail diaspora:

root@popeye:# pkg -j diaspora graphics/ImageMagick7-nox11 databases/redis lang/ruby26 sysutils/rubygem-bundler www/node databases/rubygem-pg devel/git textproc/libsass devel/gmake
root@popeye:# sysrc -j  diaspora redis_enable="YES"

Construisez le serveur:

root@popeye:# jail -c diaspora
root@popeye:# service -j diaspora service redis start
root@popeye:# jexec disapora
root@diaspora:# gem install certified
root@diaspora:# certified-update
root@diaspora:# gem install bundler
root@diaspora:# gem install rake -v '12.3.3'

Ajoutez un utilisateur diaspora:

root@diaspora:# pw useradd diaspora -c "Diaspora user"
root@diaspora:# echo "setenv RAILS_ENV production" >> ~diaspora/.cshrc
root@diaspora:# echo "setenv DB postgresql" >> ~diaspora/.cshrc
root@diaspora:# su - diaspora
diaspora@diaspora:~ % git clone -b master https://github.com/diaspora/diaspora.git
diaspora@diaspora:~ % cd diaspora/
diaspora@diaspora:~/diaspora % cp config/diaspora.yml.example config/diaspora.yml
diaspora@diaspora:~/diaspora % cp config/database.yml.example config/database.yml
diaspora@diaspora:~/diaspora % script/configure_bundler
diaspora@diaspora:~/diaspora % bundle install --without test development --path vendor/bundle
diaspora@diaspora:~/diaspora % bundle update --bundler
diaspora@diaspora:~/diaspora % bundle exec rake db:create db:migrate
diaspora@diaspora:~/diaspora % bin/rake assets:precompile

Dirigez la connexion vers votre base de données

config/database.yml
--- config/database.yml 2020-05-02 21:34:04.844275000 +0200
+++ config/database.yml.example 2020-05-02 21:28:46.158354000 +0200
@@ -1,9 +1,9 @@
 postgresql: &postgresql
   adapter: postgresql
-  host: "192.168.0.10"
+  host: "localhost"
   port: 5432
-  username: "diaspora"
-  password: "pwd"
+  username: "postgres"
+  password: ""
   encoding: unicode
 
 mysql: &mysql

Donnez le bon chemin vers les certificats:

config/diaspora.yml
--- config/diaspora.yml 2020-05-02 22:25:58.637167000 +0200
+++ config/diaspora.yml.example 2020-05-02 21:28:46.158783000 +0200
@@ -44,7 +44,7 @@
     ## For Debian, Ubuntu, Archlinux, Gentoo (package ca-certificates):
     #certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
     ## For CentOS, Fedora:
-    certificate_authorities: '/usr/local/share/certs/ca-root-nss.crt'
+    #certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt'
 
     ## URL for a remote Redis (default=localhost).
     ## Don't forget to restrict IP access if you uncomment these!

Adaptez le serveur à la jail et au serveur de base de données, c'est à dire permettre au serveur diaspora d'écouter les requêtes venant de l'hôte et lui indiquer le chemin vers le serveur PostgreSQL.

Lancez simplement:

diaspora@diaspora:~/diaspora % ./script/server

Redémarrez votre serveur web avec la nouvelle configuration:

root@popeye:# service nginx restart
  • ports/web/diaspora.1588497653.txt.gz
  • Dernière modification : 2020/05/03 09:20
  • de david