@@ -27,6 +27,13 @@ x-ldap_admin_env: &ldap_admin_env
27
27
LDAP_ADMIN_PASSWORD : &ldapadminpass ${LDAP_ADMIN_PASSWORD:-ldapadminpwd} # pragma: allowlist secret
28
28
LDAP_ADMIN_USERNAME : &ldapadminuser admin
29
29
30
+ x-mtxauthz_dbconfig_env : &rmmtx_dbconfig_env
31
+ RMMTX_DATABASE_DATABASE : &rmmtx_dbname ${RMMTX_DATABASE_DATABASE:-rmmtx}
32
+ RMMTX_DATABASE_HOST : postgres
33
+ RMMTX_DATABASE_USER : &rmmtx_dbuser ${RMMTX_DATABASE_USER:-rmmtx}
34
+ RMMTX_DATABASE_PASSWORD : &rmmtx_dbpass ${RMMTX_DATABASE_PASSWORD:-mtxauthzdbpwd} # pragma: allowlist secret
35
+ RMMTX_API_PASSWORD : &rmmtx_apipass ${RMMTX_API_PASSWORD:-rmmtxpasswd} # pragma: allowlist secret
36
+
30
37
x-tak_dbconfig_env : &takdbconfig_env
31
38
POSTGRES_DB : &takdbname ${TAK_DATABASE_NAME:-tak}
32
39
POSTGRES_ADDRESS : postgres
@@ -49,6 +56,7 @@ x-postgres_env: &postgres_env
49
56
RAESENMAEHER_PASSWORD : *rmdbpass # pragma: allowlist secret
50
57
TAK_PASSWORD : *takdbpass # pragma: allowlist secret
51
58
BATTLELOG_PASSWORD : *bldbpass # pragma: allowlist secret
59
+ RMMTX_PASSWORD : *rmmtx_dbpass # pragma: allowlist secret
52
60
53
61
x-keycloak_users_env : &keycloak_users_env
54
62
KEYCLOAK_CREATE_ADMIN_USER : true
@@ -114,8 +122,7 @@ x-takserver_env: &takserver_env
114
122
TAKSERVER_KEYSTORE_PASS : *takserver_cert_pass
115
123
CA_PASS : &tak_ca_pass ${TAK_CA_PASS:-takcacertpw} # pragma: allowlist secret
116
124
KEYSTORE_PASS : *tak_ca_pass
117
- TAK_OCSP_UPSTREAM : &ocsphost "ocsp"
118
- TAK_OCSP_PORT : *oscpport
125
+ TAK_OCSP_ENABLE : " true"
119
126
WEBTAK_ENABLE : " true"
120
127
121
128
@@ -128,9 +135,11 @@ services:
128
135
target : production
129
136
environment :
130
137
MW_DOMAIN : *serverdomain
131
- MW_PRODUCTS : " tak,kc,fake,bl"
138
+ MW_PRODUCTS : " tak,kc,fake,bl,rmmtx "
132
139
MW_RASENMAEHER__API_PORT : *apiport
133
140
MW_RASENMAEHER__USER_PORT : *apiport
141
+ MW_MTX__API_PORT : *productport
142
+ MW_MTX__USER_PORT : 9996
134
143
MW_FAKE__API_PORT : *productport
135
144
MW_FAKE__USER_PORT : *productport
136
145
MW_TAK__API_PORT : *productport
@@ -144,11 +153,12 @@ services:
144
153
ports :
145
154
- " 80:80" # For letsencrypt
146
155
volumes :
156
+ - kraftwerk_data:/data/persistent
157
+ - kraftwerk_shared_rasenmaeher:/pvarkishares/rasenmaeher
147
158
- kraftwerk_shared_fake:/pvarkishares/fake
148
159
- kraftwerk_shared_tak:/pvarkishares/tak
149
- - kraftwerk_shared_rasenmaeher:/pvarkishares/rasenmaeher
150
160
- kraftwerk_shared_bl:/pvarkishares/bl
151
- - kraftwerk_data:/data/persistent
161
+ - kraftwerk_shared_rmmtx:/pvarkishares/rmmtx
152
162
- le_certs:/le_certs
153
163
- ca_public:/ca_public
154
164
@@ -491,7 +501,7 @@ services:
491
501
NGINX_UI_UPSTREAM : " rmui"
492
502
NGINX_UI_UPSTREAM_PORT : ${NGINX_UI_UPSTREAM_PORT:-8002}
493
503
NGINX_CERT_NAME : " rasenmaeher"
494
- NGINX_OCSP_UPSTREAM : *ocsphost
504
+ NGINX_OCSP_UPSTREAM : " ocsp "
495
505
DNS_RESOLVER_IP : *dnsresolver
496
506
NGINX_TEMPLATE_DIR : " templates_rasenmaeher"
497
507
networks :
@@ -618,6 +628,103 @@ services:
618
628
# End: Battlelog #
619
629
# ###################
620
630
631
+ # ##################
632
+ # Begin: MediaMTX #
633
+ # ##################
634
+ rmmtx :
635
+ image : pvarki/rmmtx:local${DOCKER_TAG_EXTRA:-}
636
+ build :
637
+ context : ./mtxauthz
638
+ dockerfile : Dockerfile
639
+ target : production
640
+ environment :
641
+ << : [*rmmtx_dbconfig_env]
642
+ RMMTX_API_URL : https://mtx.${SERVER_DOMAIN:-localmaeher.dev.pvarki.fi}:9997
643
+ RMMTX_MTX_ADDRESS : mtx.${SERVER_DOMAIN:-localmaeher.dev.pvarki.fi}
644
+ LOG_CONSOLE_FORMATTER : " local"
645
+ RMMTX_LOG_LEVEL : " debug"
646
+ UVICORN_LOG_LEVEL : " debug"
647
+ ports :
648
+ - " 8005:8005" # NOTE: Do *NOT* expose this in production, always pass through NGinx proxy
649
+ networks :
650
+ - productnet
651
+ - intranet
652
+ - dbnet
653
+ extra_hosts :
654
+ - " host.docker.internal:host-gateway"
655
+ volumes :
656
+ - ca_public:/ca_public
657
+ - kraftwerk_shared_rmmtx:/pvarki
658
+ depends_on :
659
+ rmnginx :
660
+ condition : service_healthy
661
+ rmapi :
662
+ condition : service_healthy
663
+ postgres :
664
+ condition : service_healthy
665
+ healthcheck :
666
+ test : ' rmmtxauthz healthcheck || exit 1'
667
+ interval : 5s
668
+ timeout : 5s
669
+ retries : 3
670
+ start_period : 5s
671
+ restart : unless-stopped
672
+
673
+ mediamtx_cert_perms : # FIXME: make a separate volume or something and copy the certs for correct user under it
674
+ image : bash:latest
675
+ volumes :
676
+ - le_certs:/le_certs
677
+ command : ["/usr/local/bin/bash", "-c", "chmod a+rwx -R /le_certs"]
678
+ depends_on :
679
+ miniwerk :
680
+ condition : service_completed_successfully
681
+
682
+ mediamtx :
683
+ image : bluenviron/mediamtx:1.12.3
684
+ networks :
685
+ - productnet
686
+ - intranet
687
+ extra_hosts :
688
+ - " host.docker.internal:host-gateway"
689
+ volumes :
690
+ - ca_public:/ca_public
691
+ - le_certs:/le_certs
692
+ - ./mediamtx.yml:/mediamtx.yml
693
+ environment :
694
+ MTX_RTSPTRANSPORTS : " tcp" # Can't do UDP without host mode network
695
+ MTX_WEBRTCADDITIONALHOSTS : *serverdomain
696
+ ports :
697
+ - " 1936:1936"
698
+ - " 8322:8322"
699
+ - " 8890:8890"
700
+ - " 9000:9000"
701
+ - " 9001:9001"
702
+ - " 9888:9888"
703
+ - " 9889:9889"
704
+ - " 9996:9996"
705
+ - " 9997:9997" # Control API
706
+ - " 9998:9998" # metrics: Do not expose in production
707
+ - " 9999:9999" # pprof: Do not expose in production
708
+ - " 8890:8890/udp"
709
+ - " 8189:8189/udp"
710
+ depends_on :
711
+ rmmtx :
712
+ condition : service_healthy
713
+ mediamtx_cert_perms :
714
+ condition : service_completed_successfully
715
+ healthcheck :
716
+ test : ' true' # FIXME: Proper check
717
+ interval : 5s
718
+ timeout : 5s
719
+ retries : 3
720
+ start_period : 5s
721
+ restart : unless-stopped
722
+ # ################
723
+ # End: MediaMTX #
724
+ # ################
725
+
726
+
727
+
621
728
# #############
622
729
# Begin: TAK #
623
730
# #############
@@ -828,10 +935,12 @@ services:
828
935
NGINX_BL_UPSTREAM_PORT : " 3000"
829
936
NGINX_TAK_UPSTREAM : " takconfig" # Due to the sidecar thing we must use the config container as host
830
937
NGINX_TAK_UPSTREAM_PORT : " 8003"
938
+ NGINX_RMMTX_UPSTREAM : " rmmtx"
939
+ NGINX_RMMTX_UPSTREAM_PORT : " 8005"
831
940
NGINX_CERT_NAME : " rasenmaeher"
832
941
NGINX_TEMPLATE_DIR : " templates_consolidated"
833
942
CFSSL_OCSP_BIND_PORT : *oscpport
834
- NGINX_OCSP_UPSTREAM : *ocsphost
943
+ NGINX_OCSP_UPSTREAM : " ocsp "
835
944
DNS_RESOLVER_IP : *dnsresolver
836
945
networks :
837
946
- productnet
@@ -843,11 +952,13 @@ services:
843
952
nginx_templates :
844
953
condition : service_completed_successfully
845
954
rmfpapi :
846
- condition : service_healthy
955
+ condition : service_started
847
956
blapi :
848
- condition : service_healthy
957
+ condition : service_started
849
958
takrmapi :
850
- condition : service_healthy
959
+ condition : service_started
960
+ rmmtx :
961
+ condition : service_started
851
962
healthcheck :
852
963
test : ' curl -s localhost:5666/healthcheck || exit 1'
853
964
interval : 5s
@@ -892,3 +1003,4 @@ volumes:
892
1003
nginx_templates :
893
1004
kraftwerk_shared_bl :
894
1005
blapi_data :
1006
+ kraftwerk_shared_rmmtx :
0 commit comments