portico: Add a self-hosting page.

Co-authored-by: Aman Agrawal <amanagr@zulip.com>
This commit is contained in:
Alya Abbott 2021-10-15 16:12:43 -07:00 committed by Tim Abbott
parent eb3ae7c3d9
commit e93320c40d
24 changed files with 599 additions and 63 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

View File

@ -4197,6 +4197,13 @@ nav {
}
}
.feature-icon {
img,
div.quote {
width: 100px;
}
}
.topics-image {
border: solid 2px hsl(0, 0%, 60%);
}
@ -4420,7 +4427,7 @@ nav {
}
}
.for-education.pricing-model {
.solutions-page .pricing-model {
.padded-content {
padding-bottom: 10px;
}
@ -4429,14 +4436,20 @@ nav {
display: flex;
flex-flow: row wrap;
justify-content: center;
}
.price-box {
margin: 10px;
}
}
.for-education.pricing-model {
.pricing-details {
color: inherit;
font-style: inherit;
}
.price-box {
margin: 10px;
height: 625px;
.bottom {
@ -4479,7 +4492,6 @@ nav {
}
}
}
}
.portico-landing.why-page.case-study-page {
.bg-dimmer {
@ -4598,3 +4610,159 @@ nav {
}
}
}
.self-hosting-page {
p {
font-size: 18px !important;
}
.hero-buttons {
margin-top: 30px;
}
.alternative-features {
.feature-container {
padding: 30px;
&:nth-child(even) {
background: hsl(171, 49%, 39%, 0.21);
border-radius: 10px;
}
}
.feature-icon img {
width: 100%;
}
}
.triangle {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 150px 100vw 0 0;
border-color: hsl(0, 0%, 100%) transparent transparent transparent;
}
.quote {
position: relative;
margin: 0;
margin-top: 50px;
padding: 50px;
padding-top: 200px;
border-radius: 0;
background: linear-gradient(
145deg,
hsl(191, 56%, 55%),
hsl(169, 65%, 42%)
);
blockquote {
max-width: 700px;
margin: auto;
font-size: 24px;
.author {
font-size: 18px;
}
}
}
.feature-grid {
display: flex;
flex-direction: column;
width: 100%;
margin: 0;
background: hsl(171, 49%, 39%, 0.21);
padding: 50px 0;
.feature-row {
display: flex;
flex-direction: row;
max-width: 1000px;
margin: auto;
align-items: center;
justify-content: center;
gap: 20px;
.feature-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
flex-direction: column;
width: 40vw;
height: 350px;
box-shadow: 0 1px 1px 0 hsla(193, 100%, 7.1%, 0.3),
1px 1px 1px 0 hsla(193, 100%, 7.1%, 0.15),
-1px 1px 1px 0 hsla(193, 100%, 7.1%, 0.15);
background: hsl(0, 0%, 100%);
text-align: left;
margin: 10px 0;
padding: 50px 30px 0;
border-top: 5px solid hsl(171, 49%, 39%);
@media (width < 1000px) {
height: 400px;
}
h1 {
font-weight: 550;
font-size: clamp(24px, 2.5vw, 32px);
}
.feature-icon {
align-self: center;
img {
max-width: 100px;
}
}
}
@media (width < 768px) {
flex-direction: column;
.feature-box {
width: 75vw !important;
height: calc(600px - 35vw);
}
}
}
}
.for-education.pricing-model .pricing-container .price-box {
height: 525px;
.bottom {
height: 150px;
}
}
.feature-end {
margin: 0;
.feature-pricing {
padding: 50px;
background: linear-gradient(
180deg,
hsl(191, 56%, 55%),
hsl(169, 65%, 42%)
);
@media (width <= 540px) {
padding: 50px 0;
.price-box {
padding-bottom: 50px;
}
}
h1 {
color: hsl(0, 0%, 100%);
}
}
}
}

View File

@ -113,7 +113,7 @@ topic to a different stream](/help/move-content-to-another-stream).
Zulip.
- [#production help](https://chat.zulip.org/#narrow/stream/31-production-help) is
for all questions related to [self-hosting
Zulip](https://zulip.readthedocs.io/en/latest/production/install.html).
Zulip](/self-hosting/).
- [#zulip
cloud](https://chat.zulip.org/#narrow/stream/387-zulip-cloud) is for
all conversations about the [Zulip Cloud](https://zulip.com/plans/)

View File

@ -6,6 +6,7 @@
<li><a href="/why-zulip/">{{ _("Why Zulip") }}</a></li>
<li><a href="/features/">{{ _("Features") }}</a></li>
<li><a href="/plans/">{{ _("Plans &amp; pricing") }}</a></li>
<li><a href="/self-hosting/">{{ _("Self-hosting") }}</a></li>
<li><a href="/apps/">{{ _("Desktop &amp; mobile apps") }}</a></li>
<li><a href="/security/">{{ _("Security") }}</a></li>
<li><a href="/integrations/">{{ _("Integrations") }}</a></li>

View File

@ -28,7 +28,7 @@
<a href="/plans/" class="button">
{{ _('View pricing') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -33,7 +33,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>
@ -63,7 +63,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -35,7 +35,7 @@
<a href="#feature-pricing" class="button">
{{ _('Education pricing') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -34,7 +34,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>
@ -280,7 +280,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -40,7 +40,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>
@ -699,7 +699,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -39,7 +39,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>
@ -387,7 +387,7 @@
<a href="/accounts/go/?next=/upgrade%23sponsorship" class="button">
{{ _('Request sponsorship') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
<a href="/self-hosting/" class="button">
{{ _('Self-host Zulip') }}
</a>
</div>

View File

@ -371,7 +371,7 @@
and <a href="https://github.com/matrix-org/synapse/graphs/contributors">matrix.org</a>.
</p>
<p>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">Install Zulip {{ latest_release_version }}</a>
Learn about <a href="/self-hosting/">self-hosting Zulip</a>
or <a href="{{ latest_release_announcement }}">read the Zulip {{ latest_major_version }} release announcement</a>.
</p>
</div>

View File

@ -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 arent 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

View File

@ -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
<a href="https://github.com/zulip/docker-zulip">Docker</a>, or with
prebuilt images for <a
href="https://marketplace.digitalocean.com/apps/zulip">Digital
Ocean</a> and <a
href="https://render.com/docs/deploy-zulip">Render</a>.
* 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

View File

@ -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)

View File

@ -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)

View File

@ -28,6 +28,9 @@
<li>
<a href="/features/">Features</a>
</li>
<li>
<a href="/self-hosting/">Self-hosting</a>
</li>
<li>
<a href="/security/">Security</a>
</li>

View File

@ -112,7 +112,7 @@
<div class="price-box" tabindex="-1">
<div class="text-content">
<h2>Self-service</h2>
<h2>Free</h2>
<div class="description">
Retain full control over your data.
</div>
@ -133,8 +133,8 @@
Zulip is 100% free and open
source, with no proprietary version. <br />
</div>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button green">
Install a Zulip server
<a href="/self-hosting/" class="button green">
Self-host Zulip
</a>
</div>
</div>
@ -148,7 +148,7 @@
</div>
<hr />
<ul class="feature-list">
<li>All self-service features included</li>
<li>All Free features included</li>
<li>Professional support with SLAs</li>
<li>High availability</li>
<li>Incident collaboration</li>

View File

@ -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 %}
<title>Self-host Zulip today. Open-source software that provides enterprise-grade reliability and security.</title>
{% endblock %}
{% block customhead %}
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{% endblock %}
{% block portico_content %}
{% include 'zerver/landing_nav.html' %}
<div class="portico-landing why-page no-slide solutions-page self-hosting-page">
<div class="hero bg-pycon security">
<div class="bg-dimmer"></div>
<div class="content">
<h1 class="center">Self-host Zulip today.</h1>
<p>Open-source team chat with enterprise-grade reliability and security.</p>
</div>
<div class="hero-buttons center">
<a href="#feature-pricing-self-hosting" class="button">
{{ _('Features & pricing') }}
</a>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">Install Zulip {{ latest_release_version }}</a>
<a href="/for/business/" class="button">
{{ _('Zulip for business') }}
</a>
</div>
</div>
<div class="alternative-features">
<div class="feature-container">
<div class="feature-half">
<div class="feature-text">
<h1>
100% free and open-source software.
</h1>
<p>
When you self-host Zulip, you get <a href="https://github.com/zulip/zulip#readme">
the same software</a> as our <a href="/plans/">Zulip
Cloud Standard</a> customers.
</p>
<p>
Unlike the competition, you don't pay for
<a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML
authentication</a>, <a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP
sync</a>, or advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a>. There
is no “open core” catch — just freely available world-class software.
</p>
</div>
</div>
<div class="feature-half">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/open_source/build_inclusive_communities.svg" />
</div>
</div>
</div>
<div class="feature-container alternate-grid">
<div class="feature-half md-hide">
<div class="feature-icon">
<img class="mirror-image" alt="" src="/static/images/landing-page/education/privacy.svg" />
</div>
</div>
<div class="feature-half">
<div class="feature-text">
<h1>
Enterprise-grade security and compliance.
</h1>
<p>
Protect your sensitive conversations and simplify
compliance by self-hosting Zulip behind your
firewall.
</p>
<p>
Zulip's <a
href="/help/configure-authentication-methods">authentication</a>
and <a
href="/help/roles-and-permissions">permissions</a>
systems are designed to flexibly support every
organization's security tools and policies.
</p>
<p>Making sure your information stays protected is <a href="https://zulip.com/security/">our highest priority</a>.</p>
</div>
</div>
<div class="feature-half md-display">
<div class="feature-icon">
<img class="mirror-image" alt="" src="/static/images/landing-page/education/privacy.svg" />
</div>
</div>
</div>
<div class="feature-container">
<div class="feature-half">
<div class="feature-text">
<h1>
Take charge of your mission-critical communication platform.
</h1>
<p>
Keep full control of your data and avoid <a
href="https://www.theverge.com/2021/9/30/22702876/slack-is-down-outage-morning-disruption-work-chat">
unpredictable downtime</a>
from <a
href="https://www.theverge.com/2021/4/27/22405300/microsoft-teams-down-outage-worldwide-issues">SaaS
team chat vendors</a> by hosting Zulip on
your own infrastructure.
</p>
<p>
Our extensive <a
href="https://zulip.readthedocs.io/en/stable/production/settings.html">
configuration options</a> let you set up Zulip
to suit the needs of your organization.
Zulip offers <a
href="/integrations/">over one hundred native
integrations</a>, and hundreds more via third-party
extensions.
</p>
</div>
</div>
<div class="feature-half">
<div class="feature-icon">
<img class="mirror-image" alt="" src="/static/images/landing-page/education/mobile.svg" />
</div>
</div>
</div>
<div class="feature-container alternate-grid">
<div class="feature-half md-hide">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/education/flexible-administration.svg" />
</div>
</div>
<div class="feature-half">
<div class="feature-text">
<h1>
Installation and upgrades that Just Work.
</h1>
<p>
Our well-documented scripts help you
<a href="https://zulip.readthedocs.io/en/stable/production/install.html">setup</a>,
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">backup</a>, and
<a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html">upgrade</a>
your self-hosted Zulip installation. Migrate your
<a href="/help/migrating-from-other-chat-tools">data</a>
and <a href="/integrations/doc/slack_incoming">integrations</a>
from other chat tools for a smooth transition.
</p>
<p>
Self-host Zulip directly on Ubuntu or Debian Linux,
in <a href="https://github.com/zulip/docker-zulip">Docker</a>,
or with prebuilt images for <a href="https://marketplace.digitalocean.com/apps/zulip">Digital Ocean</a>
and <a href="https://render.com/docs/deploy-zulip">Render</a>.
</p>
</div>
</div>
<div class="feature-half md-display">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/education/flexible-administration.svg" />
</div>
</div>
</div>
</div>
<div class="quote">
<div class="triangle"></div>
<blockquote>
Zulip has been extremely stable and requires no maintenance beyond installing updates.
<div class="author">
&mdash; Robert Imschweiler, <a href="/case-studies/tum/">Technical University of Munich</a>
</div>
</blockquote>
</div>
<div class="feature-grid">
<div class="feature-row">
<div class="feature-box">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/self-hosting/growth.png" />
</div>
<div class="feature-text">
<h1>
Rock-solid reliability at scale.
</h1>
<p>
Zulip is engineered to make every interaction snappy and
efficient, even for organizations with 10,000s of users,
with a simple deployment on
<a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">
modest hardware</a>.
</p>
<p>
With a user experience designed to work great at any
size, organizations that send <a
href="/case-studies/rust/">thousands</a> of <a
href="/case-studies/tum/">messages</a> per week <a
href="/case-studies/lean/">thrive on Zulip</a>.
</p>
</div>
</div>
<div class="feature-box">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/self-hosting/database.png" />
</div>
<div class="feature-text">
<h1>
No lock-in.
</h1>
<p>
You can <a href="https://zulip.com/help/zulip-cloud-or-self-hosting">move
freely</a> between <a href="/plans/">Zulip Cloud</a>
hosting and your own servers with our high quality <a
href="/help/export-your-organization">export</a> and
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html">import
</a> tools.
</p>
<p>
Zulip also supports exporting your organization's
message history to a <a
href="https://github.com/zulip/zulip-archive">static
HTML archive</a>.
</p>
</div>
</div>
</div>
<div class="feature-row">
<div class="feature-box">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/self-hosting/fork.png" />
</div>
<div class="feature-text">
<h1>
Yours to customize.
</h1>
<p>
<a href="/api/incoming-webhooks-overview">Creating custom integrations</a> is a breeze with
our well-documented <a href="/api">REST API</a>.
</p>
<p>
Zulip makes it easy to
<a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html#modifying-zulip">
maintain a fork</a> with customized features, with 175,000 words of documentation for
system administrators and developers.
</p>
</div>
</div>
<div class="feature-box">
<div class="feature-icon">
<img alt="" src="/static/images/landing-page/self-hosting/help.png" />
</div>
<div class="feature-text">
<h1>
Amazing support experience.
</h1>
<p>
<a href="mailto:sales@zulip.com">Contact Sales</a> to
discuss Enterprise support offerings.
</p>
<p>
We provide free, interactive support for the vast
majority of questions about running a Zulip server. Stop by <a href="/developer-community/">our friendly
development community</a> to ask for help or suggest
improvements!
</p>
</div>
</div>
</div>
</div>
<div class="feature-end">
<div class="feature-pricing" id="feature-pricing-self-hosting">
<h1 class="center"> Self-hosting plans </h1>
<div class="pricing-model">
<div class="padded-content">
<div class="pricing-container">
<div class="price-box" tabindex="-1">
<div class="text-content">
<h2>Free</h2>
<div class="description">
Retain full control over your data.
</div>
<hr />
<ul class="feature-list">
<li>All Zulip Cloud features included</li>
<li>Friendly community support</li>
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML, OIDC, Google, social SSO</a></li>
<li><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP/Active Directory sync</a></li>
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
<li>Easy <a href="https://zulip.readthedocs.io/en/stable/production/install.html">installation</a>
and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html">maintenance</a></li>
</ul>
</div>
<div class="bottom">
<div class="text-content">
<div class="pricing-details multi-line">
Zulip is 100% free and open
source, with no proprietary version. <br />
</div>
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button green">
Install a Zulip server
</a>
</div>
</div>
</div>
<div class="price-box" tabindex="-1">
<div class="text-content">
<h2>Enterprise</h2>
<div class="description">
For mission-critical installations.
</div>
<hr />
<ul class="feature-list">
<li>All self service features included</li>
<li>Professional support with SLAs</li>
<li>High availability</li>
<li>Incident collaboration</li>
<li>Advanced compliance</li>
<li>Funds the Zulip open source project</li>
</ul>
</div>
<div class="bottom">
<div class="text-content">
<div class="pricing-details multi-line">
Affordable pricing depends on support required.
</div>
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="no-action button green">
Contact sales
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -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)

View File

@ -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

View File

@ -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"}),
]