Merge branch 'master' of code.ungleich.ch:ungleich-public/ungleich-staticcms
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
venv/
|
venv/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.idea/
|
.idea/
|
||||||
|
.history
|
||||||
|
|
16
Makefile
|
@ -1,11 +1,17 @@
|
||||||
BUILDDIR?=../ungleich-staticcms-build
|
BUILDDIR?=../ungleich-staticcms-build
|
||||||
DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/u/
|
DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/u/
|
||||||
|
|
||||||
all: publish
|
all: goodpush
|
||||||
|
|
||||||
pull:
|
pull:
|
||||||
git pull
|
git pull
|
||||||
|
|
||||||
|
push:
|
||||||
|
git push
|
||||||
|
|
||||||
|
goodpush:
|
||||||
|
make publish && make push
|
||||||
|
|
||||||
publish: pull build deploy
|
publish: pull build deploy
|
||||||
|
|
||||||
deploy: permissions
|
deploy: permissions
|
||||||
|
@ -16,8 +22,12 @@ permissions: build
|
||||||
find $(BUILDDIR) -type f -exec chmod 0644 {} \;
|
find $(BUILDDIR) -type f -exec chmod 0644 {} \;
|
||||||
find $(BUILDDIR) -type d -exec chmod 0755 {} \;
|
find $(BUILDDIR) -type d -exec chmod 0755 {} \;
|
||||||
|
|
||||||
build:
|
build: venv
|
||||||
lektor build -O $(BUILDDIR)
|
. ./venv/bin/activate && lektor build -O $(BUILDDIR)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILDDIR)
|
rm -rf $(BUILDDIR)
|
||||||
|
|
||||||
|
venv: requirements.txt
|
||||||
|
python3 -m venv venv
|
||||||
|
sh -c ". ./venv/bin/activate && pip install -r requirements.txt"
|
||||||
|
|
BIN
assets/u/image/cards/blackfriday21.jpg
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
assets/u/image/cards/dedicated-alpine.jpg
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
assets/u/image/cards/dedicated-december.jpg
Normal file
After Width: | Height: | Size: 237 KiB |
BIN
assets/u/image/cards/infrastructure-availability.jpg
Normal file
After Width: | Height: | Size: 261 KiB |
BIN
assets/u/image/cards/service-hours.jpg
Normal file
After Width: | Height: | Size: 264 KiB |
BIN
assets/u/image/cards/sla-levels.jpg
Normal file
After Width: | Height: | Size: 201 KiB |
BIN
assets/u/image/cards/support-packages.jpg
Normal file
After Width: | Height: | Size: 275 KiB |
BIN
assets/u/image/ipv6-to-ipv4-proxy.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
assets/u/image/product.jpg
Normal file
After Width: | Height: | Size: 3.8 MiB |
|
@ -9,3 +9,25 @@
|
||||||
.headlinebold {
|
.headlinebold {
|
||||||
font-family: "Nimbus Sans L";
|
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;
|
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 {
|
header nav ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
title: Bye, bye netboot
|
||||||
|
---
|
||||||
|
pub_date: 2021-08-31
|
||||||
|
---
|
||||||
|
author: ungleich infrastructure team
|
||||||
|
---
|
||||||
|
twitter_handle: ungleich
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
abstract:
|
||||||
|
Data Center Light servers are switching to disk based boot
|
||||||
|
---
|
||||||
|
body:
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
Since the very beginning of the [Data Center Light
|
||||||
|
project](/u/projects/data-center-light) our servers have been
|
||||||
|
*somewhat stateless* and booted from their operating system from the
|
||||||
|
network.
|
||||||
|
|
||||||
|
From today on this changes and our servers are switched to boot from
|
||||||
|
an disk (SSD/NVMe/HDD). While this first seems counter intuitive with
|
||||||
|
growing a data center, let us explain why this makes sense for us.
|
||||||
|
|
||||||
|
## Netboot in a nutshell
|
||||||
|
|
||||||
|
There are different variants of how to netboot a server. In either
|
||||||
|
case, the server loads an executable from the network, typically via
|
||||||
|
TFTP or HTTP and then hands over execution to it.
|
||||||
|
|
||||||
|
The first option is to load the kernel and then later switch to an NFS
|
||||||
|
based filesystem. If the filesystem is read write, you usually need
|
||||||
|
one location per server or you mount it read only and possibly apply
|
||||||
|
an overlay for runtime configuration.
|
||||||
|
|
||||||
|
The second option is to load the kernel and an initramfs into memory
|
||||||
|
and stay inside the initramfs. The advantage of this approach is that
|
||||||
|
no NFS server is needed, but the whole operating system is inside the
|
||||||
|
memory.
|
||||||
|
|
||||||
|
The second option is what we used in Data Center Light for the last
|
||||||
|
couple of years.
|
||||||
|
|
||||||
|
## Netboot history at Data Center Light
|
||||||
|
|
||||||
|
Originally all our servers started with IPv4 PXE based
|
||||||
|
netboot. However as our data center is generally speaking IPv6 only,
|
||||||
|
the IPv4 DHCP+TFTP combination is an extra maintenance and also a
|
||||||
|
hindrance for network debugging: if you are in a single stack IPv6
|
||||||
|
only network, things are much easier to debug. No need to look for two
|
||||||
|
routing tables, no need to work around DHCP settings that might
|
||||||
|
interfere with what one wants to achieve via IPv6.
|
||||||
|
|
||||||
|
As the IPv4 addresses became more of a technical debt in our
|
||||||
|
infrastructure, we started flashing our network cards with
|
||||||
|
[ipxe](https://ipxe.org/), which allows even older network cards to
|
||||||
|
boot in IPv6 only networks.
|
||||||
|
|
||||||
|
Also in an IPv6 only netboot environment, it is easier to run
|
||||||
|
active-active routers, as hosts are not assigned DHCP leases. They
|
||||||
|
assign addresses themselves, which scales much nicer.
|
||||||
|
|
||||||
|
## Migrating away from netbooting
|
||||||
|
|
||||||
|
So why are we migrating away from netbooting, even after we migrated
|
||||||
|
to IPv6 only networking? There are multiple aspects:
|
||||||
|
|
||||||
|
On power failure, netbooted hosts lose their state. The operating
|
||||||
|
system that is loaded is the same for every server and needs some
|
||||||
|
configuration post-boot. We have solved this using
|
||||||
|
[cdist](https://www.cdi.st/), however the authentication-trigger
|
||||||
|
mechanism is non-trivial, if you want to keep your netboot images and
|
||||||
|
build steps public.
|
||||||
|
|
||||||
|
The second reason is state synchronisation: as we are having multiple
|
||||||
|
boot servers, we need to maintain the same state on multiple
|
||||||
|
machines. That is solvable via CI/CD pipelines, however the level of
|
||||||
|
automation on build servers is rather low, because the amount of OS
|
||||||
|
changes are low.
|
||||||
|
|
||||||
|
The third and main point is our ongoing migration towards
|
||||||
|
[kubernetes](https://kubernetes.io/). Originally our servers would
|
||||||
|
boot up, get configured for providing ceph storage or to be a
|
||||||
|
virtualisation host. The amount of binaries to keep in our in-memory
|
||||||
|
image was tiny, in the best case around 150MB. With the migration
|
||||||
|
towards kubernetes, every node is downloading the containers, which
|
||||||
|
can be comparable huge (gigabytes of data). The additional pivot_root
|
||||||
|
workarounds that are required for initramfs usage are just an
|
||||||
|
additional minor point that made us question our current setup.
|
||||||
|
|
||||||
|
## Automating disk based boot
|
||||||
|
|
||||||
|
We have servers from a variety of brands and each of them comes with a
|
||||||
|
variety of disk controllers: from simple pass-through SATA controllers
|
||||||
|
to full fledged hardware raid with onboard cache and battery for
|
||||||
|
protecting the cache - everything is in the mix.
|
||||||
|
|
||||||
|
So it is not easily possible to generate a stack of disks somewhere
|
||||||
|
and then add them, as the disk controller might add some (RAID0) meta
|
||||||
|
data to it.
|
||||||
|
|
||||||
|
To work around this problem, we insert the disk that is becoming the
|
||||||
|
boot disk in the future into the netbooted servers, install the
|
||||||
|
operating system from the running environment and at the next
|
||||||
|
maintenance window ensure that the server is actually booting from it.
|
||||||
|
|
||||||
|
If you are curious on how this works, you can checkout the script that
|
||||||
|
we use for
|
||||||
|
[Devuan/Debian](https://code.ungleich.ch/ungleich-public/ungleich-tools/-/blob/master/debian-devuan-install-on-disk.sh)
|
||||||
|
and
|
||||||
|
[Alpine Linux](https://code.ungleich.ch/ungleich-public/ungleich-tools/-/blob/master/alpine-install-on-disk.sh)
|
||||||
|
|
||||||
|
## The road continues
|
||||||
|
|
||||||
|
While a data center needs to be stable, it also needs to adapt to
|
||||||
|
newer technologies or different flows. The disk based boot is our
|
||||||
|
current solution for our path towards kubernetes migration, but who
|
||||||
|
knows - in the future things might look different again.
|
||||||
|
|
||||||
|
If you want to join the discussion, we have a
|
||||||
|
[Hacking and Learning
|
||||||
|
(#hacking-and-learning:ungleich.ch)](/u/projects/open-chat/) channel
|
||||||
|
on Matrix for an open exchange.
|
||||||
|
|
||||||
|
Oh and in case [you were wondering what we did
|
||||||
|
today](https://twitter.com/ungleich/status/1432627966316584968), we
|
||||||
|
switched to disk based booting - that case is full of SSDs, not 1'000
|
||||||
|
CHF banknotes.
|
After Width: | Height: | Size: 1 MiB |
|
@ -0,0 +1,57 @@
|
||||||
|
title: Introducting Kubernetes based IPv4 to IPv6 proxies
|
||||||
|
---
|
||||||
|
pub_date: 2021-11-22
|
||||||
|
---
|
||||||
|
author: ungleich
|
||||||
|
---
|
||||||
|
twitter_handle: ungleich
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
_discoverable: no
|
||||||
|
---
|
||||||
|
abstract:
|
||||||
|
How to proxy from IPv4 to IPv6 in an IPv6 only kubernetes cluster.
|
||||||
|
---
|
||||||
|
body:
|
||||||
|
|
||||||
|
## The crazy project: IPv6 based IPv4 proxies in Kubernetes
|
||||||
|
|
||||||
|
If you know ungleich, you know that we always push the limits of what
|
||||||
|
is possible. Today we want to push the barrier of "where can
|
||||||
|
IPv4-to-IPv6 proxies live" a bit further. Let's see how that is going
|
||||||
|
to look like!
|
||||||
|
|
||||||
|
## IPv4-to-IPv6 proxies in general
|
||||||
|
|
||||||
|
Before going into the details, let's see how and why we use
|
||||||
|
IPv4-to-IPv6 proxies in general:
|
||||||
|
|
||||||
|
![](/u/image/ipv6-to-ipv4-proxy.png)
|
||||||
|
|
||||||
|
The basic idea is that IPv6 only services are made reachable via
|
||||||
|
IPv4-to-IPv6 proxies towards the IPv4 world. So far we are offering
|
||||||
|
this based on standard virtual machines. You can checkout
|
||||||
|
[our previous tech
|
||||||
|
talk](/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/)
|
||||||
|
for details on how this works.
|
||||||
|
|
||||||
|
Let's try to dial things up a few notches, shall we?
|
||||||
|
|
||||||
|
## Moving the IPv4-to-IPv6 proxy into kubernetes
|
||||||
|
|
||||||
|
You are probably aware that at ungleich we are moving our workload
|
||||||
|
from [cdist](https://cdi.st) + virtual machine automated workloads
|
||||||
|
towards Kubernetes. At ungleich we are using
|
||||||
|
[haproxy](http://www.haproxy.org/) as a basis for our IPv4-to-IPv6
|
||||||
|
proxies. Moving this into kubernetes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Other solution?
|
||||||
|
|
||||||
|
As you can see, mixing the dynamic IP generation and coupling it with
|
||||||
|
static DNS entries for IPv4 resolution is not the easiest tasks. If
|
||||||
|
you have a smart idea on how to solve this without manually creating
|
||||||
|
entries for each and every service,
|
||||||
|
[give us a shout!](/u/contact)
|
|
@ -15,6 +15,13 @@ The first un-hack4glarus happens as a camp - Thursday 2021-08-19 to Sunday 2021-
|
||||||
---
|
---
|
||||||
body:
|
body:
|
||||||
|
|
||||||
|
## Glamp 2021 has been CANCELLED
|
||||||
|
|
||||||
|
Due to the rising number of Coronavirus infections, travel
|
||||||
|
restrictions and travel uncertainties,
|
||||||
|
we have decided to CANCEL the GLAMP2021.
|
||||||
|
|
||||||
|
|
||||||
## Tl;DR
|
## Tl;DR
|
||||||
|
|
||||||
Get your tent, connect it to power and 10Gbit/s Internet in the midst
|
Get your tent, connect it to power and 10Gbit/s Internet in the midst
|
||||||
|
|
|
@ -18,11 +18,16 @@ body:
|
||||||
## TL;DR
|
## TL;DR
|
||||||
|
|
||||||
You can use **IPv6address.has-a.name** as a domain name
|
You can use **IPv6address.has-a.name** as a domain name
|
||||||
for any of your containers or VMs. The required format is
|
for any of your computers, containers or VMs. The required format is
|
||||||
**1234-5678-9abc-def0-1234-5678-9abc-def0.has-a.name**. This is
|
**1234-5678-9abc-def0-1234-5678-9abc-def0.has-a.name**. This is
|
||||||
already a
|
already a
|
||||||
valid name and points to the IPv6 address
|
valid name and points to the IPv6 address
|
||||||
*1234:5678:9abc:def0:1234:5678:9abc:def0*.
|
*1234:5678:9abc:def0:1234:5678:9abc:def0*.
|
||||||
|
Alternatively you can also use the domain **has-aaaa.name**, which
|
||||||
|
implies IPv6 stronger.
|
||||||
|
|
||||||
|
Both domains support IPv6 abbreviation using dashes,
|
||||||
|
you can f.i. use **2a0a-e5c0--3.has-aaaa.name**.
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
|
|
|
@ -203,6 +203,25 @@ to fe80::1"
|
||||||
|
|
||||||
Thanks again for the pointer!
|
Thanks again for the pointer!
|
||||||
|
|
||||||
|
### The prettysocks SOCKS5 proxy (update 2021-11-24)
|
||||||
|
|
||||||
|
On 2021-11-23 we have been notified that there is a new workaround
|
||||||
|
available:
|
||||||
|
[prettysock](https://github.com/twisteroidambassador/prettysocks/tree/ipv6-literal)
|
||||||
|
is a Socks5 proxy written in python that allows the use of Microsoft's
|
||||||
|
**ipv6-literal.net** domain, but from any OS or browser, which is
|
||||||
|
pointed to the proxy. So to access **fe80::1ff:fe23:4567:890a%3**,
|
||||||
|
configure your browser to use the local prettysocks Socks5 proxy,
|
||||||
|
replace the link local address with
|
||||||
|
**fe80--1ff-fe23-4567-890as3.ipv6-literal.net** and there you go.
|
||||||
|
|
||||||
|
There are two interesting things to say about this solution:
|
||||||
|
|
||||||
|
* It is a very simple solution
|
||||||
|
* It is surprising that browser vendors haven't implement such a
|
||||||
|
simple solution themselves so far - does it need an RFC that defines
|
||||||
|
the domain to be used?
|
||||||
|
|
||||||
## Other resources
|
## Other resources
|
||||||
|
|
||||||
If you are aware of other resources regarding IPv6 link local support
|
If you are aware of other resources regarding IPv6 link local support
|
||||||
|
|
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
|
|
130
content/u/offers/alpine-315-dedicated-apu/contents.lr
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
_model: product
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
title: Dedicated Low Power Alpine
|
||||||
|
---
|
||||||
|
subtitle: Celebrating Alpine Linux 3.15 (2021-12-06..2021-12-24)
|
||||||
|
---
|
||||||
|
headline1: Alpine Linux 3.15
|
||||||
|
---
|
||||||
|
headline2: Low Power
|
||||||
|
---
|
||||||
|
headline3: APU Servers
|
||||||
|
---
|
||||||
|
header_background_color: #05450B
|
||||||
|
---
|
||||||
|
image: /u/image/cards/dedicated-alpine.jpg
|
||||||
|
---
|
||||||
|
header_text_color: text-light
|
||||||
|
---
|
||||||
|
nav_classes: navbar-dark
|
||||||
|
---
|
||||||
|
description1:
|
||||||
|
|
||||||
|
## Alpine Linux 3.15 celebration
|
||||||
|
|
||||||
|
Just recently [Alpine Linux
|
||||||
|
3.15](https://alpinelinux.org/posts/Alpine-3.15.0-released.html) has
|
||||||
|
ben released. Also just a few days ago the first public
|
||||||
|
[dedicated server offer from ungleich](../dedicated-december-2021) has
|
||||||
|
been released. Enough reason to add one on top of it:
|
||||||
|
|
||||||
|
**Dedicated, low power servers running with Alpine Linux 3.15**
|
||||||
|
|
||||||
|
|
||||||
|
## Low Power Servers
|
||||||
|
|
||||||
|
We are proudly using the [PC Engines
|
||||||
|
APU](https://pcengines.ch/apu2.htm) in a lot of places at Data Center
|
||||||
|
Light. They are small, robust and easy to handle. And furthermore:
|
||||||
|
they consume only about 10W of power.
|
||||||
|
|
||||||
|
While there are other systems that are more power efficient, these
|
||||||
|
boxes are very suitable to be running as a tiny cluster. Webserver? No
|
||||||
|
problem. Mail server? No problem.
|
||||||
|
|
||||||
|
So let's have a look at the specifications:
|
||||||
|
|
||||||
|
* 4 real cores
|
||||||
|
* 4 GB RAM
|
||||||
|
* 1x 120GB SSD (usable: ca. 100GB)
|
||||||
|
* Gigabit Ethernet
|
||||||
|
|
||||||
|
|
||||||
|
## The offer in detail
|
||||||
|
|
||||||
|
The offer is valid for all orders received between 2021-12-06 to
|
||||||
|
2021-12-24. The monthly price is 100 CHF instead 150 CHF.
|
||||||
|
The price stays the same until the end of the contract.
|
||||||
|
|
||||||
|
You get:
|
||||||
|
|
||||||
|
* A dedicated, routed /48 IPv6 network
|
||||||
|
* A dedicated layer 2 network
|
||||||
|
* (optional, add on) IPv4 addresses (mapped via NAT64)
|
||||||
|
* **No setup fee** (instead of regular setup fee of 50 CHF)
|
||||||
|
* A server powered by 100% hydro power
|
||||||
|
|
||||||
|
The fine print:
|
||||||
|
|
||||||
|
* Minimum contract duration: 3 months
|
||||||
|
|
||||||
|
On order, you get access to the server with Alpine Linux 3.15
|
||||||
|
installed. You will need to provide your public SSH key for accessing
|
||||||
|
the device.
|
||||||
|
|
||||||
|
The server includes 15TB traffic per month. Additional 30TB traffic
|
||||||
|
can be added for 75 CHF/month. The server is located in an *IPv6 only*
|
||||||
|
network. It can reach the IPv4 Internet via outgoing NAT64. If you
|
||||||
|
need **incoming** IPv4 connectivity, we offer dedicated public IPv4
|
||||||
|
addresses for 9 CHF/month. They are mapped via NAT64-SIIT
|
||||||
|
to an IPv6 address of your choice.
|
||||||
|
|
||||||
|
The default setup fee of 50 CHF for dedicated servers is removed for
|
||||||
|
this offers.
|
||||||
|
|
||||||
|
The offer is limited to 10 dedicated servers on a first come, first
|
||||||
|
serve basis.
|
||||||
|
|
||||||
|
## The costs in the offer and even more competitve offer
|
||||||
|
|
||||||
|
Some of you will be doing the calculation of what it costs for hosting
|
||||||
|
it yourself. And we want to be as transparent as possible so that you
|
||||||
|
understand how the price is calculated.
|
||||||
|
|
||||||
|
The costs for ungleich consist roughly of:
|
||||||
|
|
||||||
|
* The hardware itself (~150~200 CHF)
|
||||||
|
* The manual work (~150 CHF)
|
||||||
|
* The support work (~100 CHF)
|
||||||
|
* The electricity (~5-10 CHF/month)
|
||||||
|
* The network traffic (~20~90 CHF/month)
|
||||||
|
|
||||||
|
Some of these can be optimised with larger quantities, but some of
|
||||||
|
them are rather static. However you can see that the network traffic
|
||||||
|
(based on 10~50 Mbit/s average) is one of the bigger parts of the
|
||||||
|
monthly cost.
|
||||||
|
|
||||||
|
For that reason, we offer a second, even more affordable version: if
|
||||||
|
you commit on using less than 10 Mbit/s on average (still burstable up
|
||||||
|
to 1000 Mbit/s), we can offer the dedicated APU for 50 CHF/month.
|
||||||
|
|
||||||
|
## What if it hardware breaks?
|
||||||
|
|
||||||
|
As this is real hardware, hardware failures can occur and they will be
|
||||||
|
repaired without any extra cost. It is however your responsibility to
|
||||||
|
inform the Data Center Light team about issues. Response times
|
||||||
|
according to [your selected SLA level](/u/products/ungleich-sla/).
|
||||||
|
|
||||||
|
## How can I start / how can order?
|
||||||
|
|
||||||
|
You can order at the
|
||||||
|
[Data Center Light / Dedicated APU Alpine 3.15](https://datacenterlight.ch/product/dedicated-apu/) or
|
||||||
|
on [Data Center Light / Dedicated APU Alpine 3.15 10
|
||||||
|
Mbit/s](https://datacenterlight.ch/product/dedicated-apu-10mbit/).
|
||||||
|
|
||||||
|
|
||||||
|
After the order is confirmed you will get access to the server within 5 working days.
|
BIN
content/u/offers/black-friday-2020 copy.textClipping
Normal file
BIN
content/u/offers/black-friday-2021/blackfriday-giftcard.jpg
Normal file
After Width: | Height: | Size: 217 KiB |
BIN
content/u/offers/black-friday-2021/blackfriday-header-2021.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
content/u/offers/black-friday-2021/blackfriday-vpn.jpg
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
content/u/offers/black-friday-2021/blackfriday.jpg
Normal file
After Width: | Height: | Size: 713 KiB |
93
content/u/offers/black-friday-2021/contents.lr
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
_model: product
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
title: Black Friday 2021 (Closed)
|
||||||
|
---
|
||||||
|
subtitle: Special deals 2021.11.23-11.30
|
||||||
|
---
|
||||||
|
headline1: Black Friday
|
||||||
|
---
|
||||||
|
headline2: 2021.11.23 - 2021.11.30
|
||||||
|
---
|
||||||
|
image: /u/image/cards/blackfriday21.jpg
|
||||||
|
---
|
||||||
|
header_background_color: #211C1E
|
||||||
|
---
|
||||||
|
header_text_color: text-light
|
||||||
|
---
|
||||||
|
nav_classes: navbar-dark
|
||||||
|
---
|
||||||
|
description1:
|
||||||
|
|
||||||
|
|
||||||
|
## Black Friday
|
||||||
|
|
||||||
|
We prepared some exciting deals for the limited time of 2021.11.23 - 2021.11.30.
|
||||||
|
Get yourself a treat with sustainable technology!
|
||||||
|
|
||||||
|
* Deal 1: Get an IPv4 Subscription for 2 years for the price of 1 year
|
||||||
|
* Deal 2: Get an IPv6 Router(VIIRB, VIWIB, VIGIR) and get 2 years of VPN with it
|
||||||
|
* Deal 3: 50% Discount for the VPN extension for VIIRB, VIWIB and VIGIR users
|
||||||
|
|
||||||
|
---
|
||||||
|
content1_text:
|
||||||
|
|
||||||
|
## Deal 1. IPv4 Address for 2 years for the price of 1.
|
||||||
|
|
||||||
|
During Black Friday sales, we offer our IPv4 subscription for 2 years for the price of 1 year!
|
||||||
|
|
||||||
|
### About IPv4 Subscription
|
||||||
|
|
||||||
|
Our IPv4 Subscription is usable with any wireguard compatible device. Wireguard is a secure and easy to use VPN protocol: it is supported on Linux, BSD, MacOS, and Windows. You can even use wireguard on your mobile phone.
|
||||||
|
|
||||||
|
|
||||||
|
### Order IPv4 Address now and save 144 CHF!
|
||||||
|
|
||||||
|
Our IPv4 address is 144 CHF per year. Now you can pay just 144 CHF for 2 year's IPv4 subscription instead of 288 CHF, you save 144 CHF.
|
||||||
|
|
||||||
|
The deal is limited to 24 IPv4 addresses.
|
||||||
|
|
||||||
|
* Order IPv4 Subscription for 2 years for the price of 1 year
|
||||||
|
|
||||||
|
---
|
||||||
|
content1_image: ipv4-address.jpg
|
||||||
|
---
|
||||||
|
content2_text:
|
||||||
|
|
||||||
|
## Deal 2. VIWIB, VIGIR, VIIRB, with 2 years of free IPv6 VPN
|
||||||
|
|
||||||
|
Everyone who orders ungleich IPv6 routers (VIWIB, VIGIR, VIIRB) during the Black Friday Sales gets a router with 2 years IPv6 VPN included instead of 1 year. Buy a router now, and you get the special deal included automatically.
|
||||||
|
|
||||||
|
* [Buy VIWIB](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/)
|
||||||
|
* [Buy VIGIR](https://ungleich.ch/u/products/vigir/)
|
||||||
|
* [Buy VIIRB](https://ungleich.ch/u/products/viirb-ipv6-box/)
|
||||||
|
|
||||||
|
---
|
||||||
|
content2_image: ipv6router.jpg
|
||||||
|
---
|
||||||
|
content3_text:
|
||||||
|
|
||||||
|
## Deal 3. 50% Discount on IPv6 VPN extension for VIIRB, VIWIB, VIGIR users
|
||||||
|
|
||||||
|
Do you already have our star product [VIWIB,](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) [VIIRB,](https://ungleich.ch/u/products/viirb-ipv6-box/) or [VIGIR](https://ungleich.ch/u/products/vigir/)? Now we offer the next year's VPN for your router with 50% discount. Our standard VPN costs 120 CHF per year, but with this deal you can have your current VPN extended for another year for just half the price. Enjoy the IPv6 router and keep your IPv6 VPN uninterrupted!
|
||||||
|
Offer is valid for VIIRB, VIGIR or VIWIB users.
|
||||||
|
|
||||||
|
* Order IPv6 VPN extension for VIIRB, VIWIB, VIGIR with 50% discount
|
||||||
|
|
||||||
|
---
|
||||||
|
content3_image: vigir-extension.jpg
|
||||||
|
---
|
||||||
|
|
||||||
|
description6:
|
||||||
|
|
||||||
|
## More Info
|
||||||
|
|
||||||
|
* Our IPv6 VPN is running fully on renewable energy and Open Source. You can find more information on it on our [IPv6 VPN page.](https://ipv6vpn.ch)
|
||||||
|
* Our VIWIB is the mini WiFi Router with a versatile use. You can find more information on it on our [VIWIB product page.](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/)
|
||||||
|
* Our VIIRB is the world's smalledst IPv6 router box that lets you have IPv6 anywhere, anytime. You can find more information on it on our [VIIRB product page.](https://ungleich.ch/u/products/viirb-ipv6-box/)
|
||||||
|
* Our VIGIR is the powerful, professional IPv6 router box that lets you do your serious work with IPv6. You can find more information on it on our [VIGIR product page.](https://ungleich.ch/u/products/vigir/)
|
||||||
|
|
||||||
|
Any questions, you can drop us a mail to support@ungleich.ch and our team will get back to you as soon as possible! Happy IPv6 Black Friday everyone!
|
BIN
content/u/offers/black-friday-2021/ipv4-address.jpg
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
content/u/offers/black-friday-2021/ipv6router.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
content/u/offers/black-friday-2021/vigir-extension.jpg
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
content/u/offers/black-friday-2021/viirb-blackfriday.jpg
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
content/u/offers/black-friday-2021/vpn-extension.jpg
Normal file
After Width: | Height: | Size: 222 KiB |
107
content/u/offers/dedicated-december-2021/contents.lr
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
_model: product
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
_hidden: no
|
||||||
|
---
|
||||||
|
title: Dedicated December 2021
|
||||||
|
---
|
||||||
|
subtitle: Access to dedicated servers (2021-12-01...2021-12-31)
|
||||||
|
---
|
||||||
|
headline1: Dedicated Servers
|
||||||
|
---
|
||||||
|
headline2: Exclusive Access
|
||||||
|
---
|
||||||
|
image: /u/image/cards/dedicated-december.jpg
|
||||||
|
---
|
||||||
|
header_background_color: #B61818
|
||||||
|
---
|
||||||
|
header_text_color: text-light
|
||||||
|
---
|
||||||
|
nav_classes: navbar-dark
|
||||||
|
---
|
||||||
|
description1:
|
||||||
|
|
||||||
|
## Dedicated December Highlights
|
||||||
|
|
||||||
|
This December you have the chance to get 1 out of 10
|
||||||
|
dedicated servers hosted in Data Center Light:
|
||||||
|
|
||||||
|
* Real, dedicated hardware
|
||||||
|
* 24 logical cores
|
||||||
|
* 48 GB RAM
|
||||||
|
* 2x 2TB SSD
|
||||||
|
* Remove access via IPMIView
|
||||||
|
* Dedicated, routed /48 IPv6 network
|
||||||
|
* Dedicated layer 2 network
|
||||||
|
* (optional, add on) IPv4 addresses (mapped via NAT64)
|
||||||
|
* **No setup fee**
|
||||||
|
* Minimum contract duration: 3 months
|
||||||
|
* Powered by 100% hydro power
|
||||||
|
|
||||||
|
## The offer in detail
|
||||||
|
|
||||||
|
The offer is valid for all orders received between 2021-12-01 to
|
||||||
|
2021-12-31. The monthly price is 250 CHF. The price stays the same
|
||||||
|
until the end of the contract.
|
||||||
|
|
||||||
|
On order, you get access to an server without operating system
|
||||||
|
or booted into Alpine Linux via USB stick.
|
||||||
|
|
||||||
|
You have remote access (keyboard/mouse/video) via IPMIview (access
|
||||||
|
protected using Wireguard VPN), which allows you to install an
|
||||||
|
operating system.
|
||||||
|
|
||||||
|
It has power efficient Intel Xeon L5640 CPUs running at 2.27GHz.
|
||||||
|
|
||||||
|
You can configure the SSDs in as one operating system disk or in a
|
||||||
|
software raid.
|
||||||
|
|
||||||
|
The supplied power is 100% renewable hydro power.
|
||||||
|
|
||||||
|
The server includes 15TB traffic per month. Additional 30TB traffic
|
||||||
|
can be added for 75 CHF/month. The server is located in an *IPv6 only*
|
||||||
|
network. It can reach the IPv4 Internet via outgoing NAT64. If you
|
||||||
|
need **incoming** IPv4 connectivity, we offer dedicated public IPv4
|
||||||
|
addresses for 9 CHF/month. They are mapped via NAT64-SIIT
|
||||||
|
to an IPv6 address of your choice.
|
||||||
|
|
||||||
|
The default setup fee of 50 CHF for dedicated servers is removed for
|
||||||
|
this offers.
|
||||||
|
|
||||||
|
The offer is limited to 10 dedicated servers on a first come, first
|
||||||
|
serve basis.
|
||||||
|
|
||||||
|
## What can you do with it?
|
||||||
|
|
||||||
|
You can use this server to host your own services, virtual machines or
|
||||||
|
even Kubernetes clusters on it.
|
||||||
|
|
||||||
|
You can host your photos and data (f.i. via Nextcloud), run a
|
||||||
|
community chat (f.i. via Matrix) or host your company website
|
||||||
|
(f.i. via wordpress) on it.
|
||||||
|
|
||||||
|
Or you can deploy your own cluster of virtual machines - maybe even
|
||||||
|
IPv6 only Kubernetes on top of it?
|
||||||
|
|
||||||
|
## What if it hardware breaks?
|
||||||
|
|
||||||
|
As this is real hardware, hardware failures can occur and they will be
|
||||||
|
repaired without any extra cost. It is however your responsibility to
|
||||||
|
inform the Data Center Light team about issues. Response times
|
||||||
|
according to [your selected SLA level](/u/products/ungleich-sla/).
|
||||||
|
|
||||||
|
## How can I start / how can order?
|
||||||
|
|
||||||
|
You can order at the [Data Center Light / Dedicated Server
|
||||||
|
1](https://datacenterlight.ch/product/dedicated-server-1/) page.
|
||||||
|
|
||||||
|
After the order is confirmed you will get access to the server via
|
||||||
|
wireguard and IPMIView within 5 working days. We will need a public
|
||||||
|
wireguard key for you to grant you access to your server. You can
|
||||||
|
already install
|
||||||
|
[IPMIView](https://www.thomas-krenn.com/en/download/frame.only_content/hide_filter.1/hide_filter_serial.1/product.3133.html)
|
||||||
|
on your machine.
|
||||||
|
|
||||||
|
If you opted for Alpine Linux on a USB stick, you can send us a public
|
||||||
|
ssh key for direct access.
|
|
@ -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
|
@ -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
|
_hidden: no
|
||||||
---
|
---
|
||||||
|
@ -6,12 +6,30 @@ title: ungleich SLA levels
|
||||||
---
|
---
|
||||||
subtitle: ungleich service level agreements
|
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:
|
description1:
|
||||||
|
|
||||||
What is the right SLA (service level agreement) for you? At ungleich
|
Our Service Level Agreements (SLAs) define the reachability as well
|
||||||
we know that every organisation has individual needs and resources.
|
as the reaction times. As every customer situation is unique, we allow
|
||||||
Depending on your need, we offer different types of service level
|
customization of the service level per customer.
|
||||||
agreements.
|
|
||||||
|
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
|
## 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
|
us, the standard SLA will apply. This SLA covers standard operations
|
||||||
and is suitable for non-critical deployments. The standard SLA covers:
|
and is suitable for non-critical deployments. The standard SLA covers:
|
||||||
|
|
||||||
* Target uptime of all services: 99.9%
|
* Best effort reaction times
|
||||||
* Service level: best effort
|
* Support via support@ungleich.ch (answered 09:00-17:00 on work days)
|
||||||
* Included for all products
|
* Best effort telephone support
|
||||||
* Support via support@ungleich.ch (answered 9-17 on work days)
|
* Included in all products
|
||||||
* Individual Development and Support available at standard rate of 220 CHF/h
|
|
||||||
* No telephone support
|
|
||||||
|
|
||||||
|
### 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
|
offer1_title: Business SLA: 450 CHF/month
|
||||||
---
|
|
||||||
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_text:
|
offer1_text:
|
||||||
|
* Guaranteed response time within 1 business day
|
||||||
* Target uptime of all services: 99.9%
|
* Efficient support handling with support history
|
||||||
* Service level: guaranteed reaction within 1 business day
|
* Suitable for SME and smaller projects
|
||||||
* 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
|
|
||||||
|
|
||||||
---
|
---
|
||||||
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:
|
offer2_text:
|
||||||
|
* Guaranteed response time 4h during business hours
|
||||||
** Requires High availability setup for all services with separate pricing
|
* Guaranteed reachability via telephone during business hours
|
||||||
* Service level: reaction within 4 hours
|
* Efficient support handling with support history
|
||||||
* Telephone support (24x7 work days)
|
* Suitable when fast response during business day is important
|
||||||
* Services are provided in multiple data centers
|
|
||||||
* Included out of business hours hotline (180 CHF/h)
|
|
||||||
* 18'000 CHF/6 months
|
|
||||||
|
|
||||||
---
|
---
|
||||||
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:
|
offer3_text:
|
||||||
|
* Guaranteed response time 4h during **extended** business hours
|
||||||
* Uptime guarantees >= 99.99%
|
* Covering most time of the day (16h)
|
||||||
* Ticketing system reaction time < 3h
|
* Guaranteed reachability via telephone during **extended** business hours
|
||||||
* 24x7 telephone support
|
* Efficient support handling with support history
|
||||||
* Applications running in multiple data centers
|
* Suitable when fast response during even outside business hours is required
|
||||||
* 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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
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
|
@ -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/)
|
|
@ -140,6 +140,10 @@ Let us know if you want tracked or untracked shipping.
|
||||||
|
|
||||||
### Price
|
### Price
|
||||||
|
|
||||||
|
**Update 2021-11-01: Back in stock!**
|
||||||
|
|
||||||
|
Thank you for waiting, VIIRB is back in stock again!
|
||||||
|
|
||||||
**The price of the VIGIR is 250 CHF**, including the LTE modem,
|
**The price of the VIGIR is 250 CHF**, including the LTE modem,
|
||||||
6 antennas and the power supply.
|
6 antennas and the power supply.
|
||||||
|
|
||||||
|
|
|
@ -270,6 +270,10 @@ for **145 CHF** (203 CHF including the VIIRB).
|
||||||
|
|
||||||
### Price
|
### Price
|
||||||
|
|
||||||
|
**Update 2021-11-01: Back in stock!**
|
||||||
|
|
||||||
|
Thank you for waiting, VIIRB is back in stock again!
|
||||||
|
|
||||||
**The price of the VIIRB is 58 CHF**.
|
**The price of the VIIRB is 58 CHF**.
|
||||||
|
|
||||||
If you need a power supply, we can ship it with a
|
If you need a power supply, we can ship it with a
|
||||||
|
|
|
@ -94,6 +94,10 @@ the VIWIB and just get started with IPv6.
|
||||||
|
|
||||||
### Price
|
### Price
|
||||||
|
|
||||||
|
**Update 2021-11-01: Back in stock!**
|
||||||
|
|
||||||
|
Thank you for waiting, VIWIB is back in stock again!
|
||||||
|
|
||||||
**The price of the VIWIB is 68 CHF**.
|
**The price of the VIWIB is 68 CHF**.
|
||||||
|
|
||||||
If you need a power supply, we can ship it with a
|
If you need a power supply, we can ship it with a
|
||||||
|
@ -186,7 +190,7 @@ The autonomous security system set can be added to your VIWIB order for 145 CHF
|
||||||
## More of it
|
## More of it
|
||||||
|
|
||||||
If you need more ports, Gigabit support, more RAM and more storage,
|
If you need more ports, Gigabit support, more RAM and more storage,
|
||||||
you can checkout our [Pro IPv6 Box](../pro-ipv6-box).
|
you can checkout our [VIGIR](../vigir/).
|
||||||
|
|
||||||
If you prefer a smaller device and you do not need wifi, we recommend to
|
If you prefer a smaller device and you do not need wifi, we recommend to
|
||||||
checkout our [VIIRB](/u/products/viirb-ipv6-box/).
|
checkout our [VIIRB](/u/products/viirb-ipv6-box/).
|
||||||
|
|
|
@ -76,7 +76,7 @@ offer1_text:
|
||||||
* **One free IPv6 VPN** included for increased security
|
* **One free IPv6 VPN** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ offer2_text:
|
||||||
* **One free IPv6 VPN** included for increased security
|
* **One free IPv6 VPN** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ offer3_text:
|
||||||
* **One free IPv6 VPNs** included for increased security
|
* **One free IPv6 VPNs** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [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
|
* **Two free IPv6 VPNs** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [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:
|
offer5_text:
|
||||||
|
|
||||||
* **One free IPv6 VPNs** included for increased security
|
* **Two free IPv6 VPNs** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [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:
|
offer6_text:
|
||||||
|
|
||||||
* **Three free IPv6 VPNs** included for increased security
|
* **Five free IPv6 VPNs** included for increased security
|
||||||
* Datacenter location: Glarus, Switzerland
|
* Datacenter location: Glarus, Switzerland
|
||||||
* Enhanced security by limiting access to only your devices
|
* 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
|
* 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/)
|
* [1 time initial setup fee 35 CHF](https://ungleich.ch/product/0carboncloud-setup/)
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ offer1_text:
|
||||||
* SFTP access
|
* SFTP access
|
||||||
* IPv6 and legacy IP reachable
|
* IPv6 and legacy IP reachable
|
||||||
* Data storage replicated 3 times
|
* Data storage replicated 3 times
|
||||||
* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
* [35 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
||||||
* Suitable for bigger websites
|
* Suitable for bigger websites
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -89,7 +89,7 @@ offer2_text:
|
||||||
* SFTP access
|
* SFTP access
|
||||||
* IPv6 and legacy IP reachable
|
* IPv6 and legacy IP reachable
|
||||||
* Data storage replicated 3 times
|
* Data storage replicated 3 times
|
||||||
* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
* [35 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
||||||
* Suitable for most websites
|
* Suitable for most websites
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -103,7 +103,7 @@ offer3_text:
|
||||||
* SFTP access
|
* SFTP access
|
||||||
* IPv6 and legacy IP reachable
|
* IPv6 and legacy IP reachable
|
||||||
* Data storage replicated 3 times
|
* Data storage replicated 3 times
|
||||||
* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
* [35 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/)
|
||||||
* Suitable for websites publishing big data
|
* Suitable for websites publishing big data
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
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
requirements.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
lektor
|
|
@ -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
|
@ -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>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0"
|
<form class="form-inline my-2 my-lg-0"
|
||||||
action="https://search.ungleich.ch/yacysearch.html" method="get">
|
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">
|
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>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if this.description1 %}
|
{% if this.description1 %}
|
||||||
|
<section class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
@ -11,25 +12,34 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<section class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-5">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-sm-4 col-lg-4 mb-5 mb-lg-0">
|
||||||
<h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
|
<div class="featured-box">
|
||||||
<p class="font-weight-normal">{{ this.feature1_text }}</p>
|
<h3>{{ this.feature1_title }}</h3>
|
||||||
|
<p class="text-3">{{ this.feature1_text }}</p>
|
||||||
</div>
|
</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>
|
||||||
<div class="col-md-4">
|
<div class="col-sm-4 col-lg-4 mb-5 mb-lg-0">
|
||||||
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
|
<div class="featured-box">
|
||||||
<p class="font-weight-normal">{{ this.feature3_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
{% if this.description2 %}
|
{% if this.description2 %}
|
||||||
|
<section class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
@ -37,6 +47,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if this.content1_text %}
|
{% if this.content1_text %}
|
||||||
|
@ -64,14 +75,14 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
|
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer1_title }}</h5>
|
<h5 class="card-title">{{ this.offer1_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer1_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -82,7 +93,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer2_title }}</h5>
|
<h5 class="card-title">{{ this.offer2_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer2_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -93,15 +104,17 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer3_title }}</h5>
|
<h5 class="card-title">{{ this.offer3_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer3_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if this.description4 %}
|
{% if this.description4 %}
|
||||||
|
<section class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
|
@ -109,6 +122,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if this.content2_text %}
|
{% if this.content2_text %}
|
||||||
|
@ -159,7 +173,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer4_title }}</h5>
|
<h5 class="card-title">{{ this.offer4_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer4_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -170,7 +184,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer5_title }}</h5>
|
<h5 class="card-title">{{ this.offer5_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer5_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -181,7 +195,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ this.offer6_title }}</h5>
|
<h5 class="card-title">{{ this.offer6_title }}</h5>
|
||||||
<p class="card-text">{{ this.offer6_text }}</p>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
{% block subtitle %}{{ this.subtitle }}{% endblock %}
|
{% block subtitle %}{{ this.subtitle }}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<div class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{% for childpage in this.children %}
|
{% for childpage in this.children %}
|
||||||
|
|
||||||
|
@ -63,4 +63,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -3,4 +3,4 @@ name = ungleich: IPv6 - Linux - FOSS
|
||||||
url = https://ungleich.ch
|
url = https://ungleich.ch
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
lektor-atom = 0.3
|
lektor-atom = 0.4.0
|
||||||
|
|