From e93320c40d1a99bdd813d5ec309efd50cd71f562 Mon Sep 17 00:00:00 2001 From: Alya Abbott Date: Fri, 15 Oct 2021 16:12:43 -0700 Subject: [PATCH] portico: Add a self-hosting page. Co-authored-by: Aman Agrawal --- .../landing-page/self-hosting/database.png | Bin 0 -> 104556 bytes .../images/landing-page/self-hosting/fork.png | Bin 0 -> 2193 bytes .../landing-page/self-hosting/growth.png | Bin 0 -> 1394 bytes .../images/landing-page/self-hosting/help.png | Bin 0 -> 892 bytes static/styles/portico/landing_page.css | 242 ++++++++++-- templates/zerver/development-community.md | 2 +- templates/zerver/footer.html | 1 + templates/zerver/for-business.html | 2 +- templates/zerver/for-communities.html | 4 +- templates/zerver/for-education.html | 2 +- templates/zerver/for-events.html | 4 +- templates/zerver/for-open-source.html | 4 +- templates/zerver/for-research.html | 4 +- templates/zerver/hello.html | 2 +- ...ng-your-organization-started-with-zulip.md | 3 +- .../advantages-of-self-hosting-zulip.md | 26 +- .../help/migrating-from-other-chat-tools.md | 1 + .../help/zulip-cloud-or-self-hosting.md | 2 +- templates/zerver/landing_nav.html | 3 + templates/zerver/pricing_model.html | 8 +- templates/zerver/self-hosting.html | 348 ++++++++++++++++++ zerver/tests/test_docs.py | 1 + zerver/views/portico.py | 2 +- zproject/urls.py | 1 + 24 files changed, 599 insertions(+), 63 deletions(-) create mode 100644 static/images/landing-page/self-hosting/database.png create mode 100644 static/images/landing-page/self-hosting/fork.png create mode 100644 static/images/landing-page/self-hosting/growth.png create mode 100644 static/images/landing-page/self-hosting/help.png create mode 100644 templates/zerver/self-hosting.html diff --git a/static/images/landing-page/self-hosting/database.png b/static/images/landing-page/self-hosting/database.png new file mode 100644 index 0000000000000000000000000000000000000000..7fec1dad3df5866e774c72c2d096267e5db849c4 GIT binary patch literal 104556 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 literal 0 HcmV?d00001 diff --git a/static/images/landing-page/self-hosting/fork.png b/static/images/landing-page/self-hosting/fork.png new file mode 100644 index 0000000000000000000000000000000000000000..24fde92804c6d81dfbd0f23624c8156a577cb057 GIT binary patch literal 2193 zcmV;C2yXX@P)$~IL@?YmV_kEq~ob&tL_x0Jn zFYoJo&-q>FKEJ1P9U{kZ9LI4S$8j9TaU92~h%T(rtVdWYSnF9^SgTo2u_m*QtIVBK z82wq#vi@NGQ-_ck=U3v?G35Z(T-NVYU&FT*{u#QL?%FZoFiQUBH4VSFwy}nm?A^&p zC)Os)-}p7{W(_X&3>-D>Sj)(+@oV~u)w9I&aFpCg_KjcDsuIt`QGj9I_aryskE}ac z!&ry14rcXZO=NwP@muJ;($2YQ=M_L zlHgcV*V%MnUBH^fn$LQkwU~83YZ@h^l>JKf6dd>)PiwG0Stm6R3;zVt<6x4RYnkI& zOISY(UTXT9l1E$TlDq}S6_kE)UR1=JB*c5tz^_C{)&i=3=5lZCU|n0VzaWu%|C1H* z`U~-j91ZkhZ4i!Kudv>6V1Yh^V-BTXjFF0X9fWwB4gBtl-jvKYcpDA;wgny3&B8IYnpc3=Ai0UsFT!n#c&7^SUN`XDmZyc|<<;c{_zjNX zB;T=(4wIxuiuGNENvXeu<3YPv_fj$(#E1q%KQ!!8)?XRF{hX2sucoFOCBwb6i*RWJ zu`uVqTZm@2NyL%>07Es4 z7h5sE&{CU1C1OedfZaRN9!E*vQDd85T7uXT031X*&r7Q?8#*y2Kv&XvURZ_M(1|et zjv<}rxmB1Aofs2f5a~S6s=#aT#Fzk=kk0eeD$IsXj0rHEbe=D)!ffcom;j4O=h+Kg z?t|D80L#BS1Yc=F9f5Wg_zj-e65uSslO!)+lR|6>p#A%QxC*l|5K{u2NZITAX}YKa zzfllN0$>B`N~PCdNVko=C5R;frYLcVcI({0`c>(zrr#*pO6CZJlmO`IW4QK#(oy&4ZeOsNbJw5~mU29YIauh?d4O z0Z>F5clsjMPs+GjVZQ&&yceStu}A=1_-80-gfbhwrXMIN0O2UmCID&!T|>6tAk^p+ z)(PfUrG?NYz%J$QEQJqU9c6z>S_^FgR4IHeW;P`gNKQ^-O8|U0Vn`uZqD6@%0We#L zZy)(P{l= zQP$1x_6n#X0kF6KZPs<<kF&;0-yJNr`Bsc!RI%1&5zgCEYN+6xBjXU`{lH|W|>CSIU57urWmM;Jkfzm73;D80c(D&lnz z;%zqY>llN|+i49pMGJYbzm75eD80cjJgjF9phkPv z$3nb`X09Dmq#FENss0I^td+z*mZlv$P?lY4ILz?%6n>98KdbTA7UbPApbI4*QIHxC zGkh2_Vy6)P5zyO5hY!zu>2JTLb4xoLM};&R$g5XNJP$_+mW1&!1?$Gg+riS~!wCqi z=vfwc#$#h}sb}Ei2Cs8t{GYe+x3Pwn?AhYsVaH<61&V6|Z_4 z9z#9v?KdIV+KrXL1(fUoTu;d!Ld@-BdKWW%eX26&IF92uj^j9v<2a7vI8pL1=4l(( TJg{d100000NkvXXu0mjfh58fU literal 0 HcmV?d00001 diff --git a/static/images/landing-page/self-hosting/growth.png b/static/images/landing-page/self-hosting/growth.png new file mode 100644 index 0000000000000000000000000000000000000000..d1013aa8bb19b4e6d9ab91ecbb5e907a4d61d47c GIT binary patch literal 1394 zcmbVMdpOez7#@v`ka5~5U6xWQ!U-96h>U5+VJny88Kz`yxzrGbT+0y;#Tn8bw`i=j zT$@;Ki?hk4Gcjd5sb6lPhRlf_{_W56J@5Oy-}k)l^L+n(w>`10n(7AXAP`8?4eji; zsmWVZQ{C)c4ncxVfkdEvuYo`sx?5BN72k)0Kq^LV&W^a)`=3kQrVL$nW(rQ2XYpH7 z%T@L6#75kn?MW?f(a}_ogLT05z(46JE5-cQeRr>B{?q|PT$GZv=kuBxcqH8N0~PCtL6rwl+H>bcw9{(N!>SOEg` zwXCw&+;>F}pMN)D+H*8UZFCvAR5tjgvIgcf`eA5(yq{~a=auKWkqp`D+ejcN%}b9T zJ+``2)?A~NZ8LIXFNJ-3;jf5AbIJ6!B2+ZCkMlk$ccKqaEwr`)x~_?v1R>P5*z0NZ zg$6t|@@1sBB9H;*ht;Q;_}etG4u1ED#vY457B;X;JYN8pmChNEQBE*w2UJvY^UFGm z+wjpw>w@8dp!5%coKsOK_xp0uYw2)Wq&TDFqF_gq597oC@lV}golMFO%^TqmJGc`(A|fQTnElP`#) zMel{l#1I!xX(keg%c@Bq`>FN^B6qvN~9xtSE(vAAvx-EP~sj7#lZfJT#ZH@R!8#~({y}Q|f&1yxJ@dh*c?g`DVJ=Kc=eg4PW|0^w3I8kAI*j)We(V&O@*g2NntK2M literal 0 HcmV?d00001 diff --git a/static/images/landing-page/self-hosting/help.png b/static/images/landing-page/self-hosting/help.png new file mode 100644 index 0000000000000000000000000000000000000000..0c84b72d8fca535432991ccdbf69210d7e2ec3b9 GIT binary patch literal 892 zcmV-?1B3jDP)XSRu+w9t&D=cD54^Q zK!S>?z{OxWQ4!=KTa>{_G+AiW6wjG>h%vr<-+Oc4ynN>j_nhs$=kOcGckkT$1axqV z#c08ObmK)}8NoTMLSZh5GIStKB;R0#SH^NA$S}+_u*VByKE9D+n3=*xbx4#P!^|Pf zQe&(p$uRS@8ss`zNS_+yJy}Rv4f4~+Z*?4fzCJjV!jI?vanzyYU&X1Y#y&(a%m-rN zHmYnZm!cJe93b6T;#z$+ZqSCL5XOWoJ8ZxZRfvI|N0hh4@Mja@5nt zbR`U0kWSCP7fw)u{Kf*CI#W=Kt!P9&X4;N;M+b7=X2rOe@nkaa5Y^Ig4OAe*D3erJ zD|x)8(1MUKvH-m_AWx*9vfWmsT{8MG4ahEGcDduGbF(nMk_Mzgn0?oA{3jGy#)r@! zJmi<~;4N`o8`cT^9t971E6m;EI_I)5r#*N`RG53jbC6A6@6fJm3TS zh3J$IgnnmuLfV9W_jp2Tgta}+5fT-)Da$CIqS$3W%7t!i{2*T>`+ynv&J8k%rIKD@ z+6Q!ECQ&QtRH1yT88F1adP$$jct!ol)cTXEQPQOV*XW=9j?Mj&9wA)daEP6m%|0>$ zgq)IosjhIjRv66)3M7oHeC|g^@(1P$wF^D{i3bb`OKM-@bz^1bAIW9%Hf~pMW_Ad5 zr+K_e2pA$Rf=&D`L(LR7>@kjzq;TR@?BO6NW2}SAsV6~8loX=Au&w19+P9lQR?Nb^&;FN#ds~b#>+bD z@!Xd+CD;6bCQL$(F$Zg~8wXue{gIu(A=j#V(SSu5*C@s_CB}fmzmx?WDip#D6$)`i zwiE`8Y$!|^ZWKlgCkiu$9fcu7Mq$dZQW!HbDa;w8lssUJP%5EAhYlS&#>8J+AcQ80 S)wOj10000{{ _("Why Zulip") }}
  • {{ _("Features") }}
  • {{ _("Plans & pricing") }}
  • +
  • {{ _("Self-hosting") }}
  • {{ _("Desktop & mobile apps") }}
  • {{ _("Security") }}
  • {{ _("Integrations") }}
  • diff --git a/templates/zerver/for-business.html b/templates/zerver/for-business.html index 55f3836927..9e310f1e9f 100644 --- a/templates/zerver/for-business.html +++ b/templates/zerver/for-business.html @@ -28,7 +28,7 @@ {{ _('View pricing') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/for-communities.html b/templates/zerver/for-communities.html index 1d0dba25a8..2f6a4d8dce 100644 --- a/templates/zerver/for-communities.html +++ b/templates/zerver/for-communities.html @@ -33,7 +33,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} @@ -63,7 +63,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/for-education.html b/templates/zerver/for-education.html index 318679fecd..8ed5c330dd 100644 --- a/templates/zerver/for-education.html +++ b/templates/zerver/for-education.html @@ -35,7 +35,7 @@ {{ _('Education pricing') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/for-events.html b/templates/zerver/for-events.html index 589a1ed1a7..cacf538438 100644 --- a/templates/zerver/for-events.html +++ b/templates/zerver/for-events.html @@ -34,7 +34,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} @@ -280,7 +280,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/for-open-source.html b/templates/zerver/for-open-source.html index 47d11d0078..fc22d3f664 100644 --- a/templates/zerver/for-open-source.html +++ b/templates/zerver/for-open-source.html @@ -40,7 +40,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} @@ -699,7 +699,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/for-research.html b/templates/zerver/for-research.html index 2c9abe4a35..897cc25c6c 100644 --- a/templates/zerver/for-research.html +++ b/templates/zerver/for-research.html @@ -39,7 +39,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} @@ -387,7 +387,7 @@ {{ _('Request sponsorship') }} - + {{ _('Self-host Zulip') }} diff --git a/templates/zerver/hello.html b/templates/zerver/hello.html index fe198d160f..9d4dcaf3a7 100644 --- a/templates/zerver/hello.html +++ b/templates/zerver/hello.html @@ -371,7 +371,7 @@ and matrix.org.

    - Install Zulip {{ latest_release_version }} + Learn about self-hosting Zulip or read the Zulip {{ latest_major_version }} release announcement.

    diff --git a/templates/zerver/help/getting-your-organization-started-with-zulip.md b/templates/zerver/help/getting-your-organization-started-with-zulip.md index 30e3d87cec..27be73b6e1 100644 --- a/templates/zerver/help/getting-your-organization-started-with-zulip.md +++ b/templates/zerver/help/getting-your-organization-started-with-zulip.md @@ -20,14 +20,13 @@ us know! ## Choosing between Zulip Cloud and self-hosting Whether [signing up for Zulip Cloud](/new/) or [self-hosting -Zulip][install-self-hosted] is the right choice for you depends on the +Zulip](/self-hosting/) is the right choice for you depends on the needs of your organization. If you aren’t sure what you need, our high quality export and import tools ([cloud][export-cloud], [self-hosted][export-self-hosted]) ensure you can always move from our hosting to yours (and back). -[install-self-hosted]: https://zulip.readthedocs.io/en/stable/production/install.html [export-cloud]: /help/export-your-organization [export-self-hosted]: https://zulip.readthedocs.io/en/latest/production/export-and-import.html diff --git a/templates/zerver/help/include/advantages-of-self-hosting-zulip.md b/templates/zerver/help/include/advantages-of-self-hosting-zulip.md index f56b65a373..9cdfd809f6 100644 --- a/templates/zerver/help/include/advantages-of-self-hosting-zulip.md +++ b/templates/zerver/help/include/advantages-of-self-hosting-zulip.md @@ -1,10 +1,24 @@ -* Zulip is [100% open-source software](https://github.com/zulip), with no "open core" catch. -* We work hard to make it easy to [set up][install-zulip], - [back up][back-up-zulip], and [maintain][maintain-zulip] a self-hosted - Zulip installation. -* Retain full control over your data. -* Customize Zulip for all your needs. +* Zulip is [100% open-source software][zulip-github], with no "open core" catch. + When you self-host Zulip, you get the same software as [Zulip Cloud + Standard](/plans/) customers. +* Retain full control over your data and simplify compliance by self-hosting + Zulip behind your firewall. + +* We work hard to make it easy to [install][install-zulip], [back + up][back-up-zulip], and [maintain][maintain-zulip] a self-hosted + Zulip server. Self host Zulip directly on Ubuntu or Debian Linux, in + Docker, or with + prebuilt images for Digital + Ocean and Render. + +* Customize Zulip for all your needs. It's easy to develop and maintain [custom + integrations](/api/incoming-webhooks-overview) and [features][modify-zulip]. + +[zulip-github]: https://github.com/zulip/zulip#readme [install-zulip]: https://zulip.readthedocs.io/en/latest/production/install.html [back-up-zulip]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups [maintain-zulip]: https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html +[modify-zulip]: https://zulip.readthedocs.io/en/latest/production/upgrade-or-modify.html#modifying-zulip diff --git a/templates/zerver/help/migrating-from-other-chat-tools.md b/templates/zerver/help/migrating-from-other-chat-tools.md index 49cb6bfbb1..412894281c 100644 --- a/templates/zerver/help/migrating-from-other-chat-tools.md +++ b/templates/zerver/help/migrating-from-other-chat-tools.md @@ -6,6 +6,7 @@ * [Zulip Cloud or self-hosting?](/help/zulip-cloud-or-self-hosting) * [Trying out Zulip](/help/trying-out-zulip) +* [Self-hosting Zulip](/self-hosting) * [Installing a Zulip server](https://zulip.readthedocs.io/en/stable/production/install.html) * [Setting up your organization](/help/getting-your-organization-started-with-zulip) * [Getting started with Zulip](/help/getting-started-with-zulip) diff --git a/templates/zerver/help/zulip-cloud-or-self-hosting.md b/templates/zerver/help/zulip-cloud-or-self-hosting.md index 0ad9fdf046..46d7d92964 100644 --- a/templates/zerver/help/zulip-cloud-or-self-hosting.md +++ b/templates/zerver/help/zulip-cloud-or-self-hosting.md @@ -19,7 +19,7 @@ ensure you can always move from our hosting to yours (and back). ## Related resources * [Sign up for Zulip Cloud](/new/) -* [Installing a Zulip server](https://zulip.readthedocs.io/en/stable/production/install.html) +* [Self-hosting Zulip](/self-hosting/) * [Trying out Zulip](/help/trying-out-zulip) * [Setting up your organization](/help/getting-your-organization-started-with-zulip) * [Migrating from other chat tools](/help/migrating-from-other-chat-tools) diff --git a/templates/zerver/landing_nav.html b/templates/zerver/landing_nav.html index d1a5dba07e..0e4486ee8b 100644 --- a/templates/zerver/landing_nav.html +++ b/templates/zerver/landing_nav.html @@ -28,6 +28,9 @@
  • Features
  • +
  • + Self-hosting +
  • Security
  • diff --git a/templates/zerver/pricing_model.html b/templates/zerver/pricing_model.html index c193ae4f28..d93a951658 100644 --- a/templates/zerver/pricing_model.html +++ b/templates/zerver/pricing_model.html @@ -112,7 +112,7 @@
    -

    Self-service

    +

    Free

    Retain full control over your data.
    @@ -133,8 +133,8 @@ Zulip is 100% free and open source, with no proprietary version.
    - - Install a Zulip server + + Self-host Zulip
    @@ -148,7 +148,7 @@
      -
    • All self-service features included
    • +
    • All Free features included
    • Professional support with SLAs
    • High availability
    • Incident collaboration
    • diff --git a/templates/zerver/self-hosting.html b/templates/zerver/self-hosting.html new file mode 100644 index 0000000000..66ce2a2ea6 --- /dev/null +++ b/templates/zerver/self-hosting.html @@ -0,0 +1,348 @@ +{% extends "zerver/portico.html" %} +{% set entrypoint = "landing-page" %} + +{% set OPEN_GRAPH_TITLE = 'Self-host Zulip today.' %} +{% set OPEN_GRAPH_DESCRIPTION = 'Open-source software that provides enterprise-grade reliability and security.' %} + +{% block title %} +Self-host Zulip today. Open-source software that provides enterprise-grade reliability and security. +{% endblock %} + +{% block customhead %} + +{% endblock %} + +{% block portico_content %} + +{% include 'zerver/landing_nav.html' %} + +
      +
      +
      +
      +

      Self-host Zulip today.

      +

      Open-source team chat with enterprise-grade reliability and security.

      +
      + +
      + +
      +
      +
      +
      +

      + 100% free and open-source software. +

      +

      + When you self-host Zulip, you get + the same software as our Zulip + Cloud Standard customers. +

      +

      + Unlike the competition, you don't pay for + SAML + authentication, LDAP + sync, or advanced roles and permissions. There + is no “open core” catch — just freely available world-class software. +

      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +

      + Enterprise-grade security and compliance. +

      +

      + Protect your sensitive conversations and simplify + compliance by self-hosting Zulip behind your + firewall. +

      +

      + Zulip's authentication + and permissions + systems are designed to flexibly support every + organization's security tools and policies. +

      +

      Making sure your information stays protected is our highest priority.

      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +

      + Take charge of your mission-critical communication platform. +

      +

      + Keep full control of your data and avoid + unpredictable downtime + from SaaS + team chat vendors by hosting Zulip on + your own infrastructure. +

      +

      + Our extensive + configuration options let you set up Zulip + to suit the needs of your organization. + Zulip offers over one hundred native + integrations, and hundreds more via third-party + extensions. +

      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +

      + Installation and upgrades that Just Work. +

      +

      + Our well-documented scripts help you + setup, + backup, and + upgrade + your self-hosted Zulip installation. Migrate your + data + and integrations + from other chat tools for a smooth transition. +

      +

      + Self-host Zulip directly on Ubuntu or Debian Linux, + in Docker, + or with prebuilt images for Digital Ocean + and Render. +

      +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + Zulip has been extremely stable and requires no maintenance beyond installing updates. +
      + — Robert Imschweiler, Technical University of Munich +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +

      + Rock-solid reliability at scale. +

      +

      + Zulip is engineered to make every interaction snappy and + efficient, even for organizations with 10,000s of users, + with a simple deployment on + + modest hardware. +

      +

      + With a user experience designed to work great at any + size, organizations that send thousands of messages per week thrive on Zulip. +

      +
      +
      +
      +
      + +
      +
      +

      + No lock-in. +

      +

      + You can move + freely between Zulip Cloud + hosting and your own servers with our high quality export and + import + tools. +

      +

      + Zulip also supports exporting your organization's + message history to a static + HTML archive. +

      +
      +
      +
      +
      +
      +
      + +
      +
      +

      + Yours to customize. +

      +

      + Creating custom integrations is a breeze with + our well-documented REST API. +

      +

      + Zulip makes it easy to + + maintain a fork with customized features, with 175,000 words of documentation for + system administrators and developers. +

      +
      +
      +
      +
      + +
      +
      +

      + Amazing support experience. +

      +

      + Contact Sales to + discuss Enterprise support offerings. +

      +

      + We provide free, interactive support for the vast + majority of questions about running a Zulip server. Stop by our friendly + development community to ask for help or suggest + improvements! +

      +
      +
      +
      +
      + + +
      +
      +

      Self-hosting plans

      +
      +
      +
      +
      +
      +

      Free

      +
      + Retain full control over your data. +
      +
      + +
      +
      +
      +
      + Zulip is 100% free and open + source, with no proprietary version.
      +
      + + Install a Zulip server + +
      +
      +
      + +
      +
      +

      Enterprise

      +
      + For mission-critical installations. +
      +
      +
        +
      • All self service features included
      • +
      • Professional support with SLAs
      • +
      • High availability
      • +
      • Incident collaboration
      • +
      • Advanced compliance
      • +
      • Funds the Zulip open source project
      • +
      +
      +
      +
      +
      + Affordable pricing depends on support required. +
      + + Contact sales + +
      +
      +
      +
      +
      +
      +
      +
      + + +
      + +{% endblock %} diff --git a/zerver/tests/test_docs.py b/zerver/tests/test_docs.py index 64f1e672ab..2674bcf40e 100644 --- a/zerver/tests/test_docs.py +++ b/zerver/tests/test_docs.py @@ -167,6 +167,7 @@ class DocPageTest(ZulipTestCase): self._test("/for/research/", "for research") self._test("/for/business/", "Communication efficiency represents") self._test("/for/communities/", "Zulip for communities") + self._test("/self-hosting/", "Self-host Zulip") self._test("/security/", "TLS encryption") self._test("/attribution/", "Attributions") self._test("/devlogin/", "Normal users", landing_page=False) diff --git a/zerver/views/portico.py b/zerver/views/portico.py index ed9bfa0d4c..eaab2fbd39 100644 --- a/zerver/views/portico.py +++ b/zerver/views/portico.py @@ -97,7 +97,7 @@ def team_view(request: HttpRequest) -> HttpResponse: @add_google_analytics def landing_view(request: HttpRequest, template_name: str) -> HttpResponse: - return TemplateResponse(request, template_name) + return TemplateResponse(request, template_name, latest_info_context()) @add_google_analytics diff --git a/zproject/urls.py b/zproject/urls.py index 9e34c365db..63ce28b9fe 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -642,6 +642,7 @@ i18n_urls = [ "for/working-groups-and-communities/", RedirectView.as_view(url="/for/communities/", permanent=True), ), + path("self-hosting/", landing_view, {"template_name": "zerver/self-hosting.html"}), path("security/", landing_view, {"template_name": "zerver/security.html"}), ]