Merge branch 'master' of git+ssh://code.ungleich.ch/ungleich-public/ungleich-staticcms
This commit is contained in:
commit
d818d02ae9
22 changed files with 995 additions and 153 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
venv/
|
||||
.DS_Store
|
||||
.idea/
|
||||
.history
|
||||
|
|
BIN
assets/u/image/cards/infrastructure-availability.jpg
Normal file
BIN
assets/u/image/cards/infrastructure-availability.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 261 KiB |
BIN
assets/u/image/cards/service-hours.jpg
Normal file
BIN
assets/u/image/cards/service-hours.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 264 KiB |
BIN
assets/u/image/cards/sla-levels.jpg
Normal file
BIN
assets/u/image/cards/sla-levels.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 201 KiB |
BIN
assets/u/image/cards/support-packages.jpg
Normal file
BIN
assets/u/image/cards/support-packages.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 275 KiB |
BIN
assets/u/image/product.jpg
Normal file
BIN
assets/u/image/product.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 MiB |
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
|
200
content/u/blog/ipv6-vpn-dns-entries/contents.lr
Normal file
200
content/u/blog/ipv6-vpn-dns-entries/contents.lr
Normal file
|
@ -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).
|
|
@ -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
|
|
@ -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/)
|
135
content/u/products/ungleich-service-hour/contents.lr
Normal file
135
content/u/products/ungleich-service-hour/contents.lr
Normal file
|
@ -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/).
|
||||
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<tr>
|
||||
<th>Package/Feature</th>
|
||||
<th>Default rate</th>
|
||||
<th>Support package</th>
|
||||
<th>Starter package</th>
|
||||
<th>Collaboration package</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Hourly Rate (during business hours)</th>
|
||||
<td>220 CHF/h</td>
|
||||
<td>210 CHF/h</td>
|
||||
<td>200 CHF/h</td>
|
||||
<td>180 CHF/h</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Hours included during business hours</th>
|
||||
<td>0</td>
|
||||
<td>2</td>
|
||||
<td>10</td>
|
||||
<td>20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Hourly Rate (outside of business hours)</th>
|
||||
<td>360 CHF/h</td>
|
||||
<td>343 CHF/h</td>
|
||||
<td>327 CHF/h</td>
|
||||
<td>295 CHF/h</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Hours included (outside of business hours)</th>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>2</td>
|
||||
<td>5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Package valid for</th>
|
||||
<td>on demand</td>
|
||||
<td>30 days</td>
|
||||
<td>30 days</td>
|
||||
<td>60 days</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Discount</th>
|
||||
<td>0%</td>
|
||||
<td>4.5%</td>
|
||||
<td>9%</td>
|
||||
<td>18%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Pricing</th>
|
||||
<td>FREE</td>
|
||||
<td>500</td>
|
||||
<td>3'000</td>
|
||||
<td>5'500</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
* 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
|
|
@ -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
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Feature / SLA</th>
|
||||
<th>Standard SLA</th>
|
||||
<th>Business SLA</th>
|
||||
<th>Professional SLA</th>
|
||||
<th>Professional Plus SLA</th>
|
||||
<th>Critical Services SLA</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">Support via E-Mail</th>
|
||||
<td>yes</td>
|
||||
<td>yes</td>
|
||||
<td>yes</td>
|
||||
<td>yes</td>
|
||||
<td>yes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Guaranteed response time via E-Mail</th>
|
||||
<td>best effort</td>
|
||||
<td><a href="#1-business-day">1 business day</a></td>
|
||||
<td><a href="#4h-business-hours">4h during business hours</a></td>
|
||||
<td><a href="#4h-extended-business-hours">4h during extended business hours</a></td>
|
||||
<td><a href="#4h-24x7">4h every day</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Support via telephone</th>
|
||||
<td>best effort</td>
|
||||
<td>best effort</td>
|
||||
<td>Mo-Fr 09:00-17:00</td>
|
||||
<td>Mo-Fr 06:00-22:00</td>
|
||||
<td>Mo-Su 00:00-23:59</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Pricing (CHF/month)</th>
|
||||
<td>Included for free</td>
|
||||
<td>450</td>
|
||||
<td>900</td>
|
||||
<td>1'800</td>
|
||||
<td>4'200</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
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.
|
||||
|
||||
### <a name="1-business-day"></a> 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.
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Request received</th>
|
||||
<th>Answer guaranteed until</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Between Monday 09:00-17:00</th>
|
||||
<td>Tuesday 17:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between Tuesday 09:00-17:00</th>
|
||||
<td>Wednesday 17:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between Wednesday 09:00-17:00</th>
|
||||
<td>Thursday 17:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between Thursday 09:00-17:00</th>
|
||||
<td>Friday 17:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between Friday 17:00 and Monday 09:00</th>
|
||||
<td>Monday 17:00</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
If a work day is a Swiss national holiday it is treated as Friday to
|
||||
Monday period.
|
||||
|
||||
### <a name="4h-business-hours"></a> 4h during business hours reaction times
|
||||
|
||||
The request will be answered within the 4h during business hours. The
|
||||
table below shows the details:
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Request received</th>
|
||||
<th>Answer guaranteed until</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Between 09:00-13:00 on a work day</td>
|
||||
<td>Between 13:00-17:00 on the same work day</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between 13:00-17:00 on a work day</td>
|
||||
<td>Between 09:00-13:00 on the next work day</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
### <a name="4h-extended-business-hours"></a> 4h during extended business hours reaction times
|
||||
|
||||
The request will be answered within the 4h during business hours. The
|
||||
table below shows the details:
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Request received</th>
|
||||
<th>Answer guaranteed until</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Between 09:00-13:00 on a work day</th>
|
||||
<td>Between 13:00-17:00 on the same work day</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between 13:00-17:00 on a work day</th>
|
||||
<td>Between 09:00-13:00 on the next work day</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
### <a name="4h-24x7"></a> Every day 4h response time reaction times
|
||||
|
||||
The request will be answered within the 4h independent of the day or
|
||||
time.
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<tr>
|
||||
<th>Request received</th>
|
||||
<th>Answer guaranteed until</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Between 00:00-23:59 every day</th>
|
||||
<td>Within 4 hours</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
### 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)
|
||||
|
|
150
content/u/products/ungleich-support-package/contents.lr
Normal file
150
content/u/products/ungleich-support-package/contents.lr
Normal file
|
@ -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.
|
||||
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table colored-table table-bordered">
|
||||
<tr>
|
||||
<th>Package/Feature</th>
|
||||
<th>Business Light</th>
|
||||
<th>Business Standard</th>
|
||||
<th>Business Pro</th>
|
||||
<th>Business Pro Plus</th>
|
||||
<th>Critical Services</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Working hour package</th>
|
||||
<td>Support package</td>
|
||||
<td>Starter package</td>
|
||||
<td>Starter package</td>
|
||||
<td>Collaboration package</td>
|
||||
<td>Collaboration package</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Working hours included (during business hours/outside
|
||||
business hours)</th>
|
||||
<td>2 / 0</td>
|
||||
<td>10 / 2</td>
|
||||
<td>10 / 2</td>
|
||||
<td>20 / 5</td>
|
||||
<td>20 / 5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>SLA package</th>
|
||||
<td>Business SLA</td>
|
||||
<td>Business SLA</td>
|
||||
<td>Professional SLA</td>
|
||||
<td>Professional Plus SLA</td>
|
||||
<td>Critical Services SLA</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Reaction times</th>
|
||||
<td>1 business day</td>
|
||||
<td>1 business day</td>
|
||||
<td>4h during business hours</td>
|
||||
<td>4h during extended business hours</td>
|
||||
<td>4h every day</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="#availiblity">Targetted Minimum Availability</a></th>
|
||||
<td>99%</td>
|
||||
<td>99%</td>
|
||||
<td>99.9%</td>
|
||||
<td>99.99%</td>
|
||||
<td>99.999%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Pricing (CHF/month)</th>
|
||||
<td>950</td>
|
||||
<td>3'450</td>
|
||||
<td>3'900</td>
|
||||
<td>7'300</td>
|
||||
<td>9'700</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
## <a name="availiblity"></a> 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/)
|
|
@ -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/)
|
||||
|
||||
|
|
41
content/u/projects/privacy-policy/contents.lr
Normal file
41
content/u/projects/privacy-policy/contents.lr
Normal file
|
@ -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.
|
|
@ -1,4 +0,0 @@
|
|||
The structure of templates should be:
|
||||
|
||||
- layout.html: valid for everything
|
||||
- product.html: valid for all products
|
10
templates/README.md
Normal file
10
templates/README.md
Normal file
|
@ -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
|
|
@ -98,9 +98,9 @@
|
|||
</ul>
|
||||
<form class="form-inline my-2 my-lg-0"
|
||||
action="https://search.ungleich.ch/yacysearch.html" method="get">
|
||||
<input class="form-control mr-sm-2" type="search"
|
||||
<input class="form-control p-2 mr-sm-2" type="search"
|
||||
placeholder="Search" name="query" aria-label="Search">
|
||||
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||
<button class="btn btn-outline-success my-2 my-sm-0 btn-sm" type="submit">Search</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
|
@ -4,39 +4,50 @@
|
|||
|
||||
{% block content %}
|
||||
{% if this.description1 %}
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description1 }}
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description1 }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature1_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature2_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature2_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature3_text }}</p>
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-4 col-lg-4 mb-5 mb-lg-0">
|
||||
<div class="featured-box">
|
||||
<h3>{{ this.feature1_title }}</h3>
|
||||
<p class="text-3">{{ this.feature1_text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-lg-4 mb-5 mb-lg-0">
|
||||
<div class="featured-box">
|
||||
<h3>{{ this.feature2_title }}</h3>
|
||||
<p class="text-3">{{ this.feature2_text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-lg-4 mb-5 mb-sm-0">
|
||||
<div class="featured-box">
|
||||
<h3>{{ this.feature3_title }}</h3>
|
||||
<p class="text-3">{{ this.feature3_text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% if this.description2 %}
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description2 }}
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description2 }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if this.content1_text %}
|
||||
|
@ -64,14 +75,14 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer1_title }}</h5>
|
||||
<p class="card-text">{{ this.offer1_text }}</p>
|
||||
<a href="{{ this.offer1_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer1_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -82,7 +93,7 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer2_title }}</h5>
|
||||
<p class="card-text">{{ this.offer2_text }}</p>
|
||||
<a href="{{ this.offer2_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer2_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -93,22 +104,25 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer3_title }}</h5>
|
||||
<p class="card-text">{{ this.offer3_text }}</p>
|
||||
<a href="{{ this.offer3_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer3_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<hr/>
|
||||
</div>
|
||||
|
||||
{% if this.description4 %}
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description4 }}
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-12">
|
||||
{{ this.description4 }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if this.content2_text %}
|
||||
|
@ -159,7 +173,7 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer4_title }}</h5>
|
||||
<p class="card-text">{{ this.offer4_text }}</p>
|
||||
<a href="{{ this.offer4_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer4_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -170,7 +184,7 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer5_title }}</h5>
|
||||
<p class="card-text">{{ this.offer5_text }}</p>
|
||||
<a href="{{ this.offer5_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer5_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -181,7 +195,7 @@
|
|||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer6_title }}</h5>
|
||||
<p class="card-text">{{ this.offer6_text }}</p>
|
||||
<a href="{{ this.offer6_link }}" class="btn btn-primary">Order</a>
|
||||
<a href="{{ this.offer6_link }}" class="btn btn-primary btn-sm">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block subtitle %}{{ this.subtitle }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
{% for childpage in this.children %}
|
||||
|
||||
|
@ -63,4 +63,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -3,4 +3,4 @@ name = ungleich: IPv6 - Linux - FOSS
|
|||
url = https://ungleich.ch
|
||||
|
||||
[packages]
|
||||
lektor-atom = 0.3
|
||||
lektor-atom = 0.4.0
|
||||
|
|
Loading…
Reference in a new issue