💾 Archived View for zergy.net › blog › 035-installer-share2fedi.gmi captured on 2024-05-12 at 15:05:19. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-05-10)

-=-=-=-=-=-=-

Blog /home/zergy - Installer Share2Fedi

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.

Installation

Share2Fedi peut être trouvé sur son GitHub, les instructions d'installation n'étant pas toujours claire, voyons commant l'installer sur votre serveur.

NĂ©cessaire

Share2Fedi

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

Serveur web

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/;
}

SystemD

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

NGinx

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;
    }
}

Intégration à un site

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>

Liens

GitHub de Share2Fedi

Site de PNPM

Accueil du Blog

Accueil de la capsule