{"id":2246,"date":"2018-11-05T22:28:54","date_gmt":"2018-11-05T21:28:54","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=2246"},"modified":"2018-11-05T23:46:15","modified_gmt":"2018-11-05T22:46:15","slug":"ejabberd-xep-0363-via-reverse-proxy","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=2246","title":{"rendered":"ejabberd XEP-0363 via Reverse Proxy"},"content":{"rendered":"<p>Anfangs habe ich <a href=\"https:\/\/docs.ejabberd.im\/admin\/configuration\/#mod-http-upload\" target=\"_blank\" rel=\"noopener\">mod_http_upload<\/a> (HTTP File Upload, <a href=\"https:\/\/xmpp.org\/extensions\/xep-0363.html\" target=\"_blank\" rel=\"noopener\">XEP-0363<\/a>) stets via Port 5443 genutzt. Das klappt auch, ist jedoch suboptimal (z.B. wenn ein Proxy im Netz l\u00e4uft, der Traffic filtert oder dieser Port schlichtweg nicht erlaubt ist&#8230;), und zudem muss ein weiterer Port nach aussen ge\u00f6ffnet werden.<\/p>\n<p>Irgendwann (warum eigentlich nicht gleich auf Anhieb ?!) kam mir aber die Idee, das ganze durch einen Apache Reverse Proxy rattern zu lassen. Und das l\u00e4sst ejabberd auch tadellos mit sich &#8220;machen&#8221;. In ejabberd hab ich nicht viel ver\u00e4ndert, ausser, dass es dort kein TLS mit Zertifikat mehr braucht und der URL nat\u00fcrlich entsprechend korrigiert werden muss:<\/p>\n<pre class=\"lang:yaml decode:true\">listen:\r\n [...]\r\n   -\r\n    port: 5443\r\n    module: ejabberd_http\r\n    request_handlers:\r\n      \"upload\": mod_http_upload\r\n\r\n  #XEP-0363 HTTP File Upload\r\n  mod_http_upload:\r\n    name: \"HTTP File Upload\"\r\n    docroot: \"\/opt\/ejabberd\/upload\"\r\n    put_url: \"https:\/\/mail.domain.tld\/upload\"\r\n    get_url: \"https:\/\/mail.domain.tld\/upload\"\r\n    file_mode: \"0640\"\r\n    dir_mode: \"2750\"\r\n    max_size: 104857600 # 100 MB\r\n    access: local\r\n    thumbnail: false # otherwise needs the identify command from ImageMagick installed\r\n  mod_http_upload_quota:\r\n    max_days: 60\r\n\r\n<\/pre>\n<p>Und dann habe ich einfach (bei einer bestehenden Config, bei mir war&#8217;s vom Webmail &#8211; ejabberd l\u00e4uft auf demselben Server) einen stinknormalen Reverse-Proxy Eintrag dazu erstellt<\/p>\n<pre class=\"lang:apache decode:true \">ProxyPass \/upload http:\/\/127.0.0.1:5443\/upload\r\nProxyPassReverse \/upload http:\/\/127.0.0.1:5443\/upload<\/pre>\n<p>Und voila &#8211; kein zus\u00e4tzliches Zertifikat und kein weiterer Port nach aussen n\u00f6tig. Last but not least &#8211; keine Probleme mit anderen Firewalls oder Proxies mehr !<\/p>\n","protected":false},"excerpt":{"rendered":"Anfangs habe ich mod_http_upload (HTTP File Upload, XEP-0363) stets via Port 5443 genutzt. Das klappt auch, ist jedoch suboptimal (z.B. wenn ein Proxy im Netz l\u00e4uft, der Traffic filtert oder dieser Port schlichtweg nicht erlaubt ist&#8230;), und zudem muss ein weiterer Port nach aussen ge\u00f6ffnet werden. Irgendwann (warum eigentlich nicht&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,56],"tags":[],"class_list":["post-2246","post","type-post","status-publish","format-standard","hentry","category-web","category-xmpp"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2246"}],"version-history":[{"count":8,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2246\/revisions"}],"predecessor-version":[{"id":2254,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2246\/revisions\/2254"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}