Skip to content


Créer son pod (noeud) Diaspora en production avec NGINX, Apache ou du NAT

Introduction

Diaspora est un récent reseau social (officiellement plus vieux pour ceux qui ont suivi sa naissance) décentralisé et libre...

En effet quiconque ayant les capacités de mettre en place un serveur Web ou une redirection NAT, avec quelques heures devant elle ou lui aura la possibilité d'installer un nœud (pod) diaspora ! 🙂

Créer son prope pod Diaspora est aussi simple que compliqué... En effet les explications sont simples mais souvent cachées ou dites après coup !

De plus comme cela dépend de l'installation d'un serveur Web les explications sont... minces.

https://github.com/diaspora/diaspora/wiki/Installing-and-Running-Diaspora

Installation des pré-requis 

Build Tools

apt-get install build-essential libxslt1.1 libxslt1-dev libxml2 libreadline5-dev

CURL

apt-get install curl libcurl4-openssl-dev

Git

apt-get install git-core

Ruby

apt-get install ruby-full

MySQL

apt-get install mysql-server libmysqlclient-dev libmysql-ruby

OpenSSL

apt-get install libssl-dev libopenssl-ruby

ImageMagick

apt-get install imagemagick libmagick9-dev

Redis

Debian 6.0 stable utilise une version ancienne de redis.

apt-get install redis-server

RubyGems

apt-get install rubygems

Bundler

gem install bundler
ln -s /var/lib/gems/1.8/bin/bundle /usr/local/bin/bundle

ffi

Note: Si une erreur survient, recommencez

apt-get install libffi-ruby libffi-dev

Installer SQLite et ses fichiers d'entête

apt-get install libsqlite3-dev

Ouffff c'est fini !

Installer Diaspora

Préparations

En focntion du type de base de données que vous utilisez vous jouerez avec DB="mysql" for MySQL ou DB="postgres"

Installer gems

To start the app server for the first time, you need to use Bundler to install Diaspora's gem depencencies. Run (from Diaspora's root directory):

bundle install --without development test
Configurer Diaspora

Il va falloir éditer les fichiers de configuration de Diaspora afin que ceux-ci soit accordés avec ce que vous désirez réaliser.

Copiez config/application.yml.example en config/application.yml, mettez votre URL publique correspondant au paramètre pod_url.

Copiez config/script_server.yml.example en config/script_server.yml et éditez le.

Éditez script_server.yml

script_server:
  # Choose database. Currently supported: mysql, postgres
  db: "mysql"
 
  # Enable thin as application server
  enable_thin: true
 
  # Port on which thin should listen
  thin_port: 3000
 
  # Customize thin's startup
  default_thin_args: "--servers 1 -p $THIN_PORT -e $RAILS_ENV"
 
  # Possibilities are development, production
  rails_env: "production"

Éditez application.yml

defaults: &defaults
  pod_url: "http://hote.votre-domaine.tld:3000/"
  socket_host: 0.0.0.0
  socket_port: 8080
  ca_file: '/etc/ssl/certs/ca-certificates.crt'
  socket_secure: false
  socket_cert_chain_location: '/etc/ssl/certs/ca-certificates.crt'
  socket_private_key_location: '/etc/ssl/private/ssl-cert-snakeoil.key'
  redis_url: ''
s3_region: 'us-east-1'
 
  registrations_closed: false
  open_invitations: true
 
  no_follow_diasporahq: false
 
  featured_users:
    - 'diasporahq@joindiaspora.com'
 
  admins:
    - 'example_user1dsioaioedfhgoiesajdigtoearogjaidofgjo'
 
  debug: false
  enable_splunk_logging: true
  socket_debug : false
  hoptoad_api_key: ''
 
  single_process_mode: false
  socket_pidfile: "log/diaspora-wsd.pid"
  socket_collection_name: 'websocket'
  pubsub_server: 'https://pubsubhubbub.appspot.com/'
 
  mailer_on: false
  smtp_address: 'smtp.votre-domaine.tld'
  smtp_port: '25'
  mailer_method: 'smtp'
  sendmail_location: '/usr/sbin/sendmail'
  smtp_authentication: 'plain'
  smtp_starttls_auto: true
  smtp_openssl_verify_mode:
  smtp_domain: 'votre-domaine.tld'
  smtp_username: 'uesr'
  smtp_password: 'xxxxxxxxxxxxx'
 
  smtp_sender_address: 'no-reply@joindiaspora.com'
  google_a_site: false
 
  piwik_id:
  piwik_url:
 
  cloudfiles_username: 'example'
  cloudfiles_api_key:  'abc123'
 
  paypal_hosted_button_id: ""
 
development:
  <<: *defaults
  enable_splunk_logging: false
 
production:
  <<: *defaults
 
test:
  <<: *defaults
  pod_url: "http://localhost:9887"
  socket_port: 8081
  enable_splunk_logging: false
  open_invitations: true
 
integration_1:
  <<: *defaults
  pod_url: "http://localhost:45789"
  enable_splunk_logging: false
 
integration_2:
  <<: *defaults
  pod_url: "http://localhost:34658"
  enable_splunk_logging: false

Pour lancer disaspora, rendez-vous dans le répertoire de diaspora et tapez ./script/server

!!! Je reviens sur le parmètre : pod_url: "http://hote.votre-domaine.tld:88/" , celui-ci est excessivement important. En effet il doit être fixé par l'url visible depuis le web, et c'est avec ce paramètre que les icônes, images seront affichés. Par ailleurs si vous vous inscrivez sur un pod ayant comme uri hote.votre-domaine.tld:88 avec comme pseudo moimeme, alors depuis n'importe quel autre pod on pourra vous retrouver avec moimeme@hote.votre-domaine.tld:88... !!!

Accès à votre service Diaspora

Créer votre base de données et la mettre en production

RAILS_ENV=production DB="mysql" bundle exec rake db:create 
 
DB="mysql" bundle exec jammit RAILS_ENV="production" DB="mysql" bundle exec rake db:migrate

Note : Que vous ayez mis votre service Diaspora sur la machine ayant comme front votre adresse publique ou non, plusieurs choix se propose à vous !

NAT : Abréviation de NAPT issu de network address and port translation

Avec NGINX

Un front hote.votre-domain.tld:88 redirigé sur la machine hébergeant le service diaspora IP:3000

server {
        listen   80;
        server_name  127.0.0.1;
        access_log  /var/log/nginx/diaspora.name-of-your-domain.access.log;
        location / {
                proxy_pass http://IP-locale:3000;
        }
 
        location  ^~ /uploads/images/ {
        root    /home/lolo/diaspora/public/;
        add_header Cache-Control public;
        access_log off;
        }
 
        location ~ ^/(images|javascripts|assets|stylesheets|uploads)/  {
        root    /home/lolo/diaspora/public/;
        add_header Cache-Control public;
        access_log off;
        }
 
   location  @diaspora {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    client_max_body_size 4M;
    client_body_buffer_size 128K;
    proxy_pass http://diaspora_thin;
   # break;
   }
 
}

Activez la configuration
sudo ln -s /etc/nginx/sites-available/diaspora /etc/nginx/sites-enabled/diaspora
redémarrez le serveur avec /etc/init.d/nginx restart

Quelques souci concernant les icônes ou images... 🙁

Avec Apache2

Un front hote.votre-domain.tld:88 redirigé sur la machine hébergeant le service diaspora IP:3000

<VirtualHost *:88>
ServerName hote.votre-domain.tld:88
ProxyRequests On
ProxyVia On
 
<Proxy *>
  AddDefaultCharset off
  Order deny,allow
  Allow from all
</Proxy>
 
ProxyPass / http://IP-locale:3000/
ProxyPassReverse / http://IP-locale:3000/
</VirtualHost>

 

Il faut activer les modes proxy de apache

a2enmod proxy_connect proxy_ftp proxy_html proxy_http proxy_scgi
service apache2 restart

 

Avec une redirection

NATez un port HTTP (88) sur la machine diaspora et le port d'écoute 3000

/sbin/iptables -t nat -A PREROUTING -p tcp -i ethX -d IP-publique --dport 88 -j DNAT --to IP-locale:3000
/sbin/iptables -A FORWARD -p tcp -i ethX -d IP-locale --dport 3000 -j ACCEPT

Démarrez Diaspora

cd /path/to/diaspora
./script/server
 
INFO: If you want further performance improvements,
after the first request to the page after each git pull, run:
bundle exec jammit
/home/lolo/diaspora/app/models/app_config.rb:120:in `[]': undefined method `present?' for nil:NilClass (NoMethodError)
        from /home/lolo/diaspora/app/models/app_config.rb:146:in `single_process_mode?'
        from ./script/get_config.rb:38:in `send'
        from ./script/get_config.rb:38
Starting server on 0.0.0.0:3000 ...
Starting server on 0.0.0.0:3001 ...
Starting server on 0.0.0.0:3002 ...
Starting server on 0.0.0.0:3003 ...
Starting server on 0.0.0.0:3004 ...
./script/../lib/diaspora/web_socket.rb:8: warning: already initialized constant REDIS_CONNECTION_SET
Websocket server started.

Quelques petits paramètres restent à configurer, comme la récupération de contacts depuis d'autres pod ou noeuds ou depuis Facebook, etc.

Voilà ! 🙂

Mon pod est en ligne, mais lorsqu'il l'est c'est ici que vous le trouverez : http://diaspora.system-linux.net:88/

 

Interaction avec Facebook et/ou Twitter

Afin que votre pod puisse être en interaction avec facebook ou twitter, il faut que vous créiez un compte sur chacun de ces deux réseaux social.

Facebook

Pour facebook il faut que vous ayez renseigné votre numéro de portable puis se rendre sur : https://developers.facebook.com/ , puis de là créez votre appli, la mienne portant le nom : mydiasplolo

Il vous faudra récupérer app_id et app_secret de votre application afin de les renseigner dans le fichier de configuration de diaspora oauth_keys.yml

Twitter

Vous devez faire de même pour Twitter, rendez-vous sur https://dev.twitter.com/ , puis créez votre application : mydiasplolo.

Récupérez vos consummer_key et consummer_secret et renseignez les dans le fichier de configuration de diaspora oauth_keys.yml.

Voilà pour ce qui est des appli inter-réseaux-sociaux ! 🙂

 

Le script de démarrage

Voici le mien mis dans /etc/init.d/

Diaspora étant installé dans le répertoire : /var/www/diaspora 

#! /bin/sh
### BEGIN INIT INFO
# Provides:          diaspora
# Required-Start:    bootlogs
# Required-Stop:     bootlogs
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Serveur diaspora
### END INIT INFO
 
case "$1" in
  start)
	su -l lolo -c "cd /home/lolo/diaspora/; kill \`pidof ruby ruby1.8\` ; script/server"
	;;
  stop)
	su -l lolo -c "cd /home/lolo/diaspora/; kill \`pidof ruby ruby1.8\`"
	;;
  *)
	N=/etc/init.d/${0##*/}
	echo "Usage: $N {start|stop}" >&2
	exit 1
	;;
esac
 
exit 0

Il faut ensuite indiquer quand (dans quel niveau) celui-ci démarre ou s'arrête ! Donc il faut le rendre éxecutable !


chmod +x /etc/init.d/diaspora
update-rc.d diaspora start 20 2 3 4 5 . stop 20 0 1 6 .
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'K01routage.sh' missing LSB tags and overrides
insserv: warning: script 'routage.sh' missing LSB tags and overrides
insserv: warning: script 'wpa_suplicant.sh' missing LSB tags and overrides

Ainsi à chaque démarrage votre serveur diaspora se lancera !


Webographie

- Fin -

Print Friendly, PDF & Email

Posted in Debian, Important, Linux, Technique, Toutes. Tagged with , , , , .

One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. kage said

    Merci pour le tuto avez vous résolu le problème d'affichage des images avec nginx?

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.