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 [2022/03/04 13:21] zorroplayground:playground [2022/03/04 13:39] zorro
Ligne 1: Ligne 1:
-====== PlayGround ======+<jumbotron> 
 +====== Papoter sur Diaspora ======
  
 +[[https://diasporafoundation.org/|Diaspora]]  est un service de réseau social décentralisé.
  
-== This is ==+Cet article va vous décrire l'installation d'un [[https://diaspora.lapinbilly.eu/stream|serveur Diaspora]], dans une [[jails:zfs|jail]]. 
 +</jumbotron>
  
-a test+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 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