Notes about activities on Gemini
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Etienne Baqué 295c31a00f Added content to the capsule 3 days ago
capsule Added content to the capsule 3 days ago
README.md Add notes about publishing with git (#3) 1 week ago
agate-template.service Added notes about Gemini server 2 weeks ago
post-receive-template Add notes about publishing with git (#3) 1 week ago

README.md

Notes sur Gemini

Installation d'un serveur Agate

  1. Installer le serveur Agate : https://github.com/mbrubeck/agate

    • Plusieurs façons d'installer le serveur. En voici deux:
      • Soit en téléchargeant le binaire dans un dossier spécifique :
        mkdir ~/bin
        # Ajuster l'architecture et la version si besoin.
        wget -O ~/bin/agate.gz https://github.com/mbrubeck/agate/releases/download/v2.5.2/agate.x86_64-unknown-linux-gnu.gz 
        cd ~/bin && gunzip agate.gz
        chmod +x agate
        
      • Soit en utilisant cargo (et en installant la Rust toolchain au préalable) :
        curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
        cargo install agate
        

        Possible erreur si installation sur un nouveau serveur Debian : error: linker 'cc' not found. Résolution : sudo apt install build-essential

  2. Ajouter du contenu

    • Créer un dossier qui contiendra du contenu à publier:
      mkdir ~/gemini && cd ~/gemini
      echo "# Hello World" > index.gmi
      
  3. Installer un certificat TLS et une clé privée

    • Choisir/créer un dossier où seront stockés le certificat et la clé :
      mkdir -p ~/certs/gemini && cd ~/certs/gemini
      # Remplacer nom.de.domaine.com ci-dessous par le nom de domaine choisi.
      openssl req -new -subj "/CN=nom.de.domaine.com" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 -nodes -keyout key.pem -out cert.pem 
      
  4. Ajouter Agate à systemd

    • Ajouter un nouveau service, en se basant sur ce template :
      cd /etc/systemd/system
      sudo wget -O agate.service https://codeberg.org/etienne/gemini/raw/branch/main/agate-template.service
      
    • Dans le template téléchargé, remplacer <username> et <nom.de.domaine.com> par le nom d'utilisateur utilisé jusqu'ici et le nome de domaine choisi.
  5. Lancer le service Agate

    sudo systemctl start agate
    sudo systemctl enable agate
    

    Et c'est bon ! Essayer de contacter le site via un navigateur Gemini, comme Lagrage par exemple.

    S'il y a une erreur de connexion :

    • s'assurer que le port 1965 est accepté au niveau du firewall.
    • exécuter sudo journalctl -f pour vérifier que le service agate ne renvoie pas d'erreur.

Sources qui ont permis l'élaboration de ce guide d'installation :

Déployer du contenu sur une capsule Gemini via Git

Ces quelques étapes permettent de mettre en place un dépôt vide sur le serveur où se trouve une capsule Gemini. Il sera alors possible d'y pousser via git un projet Gemini (statique) créé localement afin de le publier automatiquement.

  1. Créer un dépôt vide sur serveur, qui sera la cible des git push fait localement.

    mkdir ~/repo && cd ~/repo
    mkdir gemini.git && cd gemini.git
    git init --bare
    
  2. Créer un hook post-receive, basé sur ce template-là.

    cd ~/repo/gemini.git/hooks
    wget -O post-receive https://codeberg.org/etienne/gemini/raw/branch/main/post-receive-template
    chmod +x post-receive
    
  3. Modifier le post-receive script :

    • Remplacer <username> par le nom d'utilisateur utilisé pour acceder au contenu Gemini.
    • Ajuster la valeur de GEMINI_CONTENT_SOURCE si le contenu à publier se trouve dans un dossier spécifique de votre projet.
  4. De retour sur le localhost, depuis la racine du projet, rajouter le nouveau dépôt vide en tant que remote. Par example :

    git remote add gemini username@adresse.ou.ip.serveur:~/repo/gemini.git
    
  5. Et voilå ! Vous pouvez maintenant publier votre contenu depuis votre localhost via git en faisant:

    git push gemini master