<?xml version="1.0" encoding="UTF-8" ?>
<!-- RSS generated by PHPBoost on Tue, 25 Aug 2026 08:11:34 +0200 -->
<rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[master]]></title>
		<atom:link href="https://imot3k.fr/syndication/?url=/rss/articles/1" rel="self" type="application/rss+xml"/>
		<link>https://www.imot3k.fr</link>
		<description><![CDATA[Tutos que vous avez probablement vu dans une de mes vidéos.]]></description>
		<copyright>(C) 2005-2026 PHPBoost</copyright>
		<language>fr</language>
		<generator>PHPBoost</generator>
		
            <item>
                <title><![CDATA[Supervision Grafana, InfluxDB et Télégraf + Raspberry PI en Kiosque]]></title>
                <link>https://imot3k.fr/articles/?url=/1-tutos/3-kiosque/</link>
                <guid>https://imot3k.fr/articles/?url=/1-tutos/3-kiosque/</guid>
                <description><![CDATA[Bienvenue sur cet article concernant la mise en place d&#8217;une supervision Grafana et d&#8217;informations complémentaires à ma vidéo. Je vous recommande vivement de la regarder avant pour comprendre le contexte de cet article<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<br />
Pour rappel ma supervision s&#8217;organise ainsi<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<br />
<strong>Hôte à superviser</strong>   <span class="emoji-tag">&rarr;</span>   <strong>Télégraf</strong>       <span class="emoji-tag">&rarr;</span>       <strong>InfluxDB</strong>           <span class="emoji-tag">&rarr;</span>   <strong>Grafana</strong><br />
(Physique ou VM)       (Collecteur)      (Base de données)     (Afficheur)<br />
<br />
<br />
Ou pour le cas de HomeAssistant<span class="emoji-tag">&nbsp;</span>en utilisant l&#8217;intégration InfluxDB :<br />
<br />
<strong>Entité HA à superviser</strong> <span class="emoji-tag">&rarr;</span> <strong>InfluxDB</strong> <span class="emoji-tag">&rarr;</span> <strong>Grafana</strong><br />
<br />
<br />
<figure><img src="https://imot3k.fr/upload/grafanax.png" alt="Petit rappel visuel de la vidéo" /><figcaption>Petit rappel visuel de la vidéo</figcaption></figure><br />
<br />
<br />
Dans l&#8217;ordre de la vidéo, et pour exemple, voici mon fichier de configuration Télégraf.<br />
<br />
<br />
<h2 class="formatter-title">Ficher de conf Télégraf</h2><br />
<br />
Pour superviser les interfaces du Fortinet<span class="emoji-tag">&nbsp;</span>(bien avoir le SNMP d&#8217;actif dans le forti ET dans l&#8217;interface LAN) :<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  agents = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"udp://<ipLANduforti>:161"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  version = <span style="color: #000000;">2</span>
  community = <span style="color: #ff0000;">"public"</span>
  interval = <span style="color: #ff0000;">"30s"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"fortigate_interfaces"</span>
    <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
      name = <span style="color: #ff0000;">"ifName"</span>
      oid = <span style="color: #ff0000;">"1.3.6.1.2.1.31.1.1.1.1"</span>
      is_tag = <span style="color: #c20cb9; font-weight: bold;">true</span>
    <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
      name = <span style="color: #ff0000;">"in_bytes"</span>
      oid = <span style="color: #ff0000;">"1.3.6.1.2.1.31.1.1.1.6"</span>
    <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
      name = <span style="color: #ff0000;">"out_bytes"</span>
      oid = <span style="color: #ff0000;">"1.3.6.1.2.1.31.1.1.1.10"</span>
    <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
      name = <span style="color: #ff0000;">"status"</span>
      oid = <span style="color: #ff0000;">"1.3.6.1.2.1.2.2.1.8"</span></pre></pre></div></div><br />
<br />
Pour superviser les VPNs IPSec du Fortinet<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  name = <span style="color: #ff0000;">"fortigate_vpn_status"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"phase1_name"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.4.1.12356.101.12.2.2.1.2"</span>
    is_tag = <span style="color: #c20cb9; font-weight: bold;">true</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.table.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"status"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.4.1.12356.101.12.2.2.1.20"</span></pre></pre></div></div><br />
<br />
Pour superviser mon onduleur Eaton (avec carte réseau Network-M2)<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  agents = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"udp://<ipdelonduleur>:161"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  version = <span style="color: #000000;">2</span>
  community = <span style="color: #ff0000;">"public"</span>
  interval = <span style="color: #ff0000;">"60s"</span>
  name_override = <span style="color: #ff0000;">"eaton_ups"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"battery_status"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.2.1.0"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"battery_charge_pct"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.2.4.0"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"battery_minutes_remaining"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.2.3.0"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"output_source"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.4.1.0"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"output_load_pct"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.4.4.1.5.1"</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.snmp.field<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    name = <span style="color: #ff0000;">"output_power_w"</span>
    oid = <span style="color: #ff0000;">"1.3.6.1.2.1.33.1.4.4.1.4.1"</span></pre></pre></div></div><br />
<br />
<br />
Pour superviser les pools ZFS sur TrueNAS<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.exec<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  commands = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"/opt/telegraf/scripts/truenas_pool.sh"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  timeout = <span style="color: #ff0000;">"10s"</span>
  interval = <span style="color: #ff0000;">"5m"</span>
  data_format = <span style="color: #ff0000;">"influx"</span></pre></pre></div></div><br />
<br />
<br />
Pour superviser les conteneurs Docker<span class="emoji-tag">&nbsp;</span>(attention avoir les healthchecks activés et activer l&#8217;API)<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>inputs.docker<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  endpoint = <span style="color: #ff0000;">"tcp://<IpDocker>:2375"</span>
  gather_services = <span style="color: #c20cb9; font-weight: bold;">false</span>
  container_state_include = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"running"</span>, <span style="color: #ff0000;">"created"</span>, <span style="color: #ff0000;">"exited"</span>, <span style="color: #ff0000;">"paused"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  perdevice_include = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"cpu"</span>, <span style="color: #ff0000;">"network"</span>, <span style="color: #ff0000;">"blkio"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  total_include = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"cpu"</span>, <span style="color: #ff0000;">"network"</span>, <span style="color: #ff0000;">"blkio"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></pre></div></div><br />
<br />
<br />
<br />
Et dans la section <span class="emoji-tag">&laquo;</span><span class="emoji-tag">&nbsp;</span>Output plugins<span class="emoji-tag">&nbsp;</span><span class="emoji-tag">&raquo;</span> c&#8217;est la sortie des données de Télégraf qui les renvoie à InfluxDB<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>outputs.influxdb_v2<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  urls = <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">"http://<IpetPortInfluxDB>"</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
  token = <span style="color: #ff0000;">"<TokenInfluxDB>"</span>
  organization = <span style="color: #ff0000;">"iMot3k"</span>
  bucket = <span style="color: #ff0000;">"homelab"</span></pre></pre></div></div><br />
<br />
<br />
<h2 class="formatter-title">Fonctionnement des tuiles</h2><br />
<br />
Ensuite voici les morceaux de code de mon dashboard tuile par tuile<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<h4 class="formatter-title">Consommation de la baie</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Value and Name</strong><br />
Color mode <strong>Background Gradient</strong><br />
Graph mode <strong>Area</strong><br />
Unit <strong>Watt (W)</strong><br />
Color scheme <strong>From threshold (by value)</strong><br />
Thresholds <strong>Bleu</strong> Base<br />
Threshold <strong>Rouge</strong> 330<br />
Override Fields with name <strong>output_power_w</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>Consommation baie</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement == "eaton_ups")
  |> filter(fn: (r) => r._field == "output_power_w")</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Charge onduleur</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Value and name</strong><br />
Color mode <strong>Background Gradient</strong><br />
Unit <strong>Percent (0-100)</strong><br />
Color scheme <strong>From thresholds (by value)</strong><br />
Thresholds <strong>Vert</strong> Base<br />
Thresholds <strong>Jaune</strong> 50<br />
Thresholds <strong>Rouge</strong> 70<br />
Override Fields with name <strong>output_load_pct</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>Charge onduleur</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "eaton_ups")
  |> filter(fn: (r) => r._field == "output_load_pct")</pre></pre></div></div><br />
<br />
<br />
<br />
<h4 class="formatter-title">Temps ondulée</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Color mode <strong>Background Gradient</strong><br />
Unit <strong>minutes (m)</strong><br />
Color scheme <strong>From thresholds (by value)</strong><br />
Thresholds <strong>Rouge</strong> base<br />
Thresholds <strong>Violet</strong> 21<br />
Override Fields with name <strong>battery_minutes_remaining</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>Temps ondulée</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "eaton_ups")
  |> filter(fn: (r) => r._field == "battery_minutes_remaining")</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Autotest onduleur</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Fields <strong>All Fields</strong><br />
Text mode <strong>Value and name</strong><br />
Color mode <strong>Value</strong><br />
Text size Title <strong>20</strong><br />
Text size Value <strong>26</strong><br />
Value mappings <strong>Done and passed</strong> <span class="emoji-tag">&rarr;</span> <strong>Fonctionnement optimal</strong> (bleu)<br />
Thresholds <strong>Rouge</strong> Base<br />
Override Fields with name <strong>state</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>Autotest Onduleur<span class="emoji-tag">&nbsp;</span>:</strong><br />
<br />
Transformations<span class="emoji-tag">&nbsp;</span>Time <strong>caché</strong><br />
Transformations state {domain="sensor", entity_id="cave_eaton_resultat_de_l_autotest"} <strong>montré</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homeassistant")
  |> range(start: -30d)
  |> filter(fn: (r) => r["entity_id"] == "cave_eaton_resultat_de_l_autotest")
  |> filter(fn: (r) => r["_field"] == "state")
  |> last()</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">TRUENAS-SSD (et HDD)</h4><br />
<br />
Panneau <strong>Gauge</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Auto</strong><br />
Unit <strong>bytes(IEC)</strong><br />
Min <strong>0</strong><br />
Max <strong>10470000000000</strong><br />
Display name <strong>TRUENAS-SSD</strong><br />
Color scheme <strong>Green-Yellow-Red (by value)</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: -15m)
  |> filter(fn: (r) =>
    r._measurement == "truenas_dataset" and
    r._field == "used" and
    r.name == "TRUENAS-SSD/DATASET-SSD"
  )
  |> last()</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Graphiques interfaces Fortinet</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Value and name</strong><br />
Color mode <strong>Value</strong><br />
Unit <strong>megabits/sec</strong><br />
Thresholds <strong>Bleu</strong> 50<br />
Thresholds <strong>Jaune</strong> 100<br />
Thresholds <strong>Orange</strong> 200<br />
Thresholds <strong>Rouge</strong> 600<br />
Override Fields with name <strong>in_bytes</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>DOWNLOAD</strong><br />
Override Fields with name <strong>out_bytes</strong> <span class="emoji-tag">&rarr;</span> Display name <strong>UPLOAD</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) =>
    r._measurement == "fortigate_interfaces" and
    r.ifName == "wan1" and
    (r._field == "in_bytes")
  )
  |> aggregateWindow(every: 1m, fn: last)
  |> difference(nonNegative: true)
  |> map(fn: (r) => ({
      r with
      _value: float(v: r._value) * 8.0 / 60.0 / 1000000.0
  }))</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Tunnels IPSec</h4><br />
<br />
Panneau <strong>Table</strong><br />
Cell type <strong>Auto</strong><br />
Value mappings <strong>1</strong> <span class="emoji-tag">&rarr;</span> <strong>Rouge</strong><br />
Value mappings <strong>2</strong> <span class="emoji-tag">&rarr;</span> <strong>Vert</strong><br />
Value mappings <strong><nom tunnel forti></strong> <span class="emoji-tag">&rarr;</span> <strong><nom affiché></strong><br />
Override Fields with name <strong>Value</strong> <span class="emoji-tag">&rarr;</span> Color scheme <strong>From thresholds (by value)</strong> et Cell type <strong>Colored background</strong>. Apply to entire row <strong>coché</strong>.<br />
Override Fields with name <strong>Value</strong> <span class="emoji-tag">&rarr;</span> Hide in table <strong>coché</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: -10m)
  |> filter(fn: (r) => r._measurement == "fortigate_vpn_status")
  |> filter(fn: (r) => r._field == "status")
  |> group(columns: ["phase1_name"])
  |> max()
  |> keep(columns: ["phase1_name", "_value", "_time"])</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Mesure puissance instantanée Linky</h4><br />
<br />
Pannel <strong>Gauge</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Unit <strong>Volt-Ampere (VA)</strong><br />
Min <strong>0</strong><br />
Max <strong><pSouscrite></strong><br />
Display name <strong>Puissance instantanée</strong><br />
Color scheme <strong>From thresholds (by value)</strong><br />
Thresholds <strong>Vert</strong> Base<br />
Thresholds <strong>Jaune</strong> 4500<br />
Thresholds <strong>Rouge</strong> 6000<br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homeassistant")
  |> range(start: -24h)
  |> filter(fn: (r) => r["entity_id"] == "lixee_zlinky_tic_electricalmeasurementapparentpower")
  |> filter(fn: (r) => r["_field"] == "value")
  |> last()</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Capteurs de température</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Color mode <strong>Value</strong><br />
Unit <strong>Celsius (<span class="emoji-tag">&deg;</span>C)</strong><br />
Color scheme <strong>From thresholds (by value)</strong><br />
Thresholds <strong>Couleur</strong> <span class="emoji-tag">&rarr;</span> <strong>température</strong><br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homeassistant")
  |> range(start: -24h)
  |> filter(fn: (r) => r["entity_id"] == "capteur_1_temperature_2")
  |> filter(fn: (r) => r["_field"] == "value")
  |> last()</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Graphiques Proxmox</h4><br />
<br />
Panneau <strong>Time series</strong><br />
Unit <strong>Percent (0-100)</strong>, ou <strong>megabytes</strong> pour la ram, <strong>megabits</strong> pour le réseau<br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "proxmox")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_idle" and
    r.cpu == "cpu-total"
  )
  |> aggregateWindow(
    every: 10s,
    fn: mean
  )
  |> map(fn: (r) => ({
      r with
      _value: 100.0 - r._value
  }))</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Tuiles d&#8217;état<span class="emoji-tag">&nbsp;</span>hôte physique<span class="emoji-tag">&nbsp;</span>ou VM</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Value</strong><br />
Color mode <strong>Background Solid</strong><br />
Value mappings <strong>0</strong> <span class="emoji-tag">&rarr;</span> <strong>Nom équipement</strong> (Rouge)<br />
Value mappings <strong>1</strong> <span class="emoji-tag">&rarr;</span> <strong>Nom équipement</strong> (Vert)<br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement == "prometheus")
  |> filter(fn: (r) => r._field == "monitor_status")
  |> filter(fn: (r) => r.monitor_name == "Mitel 470")
  |> last()</pre></pre></div></div><br />
<br />
<br />
<h4 class="formatter-title">Tuiles d&#8217;état<span class="emoji-tag">&nbsp;</span>conteneur Docker</h4><br />
<br />
Panneau <strong>Stat</strong><br />
Calculation <strong>Last *</strong><br />
Fields <strong>Numeric Fields</strong><br />
Text mode <strong>Value</strong><br />
Color mode <strong>Background Solid</strong><br />
Value mappings <strong>starting</strong> <span class="emoji-tag">&rarr;</span> <strong>Nom équipement</strong> (Jaune)<br />
Value mappings <strong>healthy</strong> <span class="emoji-tag">&rarr;</span> <strong>Nom équipement</strong> (Violet)<br />
Value mappings <strong>unhealthy</strong> <span class="emoji-tag">&rarr;</span> <strong>Nom équipement</strong> (Rouge)<br />
<br />
<div class="formatter-container formatter-code code-XML"><span class="formatter-title">Code XML : </span><div class="formatter-content"><pre style="display:inline;"><pre class="xml" style="font-family:monospace;">from(bucket: "homelab")
  |> range(start: -5m)
  |> filter(fn: (r) => r._measurement == "docker_container_health")
  |> filter(fn: (r) => r._field == "health_status")
  |> filter(fn: (r) => r.container_name == "duckdns")
  |> last()
  |> keep(columns: ["_time", "_value"])</pre></pre></div></div><br />
<br />
<br />
<br />
<h2 class="formatter-title">Raspberry Pi en mode Kiosque</h2><br />
<br />
Tout d&#8217;abord imagez la carte SD du PI avec la dernière version de Raspberry Pi OS 64 bits.<br />
<br />
Je vous conseille d&#8217;activer le SSH lors de l&#8217;installation.<br />
<br />
Une fois le PI booté, réalisez<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> apt update <span style="color: #000000; font-weight: bold;">&&</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> apt full-upgrade</pre></pre></div></div><br />
<br />
Une fois la mise à jour terminée faites<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> raspi-config</pre></pre></div></div><br />
<br />
Et activez la connexion automatique sur le bureau dans <strong>1 System Options</strong> <span class="emoji-tag">&rarr;</span> <strong>S6 Auto Login</strong> et faites <span class="emoji-tag">&laquo;</span><span class="emoji-tag">&nbsp;</span><strong>No</strong><span class="emoji-tag">&nbsp;</span><span class="emoji-tag">&raquo;</span> sur <span class="emoji-tag">&laquo;</span><span class="emoji-tag">&nbsp;</span><em>Would you like to automatically log in to the console?</em><span class="emoji-tag">&nbsp;</span><span class="emoji-tag">&raquo;</span> et faites <span class="emoji-tag">&laquo;</span><span class="emoji-tag">&nbsp;</span><strong>yes</strong><span class="emoji-tag">&nbsp;</span><span class="emoji-tag">&raquo;</span> sur <span class="emoji-tag">&laquo;</span><span class="emoji-tag">&nbsp;</span><em>Would you like to automatically log in to the desktop?</em><span class="emoji-tag">&nbsp;</span><span class="emoji-tag">&raquo;</span>.<br />
<br />
Ensuite créez le script avec<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nano</span> grafana.sh</pre></pre></div></div><br />
<br />
et mettez ça dedans<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">4</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">MOZ_ENABLE_WAYLAND</span>=<span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>firefox <span style="color: #660033;">--kiosk</span> <span style="color: #660033;">--profile</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>.firefox-kiosk-profile <span style="color: #ff0000;">"http://LeLienDuGrafanaAvecLesOptions>
sleep 300
wlrctl pointer move 0 -2000</span></pre></pre></div></div><br />
<br />
Je vous conseilles comme ici d&#8217;utiliser Firefox car dans mes tests sur un PI 3B, chromium était au moins 2x plus lent, ce qui impacte la fréquence de rafraîchissement.<br />
<br />
Ensuite réalisez un<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x grafana.sh</pre></pre></div></div><br />
<br />
Puis on va faire en sorte que ce script soit exécuté au démarrage<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> ~<span style="color: #000000; font-weight: bold;">/</span>.config<span style="color: #000000; font-weight: bold;">/</span>labwc
<span style="color: #c20cb9; font-weight: bold;">nano</span> ~<span style="color: #000000; font-weight: bold;">/</span>.config<span style="color: #000000; font-weight: bold;">/</span>labwc<span style="color: #000000; font-weight: bold;">/</span>autostart</pre></pre></div></div><br />
<br />
Et renseignez ce contenu<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;">swaybg <span style="color: #660033;">-c</span> 000000 <span style="color: #000000; font-weight: bold;">&</span>
<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>grafana.sh <span style="color: #000000; font-weight: bold;">&</span></pre></pre></div></div><br />
<br />
Pour faire en sorte que le pointeur ne reste pas sur l&#8217;écran<span class="emoji-tag">&nbsp;</span>via un profil Firefox :<br />
<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>.firefox-kiosk-profile
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">></span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>.firefox-kiosk-profile<span style="color: #000000; font-weight: bold;">/</span>user.js <span style="color: #cc0000; font-style: italic;"><< 'EOF'
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.sessionstore.resume_from_crash", false);
user_pref("browser.startup.page", 1);
user_pref("signon.rememberSignons", false);
user_pref("browser.aboutwelcome.enabled", false);
user_pref("datareporting.policy.firstRunURL", "");
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
EOF</span></pre></pre></div></div><br />
<br />
et également<span class="emoji-tag">&nbsp;</span>:<br />
<br />
<div class="formatter-container formatter-code code-BASH"><span class="formatter-title">Code BASH : </span><div class="formatter-content"><pre style="display:inline;"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>.firefox-kiosk-profile<span style="color: #000000; font-weight: bold;">/</span>chrome
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">></span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>pi<span style="color: #000000; font-weight: bold;">/</span>.firefox-kiosk-profile<span style="color: #000000; font-weight: bold;">/</span>chrome<span style="color: #000000; font-weight: bold;">/</span>userContent.css <span style="color: #cc0000; font-style: italic;"><< 'EOF'
* { cursor: none !important; }
EOF</span></pre></pre></div></div>]]></description>
                <pubDate>Sat, 22 Aug 2026 11:58:00 +0200</pubDate>
                
            </item>
		
            <item>
                <title><![CDATA[Tuto serveur Minecraft avec Raspberry Pi]]></title>
                <link>https://imot3k.fr/articles/?url=/1-tutos/1-tuto-serveur-minecraft-avec-raspberry-pi/</link>
                <guid>https://imot3k.fr/articles/?url=/1-tutos/1-tuto-serveur-minecraft-avec-raspberry-pi/</guid>
                <description><![CDATA[<br />
Bienvenue sur la version texte de ce tutoriel pour faire un serveur Minecraft sur un Raspberry Pi.<br />
Ici vous trouverez les commandes et les configurations à faire pour créer un serveur, comme expliqué dans la vidéo<br />
<a class="offload" href="https://www.youtube.com/watch?v=hOyc977fZHY">https://www.youtube.com/watch?v=hOyc977fZHY</a><br />
<br />
On va donc commencer par se connecter en root sur la machine physique, pour ça tapez dans login :<br />
<br />
<strong>root</strong><br />
<br />
et faites entrer.<br />
<br />
Ensuite, changez le mot de passe avec :<br />
<br />
<strong>passwd <span style="color:#808000;"><nom d'utilisateur></span></strong><br />
<br />
Une fois cela fait, mettez votre Raspberry en IP statique en éditant le fichier :<br />
<br />
<strong>nano /etc/network/interfaces.d/eth0</strong><br />
<br />
Et en y recopiant ce contenu :<br />
<br />
<strong>auto lo<br />
iface lo inet loopback<br />
auto eth0<br />
iface eth0 inet static<br />
address <ip du raspberry><br />
gateway <ip de votre box><br />
netmask 255.255.255.0<br />
broadcast <span style="color:#808000;"><ip de votre box avec .255 à la fin></span></strong><br />
<br />
Ensuite, éditez le fichier sshd_config :<br />
<br />
<strong>nano /etc/ssh/sshd_config</strong><br />
<br />
Puis cherchez la ligne <strong>#PermitRootLogin prohibit-password</strong> et remplacez la par :<br />
<br />
<strong>PermitRootLogin yes</strong><br />
<br />
Ensuite, connectez vous en SSH avec Putty. Renseignez l'addresse IP du RPI et cliquez sur "Open"<br />
<br />
Connectez vous avec root et votre mot de passe.<br />
<br />
Faites une mise à jour des paquets avec la commande :<br />
<br />
<strong>apt-get update && apt-get upgrade</strong><br />
<br />
Puis, installez la version de java que vous voulez. Ici on installe java 17 :<br />
<br />
<strong>apt-get install openjdk-17-jre</strong><br />
<br />
Testez si il s'est bien installé avec :<br />
<br />
<strong>java -version</strong><br />
<br />
Allez à la racine :<br />
<br />
<strong>cd /</strong><br />
<br />
Créez un dossier pour le serveur :<br />
<br />
<strong>mkdir mc</strong><br />
<br />
Et allez dans celui-ci :<br />
<br />
<strong>cd /mc</strong><br />
<br />
Installez le paquet wget :<br />
<br />
<strong>apt-get install wget</strong><br />
<br />
Puis, téléchargez le fichier Minecraft avec :<br />
<br />
<strong>wget <span style="color:#808000;"><lien></span></strong> (collez le lien du fichier avec un clic droit)<br />
<br />
Une fois fait, créez le fichier start.sh :<br />
<br />
<strong>nano start.sh</strong><br />
<br />
Puis éditez-le comme suit :<br />
<br />
<strong>#!/bin/sh<br />
java -Xms1024M -Xmx<ram max en mo>M -jar server.jar</strong><br />
<br />
Donnez vous les droits pour l'éxecuter :<br />
<br />
<strong>chmod 777 start.sh</strong><br />
<br />
Et exécutez-le :<br />
<br />
<strong>./start.sh</strong><br />
<br />
Acceptez les EULA avec :<br />
<br />
<strong>nano eula.txt</strong> et éditez la valeur à <strong>true</strong><br />
<br />
Vous pouvez installer l'utilitaire de fenêtres avec :<br />
<br />
<strong>apt-get install screen</strong><br />
<br />
Puis utilisez :<br />
<br />
<strong>screen -S</strong> pour créer une fenêtre<br />
<strong>Ctrl + A + D</strong> pour en sortir<br />
<strong>screen -x</strong> pour retourner dedan<br />
<br />
Vous pouvez maintenant ouvrir vos ports, modifier le <strong>server.properties</strong> avec <strong>nano</strong> pour changer des options, et voilà, vous avez un serveur Minecraft sur un raspberry pi !<br />
<br />
<br />
<br />
<span class="emoji-tag">&copy;</span> iMot3k 2022 (<a class="offload" href="http://www.youtube.com/chetom21">http://www.youtube.com/chetom21</a>)]]></description>
                <pubDate>Fri, 14 Jan 2022 11:30:00 +0100</pubDate>
                
            </item>
		
	</channel>
</rss>
