From 4699e3bb90f6a3f45a40e51be2d043d81051947c Mon Sep 17 00:00:00 2001 From: Thibault Martin Date: Fri, 27 Jan 2023 20:49:58 +0100 Subject: [PATCH] Zola hosting (#1623) * Init * Draft the layout of the hosting page * Fiddle with flex, with no great success * Align titles, operating date, and CTAs with hacky fixed heights * Make it responsive --- content/ecosystem/hosting/index.md | 29 +++++++ content/ecosystem/hosting/providers.toml | 50 ++++++++++++ sass/_hosting.scss | 74 ++++++++++++++++++ sass/style.scss | 1 + static/images/hosting/etke.cc.png | Bin 0 -> 495 bytes static/images/hosting/logo-ems-primary.svg | 8 ++ static/images/hosting/ossrox.svg | 72 +++++++++++++++++ .../hosting/ungleich_zerocarbonmatrix.jpg | Bin 0 -> 32648 bytes templates/hosting.html | 18 +++++ templates/shortcodes/hosting_providers.html | 16 ++++ 10 files changed, 268 insertions(+) create mode 100644 content/ecosystem/hosting/providers.toml create mode 100644 sass/_hosting.scss create mode 100644 static/images/hosting/etke.cc.png create mode 100644 static/images/hosting/logo-ems-primary.svg create mode 100644 static/images/hosting/ossrox.svg create mode 100644 static/images/hosting/ungleich_zerocarbonmatrix.jpg create mode 100644 templates/hosting.html create mode 100644 templates/shortcodes/hosting_providers.html diff --git a/content/ecosystem/hosting/index.md b/content/ecosystem/hosting/index.md index f212e8a59..b89e482bb 100644 --- a/content/ecosystem/hosting/index.md +++ b/content/ecosystem/hosting/index.md @@ -1,4 +1,33 @@ +++ title = "Hosting" +template = "hosting.html" weight = 4 +++ + +## Why not matrix.org? + +Matrix could be described as what happens when email, instant messaging and +encryption meet. To be able to use Matrix, you need a Matrix account which is +provided by... a provider! The matrix accounts identifiers look like +`@username:example.com`. People on different providers can talk to one another, +in the same way you can send emails to someone using another email provider. + +Matrix.org is the largest, free provider of Matrix accounts. Many people have an +identifier like `@username:matrix.org`. This also means that the Matrix.org +servers are crowded. Using your own provider **as an individual** can not only +make your Matrix experience snappier, but also give you access to a set of +pre-configured [bridges](#) to talk to friends on other networks such as Signal +or WhatsApp. + +**Organisations and community managers** will be interested in providers for two +main reasons: they can proudly display their identity with their own domain +in username and rooms identifiers, and their administrators remain in control +of the data of their organisation. + +The following providers have been brought to the attention of the Matrix.org +Foundation. Please note that the Matrix.org Foundation doesn't endorse them, +nor provides any warranties for using them. + +## Known providers + +{{ hosting_providers() }} diff --git a/content/ecosystem/hosting/providers.toml b/content/ecosystem/hosting/providers.toml new file mode 100644 index 000000000..d46a17c91 --- /dev/null +++ b/content/ecosystem/hosting/providers.toml @@ -0,0 +1,50 @@ +[[providers]] +name = "Element Matrix Services" +image = "logo-ems-primary.svg" +website = "https://ems.element.io" +operating_since = "2018" +description = """ +- Hosted Homeservers +- [Hosted Integrations including Slack, IRC, Github bridging](https://element.io/element-matrix-store) + +Brought to you by the creators of Matrix, who have been running the biggest homeserver in the network since 2014. Every homeserver comes with a custom instance of Element. +""" + +[[providers]] +name = "Ungleich.ch" +image = "ungleich_zerocarbonmatrix.jpg" +website = "https://matrix.zerocarbon.shop" +operating_since = "TBC" +description = """ +- Hosted Homeservers + +Service provided by [ungleich.ch](https://ungleich.ch/) in their own datacenter in Linthal, Switzerland. They use an old building, second-hand servers, passive cooling and are directly plugged into an on-site hydroelectric power plant! +""" + +[[providers]] +name = "etke.cc" +image = "etke.cc.png" +website = "https://etke.cc" +operating_since = "TBC" +description = """ +- Setup of hosted Homeserver on any hosting by your choice +- Setup of hosted integrations (full list available on website) +- Setup of additional services (wireguard, languagetool, miniflux, etc.) +- Ongoing maintenance of host & Matrix components +- Email services for your domain + +That service will create your Matrix Homeserver on your domain and server (doesn't matter if it's cloud provider or on an old laptop in the corner of your room), (optional) maintains it (server's system updates, cleanup, security adjustments, tuning, etc.; Matrix Homeserver updates & maintenance) and (optional) provide full-featured email service for your domain. + +[Matrix Space](https://matrix.to/#/#service:etke.cc) | [Announcements on Matrix](https://matrix.to/#/#announcements:etke.cc) +""" + +[[providers]] +name = "Ossrox" +image = "ossrox.svg" +website = "https://ossrox.org" +operating_since = "TBC" +description = """ +- Hosted Homeservers + +Ossrox is a company from Germany dedicated to hosting open-source services. Not only has the company name been derived from the motto "Open-Source Software Rocks", but also their corporate culture. The three most important principles of the company are security, privacy and sustainability - thanks to open-source software. In addition to Matrix, Ossrox also provides many other solutions e.g. in the messaging, groupware and web meeting segments. +""" diff --git a/sass/_hosting.scss b/sass/_hosting.scss new file mode 100644 index 000000000..c653dd3a2 --- /dev/null +++ b/sass/_hosting.scss @@ -0,0 +1,74 @@ +.hosting_page { + margin: 0 auto; + padding: 5.625rem 0 2rem 0; + @media (max-width: 767px) { + padding: 5.625rem 32px 2rem 32px; + } + + h2 { + text-align: center; + font-weight: 700; + font-size: 2.5rem; + margin-bottom: 1rem; + } + + .hosting_providers { + display: flex; + flex-direction: row; + justify-content: center; + flex-wrap: wrap; + gap: 3.125rem; + + .provider_card { + display: flex; + flex-direction: column; + justify-content: space-between; + + padding: 24px; + + flex: 1 0 400px; + max-width: 400px; + @media (max-width: 767px) { + flex: 1 0 300px; + max-width: 300px; + } + + + border: 1px solid #D2D2D2; + border-radius: 16px; + + .details { + text-align: center; + + .provider_logo_container { + height: 10rem; + } + + h3 { + height: 5rem; + margin: 0; + text-align: center; + + font-style: normal; + font-weight: 700; + font-size: 2rem; + line-height: 120%; + } + + .operating_since { + height: 1.5rem; + font-size: .9rem; + } + + } + + .call-to-action { + background-color: #000; + color: #fff; + border-radius: 1000px; + padding: .4rem 2rem; + align-self: center; + } + } + } +} diff --git a/sass/style.scss b/sass/style.scss index 3095f24d6..988f53160 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -14,3 +14,4 @@ @import '_legacy-docs'; @import '_docs-home'; @import '_security-hall-of-fame'; +@import '_hosting'; diff --git a/static/images/hosting/etke.cc.png b/static/images/hosting/etke.cc.png new file mode 100644 index 0000000000000000000000000000000000000000..a6153a5da96be8a982478aa137816ba76c8a1415 GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuB%fk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7$XzY4BDf9bR3%rzDc0mdcRPD#E*_8+02!+ImjWv(!t=^0H?@vH_)TxxtoPC=&ExA aBg0=40XdoN$wj~zWbkzLb6Mw<&;$Skh;`xs literal 0 HcmV?d00001 diff --git a/static/images/hosting/logo-ems-primary.svg b/static/images/hosting/logo-ems-primary.svg new file mode 100644 index 000000000..66694bb52 --- /dev/null +++ b/static/images/hosting/logo-ems-primary.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/static/images/hosting/ossrox.svg b/static/images/hosting/ossrox.svg new file mode 100644 index 000000000..11da94e28 --- /dev/null +++ b/static/images/hosting/ossrox.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + diff --git a/static/images/hosting/ungleich_zerocarbonmatrix.jpg b/static/images/hosting/ungleich_zerocarbonmatrix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..320b8316e59990e6c434bbf7f72fe3304f4f66a3 GIT binary patch literal 32648 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 literal 0 HcmV?d00001 diff --git a/templates/hosting.html b/templates/hosting.html new file mode 100644 index 000000000..00b21a605 --- /dev/null +++ b/templates/hosting.html @@ -0,0 +1,18 @@ +{% extends "page.html" %} +{% block content %} + + +
+ + {{ page.content | safe }} + +
+{% endblock content %} diff --git a/templates/shortcodes/hosting_providers.html b/templates/shortcodes/hosting_providers.html new file mode 100644 index 000000000..031a06af3 --- /dev/null +++ b/templates/shortcodes/hosting_providers.html @@ -0,0 +1,16 @@ +{% set providers_data = load_data(path="content/ecosystem/hosting/providers.toml") %} +
+ {% for provider in providers_data.providers %} +
+
+
+ Logo of {{ provider.name }} +
+

{{ provider.name }}

+
Operating since {{ provider.operating_since }}
+
+

{{ provider.description | markdown | safe }}

+ Try them +
+ {% endfor %} +