diff --git a/.gitignore b/.gitignore
index e9842fb..d92c453 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
venv/
.DS_Store
.idea/
+.history
diff --git a/assets/u/image/cards/infrastructure-availability.jpg b/assets/u/image/cards/infrastructure-availability.jpg
new file mode 100644
index 0000000..f8ce1fb
Binary files /dev/null and b/assets/u/image/cards/infrastructure-availability.jpg differ
diff --git a/assets/u/image/cards/service-hours.jpg b/assets/u/image/cards/service-hours.jpg
new file mode 100644
index 0000000..4bbb2de
Binary files /dev/null and b/assets/u/image/cards/service-hours.jpg differ
diff --git a/assets/u/image/cards/sla-levels.jpg b/assets/u/image/cards/sla-levels.jpg
new file mode 100644
index 0000000..4472c88
Binary files /dev/null and b/assets/u/image/cards/sla-levels.jpg differ
diff --git a/assets/u/image/cards/support-packages.jpg b/assets/u/image/cards/support-packages.jpg
new file mode 100644
index 0000000..be50c12
Binary files /dev/null and b/assets/u/image/cards/support-packages.jpg differ
diff --git a/assets/u/image/product.jpg b/assets/u/image/product.jpg
new file mode 100644
index 0000000..06483a0
Binary files /dev/null and b/assets/u/image/product.jpg differ
diff --git a/assets/u/static/css/ungleich.css b/assets/u/static/css/ungleich.css
index 6e9f8ce..dad4589 100755
--- a/assets/u/static/css/ungleich.css
+++ b/assets/u/static/css/ungleich.css
@@ -9,3 +9,25 @@
.headlinebold {
font-family: "Nimbus Sans L";
}
+
+.colored-table {
+ text-align: center;
+ background: #E5EDF1;
+}
+
+.colored-table td, .colored-table th {
+ border: 1px solid #fff;
+}
+
+.colored-table thead th {
+ border-bottom: 2px solid #fff;
+}
+
+.bg-offer {
+ background-color: #c0dcf3;
+}
+.table-responsive {
+ font-family: "Rubik", sans-serif;
+ font-size: 13px;
+ line-height: 22px;
+}
\ No newline at end of file
diff --git a/assets/u/static/style.css b/assets/u/static/style.css
index 7ff6e0b..459c337 100644
--- a/assets/u/static/style.css
+++ b/assets/u/static/style.css
@@ -25,6 +25,20 @@ header h1 {
font-size: 42px;
}
+// Sanghee, 2021-09-20
+h2 {
+ font-size: 1.65rem;
+ line-height: 2;
+ font-weight: 700;
+}
+
+// Sanghee, 2021-09-20
+h3 {
+ font-size: 1rem;
+ text-transform: uppercase;
+ font-weight: 700;
+}
+
header nav ul {
list-style: none;
margin: 0;
diff --git a/content/u/blog/ipv6-vpn-dns-entries/contents.lr b/content/u/blog/ipv6-vpn-dns-entries/contents.lr
new file mode 100644
index 0000000..7ef5ae6
--- /dev/null
+++ b/content/u/blog/ipv6-vpn-dns-entries/contents.lr
@@ -0,0 +1,200 @@
+title: IPv6, VPN and DNS entries
+---
+pub_date: 2021-10-13
+---
+author: Nico Schottelius
+---
+twitter_handle: NicoSchottelius
+---
+_hidden: no
+---
+_discoverable: yes
+---
+abstract:
+Looking at how the patterns of VPN and DNS names changes with IPv6
+---
+body:
+
+## TL; DR
+
+With IPv6, DNS management of protected networks can be
+simplified. IPv6 VPNs can use simplified DNS configurations to
+simplify the network configurations by just using public, restricted
+DNS entries.
+
+## VPN and DNS in the IPv4 world
+
+VPNs in the IPv4 world are often used to create site-to-site tunnels,
+allowing different networks to talk to each other. A typical case is
+that organisation A needs to access protected resources of
+organisation B and maybe even vice-versa. So a typical VPN looks like
+this:
+
+```
+Organisation A
+--------------
+
+Protected Host A ---------- Router/VPN gateway
+(10.0.0.42/24) |
+ |
+ |
+Organisation B (Internet)
+-------------- |
+ |
+ |
+Protected Host B ---------- Router/VPN gateway
+(10.20.0.42/24)
+Host name: lakeside.int.org-b.example.com
+```
+
+Now if the Protected Host A and Protected Host B want to communicate
+with each other on IP basis, this is no problem (I am not elaborating
+on the problems of IP collisions in this article, a follow up article
+will follow soon).
+
+However if Protected Host A wants to reach the Protected Host B via
+its internal DNS name **lakeside.int.org-b.example.com**, this is
+usually a problem, for multiple reasons:
+
+* Protected Host A might not know the right internal DNS server to
+ query for int.org-b.example.com.
+* Protected Host A might know the right internal DNS server to
+ query for int.org-b.example.com, but might not have access to it via
+ the VPN
+* The DNS records for int.org-b.example.com often are intentionally
+ not published to public DNS for multiple reasons: privacy related or
+ because administrators don't like to publish RFC1918 records into
+ public DNS records
+
+
+## VPN and DNS in the IPv6 world
+
+There are multiple ways of how VPNs can be built in the IPv6 world,
+including usage of the private IPv4 addresses equivalent named Unique
+Local Address (ULA). However instead of using ULA, I will today show
+an approach that is more "IPv6 native", using Global Unique Addresses
+(GUA), or what is simply known as "public IPv6 address".
+
+While you might have heard it, I will repeat nonetheless: there are
+enough IPv6 addresses for every practical use case that we imagine at
+the moment. This is important, because we can use **globally unique
+IPv6 addresses** inside the VPN.
+
+Isn't that a problem? Publicly reachable IPv6 addresses inside a VPN?
+It would, if the addresses were **globally reachable**. In the IPv6
+world nothing speaks against having **globally unique, but non-routed
+IPv6 addresses**. This is actually a perfect match and much better
+than we can do in the IPv4 world:
+
+* Both organisations A and B can acquire globally unique
+ addresses. Let's say they organisation A acquires 2001:db8:0::/48 and
+ organisation B acquires 2001:db8:1::/48.
+* Both organisations have two options: they can announce their IPv6
+ range to the Internet and block access to their internal network or
+* both they can even consider not to announce their network at all
+ (there is not route in the Internet for it)
+
+In either case, both organisations will usually select a sub network
+of size /64 for the resources they want to expose via the VPN. Let's
+say organisation A chooses 2001:db8:0:cafe::/64 and organisation B
+chooses 2001:db8:1:7ea::/64. Putting this in context, their VPN now
+looks like this:
+
+```
+Organisation A
+--------------
+
+Protected Host A ---------- Router/VPN gateway
+(2001:db8:0:cafe::42/64) |
+ |
+ |
+Organisation B (Internet)
+-------------- |
+ |
+ |
+Protected Host B ---------- Router/VPN gateway
+(2001:db8:1:7ea::42/64) |
+Host name: lakeside.int.org-b.example.com
+```
+
+Now, how does this change the DNS server situation? Because we are
+using IPv6, we have many more options:
+
+* a) We can publish the DNS records of the domain
+ int.org-b.example.com globally. While access to the network
+ 2001:db8:1:7ea::/64 is only possible via VPN, nothing speaks against
+ having the records in a public DNS server. However, some
+ administrators advocate to not publish them publicly for privacy
+ reasons. That is the same logic as publishing or not publish the
+ RFC1918 (10.x.y.z) addresses in the IPv4 world.
+* b) We can publicly/globally delegate the domain
+ int.org-b.example.com to a nameserver that is only reachable via the
+ VPN.
+* c) We can proceed the same as in the IPv4 world and have a
+ disconnect, internal DNS server that is responsible for
+ int.org-b.example.com.
+
+Option (a) is often seen as a security risk and it can be debated
+whether someone who can already guess the correct hostname and
+retrieve it's IP address is really a significant higher security
+thread than anybody just guessing IP addresses.
+
+Option (c) is the typical case for IPv4 based VPNs and is causing
+above illustrated issues.
+
+Option (b) is the one that makes IPv6 VPNs much more interesting than
+IPv4 based VPNs:
+
+* The world can know that there is an internal domain
+ **int.org-b.example.com** and find out which DNS servers are
+ responsible for it.
+* However an attacker easily guesses that internal networks exist
+ anyway.
+
+Let's have a look at sample nameserver entries in detail:
+
+```
+int.org-b.example.com. NS ns-int1.org-b.example.com.
+int.org-b.example.com. NS ns-int2.org-b.example.com.
+```
+
+What does that mean? Anyone in the world can retrieve the information
+that int.org-b.example.com has two DNS servers. However the DNS
+servers responsible for org-b.example.com can hide the IP addresses of
+ns-int1.org-b.example.com and ns-int2.org-b.example.com for everyone,
+but hosts coming from organisation A. Or even if the IP addressses of
+ns-int1.org-b.example.com and ns-int2.org-b.example.com are world
+known, access to them can easily be prevented.
+
+The measures for this can for instance be DNS views or firewall
+entries. In practice this means for VPNs in the IPv6 world:
+
+
+```
+Organisation A
+--------------
+
+Protected Host A: what is the IP address of lakeside.int.org-b.example.com?
+DNS Server of Organisation B: 2001:db8:1:7ea::42
+
+
+Outside party
+-------------
+Outside Hosts: what is the IP address of lakeside.int.org-b.example.com?
+
+a) DNS Server of Organisation B: there is no domain
+ int.org-b.example.com (DNS view restriction)
+b) DNS Server of Organisation B: these are the nameserver for
+ int.org-b.example.com, but you cannot reach them (firewall protection)
+```
+
+## Summary
+
+For IPv6 based VPNs you can get away without reconfiguring your source
+networks for DNS servers of the destination party. The target party
+always needs to ensure proper access control to internal resources, so
+there is no additional overhead.
+
+DNS, correctly used in the IPv6 VPN world, is a really smooth
+operation. This is why we recommend to use
+[IPv6 as a basis for VPNs](https://ipv6vpn.ch).
diff --git a/content/u/blog/testtesttest/contents.lr b/content/u/blog/testtesttest/contents.lr
deleted file mode 100644
index c0e930b..0000000
--- a/content/u/blog/testtesttest/contents.lr
+++ /dev/null
@@ -1,18 +0,0 @@
-title: something i want to talk about
----
-pub_date: 2020-04-11
----
-author: Sanghee Kim
----
-twitter_handle: ungleich
----
-_hidden: yes
----
-_discoverable: no
----
-abstract:
-this is test post
----
-body:
-
-This is test post
\ No newline at end of file
diff --git a/content/u/products/ungleich-infrastructure-availability/contents.lr b/content/u/products/ungleich-infrastructure-availability/contents.lr
new file mode 100644
index 0000000..ad3d9a0
--- /dev/null
+++ b/content/u/products/ungleich-infrastructure-availability/contents.lr
@@ -0,0 +1,113 @@
+_discoverable: yes
+---
+_hidden: no
+---
+title: ungleich infrastructure availability
+---
+subtitle: Making your services dependable
+---
+image:/u/image/cards/infrastructure-availability.jpg
+---
+headline1: ungleich
+---
+headline2: Infrastructure
+---
+headline3: Availability
+---
+header_background_color: #568BD5
+---
+header_text_color: text-light
+---
+nav_classes: navbar-dark
+---
+description1:
+
+## Infrastructure availability
+
+This is version **1.0 of the ungleich infrastructure availability definition**.
+
+Depending on your project or business case you have different
+availbility requirements. At ungleich we accomodate the range
+from "can be offline for a while" up to "is mission critical".
+We orientate ourselves on the It standard availability definitions
+"availability per year". The following table gives an overview of
+typical availability rates:
+
+
+```
+| % | Accepted downtime / year |
+|--------+--------------------------|
+| 98 | 175.2h or 7.3 days |
+| 99 | 87.6h or 3.65 days |
+| 99.9 | 8.76h |
+| 99.99 | 0.876h or 52.55 minutes |
+| 99.999 | 5.25 minutes |
+```
+
+## General availability
+
+If not otherwise specified, the **target availability** for every
+service is 99.9%. This availability is **not guaranteed by
+default**. However we offer **guaranteed availability** for a range of
+our products.
+
+## Guaranteed availability
+
+We can guarantee availability of individual services depending on your
+needs. As every customer need and product is individual, you can
+[ask for an individual offer](/u/contact/) for your services.
+
+## High Availability Methods
+
+To improve the default availability, we offer a variety of
+add-ons. Depending on the booked service, different methods are
+applicable. In this section we describe the general methods we offer.
+
+### Redundant storage
+
+By default all data is replicated 3 times accross our decentralised
+storage system. This protects against disk failures like a traditional
+RAID system does. Note that this does not protect against
+unintentional deletion, for this you require a backup.
+
+### Offsite backup
+
+To allow disaster recovery, we offer [offsite backups](../backup/)
+for most of our services. The data is stored in a physical different
+location so that even physical damage to a data center will allow you
+to restore your data.
+
+### Dedicated Internet uplinks and IP blocks
+
+To protect you against DDoS and impacts on our general infrastructure,
+we offer dedicated Internet uplinks that are reserved for your
+service. This includes a /48 IPv6 address block by default for BGP
+announcement. A /24 IPv4 address block for indidivual BGP announcement
+can be added at an extra service cost.
+
+### Redundant services / High availability (HA)
+
+We realise high availability (HA) using redundant services. These
+services can be placed in the same geographic or different geographic
+data centers. Depending on the service architecture we offer
+Cold-Standby, Hot-Standby or active-active services.
+
+With different geographic locations separate data storage is included
+by default. For services in the same location, an optional separate
+data storage is also available.
+
+### Load Balancing
+
+For services that allow multiple backends, we offer load balancing
+services to distribute the traffic. This can be combined with
+dedicated uplinks per location, indivual IP address blocks and
+distributed application deployments in multiple locations. You can
+also easily realise [blue green
+deployments](https://en.wikipedia.org/wiki/Blue-green_deployment) or
+[Canary releases](https://martinfowler.com/bliki/CanaryRelease.html).
+
+## Related pages
+
+* [ungleich SLAs](../ungleich-sla/)
+* [ungleich Service Hours](../ungleich-service-hour/)
+* [ungleich Support Packages](../ungleich-support-package/)
diff --git a/content/u/products/ungleich-service-hour/contents.lr b/content/u/products/ungleich-service-hour/contents.lr
new file mode 100644
index 0000000..a99bb23
--- /dev/null
+++ b/content/u/products/ungleich-service-hour/contents.lr
@@ -0,0 +1,135 @@
+_discoverable: yes
+---
+_hidden: no
+---
+title: ungleich service hours
+---
+subtitle: Let us solve your challenges
+---
+image:/u/image/cards/service-hours.jpg
+---
+headline1: ungleich
+---
+headline2: Service
+---
+headline3: Hours
+---
+header_background_color: #5996CE
+---
+header_text_color: text-light
+---
+nav_classes: navbar-dark
+---
+description1:
+
+You can hire ungleich staff for solving your infrastructure,
+software development and project management tasks. Below table
+summarises our standard rates. For projects exceeding the specified
+standard packages, [reach out to us individually](/u/contact/).
+
+
+
+
+
+ Package/Feature |
+ Default rate |
+ Support package |
+ Starter package |
+ Collaboration package |
+
+
+ Hourly Rate (during business hours) |
+ 220 CHF/h |
+ 210 CHF/h |
+ 200 CHF/h |
+ 180 CHF/h |
+
+
+ Hours included during business hours |
+ 0 |
+ 2 |
+ 10 |
+ 20 |
+
+
+ Hourly Rate (outside of business hours) |
+ 360 CHF/h |
+ 343 CHF/h |
+ 327 CHF/h |
+ 295 CHF/h |
+
+
+ Hours included (outside of business hours) |
+ 0 |
+ 0 |
+ 2 |
+ 5 |
+
+
+ Package valid for |
+ on demand |
+ 30 days |
+ 30 days |
+ 60 days |
+
+
+ Discount |
+ 0% |
+ 4.5% |
+ 9% |
+ 18% |
+
+
+ Pricing |
+ FREE |
+ 500 |
+ 3'000 |
+ 5'500 |
+
+
+
+
+* Business hours are Mo-Fr, 9-17, excluding Swiss national holidays
+* Hours not consumed during the given timeframe are expired.
+* All packages are non-refundable
+* Discounts available for Open Source and climate related projects
+* For long term and bigger projects, ask for an individual quote.
+
+## Related pages
+
+* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability)
+* [ungleich SLAs](../ungleich-sla)
+* [ungleich Support Packages](../ungleich-support-package)
+
+---
+offer1_title: Support Package 500 CHF
+---
+offer1_text:
+* 2 hours included during business hours
+* Further hours during business time: 210 CHF/h
+* 4.5% discount compared to default hourly rate
+* Valid for 30 days
+---
+offer1_link: https://ungleich.ch/product/support-package-500
+---
+offer2_title: Starter Package 3'000 CHF
+---
+offer2_text:
+* 10 hours included during business hours
+* 2 hours included outside business hours
+* Further hours during business time: 210 CHF/h
+* 9% discount compared to default hourly rate
+* Valid for 30 days
+---
+offer2_link: https://ungleich.ch/product/starter-package-3000
+---
+offer3_title: Collaboration Package 5'500 CHF
+---
+offer3_text:
+* 20 hours included during business hours
+* 5 hours included outside business hours
+* Further hours during business time: 180 CHF/h
+* 18% discount compared to default hourly rate
+* Valid for 60 days
+---
+offer3_link: https://ungleich.ch/product/collaboration-package-5500
diff --git a/content/u/products/ungleich-sla/contents.lr b/content/u/products/ungleich-sla/contents.lr
index 2db6f35..a3d4cf5 100644
--- a/content/u/products/ungleich-sla/contents.lr
+++ b/content/u/products/ungleich-sla/contents.lr
@@ -1,4 +1,4 @@
-_discoverable: no
+_discoverable: yes
---
_hidden: no
---
@@ -6,12 +6,30 @@ title: ungleich SLA levels
---
subtitle: ungleich service level agreements
---
+image:/u/image/cards/sla-levels.jpg
+---
+headline1: Service
+---
+headline2: Level
+---
+headline3: Agreements
+---
+header_background_color: #61C1C0
+---
+header_text_color: text-light
+---
+nav_classes: navbar-dark
+---
description1:
-What is the right SLA (service level agreement) for you? At ungleich
-we know that every organisation has individual needs and resources.
-Depending on your need, we offer different types of service level
-agreements.
+Our Service Level Agreements (SLAs) define the reachability as well
+as the reaction times. As every customer situation is unique, we allow
+customization of the service level per customer.
+
+In this document you can find what the default
+SLA covers and which additional options you have.
+
+This is **version 1.0** of the ungleich SLA levels.
## The standard SLA
@@ -19,92 +37,237 @@ If not otherwise specified in the product or service you acquired from
us, the standard SLA will apply. This SLA covers standard operations
and is suitable for non-critical deployments. The standard SLA covers:
-* Target uptime of all services: 99.9%
-* Service level: best effort
-* Included for all products
-* Support via support@ungleich.ch (answered 9-17 on work days)
-* Individual Development and Support available at standard rate of 220 CHF/h
-* No telephone support
+* Best effort reaction times
+* Support via support@ungleich.ch (answered 09:00-17:00 on work days)
+* Best effort telephone support
+* Included in all products
+### Overview of the SLA levels
+
+
+
+
+
+ Feature / SLA |
+ Standard SLA |
+ Business SLA |
+ Professional SLA |
+ Professional Plus SLA |
+ Critical Services SLA |
+
+
+
+
+ Support via E-Mail |
+ yes |
+ yes |
+ yes |
+ yes |
+ yes |
+
+
+ Guaranteed response time via E-Mail |
+ best effort |
+ 1 business day |
+ 4h during business hours |
+ 4h during extended business hours |
+ 4h every day |
+
+
+ Support via telephone |
+ best effort |
+ best effort |
+ Mo-Fr 09:00-17:00 |
+ Mo-Fr 06:00-22:00 |
+ Mo-Su 00:00-23:59 |
+
+
+ Pricing (CHF/month) |
+ Included for free |
+ 450 |
+ 900 |
+ 1'800 |
+ 4'200 |
+
+
+
+
+
+All prices are excluding the [service hours](../ungleich-service-hour).
---
-feature1_title: Bronze SLA
----
-feature1_text:
-
-The business SLA is suited for running regular applications with a
-focus of business continuity and individual support. Compared to the
-standard SLA it **guarantees you responses within 5 hours** on work
-days. You also can **reach our staff at extended** hours.
-
----
-feature2_title: Enterprise SLA
----
-feature2_text:
-
-The Enterprise SLA is right for you if you need high availability, but
-you don't require instant reaction times from our team.
-
-
-How this works:
-
-* All services are setup in a high availability setup (additional
- charges for resources apply)
-* The target uptime of services: 99.99%
-
-
-
----
-feature3_title: High Availability (HA) SLA
----
-feature3_text:
-If your application is mission critical, this is the right SLA for
-you. The **HA SLA** guarantees high availability, multi location
-deployments with cross-datacenter backups and fast reaction times
-on 24 hours per day.
-
----
-offer1_title: Business SLA
+offer1_title: Business SLA: 450 CHF/month
---
offer1_text:
-
-* Target uptime of all services: 99.9%
-* Service level: guaranteed reaction within 1 business day
-* Development/Support (need to phrase this well): 180 CHF/h
-* Telephone support (8-18 work days)
-* Mail support (8-18 work days)
-* Optional out of business hours hotline (360 CHF/h)
-* 3'000 CHF/6 months
-
+* Guaranteed response time within 1 business day
+* Efficient support handling with support history
+* Suitable for SME and smaller projects
---
-offer1_link: https://ungleich.ch/u/contact/
+offer1_link: https://ungleich.ch/product/business-sla/
---
-offer2_title: Enterprise SLA
+offer2_title: Professional SLA: 900 CHF/month
---
offer2_text:
-
-** Requires High availability setup for all services with separate pricing
-* Service level: reaction within 4 hours
-* Telephone support (24x7 work days)
-* Services are provided in multiple data centers
-* Included out of business hours hotline (180 CHF/h)
-* 18'000 CHF/6 months
-
+* Guaranteed response time 4h during business hours
+* Guaranteed reachability via telephone during business hours
+* Efficient support handling with support history
+* Suitable when fast response during business day is important
---
-offer2_link: https://ungleich.ch/u/contact/
+offer2_link: https://ungleich.ch/product/professional-sla/
---
-offer3_title: HA SLA
+offer3_title: Professional Plus SLA: 1'800 CHF/month
---
offer3_text:
-
-* Uptime guarantees >= 99.99%
-* Ticketing system reaction time < 3h
-* 24x7 telephone support
-* Applications running in multiple data centers
-* Minimum monthly fee: 3000 CHF (according to individual service definition)
-
-Individual pricing. Contact us on support@ungleich.ch for an indivual
-quote and we will get back to you.
-
+* Guaranteed response time 4h during **extended** business hours
+* Covering most time of the day (16h)
+* Guaranteed reachability via telephone during **extended** business hours
+* Efficient support handling with support history
+* Suitable when fast response during even outside business hours is required
---
-offer3_link: https://ungleich.ch/u/contact/
+offer3_link: https://ungleich.ch/product/professional-plus-sla/
+---
+offer4_title: Critical Services SLA: 4'200 CHF/month
+---
+offer4_text:
+* Guaranteed response time 4h during **every day** (including national holidays)
+* Covering the complete day (24h)
+* Guaranteed reachability at any time
+* Efficient support handling with support history
+* Suitable for mission critical services
+---
+offer4_link: https://ungleich.ch/product/critical-services-sla/
+---
+description6:
+
+## Services and reaction times in detail
+
+### Business hours
+
+Our reguar business hours are from 09:00-17:00, Monday to Friday, with the
+exception of Swiss national holidays.
+
+### Extended Business hours
+
+The extended business hours are from 06:00-22:00, Monday to Friday, with the
+exception of Swiss national holidays.
+
+### 1 business day reaction times
+
+The request will be answered within the next business day. The table
+below shows the details for every time of the week.
+
+
+
+
+
+ Request received |
+ Answer guaranteed until |
+
+
+
+
+ Between Monday 09:00-17:00
+ | Tuesday 17:00
+ |
+
+ Between Tuesday 09:00-17:00
+ | Wednesday 17:00
+ |
+
+ Between Wednesday 09:00-17:00
+ | Thursday 17:00
+ |
+
+ Between Thursday 09:00-17:00
+ | Friday 17:00
+ |
+
+ Between Friday 17:00 and Monday 09:00
+ | Monday 17:00
+ |
+
+
+
+
+If a work day is a Swiss national holiday it is treated as Friday to
+Monday period.
+
+### 4h during business hours reaction times
+
+The request will be answered within the 4h during business hours. The
+table below shows the details:
+
+
+
+
+ Request received |
+ Answer guaranteed until |
+
+
+
+
+ Between 09:00-13:00 on a work day |
+ Between 13:00-17:00 on the same work day |
+
+
+ Between 13:00-17:00 on a work day |
+ Between 09:00-13:00 on the next work day |
+
+
+
+
+
+### 4h during extended business hours reaction times
+
+The request will be answered within the 4h during business hours. The
+table below shows the details:
+
+
+
+
+
+ Request received |
+ Answer guaranteed until |
+
+
+
+
+ Between 09:00-13:00 on a work day
+ | Between 13:00-17:00 on the same work day
+ |
+
+ Between 13:00-17:00 on a work day
+ | Between 09:00-13:00 on the next work day
+ |
+
+
+
+
+### Every day 4h response time reaction times
+
+The request will be answered within the 4h independent of the day or
+time.
+
+
+
+ Request received |
+ Answer guaranteed until |
+
+
+ Between 00:00-23:59 every day
+ | Within 4 hours
+ |
+
+
+
+### Business language
+
+As our team is very international, our primary business language is
+English, secondary language is German. On request, we are also
+available in Korean and French.
+
+## Related pages
+
+* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability)
+* [ungleich Service Hours](../ungleich-service-hour)
+* [ungleich Support Packages](../ungleich-support-package)
diff --git a/content/u/products/ungleich-support-package/contents.lr b/content/u/products/ungleich-support-package/contents.lr
new file mode 100644
index 0000000..e91a85c
--- /dev/null
+++ b/content/u/products/ungleich-support-package/contents.lr
@@ -0,0 +1,150 @@
+_discoverable: yes
+---
+_hidden: no
+---
+title: ungleich support packages
+---
+subtitle: Let us make your life easy
+---
+image:/u/image/cards/support-packages.jpg
+---
+headline1: ungleich
+---
+headline2: support
+---
+headline3: package
+---
+header_background_color: #79C161
+---
+header_text_color: text-light
+---
+nav_classes: navbar-dark
+---
+description1:
+
+Every project and every business has invdiual needs in regards to
+support reachablity, infrastructure uptime and development and
+consultancy efforts.
+
+We allow every project to individually select their
+SLA, consultancy packages and availability requirements. Below we have
+summarised typical selections from our customers for easy selection.
+
+
+
+
+
+Package/Feature |
+Business Light |
+Business Standard |
+Business Pro |
+Business Pro Plus |
+Critical Services |
+
+
+Working hour package |
+Support package |
+Starter package |
+Starter package |
+Collaboration package |
+Collaboration package |
+
+
+Working hours included (during business hours/outside
+business hours) |
+2 / 0 |
+10 / 2 |
+10 / 2 |
+20 / 5 |
+20 / 5 |
+
+
+SLA package |
+Business SLA |
+Business SLA |
+Professional SLA |
+Professional Plus SLA |
+Critical Services SLA |
+
+
+Reaction times |
+1 business day |
+1 business day |
+4h during business hours |
+4h during extended business hours |
+4h every day |
+
+
+Targetted Minimum Availability |
+99% |
+99% |
+99.9% |
+99.99% |
+99.999% |
+
+
+Pricing (CHF/month) |
+950 |
+3'450 |
+3'900 |
+7'300 |
+9'700 |
+
+
+
+
+## Targetted Minimum Availability
+
+The availability of our services is defined individually depending on
+the services booked. Find more information about it on the
+[ungleich infrastructure
+availability](../ungleich-infrastructure-availability) page.
+
+---
+offer1_title: Business Light: 950 CHF/month
+---
+offer1_text:
+* Contains service hours Support package
+* Contains Business SLA
+---
+offer1_link: https://ungleich.ch/product/support-business-light
+---
+offer2_title: Business Standard: 3'450 CHF/month
+---
+offer2_text:
+* Contains service hours Starter package
+* Contains Business SLA
+---
+offer2_link: https://ungleich.ch/product/support-business-standard
+---
+offer3_title: Business Pro: 3'900 CHF/month
+---
+offer3_text:
+* Contains service hours Starter package
+* Contains Professional SLA
+---
+offer3_link: https://ungleich.ch/product/support-business-pro
+---
+offer4_title: Business Pro Plus: 7'300 CHF/month
+---
+offer4_text:
+* Contains service hours Collaboration package
+* Contains Professional Plus SLA
+---
+offer4_link: https://ungleich.ch/product/support-business-pro-plus
+---
+offer5_title: Critical Services: 9'700 CHF/month
+---
+offer5_text:
+* Contains service hours Collaboration package
+* Contains Critical Services SLA
+---
+offer5_link: https://ungleich.ch/product/support-critical-services
+---
+description6:
+
+## Related pages
+
+* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability/)
+* [ungleich SLAs](../ungleich-sla/)
+* [ungleich Service Hours](../ungleich-service-hour/)
diff --git a/content/u/products/zero-carbon-cloud/contents.lr b/content/u/products/zero-carbon-cloud/contents.lr
index ffa4231..c593498 100644
--- a/content/u/products/zero-carbon-cloud/contents.lr
+++ b/content/u/products/zero-carbon-cloud/contents.lr
@@ -76,7 +76,7 @@ offer1_text:
* **One free IPv6 VPN** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 1-5 ppeople with no additioal appps
+* Suitable for 1-5 people with no additioal appps
* The cloud will run on a virtual machine with 1 Core, 2 GB RAM, 10 GB SSD, 100 GB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
@@ -92,11 +92,11 @@ offer2_text:
* **One free IPv6 VPN** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 1-5 ppeople with no additioal appps
+* Suitable for 1-5 people with no additioal appps
* The cloud will run on a virtual machine with 1 Core, 2 GB RAM, 10 GB SSD, 500 GB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
-Recommended for your private use or for a smaller project.
+Recommended for your private use or for a smaller project.
---
offer2_link: https://ungleich.ch/product/0carboncloud-s-500GB/
@@ -108,7 +108,7 @@ offer3_text:
* **One free IPv6 VPNs** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 5-10 ppeople with 1-2 enable appps
+* Suitable for 5-10 people with 1-2 enable appps
* The cloud will run on a virtual machine with 2 Core, 4 GB RAM, 10 GB SSD, 500 GB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
@@ -124,7 +124,7 @@ offer4_text:
* **Two free IPv6 VPNs** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 5-10 ppeople with 1-2 enable appps
+* Suitable for 5-10 people with 1-2 enable appps
* The cloud will run on a virtual machine with 2 Core, 4 GB RAM, 10 GB SSD, 5 TB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
@@ -137,10 +137,10 @@ offer5_title: Cloud L-1 TB @ 76 CHF/month
---
offer5_text:
-* **One free IPv6 VPNs** included for increased security
+* **Two free IPv6 VPNs** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 10-20 ppeople with 3-4 enable appps
+* Suitable for 10-20 people with 3-4 enable appps
* The cloud will run on a virtual machine with 4 Core, 8 GB RAM, 10 GB SSD, 1 TB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
@@ -153,10 +153,10 @@ offer6_title: Cloud L-10 TB @ 256 CHF/month
---
offer6_text:
-* **Three free IPv6 VPNs** included for increased security
+* **Five free IPv6 VPNs** included for increased security
* Datacenter location: Glarus, Switzerland
* Enhanced security by limiting access to only your devices
-* Suitable for 10-20 ppeople with 3-4 enable appps
+* Suitable for 10-20 people with 3-4 enable appps
* The cloud will run on a virtual machine with 4 Core, 8 GB RAM, 10 GB SSD, 10 TB HDD
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
diff --git a/content/u/projects/privacy-policy/contents.lr b/content/u/projects/privacy-policy/contents.lr
new file mode 100644
index 0000000..4c9ec6d
--- /dev/null
+++ b/content/u/projects/privacy-policy/contents.lr
@@ -0,0 +1,41 @@
+title: Privacy Policy
+---
+subtitle: ungleich's policy on your privacy
+---
+description1:
+
+## Introduction
+
+This is version 0.1 of our privacy policy from 2021-10-04.
+
+## Privacy by default
+
+At ungleich we are strong believers of **privacy by default**. That
+means: you don't need to opt-in for privacy and you don't need to
+opt-out for newsletters or marketing information. Privacy is a big
+concern for us and our customers.
+
+## Logging and data submission
+
+By default all our services are configured to a minimum amount of
+logging. We cannot claim a **zero log policy**, because for
+operational measures (spammers, denial of service attacks, for
+billing) we need to log some data.
+
+We however **do not sell your data**. Our business is providing
+services, not making money of your information.
+
+## Third party access
+
+We minimise the amount of data that is seen by third parties. At the
+moment some of our websites use google analytics (for historic
+reasons). We plan to remove this by the beginning of 2022.
+
+Services like our [data storage](/u/products/data-storage/),
+[the hosted matrix chat](/u/products/hosted-matrix-chat/),
+[zero carbon VPS hosting](/u/products/virtual-machine-hosting/),
+[zero carbon chat](/u/products/zero-carbon-chat/) and
+[zero carbon cloud](/u/products/zero-carbon-cloud/) do not send any
+data to third parties by default. There might be plugins or settings
+that allow you to enable communication with third parties, but we do
+not configure them by default. Above list is not exhaustive.
diff --git a/templates/README b/templates/README
deleted file mode 100644
index d2dfe6e..0000000
--- a/templates/README
+++ /dev/null
@@ -1,4 +0,0 @@
-The structure of templates should be:
-
-- layout.html: valid for everything
-- product.html: valid for all products
diff --git a/templates/README.md b/templates/README.md
new file mode 100644
index 0000000..4c6f610
--- /dev/null
+++ b/templates/README.md
@@ -0,0 +1,10 @@
+Installation
+
+```
+$ pip install lektor
+```
+
+The structure of templates should be:
+
+- layout.html: valid for everything
+- product.html: valid for all products
\ No newline at end of file
diff --git a/templates/layout-2020.html b/templates/layout-2020.html
index d943d23..05d5fbd 100644
--- a/templates/layout-2020.html
+++ b/templates/layout-2020.html
@@ -98,9 +98,9 @@
diff --git a/templates/product.html b/templates/product.html
index 1c550ca..0b2b44f 100644
--- a/templates/product.html
+++ b/templates/product.html
@@ -4,39 +4,50 @@
{% block content %}
{% if this.description1 %}
-
-
-
- {{ this.description1 }}
+
+
+
+
+ {{ this.description1 }}
+
-
+
{% endif %}
-
-
-
-
{{ this.feature1_title }}
-
{{ this.feature1_text }}
-
-
-
{{ this.feature2_title }}
-
{{ this.feature2_text }}
-
-
-
{{ this.feature3_title }}
-
{{ this.feature3_text }}
+
+
+
+
+
+
{{ this.feature1_title }}
+
{{ this.feature1_text }}
+
+
+
+
+
{{ this.feature2_title }}
+
{{ this.feature2_text }}
+
+
+
+
+
{{ this.feature3_title }}
+
{{ this.feature3_text }}
+
-
+
{% if this.description2 %}
-
-
-
- {{ this.description2 }}
+
+
+
+
+ {{ this.description2 }}
+
-
+
{% endif %}
{% if this.content1_text %}
@@ -64,14 +75,14 @@
{% endif %}
-
+
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
{{ this.offer1_title }}
{{ this.offer1_text }}
-
Order
+
Order
{% endif %}
@@ -82,7 +93,7 @@
{{ this.offer2_title }}
{{ this.offer2_text }}
-
Order
+
Order
{% endif %}
@@ -93,22 +104,25 @@
{{ this.offer3_title }}
{{ this.offer3_text }}
-
Order
+
Order
{% endif %}
-
-
+
+
+
{% if this.description4 %}
-
-
-
- {{ this.description4 }}
+
+
+
+
+ {{ this.description4 }}
+
-
+
{% endif %}
{% if this.content2_text %}
@@ -159,7 +173,7 @@
{{ this.offer4_title }}
{{ this.offer4_text }}
-
Order
+
Order
{% endif %}
@@ -170,7 +184,7 @@
{{ this.offer5_title }}
{{ this.offer5_text }}
-
Order
+
Order
{% endif %}
@@ -181,7 +195,7 @@
{{ this.offer6_title }}
{{ this.offer6_text }}
-
Order
+
Order
{% endif %}
diff --git a/templates/summary-page.html b/templates/summary-page.html
index e4b99de..5cf1ca6 100644
--- a/templates/summary-page.html
+++ b/templates/summary-page.html
@@ -3,7 +3,7 @@
{% block subtitle %}{{ this.subtitle }}{% endblock %}
{% block content %}
-
+
{% for childpage in this.children %}
@@ -63,4 +63,5 @@
+
{% endblock %}
diff --git a/ungleich-staticcms.lektorproject b/ungleich-staticcms.lektorproject
index 1208423..eee9435 100644
--- a/ungleich-staticcms.lektorproject
+++ b/ungleich-staticcms.lektorproject
@@ -3,4 +3,4 @@ name = ungleich: IPv6 - Linux - FOSS
url = https://ungleich.ch
[packages]
-lektor-atom = 0.3
+lektor-atom = 0.4.0