Usar Time Machine con un servidor SMB en Docker

·4 min de lectura·

Time Machine puede guardar copias en un NAS que admita SMB. Una opción para un servidor Linux con Docker es utilizar una imagen que configure Samba con las extensiones necesarias para anunciar un recurso compatible con Time Machine [1][2].

Esta guía usa la imagen mbentley/timemachine:smb, que documenta soporte para arquitecturas amd64 y arm64. La etiqueta smb puede actualizarse: revisa las notas del proyecto y planifica las actualizaciones antes de desplegarla [3].

Requisitos

  • Docker Compose en un servidor Linux o NAS compatible.
  • Una carpeta de almacenamiento persistente en un sistema de archivos compatible con atributos extendidos (xattr), requisito señalado por la imagen [3].
  • El servidor y el Mac conectados a una red local de confianza.
  • Una contraseña exclusiva para el usuario SMB de las copias.

Preparar la configuración local

En el mismo directorio donde crearás compose.yaml, prepara un archivo .env con la IP local del servidor, una contraseña nueva y los UID/GID que correspondan al propietario de la carpeta de datos:

NAS_LAN_IP=192.168.1.20
TM_PASSWORD=REEMPLAZAR_POR_UNA_CLAVE_UNICA
TM_UID=1000
TM_GID=1000

Sustituye todos los valores de ejemplo. Puedes consultar el UID y GID del usuario actual con id. Restringe el acceso al archivo y exclúyelo de Git:

chmod 600 .env

Compose carga .env para sustituir variables del archivo YAML [4]. La contraseña acaba en el entorno del contenedor, por lo que quienes administran el daemon de Docker pueden inspeccionarla. Protege el host y no reutilices contraseñas de otros servicios.

Definir el servicio en Compose

Crea compose.yaml:

services:
  timemachine:
    image: mbentley/timemachine:smb
    container_name: timemachine
    hostname: timemachine
    restart: unless-stopped
    ports:
      - "${NAS_LAN_IP:?Define NAS_LAN_IP en .env}:445:445/tcp"
    environment:
      TM_USERNAME: timemachine
      TM_GROUPNAME: timemachine
      TM_UID: "${TM_UID:-1000}"
      TM_GID: "${TM_GID:-1000}"
      PASSWORD: "${TM_PASSWORD:?Define TM_PASSWORD en .env}"
      SET_PERMISSIONS: "false"
      VOLUME_SIZE_LIMIT: "500G"
      SHARE_NAME: TimeMachine
    volumes:
      - /srv/timemachine:/opt/timemachine
    tmpfs:
      - /run/samba

En este ejemplo el puerto TCP 445 se publica solo en la IP local indicada. Docker puede publicar un puerto en todas las interfaces si no se especifica una IP del host [5]. No expongas el servicio SMB a Internet ni abras el puerto en el router.

Antes de iniciar, crea /srv/timemachine y comprueba que el usuario y grupo indicados por TM_UID y TM_GID pueden escribir allí. El límite 500G es el máximo anunciado para el recurso de Time Machine; ajústalo al espacio que quieras reservar [3]. La ruta montada debe seguir correspondiendo al usuario configurado como TM_USERNAME para que los datos queden en el almacenamiento persistente [3].

Iniciar el servidor

Valida la configuración sin imprimir en pantalla los valores interpolados y levanta el servicio:

docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --follow timemachine

La configuración publica SMB directamente, pero no configura descubrimiento Bonjour/mDNS. Desde el Mac, abre Finder y usa Ir → Conectarse al servidor con:

smb://192.168.1.20/TimeMachine

Reemplaza la IP por la dirección configurada en NAS_LAN_IP y autentícate con el usuario timemachine y la contraseña del archivo .env. Después abre los ajustes de Time Machine y selecciona el recurso compartido como disco de copia de seguridad. Apple indica que un destino SMB puede seleccionarse después de montar el recurso si el servidor no anuncia Bonjour [1].

Almacenamiento y mantenimiento

  • Confirma que el sistema de archivos que contiene /srv/timemachine admite atributos extendidos; la imagen puede avisar si no puede escribirlos [3].
  • Conserva copias adicionales de los datos importantes. Un destino de Time Machine en Docker sigue dependiendo del disco, la alimentación y el propio servidor.
  • Si cambias TM_USERNAME, actualiza también la ruta persistente del volumen; de lo contrario, los datos podrían quedar dentro del contenedor y perderse al recrearlo [3].
  • Para actualizar la imagen, revisa primero los cambios y conserva una copia de seguridad; las etiquetas de imagen pueden apuntar a una versión distinta con el tiempo.
  • Si necesitas que el recurso aparezca automáticamente en Finder, consulta las opciones de Bonjour/mDNS de la imagen. Usar la red del host puede entrar en conflicto con otros servicios Samba o Avahi que ya se ejecuten en el NAS [3].

En resumen

La imagen smb permite ofrecer un recurso de Time Machine por SMB desde Docker. La persistencia depende del volumen del host y de que soporte xattr; el acceso debe limitarse a una red de confianza y utilizar credenciales nuevas y exclusivas.

📚 Fuentes consultadas

  1. Tipos de discos que se pueden utilizar con Time Machine en la Mac — Soporte técnico de Apple
  2. Samba vfs_fruit — documentación oficial de Samba
  3. mbentley/timemachine — documentación de la imagen en Docker Hub
  4. Set, use, and manage variables in a Compose file with interpolation — Docker Docs
  5. Define services in Docker Compose — Docker Docs

Imagen

Servidor SMB en Docker configurado como destino de Time Machine

¿Te ha resultado útil?

Compártelo con tu red de contactos profesionales.

Comentarios (0)

Sé el primero en comentar.