diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3c79d8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM nginx:1.21.4-alpine + +COPY default.conf.template /etc/nginx/templates/default.conf.template diff --git a/default.conf.template b/default.conf.template new file mode 100644 index 0000000..f91f8cb --- /dev/null +++ b/default.conf.template @@ -0,0 +1,54 @@ +# vim: ft=nginx +server { + listen 80; + listen [::]:80; + + # Used for server federation + location ~^/\.well-known/matrix/server$ { + charset utf-8; + default_type application/json; + + + if ($request_method = 'GET') { + add_header Access-Control-Allow-Origin '*'; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; + + return 200 '{"m.server":"${MATRIX_SERVER}"}'; + } + + if ($request_method = 'OPTIONS') { + add_header Access-Control-Allow-Origin '*'; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; + add_header 'Content-Length' 0; + return 204; + } + + return 405; + } + + location ~^/\.well-known/matrix/client$ { + charset utf-8; + default_type application/json; + + + if ($request_method = 'GET') { + add_header Access-Control-Allow-Origin '*'; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; + + return 200 '{"m.homeserver":{"base_url":"${MATRIX_CLIENT_SERVER}"}}'; + } + + if ($request_method = 'OPTIONS') { + add_header Access-Control-Allow-Origin '*'; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; + add_header 'Content-Length' 0; + return 204; + } + + return 405; + } +}