<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Raspberry-Pi on Pierre</title>
        <link>https://ulm0.com/tags/raspberry-pi/</link>
        <description>Recent content in Raspberry-Pi on Pierre</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es-cl</language>
        <lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ulm0.com/tags/raspberry-pi/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Argus: Dashcam y Sentry Mode de Tesla en una Raspberry Pi</title>
            <link>https://ulm0.com/p/argus-dashcam-y-sentry-mode-de-tesla-en-una-raspberry-pi/</link>
            <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
            <guid>https://ulm0.com/p/argus-dashcam-y-sentry-mode-de-tesla-en-una-raspberry-pi/</guid>
            <description>&lt;img src=&#34;https://ulm0.com/p/argus-dashcam-y-sentry-mode-de-tesla-en-una-raspberry-pi/cover.png&#34; alt=&#34;Featured image of post Argus: Dashcam y Sentry Mode de Tesla en una Raspberry Pi&#34; /&gt;&lt;p&gt;Argus convierte una Raspberry Pi en el disco USB que el Tesla usa para Dashcam, Sentry Mode, LightShow y música. Además levanta una interfaz web para revisar los clips desde el celular o el notebook, sin sacar el pendrive del auto.&lt;/p&gt;&#xA;&lt;h2 id=&#34;de-qué-se-trata&#34;&gt;&lt;a href=&#34;#de-qu%c3%a9-se-trata&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;De qué se trata&#xA;&lt;/h2&gt;&lt;p&gt;Es un solo binario de Go, con la interfaz web (Next.js, export estático) embebida adentro. No hay contenedores, ni base de datos, ni stack de servicios. Se instala, se configura un archivo &lt;code&gt;config.yaml&lt;/code&gt; y queda corriendo como servicio de systemd.&lt;/p&gt;&#xA;&lt;h2 id=&#34;por-qué-existe&#34;&gt;&lt;a href=&#34;#por-qu%c3%a9-existe&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Por qué existe&#xA;&lt;/h2&gt;&lt;p&gt;El flujo normal con un pendrive es: estacionar, sacar el pendrive, llevarlo al computador, buscar el clip entre carpetas con nombres de timestamp, copiar, volver a enchufarlo. Y si se corrompe el sistema de archivos, te enteras cuando ya perdiste la grabación que necesitabas.&lt;/p&gt;&#xA;&lt;p&gt;Argus se queda en el auto y resuelve eso desde adentro. Está fuertemente basado en las ideas de &lt;a class=&#34;link&#34; href=&#34;https://github.com/mphacker/TeslaUSB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;TeslaUSB&lt;/a&gt;, pero empaquetado como un binario único en vez de un conjunto de scripts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;los-dos-modos&#34;&gt;&lt;a href=&#34;#los-dos-modos&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Los dos modos&#xA;&lt;/h2&gt;&lt;p&gt;Esta es la idea central, y conviene entenderla antes de todo lo demás:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Present mode&lt;/strong&gt;: la Pi se presenta al auto como dispositivo USB de múltiples LUN (TeslaCam, y opcionalmente LightShow y música). Localmente los discos quedan montados en solo lectura, para poder mirar sin corromper nada mientras el auto escribe.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Edit mode&lt;/strong&gt;: se corta la presentación USB y los mismos discos quedan montados en lectura/escritura, para administrarlos por web o por Samba.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;El cambio entre modos está secuenciado (desmontar, loops, gadget) para no dejar el sistema de archivos a medias. Y hay recuperación del gadget USB para cuando queda colgado, que en este tipo de equipos pasa.&lt;/p&gt;&#xA;&lt;h2 id=&#34;qué-necesitas&#34;&gt;&lt;a href=&#34;#qu%c3%a9-necesitas&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Qué necesitas&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Raspberry Pi Zero 2 W (es el objetivo principal).&lt;/li&gt;&#xA;&lt;li&gt;Raspberry Pi OS Lite.&lt;/li&gt;&#xA;&lt;li&gt;Una microSD con espacio suficiente para el sistema más las imágenes de disco.&lt;/li&gt;&#xA;&lt;li&gt;Un cable USB de datos. No de solo carga. Esto se equivoca más seguido de lo que uno cree.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;El kernel necesita soporte de USB OTG gadget (&lt;code&gt;dwc2&lt;/code&gt;, &lt;code&gt;libcomposite&lt;/code&gt;, &lt;code&gt;configfs&lt;/code&gt;), systemd, y permisos de root para la instalación.&lt;/p&gt;&#xA;&lt;h2 id=&#34;instalación&#34;&gt;&lt;a href=&#34;#instalaci%c3%b3n&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Instalación&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/ulm0/argus/main/scripts/install-argus.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus generate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo argus setup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;El script instala el binario del último release según la arquitectura de tu Pi (&lt;code&gt;arm64&lt;/code&gt;, &lt;code&gt;armv7&lt;/code&gt; o &lt;code&gt;armv6&lt;/code&gt;). &lt;code&gt;argus generate&lt;/code&gt; crea el &lt;code&gt;config.yaml&lt;/code&gt; y &lt;code&gt;argus setup&lt;/code&gt; arma las imágenes de disco y el servicio.&lt;/p&gt;&#xA;&lt;p&gt;Si prefieres no ejecutar algo directo desde la red, clona el repo y corre &lt;code&gt;sudo bash scripts/install-argus.sh&lt;/code&gt;, o baja el archivo &lt;code&gt;argus_*_linux_*&lt;/code&gt; desde la &lt;a class=&#34;link&#34; href=&#34;https://github.com/ulm0/argus/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;página de releases&lt;/a&gt; e instálalo con &lt;code&gt;sudo install -m 0755&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Opciones de &lt;code&gt;setup&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Flag&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Default&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Para qué&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;--dir&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;~/.argus/&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Directorio de datos&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;--config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;dir&amp;gt;/config.yaml&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ruta del archivo de configuración&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;--show-size&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;10G&lt;/code&gt; (&lt;code&gt;ARGUS_SHOW_SIZE&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tamaño de la imagen de LightShow&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;--music-size&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;32G&lt;/code&gt; (&lt;code&gt;ARGUS_MUSIC_SIZE&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tamaño de la imagen de música&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;primer-acceso&#34;&gt;&lt;a href=&#34;#primer-acceso&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Primer acceso&#xA;&lt;/h2&gt;&lt;p&gt;Después del setup, abres el navegador apuntando a la IP de la Pi en el puerto configurado (por defecto el 80), conectado a tu WiFi o al AP que levanta el equipo.&lt;/p&gt;&#xA;&lt;p&gt;La UI pide login. Las credenciales por defecto son &lt;code&gt;admin&lt;/code&gt; / &lt;code&gt;argus&lt;/code&gt;, y &lt;strong&gt;hay que cambiarlas de inmediato&lt;/strong&gt; desde Settings o editando &lt;code&gt;auth_username&lt;/code&gt; y &lt;code&gt;auth_password&lt;/code&gt; en la sección &lt;code&gt;web:&lt;/code&gt; del &lt;code&gt;config.yaml&lt;/code&gt;. La pantalla de login te lo recuerda mientras sigan puestas las de fábrica.&lt;/p&gt;&#xA;&lt;h2 id=&#34;qué-trae-adentro&#34;&gt;&lt;a href=&#34;#qu%c3%a9-trae-adentro&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Qué trae adentro&#xA;&lt;/h2&gt;&lt;details&gt;&#xA;&lt;summary&gt;Video y eventos&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Navegación de SavedClips, SentryClips y RecentClips agrupados por evento.&lt;/li&gt;&#xA;&lt;li&gt;Reproducción con cambio entre cámaras y soporte de HTTP range, así que puedes saltar dentro del clip sin bajarlo entero.&lt;/li&gt;&#xA;&lt;li&gt;Telemetría extraída del SEI del video: GPS, velocidad, batería, marcha y más. Se muestra como overlay o se entrega como JSON.&lt;/li&gt;&#xA;&lt;li&gt;Overlay HUD y mapa interactivo, ambos con escala configurable.&lt;/li&gt;&#xA;&lt;li&gt;Descarga de un archivo suelto, o del evento completo en ZIP con todas las cámaras y su metadata.&lt;/li&gt;&#xA;&lt;li&gt;Thumbnails por evento, generadas automáticamente desde la primera cámara disponible.&lt;/li&gt;&#xA;&lt;li&gt;Agrupación por sesión para RecentClips.&lt;/li&gt;&#xA;&lt;li&gt;Detección de clips encriptados: los archivos que el auto dejó bloqueados se marcan distinto en vez de fallar en silencio.&lt;/li&gt;&#xA;&lt;li&gt;Ruta de archivo secundaria opcional, para tener a mano material histórico de TeslaCam.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Chimes&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Subir, renombrar, borrar y escuchar chimes de bloqueo antes de aplicarlos.&lt;/li&gt;&#xA;&lt;li&gt;Elegir el chime activo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Programación&lt;/strong&gt;: semanal, en una fecha específica, por feriado, o recurrente.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Grupos de chimes&lt;/strong&gt;, para organizarlos y sortear dentro de un grupo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Modo aleatorio&lt;/strong&gt;: elige uno del grupo en cada evento, o uno nuevo en cada arranque.&lt;/li&gt;&#xA;&lt;li&gt;Se validan las restricciones de duración que exige Tesla, así que no subes algo que el auto va a ignorar.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Lightshows, wraps y música&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Lightshows: subir, descargar y borrar (par FSEQ + audio).&lt;/li&gt;&#xA;&lt;li&gt;Wraps: subir, previsualizar con thumbnail, descargar y borrar.&lt;/li&gt;&#xA;&lt;li&gt;Música: navegación jerárquica de directorios, subida simple o por chunks para archivos grandes, streaming, mover, renombrar, borrar, y crear o eliminar carpetas.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Limpieza y retención&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Políticas por carpeta: cuántos eventos conservar en SavedClips, SentryClips y RecentClips.&lt;/li&gt;&#xA;&lt;li&gt;Dry-run para ver qué se va a borrar antes de borrarlo.&lt;/li&gt;&#xA;&lt;li&gt;Limpieza opcional en cada arranque, para que la tarjeta no se llene sola.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Red: WiFi, AP y Bluetooth&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Access Point offline&lt;/strong&gt; como fallback: SSID, passphrase, canal y DHCP configurables; modos force-on, automático y force-off; umbral de activación por RSSI; período de gracia y ciclos de reintento antes de levantarlo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Compartir internet desde el AP&lt;/strong&gt;: NAT para los clientes del AP a través del enlace de subida de la Pi (WiFi o Bluetooth).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cliente WiFi&lt;/strong&gt;: escanear redes, conectarse, ver las guardadas, olvidarlas y fijar prioridad de autoconexión.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reconexión confiable&lt;/strong&gt;: monitoreo de intensidad de señal, períodos de gracia y reintentos antes de que entre el AP. La idea es no quedar aislado por una caída momentánea de señal.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tethering por Bluetooth (PAN)&lt;/strong&gt;: administrar el adaptador (encendido, modo visible), escanear, emparejar, conectar y desconectar dispositivos, para usar el teléfono como enlace de subida.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Detección de portal cautivo&lt;/strong&gt;: responde a las sondas estándar de Apple, Android y Windows, así el teléfono no se queja de que la red &amp;ldquo;no tiene internet&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Samba&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Habilitar y deshabilitar el servicio desde la UI.&lt;/li&gt;&#xA;&lt;li&gt;Fijar la contraseña de Samba y regenerar la configuración.&lt;/li&gt;&#xA;&lt;li&gt;Reiniciar el servicio desde la página de Settings.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Es la vía cómoda cuando quieres mover muchos archivos de una: montas el share y trabajas con el explorador de archivos de tu sistema.&lt;/p&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Notificaciones&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Telegram&lt;/strong&gt;: manda los clips de eventos de Sentry por bot. Calidad configurable (HD o SD) y cola offline con tamaño máximo, para que los eventos que ocurrieron sin conexión salgan cuando vuelva la red.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Webhook&lt;/strong&gt;: HTTP POST a la URL que definas, con firma HMAC-SHA256 opcional para que el receptor pueda verificar que el mensaje viene de tu equipo.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Métricas y salud&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Score de salud del almacenamiento, con alertas y recomendaciones.&lt;/li&gt;&#xA;&lt;li&gt;Uso de cada partición por LUN.&lt;/li&gt;&#xA;&lt;li&gt;Estadísticas de video y estimación de tiempo de grabación disponible por carpeta.&lt;/li&gt;&#xA;&lt;li&gt;Métricas del sistema: uso de CPU, temperatura, frecuencia de reloj, RAM y consumo eléctrico.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Tiempo real&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Server-Sent Events para streaming de logs en vivo y notificaciones de eventos de Sentry.&lt;/li&gt;&#xA;&lt;li&gt;Dashboard de métricas del sistema con actualización periódica.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Arranque y confiabilidad&lt;/summary&gt;&#xA;&lt;p&gt;Esto es lo que hace que el equipo sobreviva sin supervisión adentro de un auto. Todo se configura desde la sección &lt;strong&gt;Startup &amp;amp; Reliability&lt;/strong&gt; en Settings:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Presentar al auto automáticamente al arrancar.&lt;/li&gt;&#xA;&lt;li&gt;Bloquear el arranque hasta que termine el pipeline de boot.&lt;/li&gt;&#xA;&lt;li&gt;Limpieza al arrancar.&lt;/li&gt;&#xA;&lt;li&gt;Chime aleatorio al arrancar.&lt;/li&gt;&#xA;&lt;li&gt;Chequeos de &lt;code&gt;fsck&lt;/code&gt; al arrancar.&lt;/li&gt;&#xA;&lt;li&gt;Watchdog de hardware vía el &lt;code&gt;watchdog.service&lt;/code&gt; de Debian (&lt;code&gt;/etc/watchdog.conf&lt;/code&gt;), con timeout configurable (60 s por defecto).&lt;/li&gt;&#xA;&lt;li&gt;Reaplicar el perfil de &lt;code&gt;sysctl&lt;/code&gt; en cada arranque.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Algunos de estos cambios toman efecto en el siguiente reinicio del servicio o del equipo.&lt;/p&gt;&#xA;&lt;p&gt;Los defaults que genera &lt;code&gt;argus setup&lt;/code&gt; ya vienen pensados para operación desatendida: presentar al arrancar, bloquear hasta estar listo, limpieza al arrancar, &lt;code&gt;fsck&lt;/code&gt; al arrancar, watchdog activo y &lt;code&gt;sysctl&lt;/code&gt; reaplicado.&lt;/p&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Actualizaciones&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Chequeo de actualizaciones al arrancar.&lt;/li&gt;&#xA;&lt;li&gt;Actualización automática del binario, opcional.&lt;/li&gt;&#xA;&lt;li&gt;Canales: &lt;code&gt;stable&lt;/code&gt;, &lt;code&gt;beta&lt;/code&gt; y &lt;code&gt;dev&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;En el equipo, a mano: &lt;code&gt;sudo argus upgrade&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/details&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Energía y preferencias&lt;/summary&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Reiniciar y apagar el equipo desde la UI.&lt;/li&gt;&#xA;&lt;li&gt;Preferencias de visualización persistidas en el servidor, no en el navegador: unidad de velocidad (km/h o mph), escala del HUD y escala del mapa. Las configuras una vez y valen desde cualquier dispositivo.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&lt;h2 id=&#34;configuración&#34;&gt;&lt;a href=&#34;#configuraci%c3%b3n&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Configuración&#xA;&lt;/h2&gt;&lt;p&gt;Todo vive en &lt;code&gt;~/.argus/config.yaml&lt;/code&gt;, que es la única fuente de verdad.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Sección&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Qué controla&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;installation&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;comportamiento de arranque, usuario objetivo, directorio de montaje, ruta de archivo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;disk_images&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;nombres de las imágenes, particiones activas, &lt;code&gt;fsck&lt;/code&gt; al arrancar&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;network&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;puerto web, contraseña de Samba&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;web&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;login (&lt;code&gt;auth_enabled&lt;/code&gt;, &lt;code&gt;auth_username&lt;/code&gt;, &lt;code&gt;auth_password&lt;/code&gt;), &lt;code&gt;allowed_hosts&lt;/code&gt;, límites de subida, carpetas de chimes y lightshows, &lt;code&gt;secret_key&lt;/code&gt; de firma&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;offline_ap&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;comportamiento del AP, modo forzado, compartir internet&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;system&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;watchdog y &lt;code&gt;sysctl&lt;/code&gt; al arrancar&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;telegram&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;alertas, calidad de video, cola offline&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;URL de callback y secreto de firma HMAC-SHA256&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;update&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;estrategia y canal de actualización&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;viewer_prefs&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;unidad de velocidad, escala del HUD, escala del mapa&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;cli&#34;&gt;&lt;a href=&#34;#cli&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;CLI&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus run &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--config ruta&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus generate &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--output ruta&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--force&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus setup &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--dir ruta&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--show-size 10G&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--music-size 32G&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus upgrade &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--yes&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus remove &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--yes&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--keep-images&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus refresh-service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;argus version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;code&gt;argus remove --keep-images&lt;/code&gt; desinstala pero deja las imágenes de disco, por si quieres reinstalar sin perder lo grabado.&lt;/p&gt;&#xA;&lt;h2 id=&#34;un-par-de-notas-de-seguridad&#34;&gt;&lt;a href=&#34;#un-par-de-notas-de-seguridad&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Un par de notas de seguridad&#xA;&lt;/h2&gt;&lt;p&gt;La API rechaza requests cuyo &lt;code&gt;Host&lt;/code&gt; no sea una identidad local (una IP, &lt;code&gt;localhost&lt;/code&gt;, un nombre simple, &lt;code&gt;*.local&lt;/code&gt; o &lt;code&gt;*.lan&lt;/code&gt;), como defensa contra DNS rebinding. Si lo pones detrás de un reverse proxy con dominio real, agrega ese hostname a &lt;code&gt;web.allowed_hosts&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Las sesiones son cookies firmadas con &lt;code&gt;web.secret_key&lt;/code&gt; (se genera sola en el primer arranque), &lt;code&gt;HttpOnly&lt;/code&gt; y &lt;code&gt;SameSite=Strict&lt;/code&gt;, y se marcan &lt;code&gt;Secure&lt;/code&gt; automáticamente si llegas por HTTPS.&lt;/p&gt;&#xA;&lt;p&gt;Se puede desactivar el login con &lt;code&gt;auth_enabled: false&lt;/code&gt;, pero solo tiene sentido en una red aislada y de confianza.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dónde-descargarlo&#34;&gt;&lt;a href=&#34;#d%c3%b3nde-descargarlo&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Dónde descargarlo&#xA;&lt;/h2&gt;&lt;p&gt;El código y los releases están en GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ulm0/argus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;github.com/ulm0/argus&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Los binarios de cada versión están en la &lt;a class=&#34;link&#34; href=&#34;https://github.com/ulm0/argus/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;página de releases&lt;/a&gt;, uno por arquitectura, sin comprimir.&lt;/p&gt;</description>
        </item></channel>
</rss>
