Français
Commencer

← Tous les templates · Notes et wikis

Déployez Trilium Notes en un clic

Une base de connaissances hiérarchique pour de grandes collections de notes personnelles

Une alternative auto-hébergée à Notion, Evernote et Obsidian.

Qu’est-ce que Trilium Notes ?

Trilium Notes est une application de prise de notes gratuite et open source, conçue pour les grandes bases de connaissances personnelles : une alternative à Notion, Evernote et Obsidian pour qui veut garder ses notes sur son propre serveur. Les notes forment une arborescence aussi profonde que vous le voulez, et une même note peut se trouver à plusieurs endroits à la fois. En plus du texte enrichi avec tableaux, images et formules mathématiques, une note peut être du code, un canevas Excalidraw, une carte mentale, une carte géographique ou une carte de relations, et des attributs et des scripts transforment des notes en petits outils. Chaque note garde ses révisions, et la recherche plein texte la retrouve.

Le serveur offre presque la même application dans le navigateur, avec une vue tactile pour les téléphones, et les applications de bureau pour Windows, macOS et Linux se synchronisent avec lui. Les notes protégées sont chiffrées avec votre mot de passe, une note peut être partagée publiquement par un lien, et un web clipper enregistre des pages depuis le navigateur. Ce template crée une base de connaissances neuve et vide, avec le mot de passe indiqué, avant que Trilium ne réponde à qui que ce soit. Le revers : Trilium est fait pour une seule personne, avec un seul mot de passe et aucun compte pour d’autres, et il n’a pas d’application mobile officielle.

Hébergement de Trilium Notes sur Pethost

  1. Vous vous connectez à Pethost avec une clé d’accès, GitHub ou Google. Pas encore de machine ? Vous choisissez une offre, et le lien attend qu’elle soit prête.
  2. Nouveau projet s’ouvre sur Trilium Notes. Vous remplissez ce qu’il demande et cliquez sur Créer le projet : Mot de passe.
  3. En une minute ou deux, Trilium Notes tourne à sa propre adresse en HTTPS. Ses secrets sont créés au hasard, et ses données sont dans la sauvegarde nocturne.
  4. C’est un projet comme les autres : vous ou votre agent pouvez le modifier, revenir à une version précédente ou le restaurer.

Questions sur Trilium Notes

Trilium Notes est-il gratuit ?

Oui. Trilium est open source sous licence AGPL-3.0 et n’a pas de version payante : son serveur, ses applications de bureau et sa synchronisation sont tous gratuits.

Qu’est-ce que TriliumNext ?

C’est le projet communautaire qui a pris la suite de Trilium. Zadam, le développeur d’origine, lui a confié le dépôt de Trilium, et TriliumNext publie de nouveau l’application sous le nom Trilium Notes. Une base de données du Trilium d’origine s’y ouvre sans manipulation particulière.

Trilium ou Obsidian : lequel choisir ?

Obsidian garde des fichiers Markdown dans un dossier sur chaque appareil, n’est pas open source et vend sa synchronisation. Trilium garde les notes dans une base de données sur votre serveur, est open source et synchronise gratuitement ses applications de bureau avec votre serveur. Les points forts d’Obsidian sont ses plugins et ses simples fichiers ; ceux de Trilium, l’arborescence de notes, le clonage et ses nombreux types de notes.

Existe-t-il une application mobile Trilium ?

Il n’existe pas d’application mobile officielle. Le serveur a une interface mobile pour les navigateurs des téléphones, et il existe des applications de la communauté : TriliumDroid et Pocket Trilium pour Android, et Trinote pour iOS.

Puis-je importer mes notes depuis Evernote ou des fichiers Markdown ?

Oui. Trilium importe les exports ENEX d’Evernote et les fichiers Markdown, et exporte les notes en Markdown ou en HTML : vos notes peuvent repartir aussi facilement qu’elles sont arrivées.

De combien de mémoire et de disque Trilium Notes a-t-il besoin ?

Trilium est léger : environ 100 MB de mémoire ; sa base de données grossit avec vos notes et vos pièces jointes, et ses propres sauvegardes quotidiennes, hebdomadaires et mensuelles sont rangées à côté. Sur Pethost, l’offre Starter lui suffit, avec de la place pour d’autres applications à côté.

Le fichier Docker Compose de Trilium Notes

Le template, c’est ce compose.yaml et les variables écrites dans le .env du projet à sa création. Pethost exécute le fichier tel qu’il est écrit.

Conteneurs : trilium (triliumnext/trilium:v0.106.1).

Volumes, dans la sauvegarde nocturne : data.

services:
  trilium:
    image: triliumnext/trilium:v0.106.1
    restart: unless-stopped
    environment:
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      # Requests come through the proxy: the client's own address is the one it forwards, so that
      # a stranger's wrong passwords do not lock everyone out of signing in.
      TRILIUM_NETWORK_TRUSTEDREVERSEPROXY: uniquelocal
    # A new Trilium offers its setup to whoever opens it first, then asks them for the password.
    # So while it has no password, it runs on port 8081, which nobody reaches: a new knowledge base
    # is made there with the password given, and only then does Trilium answer on 8080.
    command:
      - sh
      - -c
      - |
        set -e
        if ! node -e '
          const { DatabaseSync } = require("node:sqlite");
          const db = new DatabaseSync(process.env.TRILIUM_DATA_DIR + "/document.db", { readOnly: true });
          const row = db.prepare("select value from options where name = ?").get("passwordVerificationHash");
          process.exit(row?.value ? 0 : 1);
        ' 2>/dev/null; then
          TRILIUM_PORT=8081 node ./main.mjs &
          setup=$$!
          node -e '
            const base = "http://127.0.0.1:8081";
            const setUp = async () => {
              const status = await fetch(base + "/api/setup/status").then((r) => r.json());
              if (!status.isInitialized) {
                const made = await fetch(base + "/api/setup/new-document?skipDemoDb", {
                  method: "POST",
                  headers: { "content-type": "application/json" },
                  body: JSON.stringify({ locale: "en" })
                });
                if (!made.ok) throw new Error("new-document: " + made.status + " " + (await made.text()));
              }
              const password = process.env.ADMIN_PASSWORD;
              const set = await fetch(base + "/set-password", {
                method: "POST",
                body: new URLSearchParams({ password1: password, password2: password }),
                redirect: "manual"
              });
              if (set.status !== 302) throw new Error("set-password: " + set.status + " " + (await set.text()));
            };
            (async () => {
              let failure;
              for (let i = 0; i < 180; i++) {
                try {
                  return await setUp();
                } catch (error) {
                  failure = error;
                  await new Promise((done) => setTimeout(done, 1000));
                }
              }
              console.error(failure);
              process.exit(1);
            })();
          '
          kill $$setup
          wait $$setup || true
        fi
        chown -R node:node /home/node
        exec su -c "node ./main.mjs" node
    volumes:
      - data:/home/node/trilium-data

volumes:
  data:

Aussi dans Notes et wikis