sábado, 18 de octubre de 2025

Adelgazar Synology DS214SE

 

🧩 1️⃣ Objetivo general

Eliminar todos los procesos que consumen CPU/RAM en un Synology DS214se con DSM 7.x:
indexación, telemetría, thumbnails, iSCSI y servicios innecesarios.


⚙️ 2️⃣ Acciones ejecutadas (en orden)

A) Eliminar Synology Drive y SynoFinder

Estos dos paquetes (Drive + Finder) consumen la mayor parte de RAM y CPU.

synopkg stop SynologyDrive synopkg stop SynoFinder synopkg uninstall SynologyDrive synopkg uninstall SynoFinder

🟢 Efecto: desinstalados y no volverán a indexar ni ejecutar ElasticSearch.
🔁 Revertir: reinstalar desde el “Centro de paquetes” (busca Drive Server y Universal Search).


B) Desactivar iSCSI (ScsiTarget)

iSCSI generaba el proceso synoscsitmonitor con 25–30 % de CPU constante.

synopkg stop ScsiTarget mv /usr/syno/etc/packages/ScsiTarget /usr/syno/etc/packages/ScsiTarget.disabled

🟢 Efecto: bloquea el servicio incluso tras reinicio.
🔁 Revertir:

mv /usr/syno/etc/packages/ScsiTarget.disabled /usr/syno/etc/packages/ScsiTarget

C) Desactivar telemetría y estadísticas

Elimina procesos data_collector_app, synoagentnotifyd, synostats.

killall data_collector_app killall synoagentnotifyd killall synostats mv /usr/syno/bin/cache.client/data_collector_app /usr/syno/bin/cache.client/data_collector_app.disabled 2>/dev/null mv /usr/syno/sbin/synoagentnotifyd /usr/syno/sbin/synoagentnotifyd.disabled 2>/dev/null mv /usr/syno/sbin/synostats /usr/syno/sbin/synostats.disabled 2>/dev/null

🟢 Efecto: DSM deja de enviar telemetría y recolectar estadísticas internas.
🔁 Revertir:

mv /usr/syno/bin/cache.client/data_collector_app.disabled /usr/syno/bin/cache.client/data_collector_app mv /usr/syno/sbin/synoagentnotifyd.disabled /usr/syno/sbin/synoagentnotifyd mv /usr/syno/sbin/synostats.disabled /usr/syno/sbin/synostats

D) Desactivar thumbnails y tareas multimedia

Evita procesos synomkthumbd, convert-task, synomkflvd.

killall synomkthumbd killall convert-task killall synomkflvd mv /usr/syno/bin/synomkthumbd /usr/syno/bin/synomkthumbd.disabled 2>/dev/null mv /usr/syno/bin/convert-task /usr/syno/bin/convert-task.disabled 2>/dev/null mv /usr/syno/bin/synomkflvd /usr/syno/bin/synomkflvd.disabled 2>/dev/null

🟢 Efecto: elimina carga constante de generación de miniaturas y conversiones.
🔁 Revertir:

mv /usr/syno/bin/synomkthumbd.disabled /usr/syno/bin/synomkthumbd mv /usr/syno/bin/convert-task.disabled /usr/syno/bin/convert-task mv /usr/syno/bin/synomkflvd.disabled /usr/syno/bin/synomkflvd

E) (Opcional) Script de autolimpieza al iniciar

Crea /usr/local/etc/rc.d/cleanup.sh para matar procesos si vuelven tras reinicio:

#!/bin/sh sleep 60 for p in synoagentnotifyd synostats data_collector_app synomkthumbd convert-task synomkflvd synoelasticd synoindexd; do killall $p 2>/dev/null done exit 0

Y dale permisos:

chmod +x /usr/local/etc/rc.d/cleanup.sh

🔁 Revertir:
Borrar el archivo:

rm /usr/local/etc/rc.d/cleanup.sh

📊 3️⃣ Verificación del estado

Después de aplicar todo (o tras reinicio):

ps | egrep 'data_collect|synoagent|finder|scsi|thumb|convert|flvd' top -b -n 1 | head -n 15

Esperado:

  • Sin coincidencias en ps.

  • CPU Idle > 70 %.

  • RAM libre > 80 MB.

  • Load average < 1.0.


💬 4️⃣ Resumen ejecutivo

AcciónImpactoRiesgoReversible
Quitar SynoFinder/Drive🔺 Alta (libera ~100 MB RAM)Bajo
Desactivar iSCSI🔺 Alta (reduce CPU)Bajo
Desactivar telemetría🔸 Media (menos CPU/RAM)Bajo
Desactivar thumbnails🔸 MediaBajo
Script autolimpieza🔹 PreventivoBajo

🧠 5️⃣ Síntesis final

Has convertido un DSM sobrecargado en un NAS minimalista: sin indexación, sin telemetría ni multimedia.
Resultado: rendimiento x3–x5 y carga estable en hardware de 256 MB.

viernes, 10 de octubre de 2025

 

Guía Completa: Google Coral USB en LXC Proxmox para Frigate

Requisitos Previos

  • Proxmox VE instalado
  • Google Coral USB conectada al servidor
  • LXC privilegiado con Debian 11/12
  • Acceso root al host Proxmox

PARTE 1: Configuración en Proxmox (Host)

1.1 Identificar el dispositivo USB Coral

Desde el shell de Proxmox, ejecuta:

lsusb

Busca una línea similar a:

Bus 002 Device 002: ID 1a6e:089a Global Unichip Corp.

o

Bus 002 Device 002: ID 18d1:9302 Google Inc.

Anota el número del Bus (en este ejemplo: 002)

También verifica que existe el dispositivo:

ls -la /dev/bus/usb/002/

1.2 Crear reglas udev (Opcional pero recomendado)

Crea el archivo de reglas:

nano /etc/udev/rules.d/71-edgetpu.rules

Añade estas líneas:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a6e", ATTRS{idProduct}=="089a", MODE="0660", GROUP="plugdev"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="9302", MODE="0660", GROUP="plugdev"

Aplica las reglas:

udevadm control --reload-rules && udevadm trigger

PARTE 2: Configuración del LXC

2.1 Detener el contenedor

pct stop <ID_DEL_LXC>

Ejemplo:

pct stop 105

2.2 Editar configuración del LXC

nano /etc/pve/lxc/<ID_DEL_LXC>.conf

Añade estas líneas al final del archivo:

lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,create=dir

Nota: Si ya existe lxc.cgroup2.devices.allow: c 189:* rwm, no la dupliques.

2.3 Iniciar el contenedor

pct start <ID_DEL_LXC>

PARTE 3: Verificación dentro del LXC

3.1 Entrar al contenedor

pct enter <ID_DEL_LXC>

3.2 Instalar utilidades USB

apt update
apt install usbutils -y

3.3 Verificar que la Coral es visible

lsusb

Deberías ver:

Bus 002 Device 002: ID 1a6e:089a Global Unichip Corp.

Verifica el directorio:

ls -la /dev/bus/usb/
ls -la /dev/bus/usb/002/

PARTE 4: Configuración de Frigate con Docker

4.1 Estructura de directorios recomendada

mkdir -p /opt/frigate/config
mkdir -p /opt/frigate/media
cd /opt/frigate

4.2 Crear docker-compose.yml

nano docker-compose.yml

Contenido:

version: "3.9"

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    privileged: true
    shm_size: "256mb"
    devices:
      # Google Coral USB
      - /dev/bus/usb:/dev/bus/usb
      # iGPU Intel para aceleración hardware (si tienes Intel N100/N200/etc)
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - ./media:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000  # 1GB para cache
    ports:
      - "5000:5000"      # Web UI
      - "8554:8554"      # RTSP feeds
      - "8555:8555/tcp"  # WebRTC
      - "8555:8555/udp"  # WebRTC
    environment:
      FRIGATE_RTSP_PASSWORD: "cambiar_password"

4.3 Crear configuración básica de Frigate

nano config/config.yml

Contenido mínimo:

mqtt:
  enabled: false  # Cambiar a true si usas MQTT

detectors:
  coral:
    type: edgetpu
    device: usb

# Aceleración hardware con iGPU Intel
ffmpeg:
  hwaccel_args: preset-vaapi

# Configuración de cámaras de ejemplo
cameras:
  camara_frontal:
    enabled: true
    ffmpeg:
      inputs:
        - path: rtsp://usuario:password@192.168.1.100:554/stream
          roles:
            - detect
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    record:
      enabled: true
      retain:
        days: 7
        mode: motion
    snapshots:
      enabled: true
      retain:
        default: 14

# Configuración de grabación
record:
  enabled: true
  retain:
    days: 7
    mode: motion
  events:
    retain:
      default: 30
      mode: motion

# Detección de objetos
objects:
  track:
    - person
    - car
    - dog
    - cat

4.4 Iniciar Frigate

docker-compose up -d

4.5 Ver logs y verificar

docker logs frigate -f

Busca estas líneas que confirman que la Coral funciona:

frigate.edgetpu INFO : Attempting to load TPU as usb
frigate.edgetpu INFO : TPU found

PARTE 5: Verificación y Troubleshooting

5.1 Acceder a la interfaz web

Abre en tu navegador:

http://IP_DEL_LXC:5000

Ve a System para ver el estado de:

  • Detector Coral
  • Hardware acceleration
  • Cámaras

5.2 Problemas comunes

La Coral no aparece en lsusb

Solución:

# Desde Proxmox, verifica que existe
lsusb
ls -la /dev/bus/usb/

# Revisa la configuración del LXC
cat /etc/pve/lxc/<ID>.conf

# Reinicia el contenedor
pct stop <ID>
pct start <ID>

Error "unable to initialize libusb: -99"

Causas:

  • El directorio /dev/bus/usb no está montado correctamente
  • Permisos incorrectos

Solución:

# Verifica en el LXC
ls -la /dev/bus/usb/

# Si no existe, revisa la configuración en Proxmox
nano /etc/pve/lxc/<ID>.conf
# Debe tener: lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,create=dir

Frigate no detecta la Coral

Solución:

# Verifica que Docker pueda ver el dispositivo
docker exec -it frigate ls -la /dev/bus/usb/

# Revisa los logs
docker logs frigate | grep -i tpu
docker logs frigate | grep -i coral

# Reinicia el contenedor
docker-compose restart

Bus USB cambia de número

Si el número del bus cambia (por ejemplo, de 002 a 003), hay dos opciones:

Opción 1: Pasar todo el bus USB

lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,create=dir

Opción 2: Usar reglas udev más avanzadas (fuera del alcance de esta guía)


PARTE 6: Optimizaciones Adicionales

6.1 Pasar iGPU Intel para hardware acceleration

Si tienes un procesador Intel (N100, N200, i3, i5, etc.) con gráficos integrados:

En Proxmox:

ls -la /dev/dri/

Añade al LXC config:

nano /etc/pve/lxc/<ID>.conf
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

En docker-compose.yml ya está incluido:

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

6.2 Ajustar memoria del LXC

Para Frigate con varias cámaras, recomendado:

pct set <ID> -memory 4096

6.3 Habilitar autostart

pct set <ID> -onboot 1

PARTE 7: Configuración Avanzada de Frigate

7.1 Ejemplo con múltiples cámaras y zonas

cameras:
  entrada_principal:
    ffmpeg:
      inputs:
        - path: rtsp://user:pass@192.168.1.100:554/stream1
          roles:
            - detect
        - path: rtsp://user:pass@192.168.1.100:554/stream2
          roles:
            - record
    detect:
      width: 1280
      height: 720
      fps: 5
    zones:
      entrada:
        coordinates: 0,461,3,0,1919,0,1919,843,1699,492,1344,458,1346,336,973,317,869,375,866,432
        objects:
          - person
          - car
      calle:
        coordinates: 0,0,1280,0,1280,300,0,300
        objects:
          - person
          - car
    objects:
      track:
        - person
        - car
        - dog
      filters:
        person:
          min_area: 5000
          max_area: 100000
          threshold: 0.7

7.2 Notificaciones (requiere MQTT)

mqtt:
  enabled: true
  host: 192.168.1.50
  port: 1883
  user: mqtt_user
  password: mqtt_pass

Resumen de Comandos Rápidos

# En Proxmox
lsusb                                    # Ver dispositivos USB
pct stop 105                             # Detener LXC
nano /etc/pve/lxc/105.conf              # Editar config
pct start 105                            # Iniciar LXC
pct enter 105                            # Entrar al LXC

# Dentro del LXC
apt install usbutils -y                  # Instalar utilidades
lsusb                                    # Verificar Coral
cd /opt/frigate                          # Ir al directorio
docker-compose up -d                     # Iniciar Frigate
docker logs frigate -f                   # Ver logs
docker-compose restart                   # Reiniciar
docker-compose down                      # Detener

Referencias

  • Documentación oficial de Frigate: https://docs.frigate.video
  • Google Coral: https://coral.ai/docs/accelerator/get-started/
  • Proxmox LXC: https://pve.proxmox.com/wiki/Linux_Container

Última actualización: Octubre 2025
Hardware probado: Intel N100, Coral USB
SO LXC: Debian 12 (Bookworm)

domingo, 21 de septiembre de 2025

proxmox opnsense + PORKBUN + NGINX +

 Levnatas proxmox

Levantas un NGINX

añades el certbot de porkbun

añades un SSL

añades las API KEY 

vas a porkbun.

creas un A record para el subdominio que quieres usar, y la IP del pc


opnsense:








domingo, 8 de junio de 2025

 cómo se empareja (sincroniza) un mando Haier HTR-u07E con el dongle usb?


coenctas el dongle usb al dispositivo (durante los primeros segundos está en modo emparejamiento, si pasan, debes desconectar y conectar de nuevo

en el manod pulsamos apagado y Q View a la vez, la luz parpadeará despacio 3 veces, y si empeieza a emparejar parpadeará más rapido

lunes, 23 de septiembre de 2024

stak para levantar en portainer wl wireguard

 ---

version: "2.1"

services:

  wireguard:

    image: lscr.io/linuxserver/wireguard:latest

    container_name: wireguard

    cap_add:

      - NET_ADMIN

      - SYS_MODULE #optional

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Europe/Madrid

      - SERVERURL=wireguard.domain.com #optional

      - SERVERPORT=51820 #optional

      - PEERS=1 #optional

      - PEERDNS=auto #optional

      - INTERNAL_SUBNET=10.13.13.0 #optional

      - ALLOWEDIPS=0.0.0.0/0 #optional

      - PERSISTENTKEEPALIVE_PEERS= #optional

      - LOG_CONFS=true #optional

    volumes:

      - /docker/wireguard/config:/config

      - /lib/modules:/lib/modules #optional

    ports:

      - 51820:51820/udp

    sysctls:

      - net.ipv4.conf.all.src_valid_mark=1

    restart: unless-stopped

 stack para levnatar el porkbun dnns: 



version: "3.7"

services:

  ddns-updater:

    image: qmcgaw/ddns-updater

    container_name: ddns-updater

    network_mode: bridge

    ports:

      - 8002:8000/tcp

    volumes:

      - /docker/ddns-updater/data:/updater/data

    environment:

      - CONFIG=

      - PERIOD=5m

      - UPDATE_COOLDOWN_PERIOD=5m

      - PUBLICIP_FETCHERS=all

      - PUBLICIP_HTTP_PROVIDERS=all

      - PUBLICIPV4_HTTP_PROVIDERS=all

      - PUBLICIPV6_HTTP_PROVIDERS=all

      - PUBLICIP_DNS_PROVIDERS=all

      - PUBLICIP_DNS_TIMEOUT=3s

      - HTTP_TIMEOUT=10s


      # Web UI

      - LISTENING_PORT=8000

      - ROOT_URL=/


      # Backup

      - BACKUP_PERIOD=0 # 0 to disable

      - BACKUP_DIRECTORY=/updater/data


      # Other

      - LOG_LEVEL=info

      - LOG_CALLER=hidden

      #- SHOUTRRR_ADDRESSES=telegram://BOT_TOKEN@telegram/?channels=CHAT_ID

    restart: always


stack para levantar en portainer un unifi con una version específica:

 stack para levantar en portainer un unifi con una version específica: 


## https://hub.docker.com/r/linuxserver/unifi-network-application/tags?page=4&page_size=&name=&ordering=


# pi@RaspberryPi4:/docker $ cat /docker/unifi-network-application10/unifi-db/init-mongo.js

# db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "unifi", roles: [{role: "dbOwner", db: "unifi"}]});

# db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "unifi", roles: [{role: "dbOwner", db: "unifi_stat"}]});


version: "2.1"

services:

  unifi-db:

    image: arm64v8/mongo:4.4.1

    container_name: unifi-db__

    environment:

      - PUID=1000

      - PGID=1000

      - MEM_LIMIT=1024 #optional

    volumes:

      - /docker/unifi-network-application10/unifi-db/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro

      - /docker/unifi-network-application10/unifi-db:/data/db

      - /docker/unifi-network-application10/unifi-db:/data/configdb

    ports:

      - 27017:27017

    restart: unless-stopped


  unifi-network-application:

    image: lscr.io/linuxserver/unifi-network-application:arm64v8-8.1.113 # Last version with Mesing for GEN1 AP (UAP UAP-LR)

    container_name: unifi-network-application__

    environment:

      - JAVA_OPTS=-Xms1024M -Xmx2048M

      - PUID=1000

      - PGID=1000

      - TZ=Etc/UTC

      - MONGO_USER=unifi

      - MONGO_PASS=unifi

      - MONGO_HOST=unifi-db

      - MONGO_PORT=27017

      - MONGO_DBNAME=unifi

      - MEM_LIMIT=1024 #optional

      - MEM_STARTUP=1024 #optional

    volumes:

      - /docker/unifi-network-application10/data:/config

    ports:

      - 8443:8443

      - 3478:3478/udp

      - 10001:10001/udp

      - 8080:8080

      - 1900:1900/udp #optional

      - 8843:8843 #optional

      - 8880:8880 #optional

      - 6789:6789 #optional

      - 5514:5514/udp #optional

    depends_on:

      - unifi-db

    restart: unless-stopped


volumes:

  unifi_app:

    name: "unifi_app"

  unifi_db:

    name: "unifi_db"

  mongo_cnfdb:

    name: "mongo_cnfdb"