ports:web:diaspora

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
ports:web:diaspora [2020/05/03 21:46] – [Installer] davidports:web:diaspora [2023/07/16 08:09] (Version actuelle) – [Serveur] david
Ligne 4: Ligne 4:
 [[https://diasporafoundation.org/|Diaspora]]  est un service de réseau social décentralisé. [[https://diasporafoundation.org/|Diaspora]]  est un service de réseau social décentralisé.
  
-Cet article va vous décrire l'installation d'un [[https://matrix.org/|serveur Diaspora]], dans une [[jails:zfs|jail]].+Cet article va vous décrire l'installation d'un [[https://diaspora.lapinbilly.eu/stream|serveur Diaspora]], dans une [[jails:zfs|jail]].
 </jumbotron> </jumbotron>
  
Ligne 18: Ligne 18:
  
 <file javascript /etc/jail.conf> <file javascript /etc/jail.conf>
-matrix {+diaspora {
  ip4.addr = "lo1|192.168.0.13";          # IP address of the jail  ip4.addr = "lo1|192.168.0.13";          # IP address of the jail
         mount.devfs;  # /dev/random pour SSL         mount.devfs;  # /dev/random pour SSL
Ligne 30: Ligne 30:
 Adaptez la configuration de la //jail// ''diapora'': Adaptez la configuration de la //jail// ''diapora'':
  
-<file ini matrix/etc/rc.conf.local>+<file ini diaspora/etc/rc.conf.local>
 hostname="diaspora.lapinbilly.eu" hostname="diaspora.lapinbilly.eu"
 </file> </file>
Ligne 38: Ligne 38:
 </callout> </callout>
  
-===== La base de donnée =====+On assure le démarrage au reboot: 
 +<code bash> 
 +sysrc jail_enable="YES" 
 +sysrc jail_list+="diaspora" 
 +</code> 
 + 
 +===== La base de données =====
  
 Préparez votre base de donnée pour Diaspora. Préparez votre base de donnée pour Diaspora.
Ligne 62: Ligne 68:
 Obtenez un certificat **SSL**. Obtenez un certificat **SSL**.
 <code bash> <code bash>
-root@popeye:/jails# certbot certonly --nginx -d diaspora.lapinbilly.eu+certbot certonly --nginx -d diaspora.lapinbilly.eu
 </code> </code>
  
-Rediriger les requêtes vers votre //jail//, pour cela, on va définir un fichier dédié pour //nginx//.+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>+<file nginx [highlight_lines_extra="2,31"/usr/local/etc/nginx/diaspora.conf>
 server { server {
     root  /jails/diaspora/usr/home/diaspora/diaspora/public/;     root  /jails/diaspora/usr/home/diaspora/diaspora/public/;
Ligne 106: Ligne 112:
 </file> </file>
  
-Et l'utiliser dans nos [[:ports:nginx#serveur|serveurs nginx]]+Et l'utiliser dans nos [[:ports:nginx#serveur|serveurs nginx]]:
  
-<file javascript /usr/local/etc/nginx/nginx.conf>+<file nginx [highlight_lines_extra="5"/usr/local/etc/nginx/nginx.conf>
    server {    server {
             listen 443 ssl http2 ;             listen 443 ssl http2 ;
Ligne 116: Ligne 122:
     }     }
 </file> </file>
- 
 ===== Installer ===== ===== Installer =====
- 
  
 Installez les ports suivants dans la //jail// ''diaspora'': Installez les ports suivants dans la //jail// ''diaspora'':
- 
 <code bash> <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:# pkg -j diaspora install graphics/ImageMagick7@nox11 databases/redis62 ftp/curl devel/git shells/bash databases/postgresql15-client www/node www/yarn ports-mgmt/pkg
 root@popeye:# sysrc -j  diaspora redis_enable="YES" root@popeye:# sysrc -j  diaspora redis_enable="YES"
 </code> </code>
  
-Construisez le  serveur:+Attention à préciser la version de Image Magick à utiliser dans votre ''Make.conf'' ou dans vos [[::ports:poudriere|poudrieres]]. 
 +<code=bash> 
 +DEFAULT_VERSIONS+= imagemagick=7-nox11 
 +</code> 
 + 
 +Ajoutez un utilisateur ''diaspora'':
 <code bash> <code bash>
-root@popeye:# jail -c diaspora +root@diaspora:# pw useradd diaspora -c "Diaspora user" -G wheel -s /usr/local/bin/bash -m 
-root@popeye:# service -j diaspora service redis start +root@diaspora:# echo "export RAILS_ENV=production" >> ~diaspora/.bash_profile 
-root@popeye:# jexec disapora+root@diaspora:# echo "export DB=postgresql" >> ~diaspora/.bash_profile 
 +root@diaspora:# su - diaspora
 </code> </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// ''sh/bash''. Utilisez celles qui conviennent à votre //shell//.
 +</callout>
 +
 +La plupart des scripts et configuration que l'on va utiliser ne sont pas compatible avec //csh//, c'est pourquoi l'utilisateur est associé à un //shell bash//.
 +
 +
 +==== RVM ====
 +
 +Diaspora* est resté sur des versions EOL de //ruby//. Du coup, il faut mieux installer la bonne version du langage à l'aide du ''Ruby Version Manager''.
 +Cela installe une version du langage dans votre home.
 +Le hic, c'est qu'il va falloir le compiler.
  
 <code bash> <code bash>
-root@diaspora:# gem install certified +root@popeye:# pkg -diaspora install autotools libtool bison sqlite3 gdbm libyaml
-root@diaspora:# certified-update +
-root@diaspora:# gem install bundler +
-root@diaspora:# gem install rake -v '12.3.3'+
 </code> </code>
 +De plus, l'installer est un script //bash//.
  
-Ajoutez un utilisateur ''diaspora'':+Sous votre session utilisateur:
 <code bash> <code bash>
-root@diaspora:# pw useradd diaspora -c "Diaspora user" +curl -sSL https://get.rvm.io -o installer.sh 
-root@diaspora:# echo "setenv RAILS_ENV production" >> ~diaspora/.cshrc +bash installer.sh head 
-root@diaspora:# echo "setenv DB postgresql" >> ~diaspora/.cshrc +echo '[[ -s "$HOME/.rvm/scripts/rvm]] && source "$HOME/.rvm/scripts/rvm">> .bash_profile 
-root@diaspora:# su diaspora+~/.rvm/scripts/rvm 
 +rvm autolibs read-fail 
 +rvm install 3.1
 </code> </code>
  
 +Une fois //rvm// installé, vous pouvez le mettre à jour et installer d'autres versions de ruby:
 +<code bash>
 +rvm get head
 +rvm list known
 +rvm install ruby-3.1
 +</code>
 +
 +Et définir votre version de travail
 +<code>
 +rvm use 3.1 --default
 +</code>
 +
 +==== Serveur ====
 +
 +=== IP v6 ==
 +
 +A partir de point il est préférable de désactiver l'ipv6 de la //jail//, suite à un bug dans la résolution de nom des outils de type ''bundle''.\\
 +Commentez les adresses ipv6 de ''jail.conf'' et ajoutez ''ip6=disable;'' à la place.\\
 +De même, pour éviter toute ambiguïté, interdisez le aussi dans le ''rc.conf'' de la //jail//:
 +<file>
 +inet6_enable="NO"
 +ip6addrctl_enable="NO"
 +</file>
 +
 +Vous pourrez le réactiver plus tard.
 +
 +=== Installer ===
 +Construisez le  serveur:
 +<code bash>
 +root@popeye:# jail -c diaspora
 +root@popeye:# service -j diaspora service redis start
 +root@popeye:# jexec disapora
 +</code>
 +
 +Et allons-y pour l'installation du produit proprement dit, à partir des sources:
 <code bash> <code bash>
 diaspora@diaspora:~ % git clone -b master https://github.com/diaspora/diaspora.git diaspora@diaspora:~ % git clone -b master https://github.com/diaspora/diaspora.git
 diaspora@diaspora:~ % cd diaspora/ diaspora@diaspora:~ % cd diaspora/
-diaspora@diaspora:~/diaspora % cp config/diaspora.yml.example config/diaspora.yml+diaspora@diaspora:~/diaspora % cp config/diaspora.toml.example config/diaspora.toml
 diaspora@diaspora:~/diaspora % cp config/database.yml.example config/database.yml diaspora@diaspora:~/diaspora % cp config/database.yml.example config/database.yml
 +diaspora@diaspora:~/diaspora % gem install bundler:2.3.26
 diaspora@diaspora:~/diaspora % script/configure_bundler diaspora@diaspora:~/diaspora % script/configure_bundler
-diaspora@diaspora:~/diaspora % bundle install --without test development --path vendor/bundle +diaspora@diaspora:~/diaspora % bin/bundle install --full-index
-diaspora@diaspora:~/diaspora % bundle update --bundler+
 diaspora@diaspora:~/diaspora % bundle exec rake db:create db:migrate diaspora@diaspora:~/diaspora % bundle exec rake db:create db:migrate
 diaspora@diaspora:~/diaspora % bin/rake assets:precompile diaspora@diaspora:~/diaspora % bin/rake assets:precompile
 +</code>
  
 +La dernière commande utilise le gestionnaire de paquets //Yarn// pour //Javascript//. Ce soft a quelques défaut et demande de désactiver la protection suivante, durant la procédure:
 +<code>
 +sysctl kern.elf64.allow_wx=1
 </code> </code>
  
-Dirigez la connexion vers votre base de données +==== 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.toml'', pour tout le reste. 
 + 
 +Dirigez la connexion vers votre base de données:
 <file diff config/database.yml> <file diff 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 
-+++ 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 @@ @@ -1,9 +1,9 @@
  postgresql: &postgresql  postgresql: &postgresql
    adapter: postgresql    adapter: postgresql
--  host: "192.168.0.10+-  host: "localhost
-+  host: "localhost"++  host: "192.168.0.10"
    port: 5432    port: 5432
--  username: "diaspora+-  username: "postgres
--  password: "pwd+-  password: "" 
-+  username: "postgres++  username: "diaspora
-+  password: ""++  password: "pwd"
    encoding: unicode    encoding: unicode
    
  mysql: &mysql  mysql: &mysql
 +
 </file> </file>
  
-Donnez le bon chemin vers les certificats:+Dans le fichier ''diaspora'', effectuez les réglages suivants:
  
-<file diff config/diaspora.yml+  - Adresser les certificats  
---- config/diaspora.yml.example 2020-05-02 21:28:46.158783000 +0200 +  - Réglez le serveur d'envoi de mail,  ici le ''sendmail'' de la base. 
-+++ config/diaspora.yml 2020-05-03 23:44:24.657920000 +0200 +  - Donnez un nom de serveur . 
-@@ -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 +<file diff config/diaspora.toml
-     ## will be hardcoded into the database. +--- config/diaspora.toml.example        2023-05-18 11:09:58.604809000 +0000 
-   #url"https://example.org/" ++++ config/diaspora.toml        2023-05-18 11:28:29.378523000 +0000 
-   url"https://diaspora.lapinbilly.eu/"+@@ -30,7 +30,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://diaspora2.lapinbilly.eu/" 
 +  
 + ## Set the bundle of certificate authorities (CA) certificates. 
 + ## This is specific to your operating system. 
 +@@ -39,6 +39,7 @@ 
 + #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! 
 +@@ -221,11 +222,11 @@ 
 + [configuration.privacy.statistics] 
 +  
 + ## Local user total and 6 month active counts. 
 +-#user_counts = true 
 ++user_counts = true 
 +  
 + ## Local post total count. 
 +-#post_counts = true 
 ++comment_counts = true 
 +  
 + ## Use Camo to proxy embedded remote images. 
 + ## Do not enable this setting unless you have a working Camo setup. Using 
 +@@ -458,9 +460,9 @@ 
 + ## email will be sent to the user and after an additional `warn_days`, the 
 + ## account will be automatically closed. 
 + ## This maintenance is not enabled by default. 
 +-#remove_old_users.enable = true 
 +-#remove_old_users.after_days = 730 
 +-#remove_old_users.warn_days = 30 
 ++remove_old_users.enable = true 
 ++remove_old_users.after_days = 180 
 ++remove_old_users.warn_days = 0 
 + #remove_old_users.limit_removals_to_per_day = 100 ## Limit queuing for removal per day. 
 + 
    
-     ## Set the bundle of certificate authorities (CA) certificates. +@@ -517,17 +519,21 @@ 
-     ## This is specific to your operating system. + [configuration.mail] 
-@@ -44,+44,@@ + ## First you need to enable it. 
-     ## For Debian, Ubuntu, Archlinux, Gentoo (package ca-certificates): +-#enable = true 
-     #certificate_authorities: '/etc/ssl/certs/ca-certificates.crt' ++enable = true
-     ## 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)+ ## Sender address used in mail sent by Diaspora
-     ## Don't forget to restrict IP access if you uncomment these! + #sender_address = "no-reply@example.org" 
-@@ -175,7 +175,7 @++sender_address = 'no-reply@lapinbilly.eu'
-     ## 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) + ## This selects which mailer should be used. Use "smtp" for a smtp 
-     #pid: 'tmp/pids/web.pid' + ## connection or "sendmail" to use the sendmail binary
-@@ -609,14 +609,14 @@ + #method = "smtp" 
-   mail: ## Section++method = 'sendmail'
    
-     ## First you need to enable it+ ## Ignored if method isn't "smtp"
--    #enable: true + [configuration.mail.smtp] 
-   enable: true++host = 'mail.out.net' 
 ++port = 465
    
-     ## Sender address used in mail sent by Diaspora+ ## Host and port of the smtp server handling outgoing mail. 
-     #sender_address: 'no-reply@example.org'+ ## This should match the common name of the certificate sent by 
 +@@ -539,6 +545,@
 + ## Use one of "plain", "login" or "cram_md5"Use "none" 
 + ## if server does not support authentication. 
 + #authentication = "plain" 
 ++authentication = 'login'
    
-     ## This selects which mailer should be usedUse 'smtp' for a smtp + ## Credentials to log in to the SMTP server
-     ## connection or 'sendmail' to use the sendmail binary+ ## May be necessary if authentication is not "none"
-   #method: 'smtp' +@@ -547,7 +554,7 @@
-   method: 'sendmail'+
    
-     ## Ignore if method isn't 'smtp'+ ## Automatically enable TLS (default=true)
-     smtp: ## Section + ## Leave this commented out if authentication is set to "none". 
-@@ -653,7 +653,7 @@ +-#starttls_auto = true 
-     sendmail: ## Section++starttls_auto = false
    
-       ## The path to the sendmail binary (default='/usr/sbin/sendmail') + ## The domain for the HELO command, if needed. 
-     #location: '/usr/sbin/sendmail' + #domain "smtp.example.org" 
-+      location: '/usr/sbin/sendmail'+@@ -561,7 +568,7 @@ 
 + [configuration.mail.sendmail]
    
-       ## Use exim and sendmail (default=false+ ## The path to the sendmail binary (default="/usr/sbin/sendmail"
-       #exim_fix: false +-#location = "/usr/sbin/sendmail
-@@ -665,10 +665,10 @@ ++location = "/usr/sbin/sendmail"
-     ## 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+ ## Use exim and sendmail (default=false) 
-   #podmin_email: 'podmin@example.org' + #exim_fix = false 
-   podmin_email: 'david@lapinbilly.eu'+@@ -573,9 +580,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 = "podmin" 
 ++account = "podmin"
    
-   ## Settings related to relays + ## E-mail address via which the administrator can be contacted. 
-   relay: ## Section++podmin_email =  'david@lapinbilly.eu' 
 + #podmin_email = "podmin@example.org" 
 + 
 + ## Advanced - ignore unless you know better 
  
 </file> </file>
-==== Configurer ==== 
  
-Adaptez le serveur à la //jail// et au serveur de base de données,  +=== Journaux ===
-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**.+
  
 +Pour éviter de surcharger vos disques de logs, configurez newsyslog(8)
  
-===== Démarrer ====+<file shell /etc/newsyslog.conf.d/diaspora.conf> 
 +/usr/home/diaspora/diaspora/log/eye_process*.log                  640 7     1000 *     NJ 
 +</file> 
 + 
 +Et, si vous utilisez ''redis'': 
 +<file shell /etc/newsyslog.conf.d/redis.conf> 
 +/var/log/redis/*.log                  600 7     1000 *     J /var/run/redis/redis.pid 
 +</file> 
 + 
 +===== Démarrer =====
  
 Lancez simplement: Lancez simplement:
Ligne 272: Ligne 399:
 root@popeye:# service nginx restart root@popeye:# service nginx restart
 </code> </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>
 +
 +===== Production =====
 +
 +En mode production, une fois l'outil installé, retirez l'utilisateur diaspora du groupe //wheel//.
 +
 +N'oubliez pas de désactiver l'option de //mmaping//, requise par //yarn//:
 +<code bash>
 +sysctl kern.elf64.allow_wx=0
 +</code>
 +===== Mettre à jour =====
 +
 +Pour évitez une interruption du service trop longue, préparez la mise à jour dans une autre [[https://wiki.fug-fr.org/doku.php?id=jails:zfs#multiplier |jail]].
 +Cloner votre //jail// courante et mettez à jour tout le système.
 +
 +
 +Suivez les [[https://wiki.diasporafoundation.org/Updating#Updating_a_production_install_to_a_new_minor_version|instructions]], sans tenir compte des variables d'environnement ''RAILS_ENV'' qui sont déjà activées dans ce système.
 +
 +
 +Lancez les opérations jusqu'à la migration de la base de données.
 +
 +Coupez le service de la //jail// de production et dupliquez la base de donnée du [[ports:db:postgresql#tests|serveur SQL]]:
 +
 +<code plsql>
 +CREATE DATABASE diaspora_prodold
 +WITH TEMPLATE diaspora_production
 +OWNER diaspora;
 +</code>
 +
 +Modifiez le nom base de données de production du fichier ''config/database.yml'' en ''diaspora_prodold'' et relancez le service.
 +
 +Dans la nouvelle //jail//, terminez la mise à jour.
 +Si tout s'est bien passé, routez la configuration [[ports:nginx]] vers la nouvelle //jail//.
 +
 +Stoppez l'ancien service, démarrez le nouveau et relancer le serveur web.
 +
 +===== poudriere =====
 +
 +Voici un exemple de liste de paquets à installer pour une [[:ports:poudriere|poudrière]]:
 +
 +<file>
 +databases/gdbm
 +databases/postgresql15-client
 +databases/redis62
 +databases/sqlite3
 +devel/autotools
 +devel/bison
 +devel/git
 +devel/libtool
 +devel/libunwind
 +ftp/curl
 +graphics/ImageMagick7@nox11
 +mail/ssmtp
 +ports-mgmt/pkg
 +security/sudo
 +shells/bash
 +textproc/libxslt
 +textproc/libyaml
 +www/node
 +www/yarn
 +</file>
 +
  
  • ports/web/diaspora.1588542409.txt.gz
  • Dernière modification : 2020/05/03 21:46
  • de david