Config file

Here’s an example config file:

# auth plugin supports Mosquitto version 2 or FlashMQ native.
auth_plugin /path/to/plugin.so

auth_plugin_serialize_init true
auth_plugin_serialize_auth_checks false

# The FlashMQ auth plugin interface has a function that is called
# periodically this amount of seconds.
auth_plugin_timer_period 60

log_file /var/log/flashmq.log
log_debug true
log_subscriptions true

allow_unsafe_clientid_chars false
allow_unsafe_username_chars false

# Must be power of two. Buffer will grow when necessary, and reset
# to this size after a while.
client_initial_buffer_size 1024

# MQTT packets are 256 MB max, approximately. This memory will
# (temporarily) be allocated upon arrival of such packets,
# so there may be cause to set it lower.
max_packet_size 268435461

# File with usernames and hashed passwords compatible with Mosquitto.
# You can use Mosquitto's mosquitto_passwd to manage the file.
mosquitto_password_file /foo/bar/mosquitto_passwd_file

# ACL (access control lists) for users, anonymous users and patterns expandable
# with %u (username) and %c (clientid). Format is Mosquitto's acl_file.
mosquitto_acl_file /foo/bar/mosquitto_acl_file

allow_anonymous true

# The general Linux default of 1024 can be overridden. Note: systemd
# blocks you from setting it, so it needs to be set on the unit.
rlimit_nofile 1000000

# Expire sessions after this time. Setting to 0 disables it, and is
# standard-compliant. But, existing sessions cause load
# on the server (because they are still subscribers), so keeping
# sessions after any client that connects with a random ID doesn't
# make sense.
expire_sessions_after_seconds 1209600


listen {
  protocol mqtt
  inet_protocol ip4_ip6
  inet4_bind_address 127.0.0.1
  inet6_bind_address ::1
  fullchain /foobar/server.crt
  privkey /foobar/server.key

  # default = 8883
  port 8883
}
listen {
  protocol mqtt
  inet_protocol ip4

  # default = 1883
  port 1883
}
listen {
  protocol websockets
  fullchain /foobar/server.crt
  privkey /foobar/server.key

  # default = 4443
  port 4443
}
listen {
  protocol websockets

  # default = 8080
  port 8080
}