Deja de leer, de verdad, no lo hagas. La entrada de hoy no es ninguna reflexión, simplemente el ordenador me ha estado dando guerra y de la mala ostia me he cargado varias cosas.

Como la cosa no pinta bien y puede que en cualquier momento deje de funcionar, sería una catástrofe perder toda la información y la ergonomía de trabajo que tanto esfuerzo me ha llevado cultivar, es por ello que me dispongo a dejar plasmado todo lo utilizado por si en un futuro necesito recolectar la configuración y programas utilizados en una instalación limpia.

21 de noviembre de 2011

La base es un Acer Predator G3610 a la cual se le han ido actualizando algunos componentes:

  • OS: Debian 13 (Testing).
  • Memory: 32 GiB DDR3.
  • CPU: Intel i7-2600 (8) @ 3.800GHz (2011).
  • GPU: Gigabyte NVIDIA GeForce GTX 1650 SUPER - 4 GiB DDR6 (2019) con OC de +200mHz core y +75mHz memoria.

Ahora vamos a ir desgranando parte por parte;

Packages:

  • Okular: para leer documentos pdf.
  • Steam, Firefox, Anki, YT-DLP: obvio.
  • TexMaker: para la creación de documentos pdf (más adelante enseño cómo genero los documentos e instalo TexLive).
  • Blueman Bluetooth Manager: manejo de los dispositivos con Bluetooth.
  • Ollama (principalment qwen3:4b mediante el front-end de ChatBox)
    curl -fsSL https://ollama.com/install.sh | sh
    
  • Nvidia X Server Settings: en mi caso los genero directamente de la página web de Nvidia pues los paquetes que hay en los repositorios son muy antiguos.
  • CPU-X y Psensor: control de la temperatura y parámetros del ordenador.
  • Haku Neko Nightly: para descargar manga, manhua (principalmente de MangaDex y WeebCentral) y anime.
  • Problemas con GPU en Wayland y abrimos el programa en la terminal:
/usr/lib/hakuneko-desktop/hakuneko --no-sandbox --disable-gpu
  • Sparrow: billetera para ver xPub con Bitcoin Core.
  • Problemas con GPU en Wayland. Hacemos Edit application - Enviorment variables > _JAVA_OPTIONS=-Dprism.order=sw
  • Calibre: para gestionar nuestra biblioteca y no depender de GoodReads.
  • Timeshift: Para hacer snapshots de toda la configuración menos /home/ por si se rompe algo al usar Debian Testing.
  • CasaOS: Gestión de contenedores Docker:
    curl -fsSL https://get.casaos.io | sudo bash
    

Los contenedores Docker que yo utilizo son:

  • MeTube:
name: metube
services:
  metube:
    cpu_shares: 90
    command: []
    container_name: metube
    deploy:
      resources:
        limits:
          memory: 32077M
        reservations:
          memory: "134217728"
    hostname: metube
    image: ghcr.io/alexta69/metube:latest
    labels:
      icon: https://cdn.jsdelivr.net/gh/Cp0204/CasaOS-AppStore-Play@main/Apps/metube/icon.png
    ports:
      - mode: ingress
        target: 8081
        published: "8081"
        protocol: tcp
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/Downloads
        target: /downloads
        bind:
          create_host_path: true
    devices: []
    cap_add: []
    environment: []
    network_mode: bridge
    privileged: false
x-casaos:
  architectures:
    - arm64
    - amd64
  author: Cp0204
  category: Downloader
  description:
    en_us: MeTube is a self-hosted YouTube downloader with a web UI for youtube-dl /
      yt-dlp, enabling easy downloading of your favorite videos.
    zh_cn: MeTube 是一个自托管的 YouTube 下载器,具有 youtube-dl / yt-dlp 的 Web UI,能够轻松下载您喜爱的视频。
  developer: alex
  hostname: null
  icon: https://cdn.jsdelivr.net/gh/Cp0204/CasaOS-AppStore-Play@main/Apps/metube/icon.png
  index: /
  is_uncontrolled: false
  main: metube
  port_map: "8081"
  scheme: http
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/Cp0204/CasaOS-AppStore-Play@main/Apps/metube/screenshot.gif
  store_app_id: metube
  tagline:
    en_us: Download your favorite videos easily with MeTube!
    zh_cn: 使用 MeTube 轻松下载您喜爱的视频!
  title:
    custom: ""
    en_us: MeTube
  • Scrutiny (si no aparecen los discos, abrimos la terminal desde el front-end de CasaOS y ejecutamos scrutiny scrutiny-collector-metrics run:
name: big-bear-scrutiny
services:
  big-bear-scrutiny:
    cap_add:
      - SYS_RAWIO
    cpu_shares: 90
    command: []
    container_name: big-bear-scrutiny
    deploy:
      resources:
        limits:
          memory: 32077M
    devices:
      - /dev/sda:/dev/sda
      - /dev/nvme0:/dev/nvme0
    environment:
      - COLLECTOR_CRON_SCHEDULE=0 */6 * * *
    hostname: big-bear-scrutiny
    healthcheck:
      test:
        - CMD
        - curl
        - -f
        - http://localhost:8080/api/health
      timeout: 10s
      interval: 1m30s
      retries: 3
      start_period: 40s
    image: ghcr.io/analogj/scrutiny:master-omnibus
    labels:
      icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/scrutiny.png
    ports:
      - mode: ingress
        target: 8080
        published: "38080"
        protocol: tcp
      - mode: ingress
        target: 8086
        published: "38086"
        protocol: tcp
    privileged: true
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/AppData/big-bear-scrutiny/config
        target: /opt/scrutiny/config
        bind:
          create_host_path: true
      - type: bind
        source: /DATA/AppData/big-bear-scrutiny/influxdb
        target: /opt/scrutiny/influxdb
        bind:
          create_host_path: true
      - type: bind
        source: /run/udev
        target: /run/udev
        read_only: true
        bind:
          create_host_path: true
    x-casaos:
      ports:
        - container: "8080"
          description:
            en_us: "Container Port: 8080"
        - container: "8086"
          description:
            en_us: "Container Port: 8086"
      volumes:
        - container: /opt/scrutiny/config
          description:
            en_us: "Container Path: /opt/scrutiny/config"
        - container: /opt/scrutiny/influxdb
          description:
            en_us: "Container Path: /opt/scrutiny/influxdb"
        - container: /run/udev
          description:
            en_us: "Container Path: /run/udev"
    networks:
      - default
networks:
  default:
    name: big-bear-scrutiny_default
x-casaos:
  architectures:
    - amd64
    - arm64
  author: BigBearTechWorld
  category: BigBearCasaOS
  description:
    en_us: If you run a server with more than a couple of hard drives, you're
      probably already familiar with S.M.A.R.T and the smartd daemon.
  developer: analogj
  hostname: ""
  icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/scrutiny.png
  index: /
  is_uncontrolled: false
  main: big-bear-scrutiny
  port_map: "38080"
  scheme: http
  store_app_id: big-bear-scrutiny
  tagline:
    en_us: Monitor your server's hard disk health
  thumbnail: ""
  title:
    custom: ""
    en_us: Scrutiny
  • Stirling-PDF:
name: big-bear-stirling-pdf
services:
  big-bear-stirling-pdf:
    cpu_shares: 90
    command: []
    container_name: big-bear-stirling-pdf
    deploy:
      resources:
        limits:
          memory: 32077M
    environment:
      - CSRF_DISABLED=false
      - DEFAULT_LOCALE=en-US
      - DOCKER_ENABLE_SECURITY=false
      - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
      - LANGS=en_US
      - SECURITY_ENABLE_LOGIN=true
      - SECURITY_INITIALLOGIN_PASSWORD=4500733e-a0f8-4605-a712-fd267404956a
      - SECURITY_INITIALLOGIN_USERNAME=bigbear
    hostname: big-bear-stirling-pdf
    image: stirlingtools/stirling-pdf:0.45.6
    labels:
      icon: https://cdn.jsdelivr.net/gh/bigbeartechworld/big-bear-casaos/Apps/stirling-pdf/logo.png
    ports:
      - mode: ingress
        target: 8080
        published: "8080"
        protocol: tcp
    restart: unless-stopped
    volumes:
      - type: bind
        source: /DATA/AppData/big-bear-stirling-pdf/tessdata
        target: /usr/share/tessdata
        bind:
          create_host_path: true
      - type: bind
        source: /DATA/AppData/big-bear-stirling-pdf/configs
        target: /configs
        bind:
          create_host_path: true
    x-casaos:
      envs:
        - container: DOCKER_ENABLE_SECURITY
          description:
            en_us: Enable Security Jar for Authentication
        - container: SECURITY_ENABLE_LOGIN
          description:
            en_us: Enable Login for Authentication
        - container: SECURITY_INITIALLOGIN_USERNAME
          description:
            en_us: Initial admin username
        - container: SECURITY_INITIALLOGIN_PASSWORD
          description:
            en_us: Initial admin password
        - container: CSRF_DISABLED
          description:
            en_us: Disable CSRF Protection
        - container: DEFAULT_LOCALE
          description:
            en_us: Set Default Locale
        - container: INSTALL_BOOK_AND_ADVANCED_HTML_OPS
          description:
            en_us: Install Book and Advanced HTML Ops
        - container: LANGS
          description:
            en_us: Languages
      ports:
        - container: "8080"
          description:
            en_us: "Container Port: 8080"
      volumes:
        - container: /usr/share/tessdata
          description:
            en_us: "Container Path: /usr/share/tessdata"
        - container: /configs
          description:
            en_us: "Configuration Files Path: /configs"
    devices: []
    cap_add: []
    networks:
      - default
    privileged: false
networks:
  default:
    name: big-bear-stirling-pdf_default
x-casaos:
  architectures:
    - amd64
    - arm64
  author: BigBearTechWorld
  category: BigBearCasaOS
  description:
    en_us: Stirling PDF - Local hosted web based PDF editor
  developer: stirlingtools
  hostname: ""
  icon: https://cdn.jsdelivr.net/gh/bigbeartechworld/big-bear-casaos/Apps/stirling-pdf/logo.png
  index: /
  is_uncontrolled: true
  main: big-bear-stirling-pdf
  port_map: "8080"
  scheme: http
  store_app_id: big-bear-stirling-pdf
  tagline:
    en_us: Stirling PDF - Local hosted web based PDF editor
  thumbnail: ""
  tips:
    before_install:
      en_us: >
        Read this before installing:
        https://community.bigbeartechworld.com/t/added-stirling-pdf-to-bigbearcasaos/2265#p-4248-documentation-3
  title:
    custom: ""
    en_us: Stirling-PDF

Firefox:

  • Tab Session Manager.
  • SingleFile.
  • Unhook.
  • SteamDB.

Anki:

  • Button Colors Good Again.
  • ReColor.
  • Review Heatmap.
  • Study Time Stats.

TexMaker:

  1. Primero instalamos TexLive con sudo apt-get install texlive-full.
  2. Seguimos con TexMaker sudo apt-get install texmaker.
  3. Creamos un documento, que en mi caso hago uso de Markdown y LuaLaTex como compilador de PDF. Para el que quiera aquí tiene la plantilla completa:

AppImages:

  • BitWarden, Ledger, CDC-Defi, QBittorrent, GOverlay: obvio.
  • Suyu: no quiero problemas con la gran N así que me lo reservo en mi GDrive.
  • Real-Video-Enhancer: reescalado de imagenes de los vídeos mediante IA (top pero ojo con las temperaturas).
  • ChatBox: front-end para hacer uso de Ollama.

Desktop Enviorment (DE), Window Manager (WM):

Como DE usamos KDE Plasma 5.27.5 (el que venía con Debian 12) y Kwin como WM pero modificados para parecerse lo máximo a un tipo i3WM pero con las comodidades de un DE. Para muestra un botón:

KDE Plasma viene con una aplicación denominada Plasma Style donde yo la tengo configurada de la siguiente forma (puedes copiarla mediante Get new… en cada sección:

  • Colors > WhiteSurAlt.
  • Application Style > Breeze (Follow color scheme).
  • Plasma Style > Breeze Light.
  • Window Decorations > Breeze.
  • Icons > Reversal Icon.
  • Cursors > WhiteSur Cursors.
  • Fonts > Noto Sans 12pt.

A mi me gusta tener un estilo tipo i3wm y por ello nos vamos a Ajustes > Window Management > Kwin Scripts:

  • Instalamos Krohnkite y lo configuramos poniendo un Gap en todas las opciones de 20px.

Pondremos la barra de tareas arriba y le adjudicamos un espacio en el panel de 30px.

Instalación de Debian

Si por algún casual te animas a instalar esta maravillosa distribución Linux te animo a que le pongas los siguientes parámetros:

  • un Ext4 root “/”, de 120GB aprox., para el sistema operativo y de tipo bootable.
  • un Swap de la misma capacidad que la cantidad de GB RAM instalada.
  • el resto para la Ext4 “/home” para tus datos.

Antes de finalizar la instalación te pedirá que pongas una contraseña para tu superusuario “root”, pero OJO, Debian no da permisos de superusuario al mismo usuario que inice sesión en el ordenador con lo que te encontrarás el mítico problema de user is not in the sudoers file. Esto no ocurrirá si dejas la contraseña en blanco y Debian SÍ dará permisos de superusuario al primer usuario que se registre en el sistema.

Por si no te habías dado cuenta yo soy muy tonto y he aprendido la lección por errores de la vida, por lo que la solución a una instalación con contraseña en root y un usuario sin permisos es hacer nano con su a /etc/sudoers y añadir nuestro usuario, por ejemplo:

> # User privilege specification
> root    ALL=(ALL:ALL) ALL
> user   ALL=(ALL:ALL) ALL

Guardamos con Ctrl+O y salimos con Ctrl+X.

Si por algún casual no podemos editarlo por falta de permisos al usuario, debemos dejar que nuestro usuario pueda hacer uso del comando uso mediante usermod -aG sudo TUUSUARIO.

Finalmente hacemos un reboot now para que surjan efecto los cambios.

Hay veces que directamente no se puede solucionar siguiendo los pasos anteriores y lo único que queda es hacer sudo con cada comando ya que no nos deja permanecer como superusuarios o acceder a root poniendo su en la terminal (los cambios realizados mediante root se quedará en la carpeta de root y no en la de usuario del sistema).

Instalación de NvidiaDrivers.

Hacemos uso de los repositorios de Debian siguiendo la guía en https://wiki.debian.org/NvidiaGraphicsDrivers . Especial atención a la parte de usar Wayland en Debian donde primero debemos comprobar si # cat /sys/module/nvidia_drm/parameters/modeset nos devuelve un Y o N. Si nos devuelve una N, debemos añadir options nvidia-drm modeset=1 en el archivo /etc/modprobe.d/nvidia-options.conf con sudo nano. Después de eso podemos reiniciar siempre y cuando no tengamos intención de usar la opción de suspender el ordenador. En nuestro caso sí que queremos y por tanto debemos añadir la opción options nvidia NVreg_PreserveVideoMemoryAllocations=1 en el archivo /etc/modprobe.d/nvidia-options.conf con sudo nano.

Además, en Wayland hay un bug con los drivers en Nvidia que nos causará muchos parpadeos (flickering) en las aplicaciones debido a que se encuentra activada la opción GSP. Para desactivarla hacemos sudo nano /etc/modprobe.d/nvidia-gsp-disable.conf y añadimos el siguiente comando:

options nvidia NVreg_EnableGpuFirmware=0

Prompts para Ollama (qwen3:4B).

Normalmente utilizo la IA local para obtener una URL modificada de un video de Youtube para que esté lista para usarse con yt-dlp y éste pueda descargar la transcipción en ingles sin los timestamp.

You're a bot and you will  refactor the next code with the URL I give you on the brackets of <URL_GOES_HERE_WITHOUT_QUOTES>.  Don't think, just give me the code with the URL changed. Don't give me any summary, just the code.

###
yt-dlp --skip-download --write-subs --write-auto-subs --sub-lang en --sub-format ttml --convert-subs srt --output "transcript.%(ext)s" <URL_GOES_HERE_WITHOUT_QUOTES> && sed -i '' -e '/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9] --> [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]$/d' -e '/^[[:digit:]]\{1,4\}$/d' -e 's/<[^>]*>//g' ./transcript.en.srt && sed -e 's/<[^>]*>//g' -e '/^[[:space:]]*$/d' transcript.en.srt > output.txt && rm
###

Give me the output within a code block so I can copy it

Cuando ya tengo el archivo de la transcripción, hago uso de otro prompt para que me haga un resumen de éste:

As a professional summarizer, create a concise and comprehensive summary of the provided text, be it an article, post, conversation, or passage, while adhering to these guidelines:

1. Craft a summary that is detailed, thorough, in-depth, and complex, while maintaining clarity and conciseness.
2. Incorporate main ideas and essential information, eliminating extraneous language and focusing on critical aspects.
3. Rely strictly on the provided text, without including external information.
4. Format the summary in paragraph form for easy understanding.

By following this optimized prompt, you will generate an effective summary that encapsulates the essence of the given text in a clear, concise, and reader-friendly manner.

Copias de seguridad de archivos con RClone

Para hacer copias de seguridad usando el método 3-2-1 (3 copias de los datos, 1 original y 2 copias, en 2 medios diferentes y siendo 1 de ellos fuera del lugar habitual) haremos uso de RClone (**sudo -v ; curl https://rclone.org/install.sh sudo bash**.

Cuando tengamos configurado RClone (en mi caso sería Original+HDD+GDrive), utilizaremos el siguiente código para montar el GDrive como “disco local” especificando que el almacenamiento de GDrive (rclonedrive:) se monte en nuestro almacenamiento local (/home/user/rclonedrive) con la opción –vfs-cache-mode full para que sea completamente compatible con nuestros archivos a expensa de usar un mayor espacio en disco.

rclone mount rclonedrive: /home/user/rclonedrive/ --vfs-cache-mode full

Como nuestra intención es ir aumentando la copia original con contenido nuevo, lo que haremos será hacer uso del comando sync.

rclone sync --dry-run SOURCE DESTINATION --progress --interactive

Este comando hará un barrido en seco para que veamos que haría si se ejecutara sin él (si estamos seguros podemos eliminarlo directamente) y con la etiqueta –progress para observar qué está ocurriendo y la etiqueta –interactive que nos preguntará que hacer con cada archivo. Comparará los archivos de nuestro Source con los de Destination y:

  • Si no existen en Destination los creará.
  • Si existe pero son diferentes, modificará los de Destination para que sea los de Source.
  • Si no existe en Source lo eliminará de Destination.

Si por algún casual no nos fiamos de Source, podemos añadir la etiqueta *–backup-dir** que hará que en Destination se muevan aquellos archivos que sería modificados derivado de Source.

OC a la GPU.

Para hacer el OC haremos uso de GreenwithEnvy que lo instalaremos mediante Flatpak. Una vez instalado necesitaremos desbloquear el OC con CoolBits mediante nvidia-xconfig –cool-bits=value donde value será como mínimo el 12 (en nuestro caso usamos el 31) porque burra grande ande o no ande.

Básicamente creamos un perfil nuevo para el OC y empezamos a modificar primero la velocidad del core y probamos en un juego exigente hasta que los propios drivers peten y tengas que reiniciar el ordenador. Cuando tengamos un core donde no nos pete la gráfica continuamos modificando la velocidad de la memoria hasta que el propio rendimiento empeore o empiecena a aparecer artefactos en las texturas del videojuego. En mi caso lo tengo configurado de la siguiente forma: