💾 Archived View for zergy.net › blog › 035-installer-share2fedi.gmi captured on 2024-05-10 at 10:37:32. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-02-05)
-=-=-=-=-=-=-
Twitter et Facebook (et d'autres) mettent à disposition des méthodes permettant de partager des informations extérieures sur leurs sites respectifs, voyons comment faire de même avec Mastodon.
Ces dernières années ous avons tous vu pulluler sur les sites d'informations et blogs les boutons « Partager sur Facebook » et « Partager sur Twitter ». Ceux-ci ne fûrent sans doute pas totalement étrangers au succés de ces réseaux sociaux, permettant de les alimenter et d'y attirer de nouveaux utilisateurs.
Nous n'avons cependant pas d'équivalant pour Mastodon, la nature décentralisé de celui-ci n'aidant pas, il n'existe en effet pas de page web unique permettant de partager des informations sur Mastodon, chaque instances devraient avoir la sienne. Il existe cependant le projet Share2Fedi pour palier à celà .
Share2Fedi une fois en place permettera Ă un utilisateur d'envoyer sur Mastodon des information via un lien hypertexte et une petite page web.
Share2Fedi peut être trouvé sur son GitHub, les instructions d'installation n'étant pas toujours claire, voyons commant l'installer sur votre serveur.
Premièrement, créez un utilisateur pour Share2Fedi et clonez dans son dossier personnel le contenu du GitHub afin de récupérez le code source du projet.
# useradd -d /opt/share2fedi -s /bin/false share2fedi # git clone https://github.com/kytta/share2fedi /opt/share2fedi # chown share2fedi:share2fedi /opt/share2fedi # su -s /bin/bash - share2fedi
Il vous faudra ensuite installear PNPM.
$ curl -fsSL https://get.pnpm.io/install.sh | sh - $ . ~/.profile
Utilisez ensuite PNPM pour installer et compiler les dépendances nécessaires au fonctionnement de Share2Fedi.
$ pnpm install $ pnpm build
Ă€ partie de lĂ , vous devriez pouvoir lancer le service via la commande node.
Par défaut, le service écoute sur localhost et le port 3000.
$ node dist/server/entry.mjs
Créez un hôte virtuel simple (avec support HTTPS, on est en 2023, merci), il faudra juste utiliser une instruction de proxy pour rediriger ce qui lui est envoyé vers le port et l'hôte utilisé par Share2Fedi
ProxyPass "/" "http://localhost:3000/"
location / { proxy_pass http://localhost:3000/; }
Créez une unité SystemD dans /etc/systemd/system/share2fedi.service avec le contenu suivant :
[Unit] Description=share2fedi After=network.target [Service] Type=simple User=share2fedi WorkingDirectory=/opt/share2fedi Environment="HOST=127.0.0.1" Environment="PORT=3000" ExecStart=/usr/bin/node ./dist/server/entry.mjs ExecReload=/bin/kill -SIGUSR1 $MAINPID TimeoutSec=15 Restart=always # Proc filesystem ProcSubset=pid ProtectProc=invisible # Capabilities CapabilityBoundingSet= # Security NoNewPrivileges=true # Sandboxing ProtectSystem=strict PrivateTmp=true PrivateDevices=true PrivateUsers=true ProtectHostname=true ProtectKernelLogs=true ProtectKernelModules=true ProtectKernelTunables=true ProtectControlGroups=true RestrictAddressFamilies=AF_INET RestrictAddressFamilies=AF_INET6 RestrictAddressFamilies=AF_NETLINK RestrictAddressFamilies=AF_UNIX RestrictNamespaces=true LockPersonality=true RestrictRealtime=true RestrictSUIDSGID=true RemoveIPC=true PrivateMounts=true ProtectClock=true # System Call Filtering SystemCallArchitectures=native SystemCallFilter=~@cpu-emulation @debug @keyring @ipc @mount @obsolete @privileged @setuid SystemCallFilter=@chown SystemCallFilter=pipe SystemCallFilter=pipe2 ReadWritePaths=/opt/share2fedi [Install] WantedBy=multi-user.target
Pensez à modifier les variables HOST et PORT si nécessaire.
Puis mettez à jour SystemD, ajoutez le service share2fedi au démarrage du système et démarrez-le.
# systemctl daemon-reload # systemctl enable --now share2fedi.service
Afin de rendre Share2Fedi Ă un site, vous pouvez utiliser la configuration de server NGinx suivante :
server { listen 80; listen [::]:80; server_name share2fedi.domain.tld; location ^~ "/.well-known/acme-challenge" { root "/var/www/acme-challenge"; default_type "text/plain"; try_files $uri =404; } location / { return 303 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_dhparam /etc/ssl/private/dh2048.pem; ssl_protocols TLSv1.3; ssl_prefer_server_ciphers off; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt; resolver 127.0.0.1; server_name share2fedi.domain.tld; gzip on; location / { autoindex off; proxy_pass http://localhost:3000/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_buffering off; tcp_nodelay on; } }
Pour intégrer un lien hypertexte permettant de partager quelque chose sur Mastodon utilisant votre instance de Share2Fedi, utilisez la syntaxe suivante :
<a href="https://share2fedi.domain.tld/?text=Texte%20du%20Pouet">Partager sur Mastodon</a>
L'utilisateur pourra alors partager via Share2Fedi un pouet pré-renpli sur l'instance Mastodon de son choix.
Il est possible de pré-remplir l'instance où sera envoyée le pouet via la variable optionelle instance, auquel cas, le lien hypertexte aura la forme suivante :
<a href="https://share2fedi.domain.tld/?text=Texte%20du%20Pouet&instance=mastodon.xyz">Partager sur Mastodon</a>