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
# (MQTT3) 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

# Location to store sessions, subscriptions and retained messages.
# Not specifying this will turn off persistence.
storage_dir /var/lib/flashmq

# These are essentially superfluous for MQTT >= 3.1.1 clients with
# cleansession=true. Packets don't need to be stored for those.
max_qos_msg_pending_per_client 65535
max_qos_bytes_pending_per_client 65536

# Is communicated towards MQTT5 clients.
max_incoming_topic_alias_value 65535

# FlashMQ will make this many aliases per MQTT5 client, if
# they ask for aliases.
max_outgoing_topic_alias_value 65535

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
}