# vim: ft=caddyfile matrix.boba.best { encode zstd gzip import hsts log { output file /var/log/caddy/matrix.boba.best.log } import matrix-well-known redir /admin /admin/ handle_path /admin/* { file_server { root /var/www/synapse-admin/build } } @generic { # Sync requests path /_matrix/client/*/events # Federation requests path /_matrix/federation/v1/event/* path /_matrix/federation/v1/state/* path /_matrix/federation/v1/state_ids/* path /_matrix/federation/v1/backfill/* path /_matrix/federation/v1/get_missing_events/* path /_matrix/federation/v1/publicRooms* path /_matrix/federation/v1/query/* path /_matrix/federation/v1/make_join/* path /_matrix/federation/v1/make_leave/* path /_matrix/federation/v1/send_join/* path /_matrix/federation/v2/send_join/* path /_matrix/federation/v1/send_leave/* path /_matrix/federation/v2/send_leave/* path /_matrix/federation/v1/invite/* path /_matrix/federation/v2/invite/* path /_matrix/federation/v1/query_auth/* path /_matrix/federation/v1/event_auth/* path /_matrix/federation/v1/exchange_third_party_invite/* path /_matrix/federation/v1/user/devices/* path /_matrix/federation/v1/get_groups_publicised path /_matrix/key/v2/query path /_matrix/key/v2/query/* path /_matrix/federation/unstable/org.matrix.msc2946/spaces/* path /_matrix/federation/unstable/org.matrix.msc2946/hierarchy/* # Client API requests path /_matrix/client/*/createRoom path /_matrix/client/*/publicRooms path /_matrix/client/*/rooms/*/joined_members path /_matrix/client/*/rooms/*/context/* path /_matrix/client/*/rooms/*/members path /_matrix/client/*/rooms/*/state path /_matrix/client/unstable/org.matrix.msc2946/rooms/*/spaces path /_matrix/client/unstable/org.matrix.msc2946/rooms/*/hierarchy path /_matrix/client/unstable/im.nheko.summary/rooms/*/summary path /_matrix/client/*/account/3pid path /_matrix/client/*/devices path /_matrix/client/*/keys/query path /_matrix/client/*/keys/changes path /_matrix/client/versions path /_matrix/client/*/voip/turnServer path /_matrix/client/*/joined_groups path /_matrix/client/*/publicised_groups path /_matrix/client/*/publicised_groups/* path /_matrix/client/*/rooms/*/event/* path /_matrix/client/*/joined_rooms path /_matrix/client/*/search # Registration/login requests path /_matrix/client/*/login path /_matrix/client/*/register path /_matrix/client/unstable/org.matrix.msc3231/register/org.matrix.msc3231.login.registration_token/validity # Event sending requests path /_matrix/client/*/rooms/*/redact path /_matrix/client/*/rooms/*/send path /_matrix/client/*/rooms/*/state/* path_regexp /_matrix/client/*/rooms/*/(join|invite|leave|ban|unban|kick)$ path /_matrix/client/*/join/* path /_matrix/client/*/profile/* # Additionally, the following REST endpoints can be handled for GET requests: path /_matrix/federation/v1/groups/* } @generic_iphash { path /_matrix/client/*/rooms/*/messages # Sync requests (again) path /_matrix/client/*/sync path /_matrix/client/*/initialSync path /_matrix/client/*/rooms/*/initialSync # Inbound federation transaction request path /_matrix/federation/v1/send/* } @media { path /_matrix/media/* path /_synapse/admin/v1/purge_media_cache path /_synapse/admin/v1/room/*/media* path /_synapse/admin/v1/user/*/media* path /_synapse/admin/v1/media/* path /_synapse/admin/v1/quarantine_media/* path /_synapse/admin/v1/users/*/media } handle @generic { reverse_proxy { to localhost:8010 to localhost:8011 to localhost:8012 to localhost:8013 lb_policy round_robin health_uri /health health_interval 15s health_timeout 5s } } handle @generic_iphash { reverse_proxy { to localhost:8010 to localhost:8011 to localhost:8012 to localhost:8013 lb_policy ip_hash health_uri /health health_interval 15s health_timeout 5s } } handle @media { reverse_proxy { to localhost:8000 health_uri /healthz health_interval 15s health_timeout 5s header_up Host boba.best } } handle /_matrix/* { reverse_proxy localhost:8008 } handle /_synapse/client/* { reverse_proxy localhost:8008 } handle /_synapse/admin/* { reverse_proxy localhost:8008 } handle { redir https://boba.best/services/bobachat/ } import basicerrors }