Is there a way to setup an SMB share or similar via docker? I want to be able to easily turn it off and bind it to a specific folder, and I am comfortable with docker.

Thanks!

  • mbirth
    link
    fedilink
    English
    arrow-up
    14
    ·
    1 day ago
    # https://github.com/ServerContainers/samba
    
    services:
      server:
        image: ghcr.io/servercontainers/samba:latest
        restart: unless-stopped
        network_mode: host
        environment:
          TZ: Europe/London
          MODEL: MacSamba
          SAMBA_GLOBAL_STANZA: "vfs objects = acl_xattr catia fruit streams_xattr; fruit:nfs_aces = no; inherit permissions = yes; fruit:model = MacSamba; fruit:posix_rename = yes; fruit:veto_appledouble = no; fruit:wipe_intentionally_left_blank_rfork = yes; fruit:delete_empty_adfiles = yes; fruit:metadata = stream"
          SAMBA_GLOBAL_CONFIG_load_SPACE_printers: no
          SAMBA_GLOBAL_CONFIG_printing: bsd
          SAMBA_GLOBAL_CONFIG_printcap_SPACE_name: /dev/null
          SAMBA_GLOBAL_CONFIG_disable_SPACE_spoolss: yes
          SAMBA_GLOBAL_CONFIG_min_SPACE_protocol: SMB2
          SAMBA_GLOBAL_CONFIG_bind_SPACE_interfaces_SPACE_only: yes
          SAMBA_GLOBAL_CONFIG_interfaces: lo eth0
          SAMBA_CONF_SERVER_STRING: Docker Host Samba
          #SAMBA_CONF_LOG_LEVEL: 3
          ACCOUNT_shareuser: mypassword
          UID_shareuser: 1000
          # avahi seems to introduce issues with the share
          # "The operation can't be completed because the original item for "xxx" can't be found."
          AVAHI_DISABLE: true
          WSDD2_DISABLE: true
          #NETBIOS_DISABLE: true
          SAMBA_VOLUME_CONFIG_myshare: "[myshare]; path=/shares/myshare; valid users = shareuser; guest ok = no; read only = no; browseable = yes"
        volumes:
          - /path/to/myshare:/shares/myshare
    

    Just make sure you don’t have any local SMB server running on the host. And if you need multiple different shares, these all need to go into the same container or you need to define different ports if you use multiple containers.

      • mbirth
        link
        fedilink
        English
        arrow-up
        3
        ·
        6 hours ago

        Yes, it’s explained in the documentation.

        E.g.:

        SAMBA_GLOBAL_CONFIG_bind_SPACE_interfaces_SPACE_only: yes
        

        maps to:

        [global]
        bind interfaces only = yes
        

        This way you don’t need to provide any extra configuration file.

        • ikidd@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 hours ago

          I’m well aware of how inline environment variables work, but that is one helldammer of a name for one, and I rarely see anyone use actual spaces in .env file variable, let alone translate a space to SPACE in a variable name.

      • tvcvt
        link
        fedilink
        English
        arrow-up
        8
        ·
        edit-2
        1 day ago

        That fruit argument is so that samba plays nicely with Apple’s SMB client implementation.

    • tuxec@infosec.pub
      link
      fedilink
      English
      arrow-up
      6
      ·
      1 day ago

      The last commit was 5 years ago. There are very high chamces the container image is full of vulnerabilities. You might wanna rebuild it yourself.

    • mbirth
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      There’s dockurr/samba which is also pretty easy to setup, but doesn’t allow much deviation from the defaults.