Skip to content

Table of Contents

  1. Introduction
    1. Phase 2
    2. Installer make
    3. Phase 3 variante

Introduction

Premier post de blog. Le projet : tenir un blog avec emacs (mon projet dedalus), dans lequel j'ai toutes mes notes, journal, taches, agenda, etc… Publier mes posts créés avec emacs dans un projet django. le rojet Django sera une simple application blog minimal avec un theme simple et épuré et publier les posts à différentes version de manière automatisée et simplifiée. Le "workflow" comme on dit :

  • Ecrire et travailler un post par fichier .org avec emacs.
  • Transformer le fichier org en md (export)
  • puis importer dans django.

Le projet est découpé en 7 phases :

  • [X] Phase 1 : créer le blog dans le projet dedalus et créer les posts. (semaine 40)
  • [X] Phase 2 : export auto depuis emacs en md. (s 41)
  • [ ] Phase 3 : création du projet de blog ultra minimaliste en Django (s. 42)
  • [ ] Phase 4 : thème très simple et brut avec tailwindcss. Peut être amélioré plus tard. (s. 43)
  • [ ] Phase 5 : import des posts MD dans Django (bdd SQLite) (s.44)
  • [ ] Phase 6 : rajouter le passage par gît et forgejo (s.45)
  • [ ] Phase 7 : blog déployé sur serveur Arrakis dans docker. (s.46)

Pour les en-têtes, j'ai fait une petite commande C-c b (comme blog) qui insere toutes les en-têtes du post. On peut plus tard, on verra, définir le titre à partir du nom de fichier (pas la peine ?)

Le blog en question sera (à raison d'une publication par semaine) un compte rendu de mes essais d'auto hébergement, de déployer des applications sur un serveur distant (VPS), par exemple Duplicati, FireflyIII, Paperless, etc… de déployer des sites Django, sur le travail dans emacs, sur Django naturellement, git, docker, etc…

C'est necessairement simplifié, plutot à voir comme des recherches de débutant, je ne crois pas avoir une quelconque expertise dans ces domaines, c'est plus un aide mémoire pour moi même.

Le projet dedalus est mon projet d'écriture en emacs. J'en parlerai dans une autre publication. ou je présenterai ce que j'ai fait et pourquoi. Je cherche encore un nom pour ce projet de micro-blog. (à réfléchir)

Phase 2

La seconde phase du projet, l'exportation du post en md. dans le répertoire build/md. Passer en mode dired C-x d puis "+" pour créer des répertoires. et "g" pour rafraichir le répertoire. ON crée les répertoires build / md et images. ainsi que le script export-org.el M-x term pour ouvrir un terminal /bin/bash puis Ctrl d pour sortir du terminal. lancer le fichier avec la command emacs -Q --batch -l workinprogress/blog/export-org.el Attention résoudre les erreurs ! dans le terminal M-x term faire cd.. puis la commande emacs -Q --batch -l export-org.el renvoie à la fin ok export terminée. Ou bien maintenant make build et make serve. Pour conserver la fenetre de terminal. Partager la fenetre en 2 avec C-x 2. Puis lancer le terminal M-x term. Pour sortir temporairement du terminal C-c C-j (passer en line mode) et C-x o pour changer de fenetre.

;; workinprogress/blog/export-org.el
(require 'ox-md)
(defun dedalus/export-all-org-to-md ()
  (let* ((root (locate-dominating-file default-directory "workinprogress"))
         (src (expand-file-name "workinprogress/blog/posts" root))
         (dst (expand-file-name "workinprogress/blog/build/md" root)))
     (make-directory dst t)
     (dolist (f (directory-files src t "\\.org$"))
       (with-current-buffer (find-file-noselect f)
          (let* ((base (file-name-base f))
             (out (expand-file-name (concat base ".md") dst)))
           (org-export-to-file 'md out))))))


(dedalus/export-all-org-to-md)

attention le script est un peu complètement différent maintenant.

ON va essayer de faire un peu plus simple en attendant : avec publish.el je dois générer le site en html avec la commande emacs -Q --batch -l workinprogress/blog/publish.el puis lancer un serveur python python -m http.server 8000 --directory /workinprogress/blog/public --bind 127.0.0.1 puis en local lancer un tunnel ssh : ssh -N -L 8000:127.0.0.1:8000 -p 2222 -i ~/.ssh/dedalus_deploy dedalus@51.159.52.61 et le site est visible sur http://localhost:8000

Insérer une image depuis le poste local : scp image2.jpg franck@51.159.52.61:/home/dockerhub/stacks/emacs/workinprogress/blog/images/

Installer make

Depuis le serveur Redkite :

docker exec -it --user root emacs sh -lc 'cat /etc/os-release' docker exec -it --user root emacs sh -lc 'apt-get update && apt-get install -y make && rm -rf /var/lib/apt/lists/*'

puis avec M-x term faire ensuite make build et make serve.

Phase 3 variante

Créer le fichier publish.el pour générer un site html statique. On verra comment faire pour créer le serveur dans docker-compose et préparer le site dans Nginx Proxy Manager.

← Retour aux articles