Configuración de almacenamiento y servicios centrales Storage setup and core services

Sistema operativo: Debian Linux. Sobre él instalé y configuré Jellyfin (servidor de medios) y qBittorrent-nox (cliente de torrents con WebUI).

Configuración de carpetas e integración:

  • Estructura de directorios nativa para descargas: /var/lib/qbittorrent/Downloads/.
  • Permisos de archivos: asegurar propiedad del usuario qbittorrent (chown -R qbittorrent:qbittorrent) y permisos 755/775 (chmod).
  • Asignación de grupos: añadir el usuario jellyfin al grupo qbittorrent (usermod -aG qbittorrent jellyfin) para permitir lectura de medios sin conflictos de permisos.
  • Mapeo en Jellyfin: apuntar las bibliotecas de Jellyfin exactamente a las subcarpetas de descarga.

Operating system: Debian Linux. On top of it I installed and configured Jellyfin (media server) and qBittorrent-nox (torrent client with a WebUI).

Folder setup and integration:

  • Native download directory structure: /var/lib/qbittorrent/Downloads/.
  • File permissions: ensure ownership by the qbittorrent user (chown -R qbittorrent:qbittorrent) with 755/775 permissions (chmod).
  • Group assignment: add the jellyfin user to the qbittorrent group (usermod -aG qbittorrent jellyfin) so it can read media without permission conflicts.
  • Mapping in Jellyfin: point Jellyfin's libraries exactly at the download subfolders.

Acceso remoto seguro sin abrir puertos (solución a CG-NAT) Secure remote access without opening ports (working around CG-NAT)

Implementé Tailscale sobre Debian como red privada virtual (mesh VPN). Esto permite la administración remota completa (SSH, WebUI de qBittorrent en el puerto 8080 y Jellyfin en el puerto 8096) a través de la interfaz cifrada tailscale0 (rango IP 100.X.X.X).

De esta manera prescindo del reenvío de puertos (port forwarding) en el router, lo que mitiga el riesgo de escaneo masivo sobre la IP pública.

I set up Tailscale on top of Debian as a mesh VPN. This allows full remote administration (SSH, qBittorrent's WebUI on port 8080, and Jellyfin on port 8096) through the encrypted tailscale0 interface (IP range 100.X.X.X).

This way I avoid port forwarding on the router entirely, which mitigates the risk of mass scanning against the public IP.

Mantenimiento y actualizaciones automáticas Maintenance and automatic updates

  • Configuré unattended-upgrades y apt-listchanges para gestionar los parches de seguridad de Debian en segundo plano.
  • Habilité los systemd timers (APT::Periodic::Unattended-Upgrade "1") con la propiedad Persistent=true, para garantizar que si el servidor está apagado en la hora programada, las actualizaciones pendientes se ejecuten automáticamente tras el siguiente arranque.
  • Configuré la limpieza automática de paquetes obsoletos (Remove-Unused-Dependencies).
  • I configured unattended-upgrades and apt-listchanges to handle Debian's security patches in the background.
  • I enabled systemd timers (APT::Periodic::Unattended-Upgrade "1") with Persistent=true, to guarantee that if the server is off at the scheduled time, pending updates run automatically after the next boot.
  • I set up automatic cleanup of obsolete packages (Remove-Unused-Dependencies).