main
nix 71 lines 2.19 KB
Raw
1 { config, ... }:
2
3 {
4 services.rabbitmq = {
5 enable = true;
6 plugins = [
7 "rabbitmq_shovel"
8 "rabbitmq_shovel_management"
9 # https://www.rabbitmq.com/docs/prometheus#overview-prometheus
10 "rabbitmq_prometheus"
11 # https://www.rabbitmq.com/docs/management
12 "rabbitmq_management"
13 # ofborg-viewer, https://www.rabbitmq.com/docs/web-stomp
14 "rabbitmq_web_stomp"
15 ];
16 configItems = {
17 # Consumer
18 "consumer_timeout" = "28800000"; # 8h
19
20 # TLS
21 "listeners.tcp" = "none";
22 "listeners.ssl.default" = "5671";
23 "ssl_options.cacertfile" = "${
24 config.security.acme.certs."messages.ofborg.org".directory
25 }/chain.pem";
26 "ssl_options.certfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/cert.pem";
27 "ssl_options.keyfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/key.pem";
28 "ssl_options.versions.1" = "tlsv1.3";
29
30 # Auth
31 "auth_mechanisms.1" = "PLAIN";
32 "auth_mechanisms.2" = "AMQPLAIN";
33 "anonymous_login_user" = "none";
34
35 # Web interface
36 "management.tcp.ip" = "::1";
37 "management.tcp.port" = "15672";
38
39 # Prometheus
40 "cluster_name" = "messages.ofborg.org";
41 "prometheus.tcp.ip" = "::1";
42
43 # STOMP for ofborg-viewer
44 "web_stomp.ssl.ip" = "::";
45 "web_stomp.ssl.port" = "15673";
46 "web_stomp.ssl.cacertfile" = "${
47 config.security.acme.certs."messages.ofborg.org".directory
48 }/chain.pem";
49 "web_stomp.ssl.certfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/cert.pem";
50 "web_stomp.ssl.keyfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/key.pem";
51 };
52 };
53
54 # No need to reload RabbitMQ, this happens automatically every couple minutes
55 security.acme.certs."messages.ofborg.org" = {
56 webroot = "/var/lib/acme/acme-challenge";
57 group = "rabbitmq";
58 };
59
60 systemd.services.rabbitmq = {
61 stopIfChanged = false;
62 requires = [ "acme-messages.ofborg.org.service" ];
63 # https://github.com/rabbitmq/rabbitmq-server-release/issues/51
64 serviceConfig.SuccessExitStatus = "69";
65 };
66
67 networking.firewall.allowedTCPPorts = [
68 5671
69 15673
70 ];
71 }