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 22:15] – [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>
  
-Préparer l'environnement 'gem/ruby':+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> 
 + 
 +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 -diaspora service redis start 
 +root@popeye:# jexec disapora
 </code> </code>
  
Ligne 152: Ligne 213:
 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>
 +
 +==== 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'': 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 ;   - ''database.yml'', pour définir les accès à la base de donnée ;
-  - ''diapora.yml'', pour tout le reste.+  - ''diapora.toml'', pour tout le reste.
  
 Dirigez la connexion vers votre base de données: Dirigez la connexion vers votre base de données:
Ligne 193: Ligne 263:
   - Donnez un nom de serveur .   - Donnez un nom de serveur .
  
-<file diff config/diaspora.yml+ 
---- config/diaspora.yml.example 2020-05-02 21:28:46.158783000 +0200 +<file diff config/diaspora.toml
-+++ config/diaspora.yml 2020-05-04 00:00:32.367677000 +0200 +--- config/diaspora.toml.example        2023-05-18 11:09:58.604809000 +0000 
-@@ -36,7 +36,7 @@ ++++ config/diaspora.toml        2023-05-18 11:28:29.378523000 +0000 
-     ## However changing http to https is okay and has no consequences. +@@ -30,7 +30,7 @@ 
-     ## If you do change the URL, you will have to start again as the URL + ## However changing http to https is okay and has no consequences. 
-     ## will be hardcoded into the database. + ## If you do change the URL, you will have to start again as the URL 
-   #url"https://example.org/" + ## will be hardcoded into the database. 
-   url"https://diaspora.lapinbilly.eu/"+-#url "https://example.org/" 
 ++url "https://diaspora2.lapinbilly.eu/"
    
-     ## Set the bundle of certificate authorities (CA) certificates. + ## Set the bundle of certificate authorities (CA) certificates. 
-     ## This is specific to your operating system. + ## This is specific to your operating system. 
-@@ -44,+44,7 @@ +@@ -39,+39,7 @@ 
-     ## For Debian, Ubuntu, Archlinux, Gentoo (package ca-certificates): + #certificate_authorities = "/etc/ssl/certs/ca-certificates.crt" 
-     #certificate_authorities: '/etc/ssl/certs/ca-certificates.crt' + ## For CentOS, Fedora: 
-     ## For CentOS, Fedora: + #certificate_authorities = "/etc/pki/tls/certs/ca-bundle.crt" 
--    #certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt' ++certificate_authorities '/usr/local/share/certs/ca-root-nss.crt'
-   certificate_authorities'/usr/local/share/certs/ca-root-nss.crt'+
    
-     ## URL for a remote Redis (default=localhost). + ## URL for a remote Redis (default="localhost"). 
-     ## Don't forget to restrict IP access if you uncomment these! + ## Don't forget to restrict IP access if you uncomment these! 
-@@ -175,+175,@@ +@@ -221,11 +222,11 @@ 
-     ## Where the appserver should listen to (default=unix:tmp/diaspora.sock) + [configuration.privacy.statistics]
-     #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) + ## Local user total and 6 month active counts
-     #pid: 'tmp/pids/web.pid' +-#user_counts = true 
-@@ -609,14 +609,14 @@ ++user_counts = true
-   mail: ## Section+
    
-     ## First you need to enable it+ ## Local post total count
-   #enable: true +-#post_counts = true 
-   enable: true++comment_counts = true
    
-     ## Sender address used in mail sent by Diaspora+ ## Use Camo to proxy embedded remote images. 
-   #sender_address: 'no-reply@example.org' + ## Do not enable this setting unless you have a working Camo setup. Using 
-+    sender_address: 'no-reply@lapinbilly.eu'+@@ -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.
    
-     ## 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'+@@ -517,17 +519,21 @@ 
-     smtp: ## Section + [configuration.mail] 
-@@ -653,+653,@@ + ## First you need to enable it. 
-     sendmail: ## Section+-#enable = true 
 ++enable = true
    
-       ## The path to the sendmail binary (default='/usr/sbin/sendmail'+ ## Sender address used in mail sent by Diaspora. 
-     #location: '/usr/sbin/sendmail' + #sender_address "no-reply@example.org" 
-     location: '/usr/sbin/sendmail'++sender_address = 'no-reply@lapinbilly.eu'
    
-       ## Use exim and sendmail (default=false) + ## This selects which mailer should be used. Use "smtp" for smtp 
-       #exim_fix: false + ## connection or "sendmail" to use the sendmail binary
-@@ -665,10 +665,10 @@ + #method = "smtp
-     ## This doesn't make the user an admin but is used when generic ++method = 'sendmail'
-     ## 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+ ## Ignored if method isn't "smtp"
--    #podmin_email: 'podmin@example.org' + [configuration.mail.smtp] 
-   podmin_email: 'david@lapinbilly.eu'++host = 'mail.out.net' 
 ++port = 465
    
-   ## Settings related to relays + ## Host and port of the smtp server handling outgoing mail. 
-   relay: ## Section+ ## This should match the common name of the certificate sent by 
 +@@ -539,6 +545,7 @@ 
 + ## Use one of "plain", "login" or "cram_md5". Use "none" 
 + ## if server does not support authentication. 
 + #authentication = "plain" 
 ++authentication = 'login' 
 +  
 + ## Credentials to log in to the SMTP server. 
 + ## May be necessary if authentication is not "none"
 +@@ -547,7 +554,7 @@ 
 +  
 + ## Automatically enable TLS (default=true). 
 + ## Leave this commented out if authentication is set to "none"
 +-#starttls_auto = true 
 ++starttls_auto = false 
 +  
 + ## The domain for the HELO command, if needed. 
 + #domain = "smtp.example.org" 
 +@@ -561,7 +568,7 @@ 
 + [configuration.mail.sendmail] 
 +  
 + ## 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 
 +@@ -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" 
 +  
 + ## E-mail address via which the administrator can be contacted. 
 ++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 282: 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.1588544100.txt.gz
  • Dernière modification : 2020/05/03 22:15
  • de david