All Projects → ServerContainers → samba

ServerContainers / samba

Licence: other
samba - (servercontainers/samba) (+ optional zeroconf, wsdd2 & time machine) on alpine [x86 + arm]

Programming Languages

shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to samba

Samba
https://gitlab.com/samba-team/samba is the Official GitLab mirror of https://git.samba.org/samba.git -- Merge requests should be made on GitLab (not on GitHub)
Stars: ✭ 531 (+490%)
Mutual labels:  samba
Ldap Passwd Webui
Very simple web interface for changing password stored in LDAP or Active Directory (Samba 4 AD).
Stars: ✭ 150 (+66.67%)
Mutual labels:  samba
Frost
A backup program that does deduplication, compression, encryption
Stars: ✭ 25 (-72.22%)
Mutual labels:  timemachine
Bash Toolkit
Este proyecto esá destinado a ayudar a los sysadmin
Stars: ✭ 13 (-85.56%)
Mutual labels:  samba
Vagrant Docker Vm
💻 Development Vagrant VM with Docker, Samba and Mail sandbox (customizable)
Stars: ✭ 97 (+7.78%)
Mutual labels:  samba
Greyhole
Greyhole uses Samba to create a storage pool of all your available hard drives, and allows you to create redundant copies of the files you store.
Stars: ✭ 204 (+126.67%)
Mutual labels:  samba
Wsdd
A Web Service Discovery host daemon.
Stars: ✭ 312 (+246.67%)
Mutual labels:  samba
samba
A Dockerfile to build multi-architecture images of Samba, which is the standard Windows interoperability suite of programs for Linux and Unix. This is my personal docker recipe.
Stars: ✭ 60 (-33.33%)
Mutual labels:  samba
Reconfigure
Config-file-to-Python mapping library (ORM).
Stars: ✭ 136 (+51.11%)
Mutual labels:  samba
samba
Development repository for the samba cookbook
Stars: ✭ 30 (-66.67%)
Mutual labels:  samba
Nautilus Copypath
A small Nautilus extension for quickly copying file/Samba paths
Stars: ✭ 20 (-77.78%)
Mutual labels:  samba
Xsrv
[mirror] Install and manage self-hosted services/applications, on your own server(s) - ansible collection and utilities
Stars: ✭ 89 (-1.11%)
Mutual labels:  samba
deus ex tmachina
Folders whitelist for Time Machine.
Stars: ✭ 29 (-67.78%)
Mutual labels:  timemachine
Puppet Samba
Puppet samba module ⛺
Stars: ✭ 6 (-93.33%)
Mutual labels:  samba
samba4-l1
🔴 Curso GRÁTIS SAMBA 4 Level 1 REPOSITÓRIO CONGELADO - Esse repositório não irá mais receber atualizações.
Stars: ✭ 60 (-33.33%)
Mutual labels:  samba
Pvetools
proxmox ve tools script(debian9+ can use it).Including email, samba, NFS set zfs max ram, nested virtualization ,docker , pci passthrough etc. for english user,please look the end of readme.
Stars: ✭ 511 (+467.78%)
Mutual labels:  samba
Teamhelper
A robot software that helps a team leader automatically send notifications to QQ group and Emails for weekly meeting.
Stars: ✭ 201 (+123.33%)
Mutual labels:  samba
ansible-samba
No description or website provided.
Stars: ✭ 30 (-66.67%)
Mutual labels:  samba
fapro
Fake Protocol Server
Stars: ✭ 1,338 (+1386.67%)
Mutual labels:  samba
Avorix-Domain-Controller
A Raspberry Pi based Active Directory Domain Controller developed for business and education.
Stars: ✭ 28 (-68.89%)
Mutual labels:  samba

samba - (servercontainers/samba) [x86 + arm]

samba on alpine

with timemachine, zeroconf (avahi) and WSD (Web Services for Devices) (wsdd2) support

Versioning and Variants

You'll find all images tagged like a3.15.0-s4.15.2 which means a<alpine version>-s<samba version>. This way you can pin your installation/configuration to a certian version. or easily roll back if you experience any problems (don't forget to open a issue in that case ;D).

The latest version will be updated/released after I managed to test a new pinned version in my production environment. This way I can easily find and fix bugs without affecting any users. It will result in a way more stable container.

Other than that there are the following variants of this container:

all of those variants are automatically build and generated in one go

  • latest or a<alpine version>-s<samba version>
    • main version of this repo
    • includes everything (smbd, avahi, wsdd2)
    • not all services need to start/run -> use ENV variables to disable optional services
  • smbd-only-latest or smbd-only-a<alpine version>-s<samba version>
    • this will only include smbd and my scripts - no avahi, wsdd2 installed
  • smbd-avahi-latest or smbd-avahi-a<alpine version>-s<samba version>
    • this will only include smbd, my scripts and avahi
    • optional service can still be disabled using ENV variables
  • smbd-wsdd2-latest or smbd-wsdd2-a<alpine version>-s<samba version>
    • this will only include smbd, my scripts and wsdd2
    • optional service can still be disabled using ENV variables

Changelogs

  • 2022-05-31
    • support for server role as ENV parameter
  • 2022-01-31
    • support for global settings via stanza (similar to volume config)
  • 2022-01-28
    • removed old chmod 777, chown nodboy:nogroup statements on multi user shares
  • 2022-01-20
    • fixed healthcheck for container avahi
  • 2022-01-08
    • better build script
  • 2021-12-30
    • fix for disabling wsdd2
    • verbose execution of service start
    • log to stdout
    • fixed connection issues by pinning alpine to 3.14
    • made avahi optional
    • new build process and variants
  • 2021-12-25
    • multi user shares for all volumes possible
    • removed bash to same some space
    • improved docker-compose.yml
    • improved healthcheck
    • improved logging
  • 2021-12-24
    • start smbd with --foreground parameter
    • fix for loglevel settings - it works now
    • new examples for shared shares in docker-compose.yml
    • start wsdd2 after 10 seconds
  • 2021-12-02
    • made wsdd2 service optional
    • updated version
  • 2021-09-27
    • added support for wsdd2 parameterization
  • 2021-08-30
    • added support for groups
  • 2021-08-27
    • removed old multi arch build dockerfiles - builx is used
    • added wsdd2 for service discovery on windows
  • 2021-08-23
    • fixed SAMBA_GLOBAL_CONFIG_... missing key.
  • 2021-08-08
    • added env to contorl log level - default value 1
    • fixed SAMBA_GLOBAL_CONFIG_... with spaces in the key.
  • 2021-03-16
    • added support for specifing the uid for each ACCOUNT_ using UID_username=1234214 env.
  • 2021-03-09
    • updated healthcheck to work with external avahi server
  • 2020-12-22
    • added support for samba password hashes instead of just plaintext passwords
  • 2020-12-10
    • added Timemachine Multiuser Support (samba config path needs to end with %U)
  • 2020-12-09
    • bug fix: </service-group> gets removed with multiple timemachine volumes
  • 2020-11-08
    • fixed samba user creation
    • custom avahi service name
  • 2020-11-05
    • multiarch build
    • rewrite from debian to alpine
    • enhanced timemachine support

Info

This is a Samba Server Container running on _/alpine.

Environment variables and defaults

Samba

  • SAMBA_GLOBAL_STANZA

    • optional
    • default not set
    • use it to manage multiple global settings in one place
    • seperate multiple settings/lines using ; which will be automatically translated to \n
  • SAMBA_GLOBAL_CONFIG_someuniquevalue

    • add any global samba config to smb.conf
    • example value: key = value
    • important if the SAMBA key contains a space replace it with _SPACE_
      • e.g. foo_SPACE_bar
  • ACCOUNT_username

    • multiple variables/accounts possible
    • adds a new user account with the given username and the env value as password or samba hash
      • either you add a simple plaintext password as value (can't start with :username:[0-9]*: or it will be detected as hash)
      • to add a samba hash e.g. user:1002:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:8846F7EAEE8FB117AD06BDD830B7586C:[U ]:LCT-5FE1F7DF: (user: user / password: password) add the line from /var/lib/samba/private/smbpasswd
      • create hash using this command docker run -ti --rm --entrypoint create-hash.sh servercontainers/samba
      • see docker-compose.yml user foo for an example how it's used/configured.
    • to restrict access of volumes you can add the following to your samba volume config:
      • valid users = alice; invalid users = bob;
  • UID_username

    • optional
    • specify the uid explicitly for each user account.
    • the username part must match to a specified ACCOUNT_username environment variable
  • GROUP_groupname

    • optional
    • value will be gid
    • example: GROUP_devops=1500 will create group devops with id 1500
  • GROUPS_username

    • optional
    • additional groups for the user
    • to create groups look at GROUP_groupname or mount/inject /etc/groups file (can cause problems)
    • the username part must match to a specified ACCOUNT_username environment variable
    • one or more groups to add seperated by a ,
    • example: GROUPS_johndoe=musican,devops
  • MODEL

    • optional model value of avahi samba service
    • default: TimeCapsule
    • some available options are Xserve, PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, MacPro6,1, MacPro7,1 (Tower), MacPro7,1@ECOLOR=226,226,224 (Rack), TimeCapsule, AppleTV1,1 and AirPort.
  • AVAHI_NAME

    • optional name of avahi samba service
    • default: hostname
  • AVAHI_DISABLE

    • optional
    • default not set - set to any value to disable avahi Service
  • SAMBA_CONF_SERVER_ROLE

    • default: standalone server
    • note: $ is an invalid symbol in this env
  • SAMBA_CONF_LOG_LEVEL

    • default: 1
  • SAMBA_CONF_WORKGROUP

    • default: WORKGROUP
  • SAMBA_CONF_SERVER_STRING

    • default: Samba Server
  • SAMBA_CONF_MAP_TO_GUEST

    • default: Bad User
  • SAMBA_VOLUME_CONFIG_myconfigname

    • adds a new samba volume configuration
    • multiple variables/confgurations possible by adding unique configname to SAMBA_VOLUME_CONFIG_
    • take a look at https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X -> EXPLANATION OF VOLUME PARAMETERS
    • seperate multiple lines using ; which will be automatically translated to \n
    • if your path variable ends with %U e.g. path = /shares/homes/%U; multi user mode gets activated and each user gets their own subdirectory for their own share. (great for timemachine - every user get's his own personal share)
    • for timemachine only add fruit:time machine = yes and all other needed settings are automatically added
      • you can also use fruit:time machine max size = 500G; to limit max size of time machine volume
  • WSDD2_DISABLE

    • optional
    • default not set - set to any value to disable wsdd2 Service
  • WSDD2_PARAMETERS

    • optional specify parameters for wsdd2
    • default not set - wsdd2 starts without any parameters
    • e.g. -l

Volumes

  • your shares

    • by default I recommend mounting all shares beneath /shares and configure them using the path property
  • /external/avahi

    • mount your avahi service folder e.g. /etc/avahi/services/ to this spot
    • the container now maintains the service file samba.service for you - it will be overwritten!
    • when mounted, the internal avahi daemon will be disabled

Some helpful indepth informations about TimeMachine and Avahi / Zeroconf

General Infos

You can't proxy the zeroconf inside the container to the outside, since this would need routing and forwarding to your internal docker0 interface from outside. So you need to use the network=host mode to enable zeroconf from within the container

You can just expose the needed Port 548 to the docker hosts port and install avahi. After that just add a new service which fits to your config.

Windows 10 Network Discovery

For the Windows 10 Network Discovery the hostname of the container is used. If you use network_mode: host then it's the docker-host hostname.

If you use any other network_mode and want to avoid the autogenerated cryptic hostname of the container, you can specify a explicit hostname using: hostname: my-samba-containers-hostname

Note: This wsdd2 service seems to need CAP_NET_ADMIN as a capability. (more info: #50)

    cap_add:
      - CAP_NET_ADMIN
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].