playground:playground

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
playground:playground [2020/07/29 09:38] – modification externe 127.0.0.1playground:playground [2022/03/04 13:39] – [Démarrer] zorro
Ligne 1: Ligne 1:
-====== PlayGround ======+<jumbotron> 
 +====== Papoter sur Diaspora ======
  
 +[[https://diasporafoundation.org/|Diaspora]]  est un service de réseau social décentralisé.
 +
 +Cet article va vous décrire l'installation d'un [[https://diaspora.lapinbilly.eu/stream|serveur Diaspora]], dans une [[jails:zfs|jail]].
 +</jumbotron>
 +
 +Vous devez vous préparer à fournir les [[https://www.freebsd.org/doc/handbook/ports.html|ports]] suivants:
 +
 +  - un serveur web, ici [[ports:nginx|nginx]];
 +  - un mécanisme pour fournir des clefs pour https, ici [[https://www.freshports.org/security/py-certbot-nginx|py-certbot-nginx]];
 +  - Ainsi qu'un serveur de base de données [[https://www.postgresql.org/|PostgreSQL]], installée dans une [[ports:db:postgresql|jail]] en <label>192.168.0.10</label>, pour cet exemple.
 +
 +===== La jail =====
 +
 +Préparez une [[jails:zfs|jail]] nommée ''diaspora'', dans le répertoire ''/jails/diaspora'' avec les paramètres suivants:
 +
 +<file javascript /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
 +}
 +</file>
 +
 +Adaptez la configuration de la //jail// ''diapora'':
 +
 +<file ini matrix/etc/rc.conf.local>
 +hostname="diaspora.lapinbilly.eu"
 +</file>
 +
 +<callout type="warning" icon="true">
 +Un serveur diaspora va vouloir [[https://diablotins.lapinbilly.eu/doku.php?id=jails:zfs#mail|envoyer des mails]]. Un hostname(1) en FQDN est obligatoire.
 +</callout>
 +
 +On assure le démarrage au reboot:
 +<code bash>
 +root@popeye:# sysrc jail_enable="YES"
 +root@popeye:# sysrc jail_list+="diaspora"
 +</code>
 +
 +===== La base de données =====
 +
 +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, <label>diaspora</label>, qui a le droits de créer des bases:
 +<code bash>
 +root@pg:/ # su - postgres
 +$ createuser -P -d diaspora
 +Enter password for new role: 
 +Enter it again: 
 +</code>
 +
 +Restreindre l'accès au serveur de base de données à cet utilisateur, pour les demandes venant de la //jail// ''diaspora'' en <label>192.168.0.13</label>.
 +<file bash /jails/pg/var/db/postgres/data11/pg_hba.conf>
 +host    all diaspora        192.168.0.13/32            password
 +</file>
 +
 +===== Le serveur web =====
 +
 +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**.
 +<code bash>
 +root@popeye:/jails# certbot certonly --nginx -d diaspora.lapinbilly.eu
 +</code>
 +
 +Rediriger les requêtes vers votre //jail//, pour cela, on va définir un fichier dédié pour //nginx//.
 +
 +<file javascript /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;
 +  }
 +</file>
 +
 +Et l'utiliser dans nos [[:ports:nginx#serveur|serveurs nginx]]
 +
 +<file javascript /usr/local/etc/nginx/nginx.conf>
 +   server {
 +            listen 443 ssl http2 ;
 +            listen [::]:443 ssl http2 ;
 +            server_name diaspora.lapinbilly.eu;
 +            include diaspora.conf;
 +    }
 +</file>
 +
 +===== Installer =====
 +
 +Installez les ports suivants dans la //jail// ''diaspora'':
 +<code bash>
 +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"
 +</code>
 +
 +Construisez le  serveur:
 +<code bash>
 +root@popeye:# jail -c diaspora
 +root@popeye:# service -j diaspora service redis start
 +root@popeye:# jexec disapora
 +</code>
 +
 +Préparer l'environnement 'gem/ruby':
 +<code bash>
 +root@diaspora:# gem install certified
 +root@diaspora:# certified-update
 +root@diaspora:# gem install bundler
 +root@diaspora:# gem install rake -v '12.3.3'
 +</code>
 +
 +Ajoutez un utilisateur ''diaspora'':
 +<code bash>
 +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
 +</code>
 +
 +Les deux dernières vont vous éviter bien des ennuis, elles précisent deux paramètres de base utilisé par tous les scripts:
 +  * l'environnement du serveur, ici production par opposition à développement;
 +  * la base de donnée utilisée.
 +
 +<callout type="warning" icon="true">
 +Attention, ceux sont des instructions pour un //shell// ''csh/tcsh''. Utilisez celles qui conviennent à votre //shell//.
 +</callout>
 +
 +Et allons-y pour l'installation du produit proprement dit, à partir des sources:
 +<code bash>
 +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
 +
 +</code>
 +
 +==== Configurer ====
 +
 +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**.
 +
 +Deux fichiers de configuration sont importants à copier depuis les exemples du répertoire ''config'':
 +
 +  - ''database.yml'', pour définir les accès à la base de donnée ;
 +  - ''diapora.yml'', pour tout le reste.
 +
 +Dirigez la connexion vers votre base de données:
 +<file diff config/database.yml>
 +--- config/database.yml.example 2020-05-02 21:28:46.158354000 +0200
 ++++ config/database.yml 2020-05-02 21:34:04.844275000 +0200
 +@@ -1,9 +1,9 @@
 + postgresql: &postgresql
 +   adapter: postgresql
 +-  host: "localhost"
 ++  host: "192.168.0.10"
 +   port: 5432
 +-  username: "postgres"
 +-  password: ""
 ++  username: "diaspora"
 ++  password: "pwd"
 +   encoding: unicode
 + 
 + mysql: &mysql
 +
 +</file>
 +
 +Dans le fichier ''diaspora'', effectuez les réglages suivants:
 +
 +  - Adresser les certificats 
 +  - Réglez le serveur d'envoi de mail,  ici le ''sendmail'' de la base.
 +  - Donnez un nom de serveur .
 +
 +<file diff config/diaspora.yml>
 +--- config/diaspora.yml.example 2020-05-02 21:28:46.158783000 +0200
 ++++ config/diaspora.yml 2020-05-04 00:00:32.367677000 +0200
 +@@ -36,7 +36,7 @@
 +     ## However changing http to https is okay and has no consequences.
 +     ## If you do change the URL, you will have to start again as the URL
 +     ## will be hardcoded into the database.
 +-    #url: "https://example.org/"
 ++    url: "https://diaspora.lapinbilly.eu/"
 + 
 +     ## Set the bundle of certificate authorities (CA) certificates.
 +     ## This is specific to your operating system.
 +@@ -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: '/etc/pki/tls/certs/ca-bundle.crt'
 ++    certificate_authorities: '/usr/local/share/certs/ca-root-nss.crt'
 + 
 +     ## URL for a remote Redis (default=localhost).
 +     ## Don't forget to restrict IP access if you uncomment these!
 +@@ -175,7 +175,7 @@
 +     ## Where the appserver should listen to (default=unix:tmp/diaspora.sock)
 +     #listen: 'unix:tmp/diaspora.sock'
 +     #listen: 'unix:/run/diaspora/diaspora.sock'
 +-    #listen: '127.0.0.1:3000'
 ++    #listen: '192.168.0.15:3000'
 + 
 +     ## Set the path for the PID file of the unicorn master process (default=tmp/pids/web.pid)
 +     #pid: 'tmp/pids/web.pid'
 +@@ -609,14 +609,14 @@
 +   mail: ## Section
 + 
 +     ## First you need to enable it.
 +-    #enable: true
 ++    enable: true
 + 
 +     ## Sender address used in mail sent by Diaspora.
 +-    #sender_address: 'no-reply@example.org'
 ++    sender_address: 'no-reply@lapinbilly.eu'
 + 
 +     ## This selects which mailer should be used. Use 'smtp' for a smtp
 +     ## connection or 'sendmail' to use the sendmail binary.
 +-    #method: 'smtp'
 ++    method: 'sendmail'
 + 
 +     ## Ignore if method isn't 'smtp'.
 +     smtp: ## Section
 +@@ -653,7 +653,7 @@
 +     sendmail: ## Section
 + 
 +       ## The path to the sendmail binary (default='/usr/sbin/sendmail')
 +-      #location: '/usr/sbin/sendmail'
 ++      location: '/usr/sbin/sendmail'
 + 
 +       ## Use exim and sendmail (default=false)
 +       #exim_fix: false
 +@@ -665,10 +665,10 @@
 +     ## This doesn't make the user an admin but is used when a generic
 +     ## admin contact is needed, much like the postmaster role in mail
 +     ## systems. Set only the username, NOT the full ID.
 +-    #account: "podmaster"
 ++    account: "podmaster"
 + 
 +     ## E-mail address to contact the administrator.
 +-    #podmin_email: 'podmin@example.org'
 ++    podmin_email: 'david@lapinbilly.eu'
 + 
 +   ## Settings related to relays
 +   relay: ## Section
 +</file>
 +
 +
 +
 +===== Démarrer =====
 +
 +Lancez simplement:
 +
 +<code bash>
 +diaspora@diaspora:~/diaspora % ./script/server
 +</code>
 +
 +Redémarrez votre serveur web avec la nouvelle configuration:
 +<code bash>
 +root@popeye:# service nginx restart
 +</code>
 +
 +Connectez vous sur le site et ajoutez un utilisateur. Déclarez le ensuite comme un administrateur à l'aide de son //adresse mail//.
 +
 +<code bash>
 +root@popeye:# jexec diaspora
 +root@diaspora:# su - diaspora
 +diaspora@diaspora:~ cd diaspora
 +diaspora@diaspora:~ bundle exec rails console
 +Role.add_admin User.where(email: "the_email").first.person
 +</code>
 +
 +===== Mettre à jour =====
  • playground/playground.txt
  • Dernière modification : 2024/02/12 12:09
  • de 127.0.0.1