Portainer Stack:
```yaml
---
version: "3.9"
services:
  mqtt:
    container_name: mqtt
    hostname: mqtt
    image: eclipse-mosquitto:${TAG-latest}
    restart: ${RST-unless-stopped}
    network_mode: ${NET-bridge}
    user: "1000:1000"
    environment:
      - TZ=${TZ-Europe/Amsterdam}
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /mqtt/config:/mosquitto/config
      - /mqtt/data:/mosquitto/data
      - /mqtt/log:/mosquitto/log
    ports:
      - 9001:9001
      - 1883:1883
    labels:
      - com.centurylinklabs.watchtower.enable=${AutoUpdate-true}
```


Environments:
```
TAG=latest
RST=unless-stopped
NET=bridge
PUID=${PUID-1000}
PGID=${PGID-1000}
TZ=${TZ-Europe/Amsterdam}
AutoUpdate=true
```

Mosquitto configuration file `/mosquitto/config/mosquitto.conf`:
```
listener 1883

persistence true
persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
log_type all

allow_anonymous false
password_file /mosquitto/config/passwd
```

Create empty file `/mosquitto/config/passwd`
And from the terminal create user sending:  

```
docker exec -it mqtt usr/bin/mosquitto_passwd -c /mosquitto/config/passwd USERNAME
```

And if you want to add more users use:

```
docker exec -it mqtt usr/bin/mosquitto_passwd -b /mosquitto/config/passwd NEW_USERNAME PASSWORD
```