diff --git a/.gitignore b/.gitignore index e9842fb..d92c453 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ venv/ .DS_Store .idea/ +.history diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7a6dbe7..5778c44 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ stages: - build - deploy -image: registry.gitlab.com/fnux/ungleich-images/staticcms-ci:latest +image: code.ungleich.ch:5050/ungleich-public/ungleich-staticcms:latest variables: BUILDDIR: "build/" diff --git a/Dockerfile b/Dockerfile index ad99858..9233d33 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,4 +4,5 @@ FROM debian:latest MAINTAINER Timothée Floure RUN apt-get update -RUN apt-get install -y make lektor imagemagick openssh-client rsync +RUN apt-get install -y make python3-pip imagemagick openssh-client rsync git +RUN pip3 install git+https://github.com/lektor/lektor/ diff --git a/assets/u/image/blue-bg.jpg b/assets/u/image/blue-bg.jpg new file mode 100644 index 0000000..6297db6 Binary files /dev/null and b/assets/u/image/blue-bg.jpg differ diff --git a/assets/u/image/cards/advent-1.jpg b/assets/u/image/cards/advent-1.jpg new file mode 100644 index 0000000..e51504e Binary files /dev/null and b/assets/u/image/cards/advent-1.jpg differ diff --git a/assets/u/image/cards/advent-10.jpg b/assets/u/image/cards/advent-10.jpg new file mode 100644 index 0000000..a088881 Binary files /dev/null and b/assets/u/image/cards/advent-10.jpg differ diff --git a/assets/u/image/cards/advent-11.jpg b/assets/u/image/cards/advent-11.jpg new file mode 100644 index 0000000..a592f71 Binary files /dev/null and b/assets/u/image/cards/advent-11.jpg differ diff --git a/assets/u/image/cards/advent-12.jpg b/assets/u/image/cards/advent-12.jpg new file mode 100644 index 0000000..6b80997 Binary files /dev/null and b/assets/u/image/cards/advent-12.jpg differ diff --git a/assets/u/image/cards/advent-13.jpg b/assets/u/image/cards/advent-13.jpg new file mode 100644 index 0000000..b74d211 Binary files /dev/null and b/assets/u/image/cards/advent-13.jpg differ diff --git a/assets/u/image/cards/advent-14.jpg b/assets/u/image/cards/advent-14.jpg new file mode 100644 index 0000000..4472dd1 Binary files /dev/null and b/assets/u/image/cards/advent-14.jpg differ diff --git a/assets/u/image/cards/advent-15.jpg b/assets/u/image/cards/advent-15.jpg new file mode 100644 index 0000000..af4b7b3 Binary files /dev/null and b/assets/u/image/cards/advent-15.jpg differ diff --git a/assets/u/image/cards/advent-16.jpg b/assets/u/image/cards/advent-16.jpg new file mode 100644 index 0000000..536aaa7 Binary files /dev/null and b/assets/u/image/cards/advent-16.jpg differ diff --git a/assets/u/image/cards/advent-17.jpg b/assets/u/image/cards/advent-17.jpg new file mode 100644 index 0000000..6477df6 Binary files /dev/null and b/assets/u/image/cards/advent-17.jpg differ diff --git a/assets/u/image/cards/advent-18.jpg b/assets/u/image/cards/advent-18.jpg new file mode 100644 index 0000000..1c8cf17 Binary files /dev/null and b/assets/u/image/cards/advent-18.jpg differ diff --git a/assets/u/image/cards/advent-19.jpg b/assets/u/image/cards/advent-19.jpg new file mode 100644 index 0000000..f6c1be2 Binary files /dev/null and b/assets/u/image/cards/advent-19.jpg differ diff --git a/assets/u/image/cards/advent-2.jpg b/assets/u/image/cards/advent-2.jpg new file mode 100644 index 0000000..bd4ede7 Binary files /dev/null and b/assets/u/image/cards/advent-2.jpg differ diff --git a/assets/u/image/cards/advent-20.jpg b/assets/u/image/cards/advent-20.jpg new file mode 100644 index 0000000..b5d16f0 Binary files /dev/null and b/assets/u/image/cards/advent-20.jpg differ diff --git a/assets/u/image/cards/advent-21.jpg b/assets/u/image/cards/advent-21.jpg new file mode 100644 index 0000000..49d5933 Binary files /dev/null and b/assets/u/image/cards/advent-21.jpg differ diff --git a/assets/u/image/cards/advent-22.jpg b/assets/u/image/cards/advent-22.jpg new file mode 100644 index 0000000..bbf6c58 Binary files /dev/null and b/assets/u/image/cards/advent-22.jpg differ diff --git a/assets/u/image/cards/advent-23.jpg b/assets/u/image/cards/advent-23.jpg new file mode 100644 index 0000000..0eeba6e Binary files /dev/null and b/assets/u/image/cards/advent-23.jpg differ diff --git a/assets/u/image/cards/advent-24.jpg b/assets/u/image/cards/advent-24.jpg new file mode 100644 index 0000000..3eb2557 Binary files /dev/null and b/assets/u/image/cards/advent-24.jpg differ diff --git a/assets/u/image/cards/advent-3.jpg b/assets/u/image/cards/advent-3.jpg new file mode 100644 index 0000000..ad36d8b Binary files /dev/null and b/assets/u/image/cards/advent-3.jpg differ diff --git a/assets/u/image/cards/advent-4.jpg b/assets/u/image/cards/advent-4.jpg new file mode 100644 index 0000000..5088f21 Binary files /dev/null and b/assets/u/image/cards/advent-4.jpg differ diff --git a/assets/u/image/cards/advent-5.jpg b/assets/u/image/cards/advent-5.jpg new file mode 100644 index 0000000..7fc5e2f Binary files /dev/null and b/assets/u/image/cards/advent-5.jpg differ diff --git a/assets/u/image/cards/advent-6.jpg b/assets/u/image/cards/advent-6.jpg new file mode 100644 index 0000000..dbf8058 Binary files /dev/null and b/assets/u/image/cards/advent-6.jpg differ diff --git a/assets/u/image/cards/advent-7.jpg b/assets/u/image/cards/advent-7.jpg new file mode 100644 index 0000000..88c612b Binary files /dev/null and b/assets/u/image/cards/advent-7.jpg differ diff --git a/assets/u/image/cards/advent-8.jpg b/assets/u/image/cards/advent-8.jpg new file mode 100644 index 0000000..44ee361 Binary files /dev/null and b/assets/u/image/cards/advent-8.jpg differ diff --git a/assets/u/image/cards/advent-9.jpg b/assets/u/image/cards/advent-9.jpg new file mode 100644 index 0000000..2553103 Binary files /dev/null and b/assets/u/image/cards/advent-9.jpg differ diff --git a/assets/u/image/cards/advent-sample.jpg b/assets/u/image/cards/advent-sample.jpg new file mode 100644 index 0000000..b30b8ee Binary files /dev/null and b/assets/u/image/cards/advent-sample.jpg differ diff --git a/assets/u/image/cards/advent.jpg b/assets/u/image/cards/advent.jpg new file mode 100644 index 0000000..a29c658 Binary files /dev/null and b/assets/u/image/cards/advent.jpg differ diff --git a/assets/u/image/cards/ass.jpg b/assets/u/image/cards/ass.jpg new file mode 100644 index 0000000..c6fa928 Binary files /dev/null and b/assets/u/image/cards/ass.jpg differ diff --git a/assets/u/image/cards/backup.jpg b/assets/u/image/cards/backup.jpg new file mode 100644 index 0000000..fa945a0 Binary files /dev/null and b/assets/u/image/cards/backup.jpg differ diff --git a/assets/u/image/cards/bgp-peering.jpg b/assets/u/image/cards/bgp-peering.jpg new file mode 100644 index 0000000..0f0c71b Binary files /dev/null and b/assets/u/image/cards/bgp-peering.jpg differ diff --git a/assets/u/image/cards/blackfriday20.jpg b/assets/u/image/cards/blackfriday20.jpg new file mode 100644 index 0000000..38d4585 Binary files /dev/null and b/assets/u/image/cards/blackfriday20.jpg differ diff --git a/assets/u/image/cards/comingsoon.jpg b/assets/u/image/cards/comingsoon.jpg new file mode 100644 index 0000000..8286e38 Binary files /dev/null and b/assets/u/image/cards/comingsoon.jpg differ diff --git a/assets/u/image/cards/django-hosting.jpg b/assets/u/image/cards/django-hosting.jpg new file mode 100644 index 0000000..fe4da8c Binary files /dev/null and b/assets/u/image/cards/django-hosting.jpg differ diff --git a/assets/u/image/cards/education.jpg b/assets/u/image/cards/education.jpg new file mode 100644 index 0000000..9c7f489 Binary files /dev/null and b/assets/u/image/cards/education.jpg differ diff --git a/assets/u/image/cards/giftcard.jpg b/assets/u/image/cards/giftcard.jpg new file mode 100644 index 0000000..39d9108 Binary files /dev/null and b/assets/u/image/cards/giftcard.jpg differ diff --git a/assets/u/image/cards/hackinghotel.jpg b/assets/u/image/cards/hackinghotel.jpg deleted file mode 100644 index 609009d..0000000 Binary files a/assets/u/image/cards/hackinghotel.jpg and /dev/null differ diff --git a/assets/u/image/cards/hackingvilla.jpg b/assets/u/image/cards/hackingvilla.jpg new file mode 100644 index 0000000..52b24f3 Binary files /dev/null and b/assets/u/image/cards/hackingvilla.jpg differ diff --git a/assets/u/image/cards/ipv4asaservice.jpg b/assets/u/image/cards/ipv4asaservice.jpg new file mode 100644 index 0000000..7add03c Binary files /dev/null and b/assets/u/image/cards/ipv4asaservice.jpg differ diff --git a/assets/u/image/cards/ipv6-cartracker.jpg b/assets/u/image/cards/ipv6-cartracker.jpg new file mode 100644 index 0000000..c781362 Binary files /dev/null and b/assets/u/image/cards/ipv6-cartracker.jpg differ diff --git a/assets/u/image/cards/ipv6-mobile-router.jpg b/assets/u/image/cards/ipv6-mobile-router.jpg new file mode 100644 index 0000000..c3a4f3c Binary files /dev/null and b/assets/u/image/cards/ipv6-mobile-router.jpg differ diff --git a/assets/u/image/cards/ipv6camera-new.jpg b/assets/u/image/cards/ipv6camera-new.jpg new file mode 100644 index 0000000..6e2fc21 Binary files /dev/null and b/assets/u/image/cards/ipv6camera-new.jpg differ diff --git a/assets/u/image/cards/ipv6camera.jpg b/assets/u/image/cards/ipv6camera.jpg new file mode 100644 index 0000000..f50ab0e Binary files /dev/null and b/assets/u/image/cards/ipv6camera.jpg differ diff --git a/assets/u/image/cards/ipv6consultancy.jpg b/assets/u/image/cards/ipv6consultancy.jpg new file mode 100644 index 0000000..2374646 Binary files /dev/null and b/assets/u/image/cards/ipv6consultancy.jpg differ diff --git a/assets/u/image/cards/ipv6education.jpg b/assets/u/image/cards/ipv6education.jpg new file mode 100644 index 0000000..a228302 Binary files /dev/null and b/assets/u/image/cards/ipv6education.jpg differ diff --git a/assets/u/image/cards/ipv6holidaykit.jpg b/assets/u/image/cards/ipv6holidaykit.jpg new file mode 100644 index 0000000..a38d267 Binary files /dev/null and b/assets/u/image/cards/ipv6holidaykit.jpg differ diff --git a/assets/u/image/cards/ipv6vpn-bestseller.jpg b/assets/u/image/cards/ipv6vpn-bestseller.jpg new file mode 100644 index 0000000..c0538d5 Binary files /dev/null and b/assets/u/image/cards/ipv6vpn-bestseller.jpg differ diff --git a/assets/u/image/cards/ipv6vpn.jpg b/assets/u/image/cards/ipv6vpn.jpg new file mode 100644 index 0000000..24bdef4 Binary files /dev/null and b/assets/u/image/cards/ipv6vpn.jpg differ diff --git a/assets/u/image/cards/jobs.jpg b/assets/u/image/cards/jobs.jpg new file mode 100644 index 0000000..e2deab7 Binary files /dev/null and b/assets/u/image/cards/jobs.jpg differ diff --git a/assets/u/image/cards/mailhosting.jpg b/assets/u/image/cards/mailhosting.jpg new file mode 100644 index 0000000..cf2d4f2 Binary files /dev/null and b/assets/u/image/cards/mailhosting.jpg differ diff --git a/assets/u/image/cards/matrix-hot.jpg b/assets/u/image/cards/matrix-hot.jpg new file mode 100644 index 0000000..b0a53c8 Binary files /dev/null and b/assets/u/image/cards/matrix-hot.jpg differ diff --git a/assets/u/image/cards/monitoring.jpg b/assets/u/image/cards/monitoring.jpg new file mode 100644 index 0000000..c56d8ad Binary files /dev/null and b/assets/u/image/cards/monitoring.jpg differ diff --git a/assets/u/image/cards/pib.jpg b/assets/u/image/cards/pib.jpg new file mode 100644 index 0000000..1ceac5e Binary files /dev/null and b/assets/u/image/cards/pib.jpg differ diff --git a/assets/u/image/cards/projectmanagement.jpg b/assets/u/image/cards/projectmanagement.jpg new file mode 100644 index 0000000..5a0e877 Binary files /dev/null and b/assets/u/image/cards/projectmanagement.jpg differ diff --git a/assets/u/image/cards/sixnet.jpg b/assets/u/image/cards/sixnet.jpg new file mode 100644 index 0000000..746e5bf Binary files /dev/null and b/assets/u/image/cards/sixnet.jpg differ diff --git a/assets/u/image/cards/stayhomesale.jpg b/assets/u/image/cards/stayhomesale.jpg new file mode 100644 index 0000000..9372db8 Binary files /dev/null and b/assets/u/image/cards/stayhomesale.jpg differ diff --git a/assets/u/image/cards/supportsystem.jpg b/assets/u/image/cards/supportsystem.jpg new file mode 100644 index 0000000..288c9bf Binary files /dev/null and b/assets/u/image/cards/supportsystem.jpg differ diff --git a/assets/u/image/cards/timesale-2020-03.jpg b/assets/u/image/cards/timesale-2020-03.jpg new file mode 100644 index 0000000..e5968b1 Binary files /dev/null and b/assets/u/image/cards/timesale-2020-03.jpg differ diff --git a/assets/u/image/cards/ubookmark.jpg b/assets/u/image/cards/ubookmark.jpg new file mode 100644 index 0000000..fae6bdf Binary files /dev/null and b/assets/u/image/cards/ubookmark.jpg differ diff --git a/assets/u/image/cards/ula-registry.jpg b/assets/u/image/cards/ula-registry.jpg new file mode 100644 index 0000000..6c06059 Binary files /dev/null and b/assets/u/image/cards/ula-registry.jpg differ diff --git a/assets/u/image/cards/videoconf.jpg b/assets/u/image/cards/videoconf.jpg new file mode 100644 index 0000000..48330f6 Binary files /dev/null and b/assets/u/image/cards/videoconf.jpg differ diff --git a/assets/u/image/cards/vigir.jpg b/assets/u/image/cards/vigir.jpg new file mode 100644 index 0000000..042ac97 Binary files /dev/null and b/assets/u/image/cards/vigir.jpg differ diff --git a/assets/u/image/cards/viirb-hot.jpg b/assets/u/image/cards/viirb-hot.jpg new file mode 100644 index 0000000..7fbc51e Binary files /dev/null and b/assets/u/image/cards/viirb-hot.jpg differ diff --git a/assets/u/image/cards/viirb.jpg b/assets/u/image/cards/viirb.jpg new file mode 100644 index 0000000..761f874 Binary files /dev/null and b/assets/u/image/cards/viirb.jpg differ diff --git a/assets/u/image/cards/viwib.jpg b/assets/u/image/cards/viwib.jpg new file mode 100644 index 0000000..53341f2 Binary files /dev/null and b/assets/u/image/cards/viwib.jpg differ diff --git a/assets/u/image/cards/vpn-2021.jpg b/assets/u/image/cards/vpn-2021.jpg new file mode 100644 index 0000000..354c82d Binary files /dev/null and b/assets/u/image/cards/vpn-2021.jpg differ diff --git a/assets/u/image/cards/vps-bestseller.jpg b/assets/u/image/cards/vps-bestseller.jpg new file mode 100644 index 0000000..b163aac Binary files /dev/null and b/assets/u/image/cards/vps-bestseller.jpg differ diff --git a/assets/u/image/cards/yearly-2020.jpg b/assets/u/image/cards/yearly-2020.jpg new file mode 100644 index 0000000..6d8b021 Binary files /dev/null and b/assets/u/image/cards/yearly-2020.jpg differ diff --git a/assets/u/image/chat-usecase.jpg b/assets/u/image/chat-usecase.jpg new file mode 100644 index 0000000..5e0d97b Binary files /dev/null and b/assets/u/image/chat-usecase.jpg differ diff --git a/assets/u/image/co2-offset.jpg b/assets/u/image/co2-offset.jpg new file mode 100644 index 0000000..ae5a9a9 Binary files /dev/null and b/assets/u/image/co2-offset.jpg differ diff --git a/assets/u/image/datacenter-location.jpg b/assets/u/image/datacenter-location.jpg new file mode 100644 index 0000000..2176722 Binary files /dev/null and b/assets/u/image/datacenter-location.jpg differ diff --git a/assets/u/image/datacenterlight-hydro-solar.jpg b/assets/u/image/datacenterlight-hydro-solar.jpg new file mode 100644 index 0000000..98a1612 Binary files /dev/null and b/assets/u/image/datacenterlight-hydro-solar.jpg differ diff --git a/assets/u/image/decarbonize-penguin.jpg b/assets/u/image/decarbonize-penguin.jpg new file mode 100644 index 0000000..2d9ef24 Binary files /dev/null and b/assets/u/image/decarbonize-penguin.jpg differ diff --git a/assets/u/image/decentralised-chat.jpg b/assets/u/image/decentralised-chat.jpg new file mode 100644 index 0000000..f0612b6 Binary files /dev/null and b/assets/u/image/decentralised-chat.jpg differ diff --git a/assets/u/image/diesbach_outside_small.jpg b/assets/u/image/diesbach_outside_small.jpg new file mode 100644 index 0000000..4bfef09 Binary files /dev/null and b/assets/u/image/diesbach_outside_small.jpg differ diff --git a/assets/u/image/diy-backup.jpg b/assets/u/image/diy-backup.jpg new file mode 100644 index 0000000..8b521fc Binary files /dev/null and b/assets/u/image/diy-backup.jpg differ diff --git a/assets/u/image/encrypted.jpg b/assets/u/image/encrypted.jpg new file mode 100644 index 0000000..f11be9e Binary files /dev/null and b/assets/u/image/encrypted.jpg differ diff --git a/assets/u/image/energysource.jpg b/assets/u/image/energysource.jpg new file mode 100644 index 0000000..db3fc58 Binary files /dev/null and b/assets/u/image/energysource.jpg differ diff --git a/assets/u/image/environment-chat.jpg b/assets/u/image/environment-chat.jpg new file mode 100644 index 0000000..62583c6 Binary files /dev/null and b/assets/u/image/environment-chat.jpg differ diff --git a/assets/u/image/github-penguin.jpg b/assets/u/image/github-penguin.jpg new file mode 100644 index 0000000..6c7f329 Binary files /dev/null and b/assets/u/image/github-penguin.jpg differ diff --git a/assets/u/image/google-ipv6-2020-08-07.png b/assets/u/image/google-ipv6-2020-08-07.png new file mode 100644 index 0000000..052f1ba Binary files /dev/null and b/assets/u/image/google-ipv6-2020-08-07.png differ diff --git a/assets/u/image/ipv4-ipv6-nat-asymmetric.png b/assets/u/image/ipv4-ipv6-nat-asymmetric.png new file mode 100644 index 0000000..3e58687 Binary files /dev/null and b/assets/u/image/ipv4-ipv6-nat-asymmetric.png differ diff --git a/assets/u/image/ipv4-nat.png b/assets/u/image/ipv4-nat.png new file mode 100644 index 0000000..d5e32f7 Binary files /dev/null and b/assets/u/image/ipv4-nat.png differ diff --git a/assets/u/image/ipv4-only-island-ipv6-reachable.png b/assets/u/image/ipv4-only-island-ipv6-reachable.png new file mode 100644 index 0000000..5c1aef1 Binary files /dev/null and b/assets/u/image/ipv4-only-island-ipv6-reachable.png differ diff --git a/assets/u/image/ipv4natandcgnat.png b/assets/u/image/ipv4natandcgnat.png new file mode 100644 index 0000000..645e876 Binary files /dev/null and b/assets/u/image/ipv4natandcgnat.png differ diff --git a/assets/u/image/ipv6-education.png b/assets/u/image/ipv6-education.png new file mode 100644 index 0000000..9bc966e Binary files /dev/null and b/assets/u/image/ipv6-education.png differ diff --git a/assets/u/image/ipv6-mobile-router.jpg b/assets/u/image/ipv6-mobile-router.jpg new file mode 100644 index 0000000..6d62e79 Binary files /dev/null and b/assets/u/image/ipv6-mobile-router.jpg differ diff --git a/assets/u/image/ipv6-vpn-ungleich-swiss.jpg b/assets/u/image/ipv6-vpn-ungleich-swiss.jpg new file mode 100644 index 0000000..e984bed Binary files /dev/null and b/assets/u/image/ipv6-vpn-ungleich-swiss.jpg differ diff --git a/assets/u/image/ipv6-with-the-viirb.png b/assets/u/image/ipv6-with-the-viirb.png new file mode 100644 index 0000000..e65d358 Binary files /dev/null and b/assets/u/image/ipv6-with-the-viirb.png differ diff --git a/assets/u/image/jitsi-ungleich-confcall.jpg b/assets/u/image/jitsi-ungleich-confcall.jpg new file mode 100644 index 0000000..52ce433 Binary files /dev/null and b/assets/u/image/jitsi-ungleich-confcall.jpg differ diff --git a/assets/u/image/jitsi-ungleich.jpg b/assets/u/image/jitsi-ungleich.jpg new file mode 100644 index 0000000..95cd073 Binary files /dev/null and b/assets/u/image/jitsi-ungleich.jpg differ diff --git a/assets/u/image/k8s-v6-v4-dns.png b/assets/u/image/k8s-v6-v4-dns.png new file mode 100644 index 0000000..eab1caf Binary files /dev/null and b/assets/u/image/k8s-v6-v4-dns.png differ diff --git a/assets/u/image/managed-backup.jpg b/assets/u/image/managed-backup.jpg new file mode 100644 index 0000000..ccfcc97 Binary files /dev/null and b/assets/u/image/managed-backup.jpg differ diff --git a/assets/u/image/nextcloud-docediting.jpg b/assets/u/image/nextcloud-docediting.jpg new file mode 100644 index 0000000..3d19ca8 Binary files /dev/null and b/assets/u/image/nextcloud-docediting.jpg differ diff --git a/assets/u/image/nico-ripe79.jpeg b/assets/u/image/nico-ripe79.jpeg new file mode 100644 index 0000000..1773576 Binary files /dev/null and b/assets/u/image/nico-ripe79.jpeg differ diff --git a/assets/u/image/open-infrastructure-overview.jpg b/assets/u/image/open-infrastructure-overview.jpg new file mode 100644 index 0000000..584d4a7 Binary files /dev/null and b/assets/u/image/open-infrastructure-overview.jpg differ diff --git a/assets/u/image/open-infrastructure.jpg b/assets/u/image/open-infrastructure.jpg new file mode 100644 index 0000000..4cb46f0 Binary files /dev/null and b/assets/u/image/open-infrastructure.jpg differ diff --git a/assets/u/image/openwrt.svg b/assets/u/image/openwrt.svg new file mode 100644 index 0000000..9665031 --- /dev/null +++ b/assets/u/image/openwrt.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/u/image/penguin-customer-support.jpg b/assets/u/image/penguin-customer-support.jpg new file mode 100644 index 0000000..a8e5f4c Binary files /dev/null and b/assets/u/image/penguin-customer-support.jpg differ diff --git a/assets/u/image/pro-ipv6-box-2.jpg b/assets/u/image/pro-ipv6-box-2.jpg new file mode 100644 index 0000000..81f618d Binary files /dev/null and b/assets/u/image/pro-ipv6-box-2.jpg differ diff --git a/assets/u/image/pro-ipv6-box.jpg b/assets/u/image/pro-ipv6-box.jpg new file mode 100644 index 0000000..35d945a Binary files /dev/null and b/assets/u/image/pro-ipv6-box.jpg differ diff --git a/assets/u/image/product.jpg b/assets/u/image/product.jpg new file mode 100644 index 0000000..06483a0 Binary files /dev/null and b/assets/u/image/product.jpg differ diff --git a/assets/u/image/security-class.jpg b/assets/u/image/security-class.jpg new file mode 100644 index 0000000..cadebde Binary files /dev/null and b/assets/u/image/security-class.jpg differ diff --git a/assets/u/image/southpole-projects.jpg b/assets/u/image/southpole-projects.jpg new file mode 100644 index 0000000..e0e9fdd Binary files /dev/null and b/assets/u/image/southpole-projects.jpg differ diff --git a/assets/u/image/southpole-ungleich-penguin-together.jpg b/assets/u/image/southpole-ungleich-penguin-together.jpg new file mode 100644 index 0000000..5502849 Binary files /dev/null and b/assets/u/image/southpole-ungleich-penguin-together.jpg differ diff --git a/assets/u/image/ungleich-chat-evolution.jpg b/assets/u/image/ungleich-chat-evolution.jpg new file mode 100644 index 0000000..ab1fe7a Binary files /dev/null and b/assets/u/image/ungleich-chat-evolution.jpg differ diff --git a/assets/u/image/ungleich-community.jpg b/assets/u/image/ungleich-community.jpg new file mode 100644 index 0000000..059c56a Binary files /dev/null and b/assets/u/image/ungleich-community.jpg differ diff --git a/assets/u/image/vigir.jpg b/assets/u/image/vigir.jpg new file mode 100644 index 0000000..9b08ba9 Binary files /dev/null and b/assets/u/image/vigir.jpg differ diff --git a/assets/u/image/viirb-20201126-black.jpg b/assets/u/image/viirb-20201126-black.jpg new file mode 100644 index 0000000..cad091e Binary files /dev/null and b/assets/u/image/viirb-20201126-black.jpg differ diff --git a/assets/u/image/viirb-egg-1.jpg b/assets/u/image/viirb-egg-1.jpg new file mode 100644 index 0000000..5e10737 Binary files /dev/null and b/assets/u/image/viirb-egg-1.jpg differ diff --git a/assets/u/image/viirb-egg-2.jpg b/assets/u/image/viirb-egg-2.jpg new file mode 100644 index 0000000..e0c473f Binary files /dev/null and b/assets/u/image/viirb-egg-2.jpg differ diff --git a/assets/u/image/viirb-ipv6-box.png b/assets/u/image/viirb-ipv6-box.png new file mode 100644 index 0000000..b1c6ecd Binary files /dev/null and b/assets/u/image/viirb-ipv6-box.png differ diff --git a/assets/u/image/viirb-penguin.jpg b/assets/u/image/viirb-penguin.jpg new file mode 100644 index 0000000..950b59b Binary files /dev/null and b/assets/u/image/viirb-penguin.jpg differ diff --git a/assets/u/image/viirb-ports.jpg b/assets/u/image/viirb-ports.jpg new file mode 100644 index 0000000..08e1559 Binary files /dev/null and b/assets/u/image/viirb-ports.jpg differ diff --git a/assets/u/image/viirb-strawberry.jpeg b/assets/u/image/viirb-strawberry.jpeg new file mode 100644 index 0000000..965efc1 Binary files /dev/null and b/assets/u/image/viirb-strawberry.jpeg differ diff --git a/assets/u/image/viirb-vertical.jpg b/assets/u/image/viirb-vertical.jpg new file mode 100644 index 0000000..6230597 Binary files /dev/null and b/assets/u/image/viirb-vertical.jpg differ diff --git a/assets/u/image/viwib-vertical.jpg b/assets/u/image/viwib-vertical.jpg new file mode 100644 index 0000000..13f679b Binary files /dev/null and b/assets/u/image/viwib-vertical.jpg differ diff --git a/assets/u/image/zerocarbon-chat-screen.jpg b/assets/u/image/zerocarbon-chat-screen.jpg new file mode 100644 index 0000000..db67eb7 Binary files /dev/null and b/assets/u/image/zerocarbon-chat-screen.jpg differ diff --git a/assets/u/static/css/theme.css b/assets/u/static/css/theme.css new file mode 100644 index 0000000..320dad1 --- /dev/null +++ b/assets/u/static/css/theme.css @@ -0,0 +1,3508 @@ +body, html { + height: 100%; + } + + body { + background: #fff; + color: #4c4d4d; + font-family: "Rubik", sans-serif; + font-size: 14px; + line-height: 22px; + } + + /*-------- Preloader --------*/ + #preloader { + position: fixed; + z-index: 999999999 !important; + background-color: #fff; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + } + #preloader [data-loader="dual-ring"] { + position: absolute; + top: 50%; + left: 50%; + width: 50px; + height: 50px; + margin-left: -25px; + margin-top: -25px; + display: inline-block; + content: " "; + display: block; + border-radius: 50%; + border: 5px solid #2196f3; + border-color: #2196f3 transparent #2196f3 transparent; + animation: dual-ring 1s linear infinite; + } + + @keyframes dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + ::selection { + background: #2196f3; + color: #fff; + text-shadow: none; + } + + form { + padding: 0; + margin: 0; + display: inline; + } + + img { + vertical-align: inherit; + } + + a, a:focus { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + + a:hover, a:active { + color: #9af6fb; + text-decoration: none; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + + a:focus, a:active, + .btn.active.focus, + .btn.active:focus, + .btn.focus, + .btn:active.focus, + .btn:active:focus, + .btn:focus, + button:focus, + button:active { + outline: none; + } + + p { + line-height: 1.9; + } + + blockquote { + border-left: 4px solid #2196f3; + padding: 1rem 1.4rem; + background-color: #f9f9f9; + } + + iframe { + border: 0 !important; + } + + h1, h2, h3, h4, h5, h6 { + color: #1e1d1c; + font-family: "Rubik", sans-serif; + } + + .lead { + font-size: 1.22rem; + } + + /* =================================== */ + /* Helpers Classes + /* =================================== */ + /* Box Shadow */ + .shadow-md { + -webkit-box-shadow: 0px 0px 50px -35px rgba(0, 0, 0, 0.4); + box-shadow: 0px 0px 50px -35px rgba(0, 0, 0, 0.4); + } + + /* Border Radius */ + .rounded-top-0 { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; + } + + .rounded-bottom-0 { + border-bottom-left-radius: 0px !important; + border-bottom-right-radius: 0px !important; + } + + .rounded-left-0 { + border-top-left-radius: 0px !important; + border-bottom-left-radius: 0px !important; + } + + .rounded-right-0 { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; + } + + /* Text Size */ + .text-0 { + font-size: 11px !important; + font-size: 0.6875rem !important; + } + + .text-1 { + font-size: 12px !important; + font-size: 0.75rem !important; + } + + .text-2 { + font-size: 14px !important; + font-size: 0.875rem !important; + } + + .text-3 { + font-size: 16px !important; + font-size: 1rem !important; + } + + .text-4 { + font-size: 18px !important; + font-size: 1.125rem !important; + } + + .text-5 { + font-size: 21px !important; + font-size: 1.3125rem !important; + } + + .text-6 { + font-size: 24px !important; + font-size: 1.50rem !important; + } + + .text-7 { + font-size: 28px !important; + font-size: 1.75rem !important; + } + + .text-8 { + font-size: 32px !important; + font-size: 2rem !important; + } + + .text-9 { + font-size: 36px !important; + font-size: 2.25rem !important; + } + + .text-10 { + font-size: 40px !important; + font-size: 2.50rem !important; + } + + .text-11 { + font-size: 2.75rem !important; + } + @media (max-width: 1200px) { + .text-11 { + font-size: calc(1.4rem + 1.8vw) !important; + } + } + + .text-12 { + font-size: 3rem !important; + } + @media (max-width: 1200px) { + .text-12 { + font-size: calc(1.425rem + 2.1vw) !important; + } + } + + .text-13 { + font-size: 3.25rem !important; + } + @media (max-width: 1200px) { + .text-13 { + font-size: calc(1.45rem + 2.4vw) !important; + } + } + + .text-14 { + font-size: 3.5rem !important; + } + @media (max-width: 1200px) { + .text-14 { + font-size: calc(1.475rem + 2.7vw) !important; + } + } + + .text-15 { + font-size: 3.75rem !important; + } + @media (max-width: 1200px) { + .text-15 { + font-size: calc(1.5rem + 3vw) !important; + } + } + + .text-16 { + font-size: 4rem !important; + } + @media (max-width: 1200px) { + .text-16 { + font-size: calc(1.525rem + 3.3vw) !important; + } + } + + .text-17 { + font-size: 4.5rem !important; + } + @media (max-width: 1200px) { + .text-17 { + font-size: calc(1.575rem + 3.9vw) !important; + } + } + + .text-18 { + font-size: 5rem !important; + } + @media (max-width: 1200px) { + .text-18 { + font-size: calc(1.625rem + 4.5vw) !important; + } + } + + .text-19 { + font-size: 5.25rem !important; + } + @media (max-width: 1200px) { + .text-19 { + font-size: calc(1.65rem + 4.8vw) !important; + } + } + + .text-20 { + font-size: 5.75rem !important; + } + @media (max-width: 1200px) { + .text-20 { + font-size: calc(1.7rem + 5.4vw) !important; + } + } + + .text-21 { + font-size: 6.5rem !important; + } + @media (max-width: 1200px) { + .text-21 { + font-size: calc(1.775rem + 6.3vw) !important; + } + } + + .text-22 { + font-size: 7rem !important; + } + @media (max-width: 1200px) { + .text-22 { + font-size: calc(1.825rem + 6.9vw) !important; + } + } + + .text-23 { + font-size: 7.75rem !important; + } + @media (max-width: 1200px) { + .text-23 { + font-size: calc(1.9rem + 7.8vw) !important; + } + } + + .text-24 { + font-size: 8.25rem !important; + } + @media (max-width: 1200px) { + .text-24 { + font-size: calc(1.95rem + 8.4vw) !important; + } + } + + .text-25 { + font-size: 9rem !important; + } + @media (max-width: 1200px) { + .text-25 { + font-size: calc(2.025rem + 9.3vw) !important; + } + } + + .text-11, .text-12, .text-13, .text-14, .text-15, .text-16, .text-17, .text-18, .text-19, .text-20, .text-21, .text-22, .text-23, .text-24, .text-25 { + line-height: 1.3; + } + + /* Line height */ + .line-height-07 { + line-height: 0.7 !important; + } + + .line-height-1 { + line-height: 1 !important; + } + + .line-height-2 { + line-height: 1.2 !important; + } + + .line-height-3 { + line-height: 1.4 !important; + } + + .line-height-4 { + line-height: 1.6 !important; + } + + .line-height-5 { + line-height: 1.8 !important; + } + + /* Font Weight */ + .font-weight-100 { + font-weight: 100 !important; + } + + .font-weight-200 { + font-weight: 200 !important; + } + + .font-weight-300 { + font-weight: 300 !important; + } + + .font-weight-400 { + font-weight: 400 !important; + } + + .font-weight-500 { + font-weight: 500 !important; + } + + .font-weight-600 { + font-weight: 600 !important; + } + + .font-weight-700 { + font-weight: 700 !important; + } + + .font-weight-800 { + font-weight: 800 !important; + } + + .font-weight-900 { + font-weight: 900 !important; + } + + /* Opacity */ + .opacity-0 { + opacity: 0; + } + + .opacity-1 { + opacity: 0.1; + } + + .opacity-2 { + opacity: 0.2; + } + + .opacity-3 { + opacity: 0.3; + } + + .opacity-4 { + opacity: 0.4; + } + + .opacity-5 { + opacity: 0.5; + } + + .opacity-6 { + opacity: 0.6; + } + + .opacity-7 { + opacity: 0.7; + } + + .opacity-8 { + opacity: 0.8; + } + + .opacity-9 { + opacity: 0.9; + } + + .opacity-10 { + opacity: 1; + } + + /* Background light */ + .bg-light-1 { + background-color: #f9f9fb !important; + } + + .bg-light-2 { + background-color: #f8f8fa !important; + } + + .bg-light-3 { + background-color: #f5f5f5 !important; + } + + .bg-light-4 { + background-color: #eff0f2 !important; + } + + .bg-light-5 { + background-color: #ececec !important; + } + + /* Background Dark */ + .bg-dark { + background-color: #111418 !important; + } + + .bg-dark-1 { + background-color: #191f24 !important; + } + + .bg-dark-2 { + background-color: #232a31 !important; + } + + .bg-dark-3 { + background-color: #2b343c !important; + } + + .bg-dark-4 { + background-color: #38434f !important; + } + + .bg-dark-5 { + background-color: #435161 !important; + } + .bg-warning-2 { + background-color: #ffe8a3; + } + + hr { + border-top: 1px solid rgba(16, 85, 96, 0.1); + } + + /* =================================== */ + /* Layouts + /* =================================== */ + #main-wrapper { + background: #f1f5f6; + } + #main-wrapper.boxed { + max-width: 1200px; + margin: 0 auto; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); + } + + .section { + position: relative; + padding: 104px 0; + padding: 3.5rem 0; + } + + @media (max-width: 767.98px) { + .section { + padding: 3.5rem 0; + } + } + @media (min-width: 1200px) { + .container { + max-width: 1170px !important; + } + } + /*== Fullscreen Height when use Transparnt Header ==*/ + .fullscreen { + min-height: 100vh !important; + } + + /*== Fullscreen Height when use default Header ==*/ + .fullscreen-with-header { + min-height: calc(100vh - 80px) !important; + } + + /* =================================== */ + /* Header + /* =================================== */ + #header { + background: #fff; + border-bottom: 1px solid #efefef; + } + #header .navbar { + padding: 0px; + } + #header.bg-transparent { + position: absolute; + z-index: 999; + top: 0; + left: 0; + width: 100%; + box-shadow: none; + border-bottom: 1px solid rgba(250, 250, 250, 0.3); + } + #header .logo { + position: relative; + float: left; + margin-right: 15px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-item-align: stretch; + align-self: stretch; + } + #header .header-row { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + max-height: 100%; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-item-align: stretch; + align-self: stretch; + } + #header .header-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + } + #header .header-column .header-row { + -webkit-box-pack: inherit; + -ms-flex-pack: inherit; + justify-content: inherit; + } + + .navbar-light .navbar-nav .active > .nav-link { + color: #0c2f55; + } + .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show { + color: #0c2f55; + } + .navbar-light .navbar-nav .show > .nav-link { + color: #0c2f55; + } + + .primary-menu, .login-signup { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + height: auto !important; + -webkit-box-ordinal-group: 0; + -ms-flex-item-align: stretch; + align-self: stretch; + } + .primary-menu.navbar, .login-signup.navbar { + position: inherit; + } + .primary-menu ul.navbar-nav > li, .login-signup ul.navbar-nav > li { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + } + .primary-menu ul.navbar-nav > li > a:not(.btn), .login-signup ul.navbar-nav > li > a:not(.btn) { + height: 80px; + padding-left: 0.85em; + padding-right: 0.85em; + color: #4c4d4d; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + position: relative; + text-transform: uppercase; + font-weight: 500; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + .primary-menu ul.navbar-nav > li:hover > a:not(.btn), .primary-menu ul.navbar-nav > li.active > a:not(.btn), .login-signup ul.navbar-nav > li:hover > a:not(.btn), .login-signup ul.navbar-nav > li.active > a:not(.btn) { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn), .login-signup ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) { + padding: 8px 0px; + background-color: transparent; + color: #777; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) > i:not(.arrow), .login-signup ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) > i:not(.arrow) { + font-size: .875rem; + width: 18px; + text-align: center; + margin-right: 7px; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn), .login-signup ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn) { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown:hover > a:after, .login-signup ul.navbar-nav > li.dropdown:hover > a:after { + clear: both; + content: ' '; + display: block; + width: 0; + height: 0; + border-style: solid; + border-color: transparent transparent #fff transparent; + position: absolute; + border-width: 0px 7px 6px 7px; + bottom: 0px; + left: 50%; + margin: 0 0 0 -5px; + z-index: 1022; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu, .login-signup ul.navbar-nav > li.dropdown .dropdown-menu { + -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176); + box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176); + border: 0px none; + padding: 10px 15px; + min-width: 230px; + margin: 0; + font-size: 14px; + font-size: 0.875rem; + z-index: 1021; + } + .primary-menu ul.navbar-nav > li.dropdown.language .dropdown-menu, .login-signup ul.navbar-nav > li.dropdown.language .dropdown-menu { + min-width: 140px; + } + .primary-menu ul.navbar-nav > li.dropdown.notifications .dropdown-menu, .login-signup ul.navbar-nav > li.dropdown.notifications .dropdown-menu { + width: 265px; + } + .primary-menu ul.navbar-nav > li.dropdown.notifications .dropdown-menu li > a:not(.btn), .login-signup ul.navbar-nav > li.dropdown.notifications .dropdown-menu li > a:not(.btn) { + white-space: normal; + padding-left: 24px; + position: relative; + } + .primary-menu ul.navbar-nav > li.dropdown.notifications .dropdown-menu li > a:not(.btn) > i:not(.arrow), .login-signup ul.navbar-nav > li.dropdown.notifications .dropdown-menu li > a:not(.btn) > i:not(.arrow) { + position: absolute; + top: 12px; + left: 0px; + } + .primary-menu .dropdown-menu-right, .login-signup .dropdown-menu-right { + left: auto !important; + right: 100% !important; + } + .primary-menu ul.navbar-nav > li.dropdown-mega, .login-signup ul.navbar-nav > li.dropdown-mega { + position: static; + } + .primary-menu ul.navbar-nav > li.dropdown-mega > .dropdown-menu, .login-signup ul.navbar-nav > li.dropdown-mega > .dropdown-menu { + width: 100%; + padding: 20px 20px; + margin-left: 0px !important; + } + .primary-menu ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div, .login-signup ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div { + padding: 5px 5px 5px 20px; + border-right: 1px solid #eee; + } + .primary-menu ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div:last-child, .login-signup ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div:last-child { + border-right: 0; + } + .primary-menu ul.navbar-nav > li.dropdown-mega .sub-title, .login-signup ul.navbar-nav > li.dropdown-mega .sub-title { + display: block; + font-size: 16px; + margin-top: 1rem; + padding-bottom: 5px; + } + .primary-menu ul.navbar-nav > li.dropdown-mega .dropdown-mega-submenu, .login-signup ul.navbar-nav > li.dropdown-mega .dropdown-mega-submenu { + list-style-type: none; + padding-left: 0px; + } + .primary-menu ul.navbar-nav > li a.btn, .login-signup ul.navbar-nav > li a.btn { + font-size: 14px; + padding: 0.65rem 2rem; + text-transform: uppercase; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu, .login-signup ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + left: 100%; + margin-top: -40px; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-toggle:after, .login-signup ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-toggle:after { + border-top: .4em solid transparent; + border-right: 0; + border-bottom: 0.4em solid transparent; + border-left: 0.4em solid; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-toggle .arrow, .login-signup ul.navbar-nav > li.dropdown .dropdown-toggle .arrow { + position: absolute; + min-width: 30px; + height: 100%; + right: 0px; + top: 0; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-toggle .arrow:after, .login-signup ul.navbar-nav > li.dropdown .dropdown-toggle .arrow:after { + content: " "; + position: absolute; + top: 50%; + left: 50%; + border-color: #000; + border-top: 1px solid; + border-right: 1px solid; + width: 6px; + height: 6px; + -webkit-transform: translate(-50%, -50%) rotate(45deg); + transform: translate(-50%, -50%) rotate(45deg); + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-toggle .arrow.arrow-right:after, .login-signup ul.navbar-nav > li.dropdown .dropdown-toggle .arrow.arrow-right:after { + -webkit-transform: translate(-50%, -50%) rotate(225deg); + transform: translate(-50%, -50%) rotate(225deg); + } + .primary-menu .dropdown-toggle:after, .login-signup .dropdown-toggle:after { + content: none; + } + + .dropdown-menu { + -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176); + box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176); + border: 0px none; + font-size: 14px; + font-size: 0.875rem; + } + + .header-text-light .navbar-toggler span { + background: #fff; + } + + .header-text-light .login-signup ul.navbar-nav > li > a:not(.btn) { + color: rgba(250, 250, 250, 0.85); + } + .header-text-light .login-signup ul.navbar-nav > li:hover > a:not(.btn), .header-text-light .login-signup ul.navbar-nav > li.active > a:not(.btn) { + color: #fff; + } + + @media (min-width: 992px) { + .header-text-light .primary-menu ul.navbar-nav > li > a:not(.btn) { + color: rgba(250, 250, 250, 0.85); + } + .header-text-light .primary-menu ul.navbar-nav > li:hover > a:not(.btn), .header-text-light .primary-menu ul.navbar-nav > li.active > a:not(.btn) { + color: #fff; + } + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu, .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu { + background-color: #252A2C; + color: #fff; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu, .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + background-color: #272c2e; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-divider, .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-divider { + border-color: rgba(250, 250, 250, 0.2); + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown:hover > a:after, .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown:hover > a:after { + border-color: transparent transparent #252A2C transparent; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn), .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) { + color: #a3a2a2; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn), .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn) { + color: #fff; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div, .login-signup.navbar-dropdown-dark ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div { + border-color: #3a3a3a; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu, .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu { + background-color: #2196f3; + color: #fff; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu, .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + background-color: #2196f3; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-divider, .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-divider { + border-color: rgba(250, 250, 250, 0.3); + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown:hover > a:after, .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown:hover > a:after { + border-color: transparent transparent #2196f3 transparent; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn), .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) { + color: rgba(250, 250, 250, 0.95); + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn), .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn) { + color: #fff; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div, .login-signup.navbar-dropdown-primary ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div { + border-color: rgba(250, 250, 250, 0.2); + } + + @media (max-width: 991.98px) { + #header .navbar-dropdown-dark.primary-menu:before, .primary-menu.navbar-dropdown-dark ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + background-color: #252A2C; + } + + #header .navbar-dropdown-primary.primary-menu:before { + background-color: #2196f3; + } + + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + background-color: #2196f3; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav li { + border-color: #444; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li > a { + color: #a3a2a2; + } + .primary-menu.navbar-dropdown-dark ul.navbar-nav > li:hover > a { + color: #fff; + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav li { + border-color: rgba(250, 250, 250, 0.2); + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li > a { + color: rgba(250, 250, 250, 0.8); + } + .primary-menu.navbar-dropdown-primary ul.navbar-nav > li:hover > a { + color: #fff; + } + } + @media (min-width: 992px) { + .navbar-toggler { + display: none; + } + + .primary-menu ul.navbar-nav > li + li { + margin-left: 2px; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a:not(.btn) { + margin-left: 5px; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li:hover > a .arrow { + right: -3px; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown > .dropdown-toggle { + padding-right: 1.6rem; + } + .primary-menu ul.navbar-nav > li.dropdown > .dropdown-toggle .arrow:after { + -webkit-transform: translate(-60%, -70%) rotate(135deg); + transform: translate(-60%, -50%) rotate(135deg); + width: 7px; + height: 7px; + top: calc(50% - 2.5px); + } + .primary-menu ul.navbar-nav > li.dropdown-mega .sub-title:first-child { + margin-top: 0px; + } + } + .login-signup ul.navbar-nav > li.dropdown:not(.notifications) .dropdown-menu li:hover > a:not(.btn) { + margin-left: 5px; + } + .login-signup ul.navbar-nav > li.dropdown:not(.notifications) .dropdown-menu li:hover > a .arrow { + right: -3px; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .login-signup ul.navbar-nav > li.dropdown:not(.notifications) > .dropdown-toggle { + padding-right: 1.6rem; + } + .login-signup ul.navbar-nav > li.dropdown:not(.notifications) > .dropdown-toggle .arrow:after { + -webkit-transform: translate(-60%, -70%) rotate(135deg); + transform: translate(-60%, -50%) rotate(135deg); + width: 7px; + height: 7px; + top: calc(50% - 2.5px); + } + .login-signup ul.navbar-nav > li.dropdown.notifications > .dropdown-toggle .arrow, .login-signup ul.navbar-nav > li.dropdown.profile > .dropdown-toggle .arrow { + display: none; + } + .login-signup ul.navbar-nav > li.dropdown.notifications.notifications .count, .login-signup ul.navbar-nav > li.dropdown.profile.notifications .count { + -webkit-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.15); + box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.15); + position: relative; + top: -8px; + left: 0; + font-size: 11px; + background-color: #dc3545; + border-radius: 50px; + height: 16px; + line-height: 16px; + color: #fff; + min-width: 16px; + text-align: center; + padding: 0 5px; + display: inline-block; + vertical-align: top; + margin-left: -6px; + margin-right: -5px; + } + .login-signup ul.navbar-nav > li.dropdown-mega .sub-title:first-child { + margin-top: 0px; + } + + @media (max-width: 991.98px) { + /* Mobile Menu Button */ + .navbar-toggler { + width: 25px; + height: 30px; + padding: 10px; + margin: 18px 10px; + position: relative; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + -webkit-transition: 0.5s ease-in-out; + transition: 0.5s ease-in-out; + cursor: pointer; + display: block; + } + .navbar-toggler span { + display: block; + position: absolute; + height: 2px; + width: 100%; + background: #3c3636; + border-radius: 2px; + opacity: 1; + left: 0; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + -webkit-transition: 0.25s ease-in-out; + transition: 0.25s ease-in-out; + } + .navbar-toggler span:nth-child(1) { + top: 6px; + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; + } + .navbar-toggler span:nth-child(2) { + top: 12px; + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; + } + .navbar-toggler span:nth-child(3) { + top: 18px; + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; + } + .navbar-toggler.open span:nth-child(1) { + top: 5px; + left: 4px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + .navbar-toggler.open span:nth-child(2) { + width: 0%; + opacity: 0; + } + .navbar-toggler.open span:nth-child(3) { + top: 21px; + left: 4px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + + #header .primary-menu { + position: absolute; + top: 99%; + right: 0; + left: 0; + background: transparent; + margin-top: 0px; + z-index: 1000; + } + #header .primary-menu:before { + content: ''; + display: block; + position: absolute; + top: 0; + left: 50%; + width: 100vw; + height: 100%; + background: #fff; + z-index: -1; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + -webkit-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1); + box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1); + } + #header .primary-menu > div { + overflow: hidden; + overflow-y: auto; + max-height: 65vh; + margin: 18px 0; + } + + .primary-menu ul.navbar-nav li { + display: block; + border-bottom: 1px solid #eee; + margin: 0; + padding: 0; + } + .primary-menu ul.navbar-nav li:last-child { + border: none; + } + .primary-menu ul.navbar-nav li.dropdown > .dropdown-toggle > .arrow.open:after { + -webkit-transform: translate(-50%, -50%) rotate(-45deg); + transform: translate(-50%, -50%) rotate(-45deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li > a:not(.btn) { + height: auto; + padding: 8px 0; + position: relative; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu li > a:not(.btn) { + padding: 8px 0; + position: relative; + } + .primary-menu ul.navbar-nav > li.dropdown:hover > a:after { + content: none; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-toggle .arrow:after { + -webkit-transform: translate(-50%, -50%) rotate(134deg); + transform: translate(-50%, -50%) rotate(134deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu { + margin: 0; + -webkit-box-shadow: none; + box-shadow: none; + border: none; + padding: 0px 0px 0px 15px; + } + .primary-menu ul.navbar-nav > li.dropdown .dropdown-menu .dropdown-menu { + margin: 0; + } + .primary-menu ul.navbar-nav > li.dropdown-mega .dropdown-mega-content > .row > div { + padding: 0px 15px; + } + } + @media (max-width: 767.98px) { + .login-signup ul.navbar-nav > li a.btn { + padding: 0.65rem 0.8rem; + } + + #header .logo { + margin-right: .25rem; + } + } + @media (max-width: 380px) { + #header .logo img { + max-width: 140px; + } + } + /* Secondary Nav */ + .secondary-nav.nav { + padding-left: 8px; + } + .secondary-nav.nav .nav-link { + text-align: center; + font-size: 16px; + padding: 1rem 20px; + white-space: nowrap; + color: rgba(250, 250, 250, 0.9); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .secondary-nav.nav .nav-link:hover { + color: #fafafa; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .secondary-nav.nav .nav-link span { + display: block; + font-size: 30px; + margin-bottom: 5px; + } + .secondary-nav.nav .nav-item .nav-link.active { + background: rgba(0, 0, 0, 0.1); + color: #fff; + } + .secondary-nav.nav.alternate .nav-link { + color: rgba(0, 0, 0, 0.6); + } + .secondary-nav.nav.alternate .nav-link:hover { + color: black; + } + .secondary-nav.nav.alternate .nav-item .nav-link.active { + background-color: transparent; + color: #1e1d1c; + border-bottom: 3px solid #2196f3; + } + + @media (max-width: 1199.98px) { + .secondary-nav.nav { + flex-wrap: nowrap; + overflow: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; + } + } + /* Page Header */ + .page-header { + margin: 0 0 30px 0; + padding: 30px 0; + } + .page-header h1 { + font-weight: normal; + font-size: 30px; + margin: 0; + padding: 5px 0; + } + .page-header .breadcrumb { + background: none; + margin: 0 0 8px 2px; + padding: 0; + position: relative; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + } + .page-header .breadcrumb > li { + display: inline-block; + font-size: 0.85em; + text-shadow: none; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .page-header .breadcrumb > li + li:before { + color: inherit; + opacity: 0.7; + font-family: 'Font Awesome 5 Free'; + content: "\f105"; + padding: 0 7px 0 5px; + font-weight: 900; + } + .page-header .breadcrumb > li a { + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .page-header .breadcrumb > li a:hover { + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .page-header.page-header-text-light { + color: #fff; + } + .page-header.page-header-text-light h1 { + color: #fff; + } + .page-header.page-header-text-light .breadcrumb > li { + color: rgba(250, 250, 250, 0.8); + } + .page-header.page-header-text-light .breadcrumb > li a { + color: rgba(250, 250, 250, 0.8); + } + .page-header.page-header-text-light .breadcrumb > li a:hover { + color: #fff; + } + .page-header.page-header-text-dark h1 { + color: #1e1d1c; + } + .page-header.page-header-text-dark .breadcrumb > li { + color: #707070; + } + .page-header.page-header-text-dark .breadcrumb > li a { + color: #707070; + } + .page-header.page-header-text-dark .breadcrumb > li a:hover { + color: #2196f3; + } + + /* =================================== */ + /* Profile + /* =================================== */ + /* Dashboard */ + .profile-thumb { + position: relative; + width: 100px; + height: 100px; + display: inline-block; + } + .profile-thumb .profile-thumb-edit { + font-size: 16px; + width: 37px; + height: 37px; + border-radius: 100%; + position: absolute; + overflow: hidden; + bottom: 0px; + right: 0; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-pack: center !important; + justify-content: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .profile-thumb .profile-thumb-edit .custom-file-input { + cursor: pointer; + } + + .profile-completeness .border { + border: 1px solid #ecf1f2 !important; + } + + .transaction-title { + background-color: #d8e4e6; + border-top: 1px solid #e9eff0; + border-bottom: 1px solid #e9eff0; + } + + .transaction-item { + border-bottom: 1px solid #e9eff0; + } + .transaction-item:hover { + background-color: #f4f7f8; + cursor: pointer; + } + + .transaction-details { + max-width: 620px !important; + } + .transaction-details .modal-content { + border: none !important; + } + .transaction-details .modal-body { + padding: 0px !important; + } + + /* Notifications Page */ + .notifications-list .notifications-item { + border-bottom: 1px solid #e9eff0; + border-left: 3px solid transparent; + } + .notifications-list .notifications-item .icon-bell { + color: #8e9a9d; + } + .notifications-list .notifications-item h4 { + font-weight: normal; + color: inherit; + } + .notifications-list .notifications-item:hover { + background-color: #f4f7f8; + cursor: pointer; + } + .notifications-list .notifications-item.unread { + border-left: 3px solid #2196f3; + } + .notifications-list .notifications-item.unread .icon-bell { + color: #2196f3; + } + .notifications-list .notifications-item.unread h4 { + font-weight: 500; + color: #1e1d1c; + } + + /* Cards & Bank Accounts*/ + .account-card { + position: relative; + background: -webkit-linear-gradient(135deg, #6c6c6b, #9e9e9c); + background: -moz-linear-gradient(135deg, #6c6c6b, #9e9e9c); + background: -o-linear-gradient(135deg, #6c6c6b, #9e9e9c); + background: -ms-linear-gradient(135deg, #6c6c6b, #9e9e9c); + background: linear-gradient(-45deg, #6c6c6b, #9e9e9c); + } + .account-card.account-card-primary { + background: -webkit-linear-gradient(135deg, #0f5e9d, #418fce); + background: -moz-linear-gradient(135deg, #0f5e9d, #418fce); + background: -o-linear-gradient(135deg, #0f5e9d, #418fce); + background: -ms-linear-gradient(135deg, #0f5e9d, #418fce); + background: linear-gradient(-45deg, #0f5e9d, #418fce); + } + .account-card .account-card-expire { + font-size: 8px; + line-height: 10px; + } + .account-card .account-card-overlay { + position: absolute; + background: rgba(0, 0, 0, 0.85); + top: 0px; + left: 0px; + height: 100%; + width: 100%; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + display: -ms-flexbox; + display: flex; + opacity: 0; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + } + .account-card:hover .account-card-overlay { + opacity: 1; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + } + + .account-card-new { + background: #f1f5f6; + border: 1px solid #ebebeb; + } + + .account-card .border-left, .account-card .border-right { + border-color: rgba(250, 250, 250, 0.1) !important; + } + + /* =================================== */ + /* Blog Page + /* =================================== */ + /* List Item */ + .list-item { + list-style: none; + padding: 0; + margin-bottom: 0; + } + .list-item > li { + display: block; + position: relative; + } + .list-item li a { + padding: 7px 0px 7px 15px; + color: #4c4d4d; + display: block; + } + .list-item li a:after { + content: " "; + position: absolute; + top: 50%; + left: 0px; + border-color: #000; + border-top: 2px solid; + border-right: 2px solid; + width: 7px; + height: 7px; + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(45deg); + } + .list-item a:hover { + color: #2196f3; + } + .list-item li a span { + float: right; + } + + /* Tags */ + .tags { + margin-bottom: 10px; + } + .tags a { + background: #f4f5f4; + color: #4c4d4d; + padding: 8px 12px; + border-radius: 3px; + display: inline-block; + margin-bottom: 8px; + margin-right: 3px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + .tags a:hover { + background: #2196f3; + color: #fff; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + + /* Side Post */ + .side-post .item-post + .item-post { + margin-top: 15px; + } + .side-post .item-post:after { + display: block; + clear: both; + content: ""; + } + .side-post .item-post .img-thumb { + float: left; + margin-right: 12px; + } + .side-post .item-post .caption { + overflow: hidden; + } + .side-post .item-post .caption a { + color: #1e1d1c; + display: block; + margin-top: -3px; + margin-bottom: 3px; + } + .side-post .item-post .caption a:hover { + color: #2196f3; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + .side-post .item-post .caption .date-post { + color: #6c757d; + font-size: 13px; + margin-bottom: 0px; + } + + /* Post */ + .blog-post .title-blog { + margin-bottom: 1rem; + } + .blog-post .title-blog a { + color: #1e1d1c; + } + .blog-post .title-blog a:hover { + color: #2196f3; + } + .blog-post .meta-blog { + padding-left: 0px; + } + .blog-post .meta-blog li { + list-style-type: none; + display: inline-block; + margin-right: 12px; + -ms-flex-align: center; + align-items: center; + } + .blog-post .meta-blog li i { + font-size: 16px; + color: #2196f3; + margin-right: 5px; + } + .blog-post .meta-blog li a { + color: #4c4d4d; + } + .blog-post .meta-blog li a:hover { + color: #2196f3; + } + + /* Post Comment */ + .post-comment ul { + padding: 0px; + list-style-type: none; + } + .post-comment ul li { + border-top: 1px solid rgba(16, 85, 96, 0.1); + padding-top: 1.3rem; + margin-top: 1rem; + } + .post-comment ul ul { + margin-left: 2.5rem; + } + .post-comment > ul > li:first-child { + border-top: none; + padding-top: 0; + margin-top: 0; + } + + @media (max-width: 767.98px) { + .post-comment ul ul { + margin-left: 1.5rem; + } + } + /* =================================== */ + /* Elements + /* =================================== */ + /* Featured Box */ + .featured-box { + box-sizing: border-box; + margin-left: auto; + margin-right: auto; + position: relative; + } + .featured-box h3, .featured-box h4 { + font-size: 1.25rem; + font-size: 20px; + margin-bottom: 10px; + font-weight: 500; + } + .featured-box:not(.style-5) .featured-box-icon { + display: inline-block; + font-size: 40px; + height: 45px; + line-height: 45px; + padding: 0; + width: 45px; + margin-top: 0; + margin-bottom: 20px; + color: #4c4d4d; + border-radius: 0; + } + .featured-box.style-1, .featured-box.style-2, .featured-box.style-3 { + padding-left: 50px; + padding-top: 8px; + } + .featured-box.style-1 .featured-box-icon, .featured-box.style-2 .featured-box-icon, .featured-box.style-3 .featured-box-icon { + position: absolute; + top: 0; + left: 0; + margin-bottom: 0; + font-size: 30px; + -ms-flex-pack: center !important; + justify-content: center !important; + text-align: center; + } + .featured-box.style-2 p { + margin-left: -50px; + } + .featured-box.style-3 { + padding-left: 90px; + padding-top: 0px; + } + .featured-box.style-3 .featured-box-icon { + width: 70px; + height: 70px; + -ms-flex-negative: 0; + flex-shrink: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + .featured-box.style-4 { + text-align: center; + } + .featured-box.style-4 .featured-box-icon { + margin: 0 auto 24px; + margin: 0 auto 1.5rem; + width: 120px; + height: 120px; + text-align: center; + -ms-flex-negative: 0; + flex-shrink: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.03); + box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.03); + } + .featured-box.style-4 .featured-box-icon i.fa, .featured-box.style-4 .featured-box-icon i.fas, .featured-box.style-4 .featured-box-icon i.far, .featured-box.style-4 .featured-box-icon i.fal, .featured-box.style-4 .featured-box-icon i.fab { + font-size: 58px; + font-size: 3.625rem; + margin: 0 auto; + } + .featured-box.style-5 { + text-align: center; + background: #fff; + border: 1px solid #f0f2f3; + -webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05); + box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + .featured-box.style-5:hover { + border: 1px solid #ebeded; + -webkit-box-shadow: 0px 5px 1.5rem rgba(0, 0, 0, 0.15); + box-shadow: 0px 5px 1.5rem rgba(0, 0, 0, 0.15); + } + .featured-box.style-5 h3 { + background: #f1f5f6; + font-size: 16px; + padding: 8px 0; + margin-bottom: 0px; + } + .featured-box.style-5 .featured-box-icon { + font-size: 50px; + margin: 44px 0px; + } + + /* Video Play button */ + .btn-video-play { + width: 74px; + height: 74px; + line-height: 74px; + text-align: center; + display: inline-block; + font-size: 18px; + } + + /* Testimonial */ + .testimonial { + background: #fff; + border: 1px solid #f1f5f6; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.05); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.05); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + + /* Team */ + .team { + text-align: center; + padding: 15px; + background: #fff; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .team:hover { + -webkit-box-shadow: 0px 0px 60px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 0px 60px 0px rgba(0, 0, 0, 0.15); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .team img { + margin-bottom: 20px; + } + .team h3 { + font-size: 18px; + } + .team p { + margin-bottom: 0.5rem; + } + + .portfolio { + text-align: center; + } + .portfolio .portfolio-img { + position: relative; + overflow: hidden; + display: -ms-flexbox; + display: flex; + } + .portfolio .portfolio-overlay { + text-align: center; + display: -ms-flexbox !important; + display: flex !important; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.7); + opacity: 0; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + .portfolio:hover .portfolio-overlay { + opacity: 1; + } + .portfolio .portfolio-overlay-details { + width: 100%; + margin-top: auto; + margin-bottom: auto; + } + .portfolio .portfolio-img img { + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + .portfolio:hover .portfolio-img img { + -webkit-transform: scale(1.04); + transform: scale(1.04); + } + .portfolio .portfolio-details { + padding: 1.5rem 0; + } + + /* Accordion & Toggle */ + .accordion .card { + border: none; + margin-bottom: 8px; + margin-bottom: 0.5rem; + background-color: transparent; + } + .accordion .card-header { + padding: 0; + border: none; + background: none; + } + .accordion .card-header a { + font-size: 16px; + font-weight: normal; + padding: 1rem 1.25rem 1rem 2.25rem; + display: block; + border-radius: 4px; + position: relative; + } + .accordion:not(.accordion-alternate) .card-header a { + background-color: #2b343c; + color: #fff; + } + .accordion:not(.accordion-alternate) .card-header a.collapsed { + background-color: #f1f2f4; + color: #4c4d4d; + } + .accordion .card-header a:before { + position: absolute; + content: " "; + left: 20px; + top: calc(50% + 2px); + width: 9px; + height: 9px; + border-color: #CCC; + border-top: 2px solid; + border-right: 2px solid; + -webkit-transform: translate(-50%, -50%) rotate(-45deg); + transform: translate(-50%, -50%) rotate(-45deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + } + .accordion .card-header a.collapsed:before { + top: calc(50% - 2px); + -webkit-transform: translate(-50%, -50%) rotate(135deg); + transform: translate(-50%, -50%) rotate(135deg); + } + .accordion .card-body { + line-height: 26px; + border-left: 4px solid #2b343c; + background-color: #f9f9f9; + } + + .accordion.arrow-right .card-header a { + padding-left: 1.25rem; + } + .accordion.arrow-right .card-header a:before { + right: 15px; + left: auto; + } + .accordion.accordion-alternate .card { + margin: 0; + } + .accordion.accordion-alternate .card-header a { + padding-left: 1.40rem; + border-top: 1px solid #e4e9ec; + border-radius: 0px; + } + .accordion.accordion-alternate .card:first-of-type .card-header a { + border-top: 0px; + } + .accordion.accordion-alternate .card-header a:before { + left: 6px; + } + .accordion.accordion-alternate .card-header a.collapsed { + color: #4c4d4d; + } + .accordion.accordion-alternate .card-body { + padding: 0rem 0 1rem 1.25rem; + } + .accordion.accordion-alternate.arrow-right .card-header a { + padding-left: 0; + } + .accordion.accordion-alternate.arrow-right .card-header a:before { + right: 0px; + left: auto; + } + .accordion.toggle .card-header a:before { + content: "-"; + border: none; + font-size: 20px; + height: auto; + top: calc(50% + 2px); + width: auto; + -webkit-transform: translate(-50%, -50%) rotate(180deg); + transform: translate(-50%, -50%) rotate(180deg); + } + .accordion.toggle .card-header a.collapsed:before { + content: "+"; + top: calc(50% - 1px); + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + .accordion.accordion-alternate.style-2 .card-header a { + padding-left: 0px; + } + .accordion.accordion-alternate.style-2 .card-header a:before { + right: 2px; + left: auto; + -webkit-transform: translate(-50%, -50%) rotate(135deg); + transform: translate(-50%, -50%) rotate(135deg); + top: 50%; + } + .accordion.accordion-alternate.style-2 .card-header a.collapsed:before { + -webkit-transform: translate(-50%, -50%) rotate(45deg); + transform: translate(-50%, -50%) rotate(45deg); + } + .accordion.accordion-alternate.style-2 .card-body { + padding-left: 0px; + } + .accordion.accordion-alternate.popularRoutes .card-header .nav { + margin-top: 3px; + } + .accordion.accordion-alternate.popularRoutes .card-header .nav a { + font-size: 14px; + } + .accordion.accordion-alternate.popularRoutes .card-header a { + padding: 0px 8px 0px 0px; + border: none; + font-size: inherit; + } + .accordion.accordion-alternate.popularRoutes .card-header a:before { + content: none; + } + .accordion.accordion-alternate.popularRoutes .card-header h5 { + cursor: pointer; + } + .accordion.accordion-alternate.popularRoutes .card-header h5:before { + position: absolute; + content: " "; + right: 0px; + top: 24px; + width: 10px; + height: 10px; + opacity: 0.6; + border-top: 2px solid; + border-right: 2px solid; + -webkit-transform: translate(-50%, -50%) rotate(-45deg); + transform: translate(-50%, -50%) rotate(-45deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + } + .accordion.accordion-alternate.popularRoutes .card-header h5.collapsed:before { + top: 24px; + -webkit-transform: translate(-50%, -50%) rotate(135deg); + transform: translate(-50%, -50%) rotate(135deg); + } + .accordion.accordion-alternate.popularRoutes .card-body { + padding: 0; + } + .accordion.accordion-alternate.popularRoutes .card { + border-bottom: 2px solid #e4e9ec; + padding: 15px 0px; + } + .accordion.accordion-alternate.popularRoutes .routes-list { + margin: 1rem 0px 0px 0px; + padding: 0px; + list-style: none; + } + .accordion.accordion-alternate.popularRoutes .routes-list a { + color: inherit; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .accordion.accordion-alternate.popularRoutes .routes-list a:hover { + color: #0071cc; + text-decoration: underline; + } + + /* Tabs */ + .nav-tabs { + border-bottom: 1px solid #d7dee3; + } + .nav-tabs .nav-item .nav-link { + border: 0; + background: transparent; + font-size: 1rem; + position: relative; + border-radius: 0; + padding: 1rem 20px; + color: #7b8084; + white-space: nowrap !important; + } + .nav-tabs .nav-item .nav-link.active { + color: #0c2f55; + } + .nav-tabs .nav-item .nav-link.active:after { + height: 3px; + width: 100%; + content: ' '; + background-color: #2196f3; + display: block; + position: absolute; + bottom: -3px; + left: 0; + -webkit-transform: translateY(-3px); + transform: translateY(-3px); + } + .nav-tabs.flex-column { + border-right: 1px solid #d7dee3; + border-bottom: 0px; + padding: 1.5rem 0; + } + .nav-tabs.flex-column .nav-item .nav-link { + border: 1px solid #d7dee3; + border-right: 0px; + background-color: #f6f7f8; + font-size: 14px; + padding: 0.75rem 1rem; + color: #535b61; + } + .nav-tabs.flex-column .nav-item:first-of-type .nav-link { + border-top-left-radius: 4px; + } + .nav-tabs.flex-column .nav-item:last-of-type .nav-link { + border-bottom-left-radius: 4px; + } + .nav-tabs.flex-column .nav-item .nav-link.active { + background-color: transparent; + color: #2196f3; + } + .nav-tabs.flex-column .nav-item .nav-link.active:after { + height: 100%; + width: 2px; + background: #fff; + right: -1px; + left: auto; + } + .nav-tabs.style-2 { + background: rgba(0, 0, 0, 0.4); + border-radius: 4px 4px 0px 0px; + border: 0px; + } + .nav-tabs.style-2 .nav-item { + margin-bottom: 0px; + } + .nav-tabs.style-2 .nav-item .nav-link { + color: #fff; + font-size: 13px; + padding: 0.7rem 1rem; + text-transform: uppercase; + } + .nav-tabs.style-2 .nav-item .nav-link:hover { + background: rgba(250, 250, 250, 0.2); + } + .nav-tabs.style-2 .nav-item .nav-link.active, .nav-tabs.style-2 .nav-item .nav-link:hover.active { + background: #2196f3; + } + .nav-tabs.style-2 .nav-item .nav-link.active:after { + content: none; + } + .nav-tabs.style-3 { + border: none; + margin-bottom: 8px; + } + .nav-tabs.style-3.border-bottom { + border-bottom: 1px solid rgba(250, 250, 250, 0.3) !important; + } + .nav-tabs.style-4.border-bottom { + border-bottom: 1px solid rgba(250, 250, 250, 0.3) !important; + } + .nav-tabs.style-3 .nav-item .nav-link { + color: #8298af; + margin: 0 10px; + padding: 0.6rem 0.9375rem; + text-align: center; + font-size: 13px; + font-size: 0.8125rem; + } + .nav-tabs.style-3 .nav-item:first-child .nav-link { + margin-left: 0px; + } + .nav-tabs.style-3 .nav-item .nav-link.active { + color: #fff; + } + .nav-tabs.style-2 .nav-item .nav-link:hover.active { + color: #fff; + } + .nav-tabs.style-3 .nav-item .nav-link:hover { + color: #a6bcd3; + } + .nav-tabs.style-3 .nav-item .nav-link.active:after { + height: 3px; + } + .nav-tabs.style-3 .nav-item .nav-link span { + display: block; + font-size: 30px; + margin-bottom: 5px; + } + .nav-tabs.style-4 { + border: none; + } + .nav-tabs.style-4 .nav-item { + margin-right: 20px; + } + .nav-tabs.style-4 .nav-item .nav-link { + color: #fff; + opacity: 0.65; + filter: alpha(opacity=65); + text-align: center; + font-size: 20px; + padding-left: 0px; + padding-right: 0px; + padding-bottom: .7rem; + font-weight: 500; + } + .nav-tabs.style-4 .nav-item .nav-link.active, .nav-tabs.style-4 .nav-item .nav-link:hover.active { + color: #fff; + opacity: 1; + filter: alpha(opacity=100); + } + .nav-tabs.style-4 .nav-item .nav-link.active::after { + content: none; + } + .nav-tabs.style-5 { + border-bottom: 0px !important; + } + .nav-tabs.style-5 .nav-item .nav-link { + background: #f1f5f6; + font-size: 18px; + padding: 2rem 1rem; + color: #8d999c; + } + .nav-tabs.style-5 .nav-item .nav-link.active { + background: #fff; + color: inherit; + font-weight: 500; + } + .nav-tabs.style-5 .nav-item .nav-link.active:after { + content: none; + } + + .nav-tabs:not(.flex-column) { + flex-wrap: nowrap; + overflow: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; + } + .nav-tabs:not(.flex-column) .nav-item { + margin-bottom: 0px; + } + + @media (max-width: 575.98px) { + .nav-tabs .nav-item .nav-link { + padding-left: 0px; + padding-right: 0px; + margin-right: 10px; + font-size: 0.875rem; + } + } + @media (min-width: 992px) { + .search-input-2 .form-control { + border-radius: 0px; + } + .search-input-2 .custom-select:not(.custom-select-sm) { + border-radius: 0px; + height: calc(3.05rem); + } + .search-input-2 .btn { + border-radius: 0px; + } + .search-input-2 .form-group:first-child .form-control, .search-input-2 .form-group:first-child .custom-select { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .search-input-2 .form-group:last-child .btn { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } + .search-input-2 .form-control:focus, .search-input-2 .custom-select:focus { + box-shadow: none; + -webkit-box-shadow: none; + } + .search-input-2 .form-group .form-control, .search-input-2 .custom-select { + border-left: none; + border-top: none; + border-bottom: none; + } + + /* CSS hack for Chrome */ + } + @media screen and (min-width: 992px) and (-webkit-min-device-pixel-ratio: 0) { + .search-input-2 .custom-select:not(.custom-select-sm) { + height: calc(3.00rem); + } + .search-input-2 .btn { + line-height: inherit; + } + } + @media (min-width: 992px) { + /* CSS hack for Firfox */ + @-moz-document url-prefix() { + .search-input-2 .custom-select:not(.custom-select-sm) { + height: calc(3.05rem); + } + .search-input-2 .btn { + line-height: 1.4; + } + } + } + .search-input-line .form-control { + background-color: transparent; + border: none; + border-bottom: 2px solid rgba(250, 250, 250, 0.5); + border-radius: 0px; + padding-left: 0px !important; + color: #ccc; + } + .search-input-line .form-control::-webkit-input-placeholder { + color: #ccc; + } + .search-input-line .form-control:-moz-placeholder { + /* FF 4-18 */ + color: #ccc; + } + .search-input-line .form-control::-moz-placeholder { + /* FF 19+ */ + color: #ccc; + } + .search-input-line .form-control:-ms-input-placeholder, .search-input-line .form-control::-ms-input-placeholder { + /* IE 10+ */ + color: #ccc; + } + .search-input-line .custom-select { + background-color: transparent; + border: none; + border-bottom: 2px solid rgba(250, 250, 250, 0.5); + border-radius: 0px; + padding-left: 0px; + color: #ccc; + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='rgba(250,250,250,0.6)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + background-size: 13px 15px; + } + .search-input-line .form-control:focus, .search-input-line .custom-select:focus { + box-shadow: none; + -webkit-box-shadow: none; + } + .search-input-line .form-control:not(output):-moz-ui-invalid:not(:focus), .search-input-line .form-control:not(output):-moz-ui-invalid:-moz-focusring:not(:focus) { + border-bottom: 2px solid #b00708; + box-shadow: none; + -webkit-box-shadow: none; + } + .search-input-line .icon-inside { + color: #999; + } + .search-input-line select option { + color: #333; + } + .search-input-line .travellers-dropdown input { + color: #666; + } + + /* Easy Responsive Tab Accordion */ + .resp-htabs ul.resp-tabs-list { + margin: 0px; + padding: 0px; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + list-style: none; + border-bottom: 1px solid #d7dee3; + } + + .resp-tabs-list li { + padding: 1rem 1.5rem !important; + margin: 0; + list-style: none; + cursor: pointer; + font-size: 16px; + } + + h2.resp-accordion { + cursor: pointer; + padding: 5px; + display: none; + } + + .resp-tab-content { + display: none; + padding: 15px; + } + + .resp-tab-active { + margin-bottom: -1px !important; + border-bottom: 3px solid #2196f3; + } + + .resp-content-active, .resp-accordion-active { + display: block; + } + + h2.resp-accordion { + font-size: 16px; + color: #777; + border: 1px solid #e4e9ec; + border-top: 0px solid #e4e9ec; + margin: 0px; + padding: 1rem 1.25rem; + } + h2.resp-tab-active { + border-bottom: 0px solid #e4e9ec !important; + margin-bottom: 0px !important; + padding: 1rem 1.25rem !important; + } + h2.resp-tab-title:last-child { + border-bottom: 12px solid #e4e9ec !important; + background: blue; + } + + /* Easy Responsive Vertical tabs */ + .resp-vtabs ul.resp-tabs-list { + margin: 0; + padding: 0; + } + .resp-vtabs .resp-tabs-list li { + display: block; + padding: 15px 15px !important; + margin: 0; + cursor: pointer; + font-size: 16px; + color: #999; + border: none; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .resp-vtabs .resp-tabs-list li:hover { + color: #555; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .resp-vtabs .resp-tabs-list li span { + font-size: 20px; + text-align: center; + width: 30px; + display: inline-block; + float: left; + margin-right: 15px; + } + + h2.resp-accordion span { + font-size: 20px; + text-align: center; + width: 30px; + display: inline-block; + float: left; + margin-right: 15px; + } + + .resp-vtabs .resp-tabs-container { + padding: 0px; + } + .resp-vtabs .resp-tab-content { + border: none; + } + .resp-vtabs li.resp-tab-active, .resp-vtabs li.resp-tab-active:hover { + color: #2196f3; + -webkit-box-shadow: -5px 0px 24px -18px rgba(0, 0, 0, 0.4); + box-shadow: -5px 0px 24px -18px rgba(0, 0, 0, 0.4); + border-radius: 4px 0px 0px 4px; + background-color: #fff; + position: relative; + z-index: 1; + margin-right: -1px !important; + margin-bottom: 0px !important; + } + + .resp-arrow { + width: 0; + height: 0; + float: right; + margin-top: 6px; + border-color: #000; + border-top: 1px solid; + border-right: 1px solid; + width: 9px; + height: 9px; + -webkit-transform: translate(-50%, -50%) rotate(135deg); + transform: translate(-50%, -50%) rotate(135deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + + h2.resp-tab-active { + background: #f1f2f4 !important; + color: #535b61; + } + h2.resp-tab-active i.resp-arrow { + margin-top: 10px; + transform: translate(-50%, -50%) rotate(-45deg); + -webkit-transform: translate(-50%, -50%) rotate(-45deg); + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + + /* Accordion Styles */ + .resp-easy-accordion h2.resp-accordion { + display: block; + } + .resp-easy-accordion .resp-tab-content { + border: 1px solid #e4e9ec; + } + .resp-easy-accordion .resp-tab-content:last-child { + border-bottom: 1px solid #e4e9ec !important; + } + + .resp-jfit { + width: 100%; + margin: 0px; + } + + .resp-tab-content-active { + display: block; + } + + h2.resp-accordion:first-child { + border-top: 1px solid #e4e9ec !important; + } + + @media (max-width: 767.98px) { + ul.resp-tabs-list { + display: none !important; + } + + h2.resp-accordion { + display: block; + } + + .resp-vtabs .resp-tab-content, .resp-htabs .resp-tab-content { + border: 1px solid #e4e9ec; + } + + .resp-vtabs .resp-tabs-container { + border: none; + float: none; + width: 100%; + min-height: initial; + clear: none; + } + + .resp-accordion-closed { + display: none !important; + } + + .resp-vtabs .resp-tab-content:last-child { + border-bottom: 1px solid #e4e9ec !important; + } + } + /* Custom Background */ + .hero-wrap { + position: relative; + } + .hero-wrap .hero-mask, .hero-wrap .hero-bg, .hero-wrap .hero-bg-slideshow { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + } + .hero-wrap .hero-mask { + z-index: 1; + } + .hero-wrap .hero-content { + position: relative; + z-index: 2; + } + .hero-wrap .hero-bg-slideshow { + z-index: 0; + } + .hero-wrap .hero-bg { + z-index: 0; + background-attachment: fixed; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + -webkit-background-size: cover; + -moz-background-size: cover; + transition: background-image 300ms ease-in 200ms; + } + .hero-wrap .hero-bg.hero-bg-scroll { + background-attachment: scroll; + } + .hero-wrap .hero-bg-slideshow .hero-bg { + background-attachment: inherit; + } + .hero-wrap .hero-bg-slideshow.owl-carousel .owl-stage-outer, .hero-wrap .hero-bg-slideshow.owl-carousel .owl-stage, .hero-wrap .hero-bg-slideshow.owl-carousel .owl-item { + height: 100%; + } + + /* Owl Carousel */ + .owl-theme.single-slideshow .owl-dots { + position: absolute; + bottom: 0; + width: 100%; + } + .owl-theme.single-slideshow .owl-dots .owl-dot.active span, .owl-theme.single-slideshow .owl-dots .owl-dot:hover span { + background: rgba(250, 250, 250, 0.5); + -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.05); + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.05); + } + .owl-theme.single-slideshow .owl-dots .owl-dot span { + border-color: rgba(250, 250, 250, 0.5); + -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.05); + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.05); + } + + .owl-carousel.single-slideshow .owl-nav button.owl-prev, .owl-carousel.single-slideshow .owl-nav button.owl-next { + font-size: 17px; + width: 45px; + height: 45px; + top: calc(50% - 22px); + } + .owl-carousel.single-slideshow .owl-nav button.owl-prev { + left: 10px; + } + .owl-carousel.single-slideshow .owl-nav button.owl-next { + right: 10px; + } + .owl-carousel.single-slideshow .owl-item img { + border-radius: .25rem; + } + .owl-carousel.single-slideshow .owl-stage { + padding: 0; + } + .owl-carousel .hero-wrap .hero-bg { + background-attachment: inherit; + } + + /* Brands Grid */ + .brands-grid { + overflow: hidden; + } + .brands-grid > .row > div { + padding-top: 20px; + padding-bottom: 20px; + } + .brands-grid.separator-border > .row > div:after, .brands-grid.separator-border > .row > div:before { + content: ''; + position: absolute; + } + .brands-grid.separator-border > .row > div:after { + width: 100%; + height: 0; + top: auto; + left: 0; + bottom: -1px; + border-bottom: 1px dotted #e0dede; + } + .brands-grid.separator-border > .row > div:before { + height: 100%; + top: 0; + left: -1px; + border-left: 1px dotted #e0dede; + } + .brands-grid > .row > div a { + opacity: 0.7; + color: #444; + } + .brands-grid > .row > div a:hover { + opacity: 1; + color: #2196f3; + } + + /* Banner */ + .banner .item { + position: relative; + } + .banner .item img { + vertical-align: middle; + } + .banner .caption { + position: absolute; + z-index: 2; + bottom: 0; + width: 100%; + padding: 15px 20px; + } + .banner .caption h2, .banner .caption h3 { + font-size: 19px; + color: #fff; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + } + .banner .caption p { + color: rgba(250, 250, 250, 0.8); + margin-bottom: 0px; + } + .banner .rounded .banner-mask, .banner .rounded img { + border-radius: .25rem; + } + .banner .banner-mask { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 1; + backface-visibility: hidden; + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.6)); + background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.6)); + background: -o-linear-gradient(top, rgba(0, 0, 0, 0.01), black); + background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.01), black); + background: linear-gradient(to bottom, rgba(0, 0, 0, 0.01), black); + opacity: 0.7; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + } + .banner .item:hover .banner-mask { + opacity: 0.95; + filter: alpha(opacity=95); + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + } + .banner.style-2 .caption { + background: rgba(0, 0, 0, 0.5); + } + .banner.style-2 .banner-mask { + opacity: 0; + } + .banner.style-2 .item:hover .banner-mask { + opacity: 0.40; + } + .banner.style-2 .item:hover .caption h2 { + margin-left: 8px; + } + + /* Simple ul */ + .simple-ul > li { + position: relative; + list-style-type: none; + line-height: 24px; + } + .simple-ul > li:after { + content: " "; + position: absolute; + top: 12px; + left: -15px; + border-color: #000; + border-top: 1px solid; + border-right: 1px solid; + width: 6px; + height: 6px; + -webkit-transform: translate(-50%, -50%) rotate(45deg); + transform: translate(-50%, -50%) rotate(45deg); + } + + /* Steps Progress bar */ + .widget-steps > .step { + padding: 0; + position: relative; + } + .widget-steps > .step .step-name { + font-size: 16px; + margin-bottom: 5px; + text-align: center; + } + .widget-steps > .step > .step-dot { + position: absolute; + width: 30px; + height: 30px; + display: block; + background: #fff; + border: 1px solid #28a745; + top: 45px; + left: 50%; + margin-top: -15px; + margin-left: -15px; + border-radius: 50%; + } + .widget-steps > .step > .step-dot:after { + width: 10px; + height: 10px; + border-radius: 50px; + position: absolute; + top: 9px; + left: 9px; + } + .widget-steps > .step.complete > .step-dot { + background: #28a745; + } + .widget-steps > .step.complete > .step-dot:after { + content: '\f00c'; + font-weight: 900; + color: #fff; + font-family: "Font Awesome 5 Free"; + top: 3px; + left: 7px; + } + .widget-steps > .step.active > .step-dot:after { + background: #28a745; + content: ''; + } + .widget-steps > .step > .progress { + position: relative; + background: #bbb; + border-radius: 0px; + height: 1px; + box-shadow: none; + margin: 22px 0; + } + .widget-steps > .step > .progress > .progress-bar { + width: 0px; + box-shadow: none; + background: #28a745; + } + .widget-steps > .step.complete > .progress > .progress-bar { + width: 100%; + } + .widget-steps > .step.active > .progress > .progress-bar { + width: 50%; + } + .widget-steps > .step:first-child.active > .progress > .progress-bar { + width: 0%; + } + .widget-steps > .step:last-child.active > .progress > .progress-bar { + width: 100%; + } + .widget-steps > .step.disabled > .step-dot { + border-color: #bbb; + } + .widget-steps > .step:first-child > .progress { + left: 50%; + width: 50%; + } + .widget-steps > .step:last-child > .progress { + width: 50%; + } + .widget-steps > .step.disabled a.step-dot { + pointer-events: none; + } + + @media (max-width: 575.98px) { + .widget-steps > .step .step-name { + font-size: 14px; + } + } + /* Demo banner */ + .demos-banner { + background-repeat: repeat; + background-size: cover; + height: 880px; + background-position: 0px 0px; + animation: move 30s linear infinite; + -moz-animation: move 30s linear infinite; + -webkit-animation: move 30s linear infinite; + -ms-animation: move 30s linear infinite; + -o-animation: move 30s linear infinite; + } + + @keyframes move { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: -2324px 0px; + } + } + @-moz-keyframes move { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: -2324px 0px; + } + } + @-webkit-keyframes move { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: -2324px 0px; + } + } + @-ms-keyframes move { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: -2324px 0px; + } + } + @-o-keyframes move { + 0% { + background-position: 0px 0px; + } + 100% { + background-position: -2324px 0px; + } + } + /* =================================== */ + /* Footer + /* =================================== */ + #footer { + background: #fff; + color: #252b33; + padding: 66px 0px; + padding: 4.125rem 0; + border-top: 1px solid #ecf3f5; + } + #footer .nav .nav-item { + display: inline-block; + line-height: 12px; + margin: 0; + padding: 0 10px; + } + #footer .nav .nav-item:first-child { + padding-left: 0px; + } + #footer .nav .nav-item:last-child { + padding-right: 0px; + } + #footer .nav .nav-item .nav-link { + padding: 0; + margin: 0.5rem 0px; + color: #252b33; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + #footer .nav .nav-item .nav-link:focus { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + #footer .nav .nav-link:hover { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + #footer .footer-copyright { + border-top: 1px solid #e2e8ea; + padding: 0px 0px; + color: #67727c; + } + #footer .footer-copyright .nav .nav-item .nav-link { + color: #67727c; + } + #footer .footer-copyright .nav .nav-link:hover { + color: #2196f3; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + #footer .nav.flex-column .nav-item { + padding: 0px; + } + #footer .nav.flex-column .nav-item .nav-link { + margin: 0.7rem 0px; + } + #footer.footer-text-light { + color: rgba(250, 250, 250, 0.8); + } + #footer.footer-text-light .nav .nav-item .nav-link { + color: rgba(250, 250, 250, 0.8); + } + #footer.footer-text-light .nav .nav-item .nav-link:hover { + color: #fafafa; + } + #footer.footer-text-light .footer-copyright { + border-color: rgba(250, 250, 250, 0.15); + color: rgba(250, 250, 250, 0.5); + } + #footer.footer-text-light:not(.bg-primary) .social-icons-light.social-icons li a { + color: rgba(250, 250, 250, 0.8); + } + #footer.footer-text-light:not(.bg-primary) .social-icons-light.social-icons li a:hover { + color: #fafafa; + } + #footer.footer-text-light.bg-primary { + color: #fff; + } + #footer.footer-text-light.bg-primary .nav .nav-item .nav-link { + color: #fff; + } + #footer.footer-text-light.bg-primary .nav .nav-item .nav-link:hover { + color: rgba(250, 250, 250, 0.7); + } + #footer.footer-text-light.bg-primary .footer-copyright { + border-color: rgba(250, 250, 250, 0.15); + color: rgba(250, 250, 250, 0.9); + } + #footer.footer-text-light.bg-primary :not(.social-icons) a { + color: #fff; + } + #footer.footer-text-light.bg-primary :not(.social-icons) a:hover { + color: rgba(250, 250, 250, 0.7); + } + + /* Newsleter */ + .newsletter .form-control { + height: 38px !important; + font-size: 14px; + } + .newsletter .btn { + height: 38px; + padding-top: 0; + padding-bottom: 0px; + font-size: 14px; + } + + /* Social Icons */ + .social-icons { + margin: 0; + padding: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + list-style: none; + } + .social-icons li { + margin: 0px 6px 4px; + padding: 0; + overflow: visible; + } + .social-icons li:last-child { + margin-right: 0px; + } + .social-icons li a { + display: block; + height: 26px; + line-height: 26px; + width: 26px; + font-size: 18px; + text-align: center; + color: #4d555a; + text-decoration: none; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + } + .social-icons li i { + line-height: inherit; + } + .social-icons.social-icons-sm li { + margin: 0px 4px 4px; + } + .social-icons.social-icons-sm li a { + font-size: 14px; + } + .social-icons.social-icons-lg li a { + width: 34px; + height: 34px; + line-height: 34px; + font-size: 22px; + } + .social-icons.social-icons-light li a { + color: #eee; + } + .social-icons.social-icons-muted li a { + color: #aab1b8; + } + .social-icons li:hover a { + color: #999; + } + .social-icons li:hover.social-icons-twitter a, .social-icons.social-icons-colored li.social-icons-twitter a { + color: #00ACEE; + } + .social-icons li:hover.social-icons-facebook a, .social-icons.social-icons-colored li.social-icons-facebook a { + color: #3B5998; + } + .social-icons li:hover.social-icons-linkedin a, .social-icons.social-icons-colored li.social-icons-linkedin a { + color: #0E76A8; + } + .social-icons li:hover.social-icons-rss a, .social-icons.social-icons-colored li.social-icons-rss a { + color: #EE802F; + } + .social-icons li:hover.social-icons-google a, .social-icons.social-icons-colored li.social-icons-google a { + color: #DD4B39; + } + .social-icons li:hover.social-icons-pinterest a, .social-icons.social-icons-colored li.social-icons-pinterest a { + color: #cc2127; + } + .social-icons li:hover.social-icons-youtube a, .social-icons.social-icons-colored li.social-icons-youtube a { + color: #C4302B; + } + .social-icons li:hover.social-icons-instagram a, .social-icons.social-icons-colored li.social-icons-instagram a { + color: #3F729B; + } + .social-icons li:hover.social-icons-skype a, .social-icons.social-icons-colored li.social-icons-skype a { + color: #00AFF0; + } + .social-icons li:hover.social-icons-email a, .social-icons.social-icons-colored li.social-icons-email a { + color: #6567A5; + } + .social-icons li:hover.social-icons-vk a, .social-icons.social-icons-colored li.social-icons-vk a { + color: #2B587A; + } + .social-icons li:hover.social-icons-xing a, .social-icons.social-icons-colored li.social-icons-xing a { + color: #126567; + } + .social-icons li:hover.social-icons-tumblr a, .social-icons.social-icons-colored li.social-icons-tumblr a { + color: #34526F; + } + .social-icons li:hover.social-icons-reddit a, .social-icons.social-icons-colored li.social-icons-reddit a { + color: #C6C6C6; + } + .social-icons li:hover.social-icons-delicious a, .social-icons.social-icons-colored li.social-icons-delicious a { + color: #205CC0; + } + .social-icons li:hover.social-icons-stumbleupon a, .social-icons.social-icons-colored li.social-icons-stumbleupon a { + color: #F74425; + } + .social-icons li:hover.social-icons-digg a, .social-icons.social-icons-colored li.social-icons-digg a { + color: #191919; + } + .social-icons li:hover.social-icons-blogger a, .social-icons.social-icons-colored li.social-icons-blogger a { + color: #FC4F08; + } + .social-icons li:hover.social-icons-flickr a, .social-icons.social-icons-colored li.social-icons-flickr a { + color: #FF0084; + } + .social-icons li:hover.social-icons-vimeo a, .social-icons.social-icons-colored li.social-icons-vimeo a { + color: #86C9EF; + } + .social-icons li:hover.social-icons-yahoo a, .social-icons.social-icons-colored li.social-icons-yahoo a { + color: #720E9E; + } + .social-icons li:hover.social-icons-googleplay a, .social-icons.social-icons-colored li.social-icons-googleplay a { + color: #DD4B39; + } + .social-icons li:hover.social-icons-apple a, .social-icons.social-icons-colored li.social-icons-apple a { + color: #000; + } + .social-icons.social-icons-colored li:hover a { + color: #999; + } + + /* Back to Top */ + #back-to-top { + display: none; + position: fixed; + z-index: 1030; + bottom: 8px; + right: 10px; + background-color: rgba(0, 0, 0, 0.2); + text-align: center; + color: #fff; + font-size: 16px; + width: 36px; + height: 36px; + line-height: 36px; + border-radius: 0.25rem; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); + } + #back-to-top:hover { + background-color: #2196f3; + -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.25); + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.25); + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } + + @media (max-width: 575.98px) { + #back-to-top { + z-index: 1029; + } + } + /* =================================== */ + /* Extras + /* =================================== */ + /* Bootstrap Specific */ + .form-control, .custom-select { + border-color: #dae1e3; + font-size: 16px; + color: #656565; + } + + .form-control:not(.form-control-sm) { + padding: .810rem .96rem; + height: inherit; + } + + .form-control-sm { + font-size: 14px; + } + + .icon-inside { + position: absolute; + right: 15px; + top: calc(50% - 11px); + pointer-events: none; + font-size: 18px; + font-size: 1.125rem; + color: #c4c3c3; + z-index: 3; + } + + .form-control-sm + .icon-inside { + font-size: 0.875rem !important; + font-size: 14px; + top: calc(50% - 13px); + } + + select.form-control:not([size]):not([multiple]):not(.form-control-sm) { + height: auto; + padding-top: .700rem; + padding-bottom: .700rem; + } + + .custom-select:not(.custom-select-sm) { + height: calc(3.05rem + 3px); + padding-top: .700rem; + padding-bottom: .700rem; + } + + .col-form-label-sm { + font-size: 13px; + } + + .custom-select-sm { + padding-left: 5px !important; + font-size: 14px; + } + + .custom-select:not(.custom-select-sm).border-0 { + height: 3.00rem; + } + + .form-control:focus, .custom-select:focus { + -webkit-box-shadow: 0 0 5px rgba(128, 189, 255, 0.5); + box-shadow: 0 0 5px rgba(128, 189, 255, 0.5); + } + + .form-control:focus[readonly] { + box-shadow: none; + } + + .input-group-text { + border-color: #dae1e3; + background-color: #f1f5f6; + color: #656565; + } + + .form-control::-webkit-input-placeholder { + color: #b1b4b6; + } + .form-control:-moz-placeholder { + /* FF 4-18 */ + color: #b1b4b6; + } + .form-control::-moz-placeholder { + /* FF 19+ */ + color: #b1b4b6; + } + .form-control:-ms-input-placeholder, .form-control::-ms-input-placeholder { + /* IE 10+ */ + color: #b1b4b6; + } + + .btn { + padding: .8rem 2rem; + font-weight: 500; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + } + + .btn-sm { + padding: 0.5rem 1rem; + } + + .btn:not(.btn-link):not(.cancelBtn):not(.applyBtn) { + -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); + } + .btn:not(.btn-link):not(.cancelBtn):not(.applyBtn):hover { + -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.3); + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.3); + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; + } + + .input-group-append .btn, .input-group-prepend .btn { + -webkit-box-shadow: none; + box-shadow: none; + padding-left: 0.75rem; + padding-right: 0.75rem; + } + + .input-group-append .btn:hover, .input-group-prepend .btn:hover { + -webkit-box-shadow: none; + box-shadow: none; + } + + @media (max-width: 575.98px) { + .btn:not(.btn-sm) { + padding: .810rem 1rem; + } + + .input-group > .input-group-append > .btn, .input-group > .input-group-prepend > .btn { + padding: 0 0.75rem; + } + } + .bg-primary, .badge-primary { + background-color: #2196f3 !important; + } + + .bg-secondary { + background-color: #6c757d !important; + } + + .text-primary, .btn-light, .btn-outline-light:hover, .btn-link { + color: #2196f3 !important; + } + + a.text-primary:focus, a.text-primary:hover, .btn-link:hover { + color: #9af6fb !important; + } + + .text-secondary { + color: #6c757d !important; + } + + .text-muted { + color: #8e9a9d !important; + } + + .text-light { + color: #dee3e4 !important; + } + + .text-body { + color: #4c4d4d !important; + } + + a.bg-primary:focus, a.bg-primary:hover, button.bg-primary:focus, button.bg-primary:hover { + background-color: #9af6fb !important; + } + + .border-primary { + border-color: #2196f3 !important; + } + + .border-secondary { + border-color: #6c757d !important; + } + + .btn-primary { + background-color: #2196f3; + border-color: #2196f3; + } + .btn-primary:hover { + background-color: #9af6fb; + border-color: #9af6fb; + } + + .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active { + background-color: #9af6fb; + border-color: #9af6fb; + } + .btn-primary:not(:disabled):not(.disabled).active:hover, .btn-primary:not(:disabled):not(.disabled):active:hover { + background-color: #2196f3; + border-color: #2196f3; + } + + .btn-primary.focus, .btn-primary:focus { + background-color: #9af6fb; + border-color: #9af6fb; + } + + .btn-primary:not(:disabled):not(.disabled).active:focus, .btn-primary:not(:disabled):not(.disabled):active:focus, .show > .btn-primary.dropdown-toggle:focus { + -webkit-box-shadow: none; + box-shadow: none; + } + + .btn-secondary { + background-color: #6c757d; + border-color: #6c757d; + } + + .btn-outline-primary, .btn-outline-primary:not(:disabled):not(.disabled).active, .btn-outline-primary:not(:disabled):not(.disabled):active { + color: #2196f3; + border-color: #2196f3; + } + .btn-outline-primary:hover, .btn-outline-primary:not(:disabled):not(.disabled).active:hover, .btn-outline-primary:not(:disabled):not(.disabled):active:hover { + background-color: #2196f3; + border-color: #2196f3; + color: #fff; + } + + .btn-outline-secondary { + color: #6c757d; + border-color: #6c757d; + } + .btn-outline-secondary:hover { + background-color: #6c757d; + border-color: #6c757d; + color: #fff; + } + + .progress-bar, + .nav-pills .nav-link.active, .nav-pills .show > .nav-link, .dropdown-item.active, .dropdown-item:active { + background-color: #2196f3; + } + + .page-item.active .page-link, + .custom-radio .custom-control-input:checked ~ .custom-control-label:before, + .custom-control-input:checked ~ .custom-control-label::before, + .custom-checkbox .custom-control-input:checked ~ .custom-control-label:before, + .custom-control-input:checked ~ .custom-control-label:before { + background-color: #2196f3; + border-color: #2196f3; + } + + .list-group-item.active { + background-color: #2196f3; + border-color: #2196f3; + } + + .page-link { + color: #2196f3; + } + .page-link:hover { + color: #9af6fb; + } + + /* Pagination */ + .page-link { + border: none; + border-radius: 0.25rem; + margin: 0 0.22rem; + font-size: 16px; + font-size: 1rem; + } + .page-link:hover { + background-color: #e9eff0; + } + + /* Vertical Multilple input group */ + .vertical-input-group .input-group:first-child { + padding-bottom: 0; + } + .vertical-input-group .input-group:first-child * { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + .vertical-input-group .input-group:last-child { + padding-top: 0; + } + .vertical-input-group .input-group:last-child * { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .vertical-input-group .input-group:not(:last-child):not(:first-child) { + padding-top: 0; + padding-bottom: 0; + } + .vertical-input-group .input-group:not(:last-child):not(:first-child) * { + border-radius: 0; + } + .vertical-input-group .input-group:not(:first-child) * { + border-top: 0; + } + + /* Slider Range (jQuery UI) */ + .ui-slider-horizontal { + height: .2em; + margin-left: 11px; + margin-right: 11px; + } + .ui-slider-horizontal .ui-slider-handle { + top: -0.7em; + margin-left: -.7em; + border-radius: 100%; + background: #fff; + width: 1.5em; + height: 1.5em; + } + + .ui-slider.ui-widget.ui-widget-content { + border: none; + background: #eee; + margin-bottom: 15px; + } + .ui-slider .ui-widget-header { + background: #2196f3; + } + + .ui-menu.ui-widget.ui-widget-content { + box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176); + border: none; + overflow: hidden; + overflow-y: auto; + max-height: 50vh; + border-radius: 4px; + } + .ui-menu .ui-menu-item-wrapper { + padding: 6px .75rem 6px .9rem; + } + .ui-menu.ui-widget-content .ui-state-active { + background: #2196f3; + border-color: #2196f3; + } + .ui-menu .ui-menu-divider { + display: none; + } + + /* Bootstrap-select */ + .bootstrap-select.form-control { + padding: 0; + } + .bootstrap-select > .dropdown-toggle.bs-placeholder { + color: #4c4d4d; + font-weight: normal; + } + .bootstrap-select > .dropdown-toggle.bs-placeholder:hover, .bootstrap-select > .dropdown-toggle.bs-placeholder:focus, .bootstrap-select > .dropdown-toggle.bs-placeholder:active { + color: #4c4d4d; + font-weight: normal; + } + .bootstrap-select .dropdown-item:focus, .bootstrap-select .dropdown-item:hover:not(.dropdown-item.active) { + background-color: #f5f5f5; + } + .bootstrap-select .dropdown-menu li.active small { + color: rgba(255, 255, 255, 0.7) !important; + } + .bootstrap-select > .dropdown-toggle { + padding: .700rem 1.50rem .700rem .75rem !important; + box-shadow: none !important; + font-weight: normal; + } + .bootstrap-select > .dropdown-toggle.custom-select:after { + border: none; + } + .bootstrap-select .dropdown-toggle.custom-select .filter-option { + height: auto; + } + .bootstrap-select .dropdown-toggle .filter-option-inner-inner { + -ms-flex-align: center !important; + align-items: center !important; + display: -ms-flexbox !important; + display: flex !important; + } + .bootstrap-select .dropdown-menu li a { + -ms-flex-align: center !important; + align-items: center !important; + display: -ms-flexbox !important; + display: flex !important; + } + .bootstrap-select.fit-width .dropdown-toggle .filter-option { + width: auto; + } + .bootstrap-select > select.mobile-device:focus + .dropdown-toggle, .bootstrap-select .dropdown-toggle:focus { + outline: none !important; + } + + .currency-flag { + min-width: 24px; + } + + .currency-flag-sm { + min-width: 16px; + } + + .currency-flag-lg { + min-width: 36px; + } + + /* styles-switcher */ + #styles-switcher { + background: #fff; + width: 202px; + position: fixed; + top: 35%; + z-index: 99; + padding: 20px; + left: -202px; + } + #styles-switcher ul { + padding: 0; + } + #styles-switcher ul li { + list-style-type: none; + width: 25px; + height: 25px; + margin: 4px 2px; + border-radius: 50%; + display: inline-block; + cursor: pointer; + transition: all .2s ease-in-out; + } + #styles-switcher ul li.blue { + background: #007bff; + } + #styles-switcher ul li.brown { + background: #795548; + } + #styles-switcher ul li.purple { + background: #6f42c1; + } + #styles-switcher ul li.indigo { + background: #6610f2; + } + #styles-switcher ul li.red { + background: #dc3545; + } + #styles-switcher ul li.orange { + background: #fd7e14; + } + #styles-switcher ul li.yellow { + background: #ffc107; + } + #styles-switcher ul li.pink { + background: #e83e8c; + } + #styles-switcher ul li.teal { + background: #20c997; + } + #styles-switcher ul li.cyan { + background: #17a2b8; + } + #styles-switcher ul li.active { + transform: scale(0.7); + cursor: default; + } + #styles-switcher .switcher-toggle { + position: absolute; + background: #333; + color: #fff; + font-size: 1.25rem; + border-radius: 0px 4px 4px 0; + right: -40px; + top: 0; + width: 40px; + height: 40px; + padding: 0; + } + #styles-switcher #reset-color { + background: #2196f3; + } + .primary-menu.navbar { + margin: auto; + } + .logo img { + width: 200px; + } + + .errorlist { + padding-left: 3px; + list-style: none; + background-color: #e41d25; + color: #fff; + } + #card-errors { + color: #e41d25; + } + + .bill-cancelled { + background-color: #e41d25 !important; + } + .bill-paid { + background-color: #28a745!important; + } + .bill-new { + background-color: #17a2b8!important; + } + .email_list .unverified { + color: #f7656e; + } + .email_list .primary { + color: #126567; + } diff --git a/assets/u/static/css/ungleich.css b/assets/u/static/css/ungleich.css new file mode 100755 index 0000000..cbdd6ee --- /dev/null +++ b/assets/u/static/css/ungleich.css @@ -0,0 +1,28 @@ +/* Turns specific sections into bold for all platforms + Sanghee, Nico, 2020-04-29 +*/ +@font-face { + font-family: "Nimbus Sans L"; + src: url("/u/static/font/NimbusSans-Bold.otf") format("opentype"); +} + +.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; +} diff --git a/assets/u/static/font/NimbusSans-Bold.otf b/assets/u/static/font/NimbusSans-Bold.otf new file mode 100644 index 0000000..5b1d298 Binary files /dev/null and b/assets/u/static/font/NimbusSans-Bold.otf differ diff --git a/assets/u/static/font/NimbusSans-Bold.ttf b/assets/u/static/font/NimbusSans-Bold.ttf new file mode 100644 index 0000000..d364537 Binary files /dev/null and b/assets/u/static/font/NimbusSans-Bold.ttf differ diff --git a/assets/u/static/generic-header.css b/assets/u/static/generic-header.css index c8ccbcf..34acc79 100644 --- a/assets/u/static/generic-header.css +++ b/assets/u/static/generic-header.css @@ -21,7 +21,7 @@ h2 { } .mb-5 { margin-bottom: 3rem !important; - } + } } @@ -32,7 +32,7 @@ h2 { .black-bg { background-color: black; } - + .red-bg { background-color: #d1240c; } @@ -53,4 +53,8 @@ h1.generic-header { font-size: 10vw; line-height: 12vw; } -} \ No newline at end of file +} + +table, th, td { + border: 1px solid black; +} diff --git a/content/contents.lr b/content/contents.lr index 4775b03..b5f0c98 100644 --- a/content/contents.lr +++ b/content/contents.lr @@ -8,3 +8,16 @@ There is not much here - everything is stored below /u/. You should actually not be able to see this page below ungleich.ch. If you do, please let us know. --- +slider: + +title: + +description: + +button_text: + +button_link: + +background_image: + +video_mp4: diff --git a/content/u/about/contents.lr b/content/u/about/contents.lr deleted file mode 100644 index 9edb4d5..0000000 --- a/content/u/about/contents.lr +++ /dev/null @@ -1,7 +0,0 @@ -title: About this Website ---- -body: - -This is a website that was made with the Lektor quickstart. - -And it does not contain a lot of information. diff --git a/content/u/advent-calendar/01/alpinelinux.jpg b/content/u/advent-calendar/01/alpinelinux.jpg new file mode 100644 index 0000000..62b2d0b Binary files /dev/null and b/content/u/advent-calendar/01/alpinelinux.jpg differ diff --git a/content/u/advent-calendar/01/contents.lr b/content/u/advent-calendar/01/contents.lr new file mode 100644 index 0000000..00f90ae --- /dev/null +++ b/content/u/advent-calendar/01/contents.lr @@ -0,0 +1,74 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Alpine Linux VMs +--- +subtitle: 20% off for the limited 10 VMs +--- +headline1: Surprise 01: +--- +headline2: 20% off +--- +headline3: IPv6-only Alpine Linux VMs +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/advent-1.jpg +--- +content1_text: + +## Welcome to our advent calender! + +Discover a new surprise everyday from 1st to 24th of December! The first deal starts with IPv6-Only, Alpine Linux. + +## IPv6 only, Alpine Linux VMs with 20% discount + +We are giving out IPv6 only, Alpine Linux VMs for a year with 20% discount. The deal is available for the first 10 orders. + +## About the product + +- OS: Alpine Linux +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter]((https://datacenterlight.ch)) in Glarus, Switzerland. + +## Why Alpine Linux? + + Alpine Linux is small and simple, realising the UNIX spirit to the core: doing one thing and doing it well. It is designed with minimalism at its best, enabling easier maintenance for security. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month. +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF +* Prices exclude VAT. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch. + +Our team will set up the VM in 1 business day and give you the access. + +Order an Alpine Linux VM for a year with 20% discount +--- +content1_image: alpinelinux.jpg +--- \ No newline at end of file diff --git a/content/u/advent-calendar/02/contents.lr b/content/u/advent-calendar/02/contents.lr new file mode 100644 index 0000000..8670cb1 --- /dev/null +++ b/content/u/advent-calendar/02/contents.lr @@ -0,0 +1,38 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Welcome, VIWIB! +--- +subtitle: A powerful little IPv6 box with WiFi! +--- +headline1: Surprise 02: +--- +headline2: Introducing VIWIB, +--- +headline3: IPv6 & Wifi everywhere +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/advent-2.jpg +--- +content1_image: /u/image/viwib-vertical.jpg +--- +content1_text: + +## Meet our VIWIB + +Today we are very proud to introduce you to our latest IPv6 enabler: +the [VIWIB](/u/products/viwib-wifi-ipv6-box/). It is the bigger sister +of our [VIIRB,](/u/products/viirb-ipv6-box/) and VIWIB brings IPv6 enabled WiFi to you! + +It is compatible with the VIIRB add-ons: VIWIB is also very +versatile. + +Now the preorder is open! diff --git a/content/u/advent-calendar/03/contents.lr b/content/u/advent-calendar/03/contents.lr new file mode 100644 index 0000000..51729fa --- /dev/null +++ b/content/u/advent-calendar/03/contents.lr @@ -0,0 +1,71 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Ubuntu 20.10 VMs +--- +subtitle: 20% off for the 10 limited VMs +--- +image: /u/image/cards/advent-3.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 03: +--- +headline2: 20% off +--- +headline3: Ubuntu 20.10 VMs +--- +content1_image: ubuntu.jpg +--- +content1_text: + +## IPv6 only, Ubuntu 20.10 VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, Ubuntu 20.10 VMs for a year with 20% discount. Only available for 10 VMs, grab it while you can. + +## About the product + +- OS: Ubuntu 20.10 +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## Why Ubuntu? + + Ubuntu is easy, Ubuntu is so likable! Ubuntu has the largest community amongst Linux operating systems so it is always nice to get support from friendly folks when you are stuck. The user-friendliness of Ubuntu has been one of its biggest strengths, not only for Linux beginners but for everybody. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch. + +Our team will set up the VM in 1 business day and give you the access. + +Order Ubuntu 20.10 VM for a year with 20% discount + +--- diff --git a/content/u/advent-calendar/03/ubuntu.jpg b/content/u/advent-calendar/03/ubuntu.jpg new file mode 100644 index 0000000..fa37ab6 Binary files /dev/null and b/content/u/advent-calendar/03/ubuntu.jpg differ diff --git a/content/u/advent-calendar/04/contents.lr b/content/u/advent-calendar/04/contents.lr new file mode 100644 index 0000000..a38146f --- /dev/null +++ b/content/u/advent-calendar/04/contents.lr @@ -0,0 +1,62 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: 10% off: Zero Carbon Cloud! +--- +subtitle: Get a year of our Cloud storage with 10% discount. +--- +image: /u/image/cards/advent-4.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 04: +--- +headline2: 10% off +--- +headline3: Zero Carbon Cloud 100GB +--- +content1_image: security.jpg +--- +content1_text: + +## A yearly Zero Carbon Cloud with 10% discount + +You can order our [Zero Carbon Cloud](https://ungleich.ch/u/products/zero-carbon-cloud/) 100 GB plan for a year with 10% discount. Only available for 10 orders, grab it while you can. + +## About the product + +- Nextcloud instance +- Suitable for MacOS, Linux, Windows, and on mobile and tablet. +- 1 year subscription +- 1 IPv6 VPN is included for increased security +- Enhanced security by limiting access to only your devices +- Fully scalable storage and backup +- Unlimited bandwidth under fair use policy +- Safe data storage protected by Swiss privacy laws +- VM is running with 100% renewable energy (hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for Zero Carbon Cloud is one-time 35 CHF for setup, 25 CHF for monthly fee. +* The price with 10% discount: 22.5 CHF/month +* For the whole year you pay 305 CHF instead of 335 CHF. You save 30 CHF. +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and write us the domain name you want for the cloud to support at datacenterlight.ch + +You can choose any domain name for your cloud under our domains glarner.cloud or 0co2.cloud for free, for example myname.glarner.cloud or myname.0co2.cloud. + +Our team will set up the cloud in 1 business day and give you the access. + +Order a Zero Carbon Cloud 100 GB for a year with 10% discount + +--- diff --git a/content/u/advent-calendar/04/security.jpg b/content/u/advent-calendar/04/security.jpg new file mode 100644 index 0000000..fcc788d Binary files /dev/null and b/content/u/advent-calendar/04/security.jpg differ diff --git a/content/u/advent-calendar/04/zerocarbon-yes.jpg b/content/u/advent-calendar/04/zerocarbon-yes.jpg new file mode 100644 index 0000000..b68ee8a Binary files /dev/null and b/content/u/advent-calendar/04/zerocarbon-yes.jpg differ diff --git a/content/u/advent-calendar/05/contents.lr b/content/u/advent-calendar/05/contents.lr new file mode 100644 index 0000000..53366f4 --- /dev/null +++ b/content/u/advent-calendar/05/contents.lr @@ -0,0 +1,67 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only CentOS 8 VMs +--- +subtitle: 20% off for the 10 limited VMs +--- +image: /u/image/cards/advent-5.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 05: +--- +headline2: 20% off +--- +headline3: CentOS 8 VMs +--- +content1_image: penguin-temperature.jpg +--- +content1_text: + +## IPv6 only, CentOS 8 VMs with 20% discount + +We are giving out IPv6 only, CentOS 8 VMs for a year with 20% discount. Only available for 10 VMs, grab it while you can. + +## About the product + +- OS: CentOS 8 +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month. +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch. + +Our team will set up the VM in 1 business day and give you the access. + +Order a CentOS 8 VM for a year with 20% discount + +--- diff --git a/content/u/advent-calendar/05/penguin-temperature.jpg b/content/u/advent-calendar/05/penguin-temperature.jpg new file mode 100644 index 0000000..18165b7 Binary files /dev/null and b/content/u/advent-calendar/05/penguin-temperature.jpg differ diff --git a/content/u/advent-calendar/06/contents.lr b/content/u/advent-calendar/06/contents.lr new file mode 100644 index 0000000..a4a9d5e --- /dev/null +++ b/content/u/advent-calendar/06/contents.lr @@ -0,0 +1,56 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: The IPv6 ULA registry +--- +subtitle: The IPv6 ULA registry is back! +--- +image: /u/image/cards/advent-6.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: IPv6 ULA registry +--- +headline2: is back +--- +headline3: after 3 years +--- +content1_text: + +## Happy St Nicholas Day + +For St Nicholas Day we present you with something that has been +requested from the IPv6 community for a while: [A new IPv6 ULA +registry](https://ula.ungleich.ch). We have imported all the original +prefixes from SixXs. The following URLs might be helpful: + +* [The new IPv6 ULA registry](https://ula.ungleich.ch) +* [The Hack4Glarus development + ticket](https://redmine.ungleich.ch/issues/8673) +* [The ipv6ula open source project hompage](/u/projects/ipv6ula/) +* [The announcement on the IETF mailing list](https://mailarchive.ietf.org/arch/msg/ipv6/fFpPHY55pwKlEopyyAZyZI8azg0/) + +## Background + +The [original IPv6 ULA +registry](https://www.sixxs.net/tools/grh/ula/list/) was maintained by +SixXS. However with the sunset event of SixXS on 2017-06-06, the +database has essentially become static. + +At this point we want to say many, many thanks to the SixXS project for +having provided so much pioneer work and for having enabled people in +embracing IPv6. + +Also for providing such an early and machine-readable database - it +was a pleasure importing all the historic records. + +We try to continue the effort that SixXS started many years ago, +just in a different era. If you have any questions or comments, feel +free to join the [IPv6.Chat](https://IPv6.Chat). diff --git a/content/u/advent-calendar/07/contents.lr b/content/u/advent-calendar/07/contents.lr new file mode 100644 index 0000000..5e7202f --- /dev/null +++ b/content/u/advent-calendar/07/contents.lr @@ -0,0 +1,68 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Debian VMs +--- +subtitle: 20% off for the 10 limited VMs +--- +image: /u/image/cards/advent-7.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 07: +--- +headline2: 20% off +--- +headline3: Debian VMs +--- +content1_image: datacenterlight-penguin.jpg +--- +content1_text: + +## IPv6 only, Debian VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, Debian VMs for a year with 20% discount. Only available for 10 VMs, Grab it while you can. + +## About the product + +- OS: Debian +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + + +Order Debian VM for a year with 20% discount + + diff --git a/content/u/advent-calendar/07/datacenterlight-penguin.jpg b/content/u/advent-calendar/07/datacenterlight-penguin.jpg new file mode 100644 index 0000000..a0df7e3 Binary files /dev/null and b/content/u/advent-calendar/07/datacenterlight-penguin.jpg differ diff --git a/content/u/advent-calendar/08/contents.lr b/content/u/advent-calendar/08/contents.lr new file mode 100644 index 0000000..c0faedf --- /dev/null +++ b/content/u/advent-calendar/08/contents.lr @@ -0,0 +1,55 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Meet IPv6 ASS! +--- +subtitle: IPv6 Autonomous Security System +--- +image: /u/image/cards/advent-8.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 08: +--- +headline2: IPv6 Autonomous +--- +headline3: Security System +--- +content1_image: ipv6-security-system.jpg +--- +content1_text: + +## IPv6 Autonomous Security System + +We are introducing our IPv6 Autonomous Security System - another cool way to use IPv6 in everyday. With IPv6 Autonomous Security System you can reach and track your target from anywhere you are via IPv6 directly. The data goes from your security system via [IPv6 VPN](https://ipv6vpn.ch) to you without compromises. + +## About the product + +The IPv6 Autonomous Security System can be used with VIIRB or VIWIB. + +The package contains the following. + +- 1 USB Hub +- 1 LTE/4G Router (Internet Uplink, excluding SIM card) +- GPS Tracker +- USB Camera +- 1 VIIRB or VIWIB (optional) + +## How to get it + +Our IPv6 Autonomous Security System with VIIRB is in production. Our IPv6 Autonomous Security System with VIWIB is in preorder state and will start to be shipped in mid December 2020. We ship world wide. + +You can visit our [IPv6 Autonomous Security System page](https://ungleich.ch/u/products/ipv6-autonomous-security-system/) for checking more details and placing an order. + + + + + +--- diff --git a/content/u/advent-calendar/08/ipv6-security-system.jpg b/content/u/advent-calendar/08/ipv6-security-system.jpg new file mode 100644 index 0000000..8c384c5 Binary files /dev/null and b/content/u/advent-calendar/08/ipv6-security-system.jpg differ diff --git a/content/u/advent-calendar/09/contents.lr b/content/u/advent-calendar/09/contents.lr new file mode 100644 index 0000000..c358f19 --- /dev/null +++ b/content/u/advent-calendar/09/contents.lr @@ -0,0 +1,76 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Devuan VMs +--- +subtitle: 20% off for the limited 10 VMs +--- +image: /u/image/cards/advent-9.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 09: +--- +headline2: 20% off +--- +headline3: Devuan VMs +--- +content1_image: devuan.jpg +--- +content1_text: + +## IPv6 only, Devuan VMs with 20% discount + +We are giving out IPv6 only, Devuan VMs for a year with 20% discount. The deal is available for the first 10 orders. + +## About the product + +- OS: Devuan +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## Why Devuan? + +Simply put, Devuan is Debian without systemd. It is a great choice if you are looking for Debian alternative without systemd. Devuan uses the same APT package manager as Debian, but it maintains its own repositories. Basically these repositories have the same base as Debian, but they contain patches that enable things to run without systemd. For init sytem, Devuan uses sysvinit as the default which used to be the standard for many versions of Linux, including Debian before systemd. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. + +You can drop a mail to our support and our team will help you. + +| upgrade | price per month(excl.VAT) | +| --------- | ---------------- | +| 1 CPU | 3 CHF | +| 1 GB RAM | 4 CHF | +| 10 GB SSD | 3.5 CHF | +| 100 GB HDD | 1.5 CHF | + + + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch. + +Our team will set up the VM in 1 business day and give you the access. + +Order a Devuan VM for a year with 20% discount + +--- diff --git a/content/u/advent-calendar/09/devuan.jpg b/content/u/advent-calendar/09/devuan.jpg new file mode 100644 index 0000000..856664f Binary files /dev/null and b/content/u/advent-calendar/09/devuan.jpg differ diff --git a/content/u/advent-calendar/10/contents.lr b/content/u/advent-calendar/10/contents.lr new file mode 100644 index 0000000..5b62ac8 --- /dev/null +++ b/content/u/advent-calendar/10/contents.lr @@ -0,0 +1,70 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 VPN for a year +--- +subtitle: with one free month +--- +image: /u/image/cards/advent-10.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 10: +--- +headline2: One month for free +--- +headline3: IPv6 VPN +--- +content1_image: ipv6-vpn.jpg +--- +content1_text: + +## IPv6 VPN for a year, with one free month + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 VPN for a year with one month discount. Only available for the fastest 10, grab it while you can. + +## About the product + +- Base technology: Wireguard +- Supported on Linux, BSD, MacOS, iOS, Windows, Android. +- 1 year subscription +- Encrypts the traffic until the endopoint in Switzerland +- 80 bit of IPv6 space +- Connection is encrypted, no network traffic is logged +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 VPN is 120 CHF for a year. +* The price with one month discount is 110 CHF for a year. You save 10 CHF. You get to keep your discount next year as well, as long as your VPN subscription is active. + +## How to get it + +You can order from the following link. The payment link is visible as long as the deal is available. + +Order IPv6 VPN for a year with one month discount + +Our team will set up the VPN in 1 business day and give you the access. + +## Getting Wireguard public key + +To get started with your VPN, you will need to install Wireguard and send us your public key. + +1. Install Wireguard +https://www.wireguard.com/install/ + +2. Create your private key: +umask 077; wg genkey > privkey + +3. Get your public key +wg pubkey < privkey + +4. Send us the public key to support at ungleich.ch + diff --git a/content/u/advent-calendar/10/ipv6-vpn.jpg b/content/u/advent-calendar/10/ipv6-vpn.jpg new file mode 100644 index 0000000..b303080 Binary files /dev/null and b/content/u/advent-calendar/10/ipv6-vpn.jpg differ diff --git a/content/u/advent-calendar/11/advent.jpg b/content/u/advent-calendar/11/advent.jpg new file mode 100644 index 0000000..c1a387e Binary files /dev/null and b/content/u/advent-calendar/11/advent.jpg differ diff --git a/content/u/advent-calendar/11/contents.lr b/content/u/advent-calendar/11/contents.lr new file mode 100644 index 0000000..e0fe53b --- /dev/null +++ b/content/u/advent-calendar/11/contents.lr @@ -0,0 +1,69 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only FreeBSD VMs +--- +subtitle: 20% off for the the 10 limited VMs +--- +image: /u/image/cards/advent-11.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 11: +--- +headline2: 20% off +--- +headline3: FreeBSD VMs +--- +content1_image: advent.jpg +--- +content1_text: + +## IPv6 only, FreeBSD VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, FreeBSD VMs for a year with 20% discount. Only available for the fastest 10! Grab it while you can. + +## About the product + +- OS: FreeBSD +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order FreeBSD VM for a year with 20% discount + diff --git a/content/u/advent-calendar/12/contents.lr b/content/u/advent-calendar/12/contents.lr new file mode 100644 index 0000000..9609659 --- /dev/null +++ b/content/u/advent-calendar/12/contents.lr @@ -0,0 +1,63 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: 10% off: Hosted Matrix Chat! +--- +subtitle: Get a year of our Matrix with 10% discount. +--- +image: /u/image/cards/advent-12.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 12: +--- +headline2: 10% off +--- +headline3: Hosted Matrix Chat +--- +content1_image: penguin-matrix.jpg +--- +content1_text: + +## A year of hosted Matrix chat with 10% discount + +You can order our [Hosted Matrix Chat](https://ungleich.ch/u/products/hosted-matrix-chat/) plan for a year with 10% discount. Only available for 10 orders, grab it while you can. + +## About the product + +- Hosted Matrix +- Suitable for MacOS, Linux, Windows, and on mobile and tablet. +- 1 year subscription +- Built-in federation +- Fully scalable +- End-to-end encryption (E2EE) +- Safe data storage protected by Swiss privacy laws +- VM is running with 100% renewable energy (hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for Hosted Matrix-S with a VM with 1 Core, 2 GB RAM, 10 GB SSD, 100 GB HDD is one-time 30 CHF for setup, 40 CHF for monthly fee. +* The price with 10% discount: 36 CHF/month +* For the whole year you pay 462 CHF instead of 510 CHF. You save 48 CHF. +* Prices exclude VAT. + +## Migration and further customization + +You have an existing community you want to migrate? There are variety of ways to enable your community move to the secure Matrix, such as [Matterbridge](https://ungleich.ch/u/products/hosted-matrix-chat/). Get in touch with our team and let us know what you need on your Matric, we will help you step by step. + +## How to buy it + +You can order from the following link and write us the domain name you want for the chat to support at datacenterlight.ch + +Our team will get in touch with you and setup the Matrix for you, and give you the access. + +Order a Hosted Matrix Chat S for a year with 10% discount + +--- diff --git a/content/u/advent-calendar/12/penguin-matrix.jpg b/content/u/advent-calendar/12/penguin-matrix.jpg new file mode 100644 index 0000000..fd53a02 Binary files /dev/null and b/content/u/advent-calendar/12/penguin-matrix.jpg differ diff --git a/content/u/advent-calendar/13/contents.lr b/content/u/advent-calendar/13/contents.lr new file mode 100644 index 0000000..3fecc7e --- /dev/null +++ b/content/u/advent-calendar/13/contents.lr @@ -0,0 +1,61 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: ungleich shares +--- +subtitle: available for a limited time! +--- +image: /u/image/cards/advent-13.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 13: +--- +headline2: Become our +--- +headline3: Shareholder +--- +content1_image: retirement.jpg +--- +content1_text: + +## Now you can become a shareholder + +We have often received requests for how to further engage in our company from various people, especially from those who are passionate about what we do: building a future with sustainable technology. As a part of our Christmas surprise, we made it possible: we are opening a special opportunity for you to join us. For a limited time we are opening up a pool of shares from ungleich glarus ltd to be sold. + +## How do shares work? + +We, the ungleich glarus ltd, are a privately traded company that +consists of a number of shares that form our share capital. You can +find out the exact number of shares and our share capital in [the +Cantonal +registry](https://gl.chregister.ch/cr-portal/auszug/auszug.xhtml?uid=CHE-156.970.649). +In 2019 we raised our capital by creating new shares, and this year we +are not creating new shares, but we are opening up a pool of shares +that we created specifically to allow new shareholders to join us. + +## What does becoming a shareholder mean? + +Becoming a shareholder of ungleich means you own a bit of ungleich. It lets you to be a part of a group of people who want to make the world a better place by sustainable technology made with love, backed by renewable energy. +You will be eligible to participate in the yearly general assembly as well as any future dividend payout. + +## What are the conditions? + +The pool contains 15'000 shares with a nominal value of 0.10 CHF each. The selling price is 4 CHF per share and the minimum amount of shares is 1'250 (5000 CHF). It is possible to buy multiple packages as one party. + +This offer is only valid until 2020-12-31 - the pool will be closed again on 2021-01-01. + +## How to apply + +If you are interested in this offer, get in touch with us at shares2020@ungleich.ch or write in Matrix to @nico:ungleich.ch. + +## Who can apply + +You need to be over 18 years old for being our shareholder. Due to banking regulations in Switzerland, US citizens or parties that are subject to tax in the US are not eligible for being our shareholder. diff --git a/content/u/advent-calendar/13/retirement.jpg b/content/u/advent-calendar/13/retirement.jpg new file mode 100644 index 0000000..6356447 Binary files /dev/null and b/content/u/advent-calendar/13/retirement.jpg differ diff --git a/content/u/advent-calendar/14/contents.lr b/content/u/advent-calendar/14/contents.lr new file mode 100644 index 0000000..e9d9763 --- /dev/null +++ b/content/u/advent-calendar/14/contents.lr @@ -0,0 +1,56 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Buy 8, get 10! +--- +subtitle: 20% off for 10 TB HDD Storage +--- +image: /u/image/cards/advent-14.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 14: +--- +headline2: 20% off +--- +headline3: 10 TB Storage +--- +content1_image: zerocarbon_shop.jpg +--- +content1_text: + +## 10 TB HDD Storage with a 20% discount + +Store your data in our secure data center for a whole year, protected by Swiss privacy laws and powered by renewable energy. Only available for 10 orders. + +## About the product + +- 10 TB HDD Storage +- 1 year subscription +- Can be attached to your [VM](https://ungleich.ch/u/products/virtual-machine-hosting/) or [Nextcloud](https://ungleich.ch/u/products/zero-carbon-cloud/) instance +- Data stored at our [datacenter](https://datacenterlight.ch) run by 100% renewable energy in Glarus, Switzerland. + +## The discount + +* The standard price for 100 GB HDD Storage is 1.5 CHF per month, and 150 CHF per month for 10 TB. +* The price with 20% discount is 120 CHF/month. +* In a yearly plan, you pay 1440 CHF instead of 1800 CHF. You save 360 CHF. + +## How to buy it + +You can order from the following link and let us know where you want to have the storage. You can attach the storage to your [VM](https://ungleich.ch/u/products/virtual-machine-hosting/) or your [Nextcloud](https://ungleich.ch/u/products/zero-carbon-cloud/) instance. + +Our team will set up the storage in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order 10 TB HDD Storage for a year with a 20% discount + + diff --git a/content/u/advent-calendar/14/zerocarbon_shop.jpg b/content/u/advent-calendar/14/zerocarbon_shop.jpg new file mode 100644 index 0000000..65c9954 Binary files /dev/null and b/content/u/advent-calendar/14/zerocarbon_shop.jpg differ diff --git a/content/u/advent-calendar/15/archlinux.jpg b/content/u/advent-calendar/15/archlinux.jpg new file mode 100644 index 0000000..ab213a1 Binary files /dev/null and b/content/u/advent-calendar/15/archlinux.jpg differ diff --git a/content/u/advent-calendar/15/contents.lr b/content/u/advent-calendar/15/contents.lr new file mode 100644 index 0000000..c9041b8 --- /dev/null +++ b/content/u/advent-calendar/15/contents.lr @@ -0,0 +1,71 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Archlinux VMs +--- +subtitle: 20% off for the 10 limited VMs +--- +image: /u/image/cards/advent-15.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 15: +--- +headline2: 20% off +--- +headline3: Archlinux VMs +--- +content1_image: archlinux.jpg +--- +content1_text: + +## IPv6 only, Archlinux VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, Archlinux VMs for a year with 20% discount. Only available for the fastest 10! Grab it while you can. + +## About the product + +- OS: Archlinux +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD: 21 CHF/month +* The price with 20% discount: 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT. + + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order Archlinux VM for a year with 20% discount + + + diff --git a/content/u/advent-calendar/16/advent-filled.jpg b/content/u/advent-calendar/16/advent-filled.jpg new file mode 100644 index 0000000..872b584 Binary files /dev/null and b/content/u/advent-calendar/16/advent-filled.jpg differ diff --git a/content/u/advent-calendar/16/contents.lr b/content/u/advent-calendar/16/contents.lr new file mode 100644 index 0000000..15dfa80 --- /dev/null +++ b/content/u/advent-calendar/16/contents.lr @@ -0,0 +1,63 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: 16% Discount for 16 GB RAM +--- +subtitle: for any size VM +--- +headline1: Surprise 16: +--- +headline2: 16 % discount +--- +headline3: for 16 GB RAM +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/advent-16.jpg +--- +content1_image: advent-filled.jpg +--- +content1_text: + +## 16 GB RAM with a 16% Discount! + +The 16th surprise deal of our Adevnt Calender is: get any VM with a 16 GB RAM, and you get a 16% discount for the whole VM. The number of cores or SSD storage is entirely up to you. The offer is only valid for the limited 10 VMs. + +## About the product + +- OS: You can choose from Alpine Linux, Archlinux, CentOS, Debian, Devuan, Fedora, FreeBSD, OpenBSD, Ubuntu +- Number of cores and storage size is up to you +- Monthly subscription +- You can keep the discount as long as the VM is active +- 1 free IPv6 VPN is included +- Full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## Price + +With our advent offer you get to have a 16% discount from the standard pricing. +Our standard pricing can be checked on our websites at [Data Center Light](https://datacenterlight.ch) and [IPv6 only Hosting.](https://ipv6onlyhosting.com) + +## How to order + +You can order by writing to support@datacenterlight.ch from 2020.12.16 until the offer is sold out. Let us know your preferred OS version, and VM size (Core, RAM, SSD) and your public SSH key when ordering. + +Our team will set up the VM in 1 business day and give you the access. + diff --git a/content/u/advent-calendar/17/contents.lr b/content/u/advent-calendar/17/contents.lr new file mode 100644 index 0000000..64c3784 --- /dev/null +++ b/content/u/advent-calendar/17/contents.lr @@ -0,0 +1,115 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Holiday Kit +--- +subtitle: With VIWIB! +--- +headline1: Surprise 17: +--- +headline2: IPv6 Holiday Kit +--- +headline3: with VIWIB +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/advent-17.jpg +--- +content1_image: viwib-holiday.jpg +--- +content1_text: + +## What it is + +Outside is cold, but we have something to warm your heart up with IPv6 for this holiday. Introducing the IPv6 Holiday Kit, with [VIWIB.](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) + +It is the new IPv6 Holiday Kit: VIWIB, IPv6 t-shirt, and 3 IPv6 stickers. + +## 1. VIWIB (VPN IPv6 WiFi IoT Box) + +The VIWIB(https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) is pre-configured with a Wireguard VPN. You can plug in VIWIB and you'll get IPv6 anywhere, anytime. The IPv6 connectivity is provided by +[Data Center Light](https://ungleich.ch/u/projects/data-center-light/). + +VIWIB features + +- Operating System: Linux (OpenWRT) +- Size: 58 x 58 x 25mm +- Weight: 40g +- CPU: MTK7628NN @580Mhz SoC +- Memory: 128MB +- Storage: 16M Flash +- Wifi: 802.11 b/g/n +- Ethernet: 2 ports, up to 100Mbps. +- USB: USB 2.0 +- Power supply: 5V/1A Micro USB +- Power Consumption: <2.75W + +Reguar price: 68 CHF + +## 2. IPv6 t-shirt + +What do you want to wear on your IPv6 holiday? IPv6 T-shirt of course, what else. This cotton t-shirt declares your love for IPv6 on the front: and our IPv6 penguin got your back. (Yes, there is the IPv6 penguin printed on the back!) This shirt will certainly make you smile when you put it on. + +- Material: 100% cotton. +- Size: S, M, -L-(Sold out!), XL (Very few left), 2XL (Very few left) + +The size is on the slimmer side, we advise to take one size up if you like a comfort fit. + +- Limited edition, designed and printed in Switzerland +- Unisex fit. + +Regular price: 50 CHF + +## 3. IPv6 stickers x3 + +Last but not least, we include 3 of our beloved IPv6 stickers in the IPv6 holiday pack. One for your laptop, one for your bike, one for your car. + +- Size: 62mm x 60mm +- Material: Outdoor UV-coated sticker + +Regular price: 12 CHF + +### Bonus: IPv6VPN included + +A free subscription for 1 year is included. This way you can plug in +the VIIRB and just get started with IPv6. + +Regular price: 120 CHF + +## Price + +Our IPv6 holiday kit is only 110 CHF for a limited period while our stock lasts. + +Regular price would be 68 CHF (VIIRB) + 50 CHF (t-shirt) + 12 CHF (stickers) + 120 CHF (VPN) = 250 CHF. You save 140 CHF! + + +## Ordering + +We deliver worldwide. To order the IPv6 Holiday kit with VIWIB, send us an email with your shipping address and your t-shirt size to support -at- ungleich.ch. Our team will get back to you with payment information. + +### Shipping costs + +When you order we will confirm the actual shipping cost before +payment. To Switzerland or to EU, you can pay with credit card on the page below. + +* [Order to Switzerland: +10 CHF](https://datacenterlight.ch/product/ipv6-holiday-ch/) +* [Order to EU: +14 CHF](https://datacenterlight.ch/product/ipv6-holiday-eu/) + +All prices exlude VAT. + +## More options + +Ordering the IPv6 Holiday Kit with VIIRB is also possible. Check this page. + +[Check IPv6 Holiday Kit with VIIRB](https://ungleich.ch/u/products/ipv6-holiday-kit/) + +You have options to include cool add-ons to your holiday kit. Check the add-ons here. + +[VIWIB add-ons](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) diff --git a/content/u/advent-calendar/17/viwib-holiday.jpg b/content/u/advent-calendar/17/viwib-holiday.jpg new file mode 100644 index 0000000..7b90e6a Binary files /dev/null and b/content/u/advent-calendar/17/viwib-holiday.jpg differ diff --git a/content/u/advent-calendar/18/contents.lr b/content/u/advent-calendar/18/contents.lr new file mode 100644 index 0000000..7980dae --- /dev/null +++ b/content/u/advent-calendar/18/contents.lr @@ -0,0 +1,58 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Welcome, VIGIR! +--- +subtitle: Mobile Internet and IPv6 +--- +image: /u/image/cards/advent-18.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Welcome, VIGIR! +--- +headline2: IPv6 enabled +--- +headline3: Mobile Internet Router +--- +content1_image: vigir.jpg +--- +content1_text: + +## The VIGIR + +The [VIGIR](/u/products/vigir/) is the latest addition to the family of +tested IPv6 hardware that includes the IPv6VPN to bring IPv6 +everywhere. The hardware has been tested and pre-configured in +Switzerland. + +## Mobile Internet + IPv6 + +The VIGIR is designed to bring mobile Internet and IPv6 to your home +or office. It contains an LTE Cat 6 modem, 6 antennas, Gigabit +Ethernet and a lot of ports for extensions. + +And as usual, the VIGIR is pre-configured with the +[IPv6VPN](https://IPv6VPN.ch) - so you get your own /48 IPv6 network +with it. + +## Making IPv6 available everywhere + +[Just recently](../welcome-viwib/) we announced the +[VIWIB](/u/products/viwib-ipv6-wifi-box/), a small WiFi enabled IPv6 +router. And originally we started to bring IPv6 everywhere with the +cute [VIIRB](/u/products/viirb-ipv6-box/). Compared to the VIGIR, +these two are a bit more portable and also more affordable. The +[VIGIR](/u/products/vigir/) on the other hand is more professional, +features Gigabit Ethernet and a built in 4G/LTE modem. + +At ungleich we believe that one should use the right tool for the +job. And we hope that the VIGIR will enable some of you with easy to +use, IPv6 enabled Internet. diff --git a/content/u/advent-calendar/18/vigir.jpg b/content/u/advent-calendar/18/vigir.jpg new file mode 100644 index 0000000..397b40e Binary files /dev/null and b/content/u/advent-calendar/18/vigir.jpg differ diff --git a/content/u/advent-calendar/19/contents.lr b/content/u/advent-calendar/19/contents.lr new file mode 100644 index 0000000..ff5dc1f --- /dev/null +++ b/content/u/advent-calendar/19/contents.lr @@ -0,0 +1,68 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6-only Fedora VMs +--- +subtitle: 20% off for 10 limited VMs +--- +image: /u/image/cards/advent-19.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 19: +--- +headline2: 20% off +--- +headline3: Fedora VMs +--- +content1_image: fedora.jpeg +--- +content1_text: + +## IPv6 only, Fedora VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, Fedora VMs for a year with 20% discount. Only available for the fastest 10! Grab it while you can. + +## About the product + +- OS: Fedora +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD is 21 CHF/month +* The price with 20% discount is 16.8 CHF/month +* In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +* Prices exclude VAT + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order Fedora VM for a year with 20% discount + diff --git a/content/u/advent-calendar/19/fedora.jpeg b/content/u/advent-calendar/19/fedora.jpeg new file mode 100644 index 0000000..ab8c0fa Binary files /dev/null and b/content/u/advent-calendar/19/fedora.jpeg differ diff --git a/content/u/advent-calendar/20/contents.lr b/content/u/advent-calendar/20/contents.lr new file mode 100644 index 0000000..ac42b76 --- /dev/null +++ b/content/u/advent-calendar/20/contents.lr @@ -0,0 +1,72 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: VIIRB MAXI PACK +--- +subtitle: So many VIIRBs around here! +--- +image: /u/image/cards/advent-20.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: VIIRB MAXI PACK +--- +headline2: A big discount +--- +headline3: for 5 VIIRB +--- +content1_image: viirb.jpg +--- +content1_text: + +## It's raning VIIRB! + +Do you love our [VIIRB](https://viirb.ungleich.ch) and want to introduce it to your cool club or tech community? We heard your wish, we are introducing the Christmas special VIIRB Maxi Pack: 5 VIIRBs for only 250 CHF! + +The offer is only for a limited stock of 10 Maxi packs. If you have been thinking of doing cool projects with multiple VIIRBs, now is the chance! + +## Ready to rock! + +With this pack you can start right away building your own networks, +test subnetting, teach your children - so many options! + +## What it includes + +- 5 x VIIRB +- 5 x IPv6 VPN subscription for a year included +- 5 x IPv6 stickers + +## Price + +Our VIIRB Maxi Pack is only 250 CHF for 5 VIIRB. + +Regular price would be 58 CHF per VIIRB, 58 x 5 = 290 CHF. You save 40 CHF! + +## Add-ons + +If you want to order additional add-ons to your VIIRB Maxi Pack, we can combine the shipping for you. You can check the availble add-ons on our VIIRB product page. + +[Check VIIRB add-ons](https://viirb.ungleich.ch) + +## Ordering + +We deliver worldwide. To order the VIIRB Maxi Pack, send us an email with your shipping address to support -at- ungleich.ch. Our team will get back to you with payment information. + +### Shipping costs + +When you order we will confirm the actual shipping cost before +payment. To Switzerland or to EU, you can pay with credit card on the page below. + +* Order VIIRB Maxi Pack to Switzerland +* Order VIIRB Maxi Pack to EU with tracked shipping + +All prices exlude VAT. + + diff --git a/content/u/advent-calendar/20/viirb.jpg b/content/u/advent-calendar/20/viirb.jpg new file mode 100644 index 0000000..c79db4e Binary files /dev/null and b/content/u/advent-calendar/20/viirb.jpg differ diff --git a/content/u/advent-calendar/21/contents.lr b/content/u/advent-calendar/21/contents.lr new file mode 100644 index 0000000..4e0e3ce --- /dev/null +++ b/content/u/advent-calendar/21/contents.lr @@ -0,0 +1,55 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Zero Carbon Chat for a whole year +--- +subtitle: Get our Hosted Mattermost with 10% discount. +--- +image: /u/image/cards/advent-21.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 21: +--- +headline2: 10% off +--- +headline3: Hosted Mattermost Chat +--- +content1_image: /u/image/carbonzero-chat.jpg +--- +content1_text: + +## A year of hosted Mattermost chat with 10% discount + +You can order our [Zero Carbon Chat](https://ungleich.ch/u/products/zero-carbon-chat/) plan for a year with 10% discount. Only available for 10 orders, grab it while you can. + +## About the product + +- Hosted Mattermost +- Suitable for MacOS, Linux, Windows, and on mobile and tablet. +- 1 year subscription +- Fully scalable +- Safe data storage protected by Swiss privacy laws +- VM is running with 100% renewable energy (hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +* The standard price for Zero Carbon Chat Light with a VM with 1 Core, 2 GB RAM, 10 GB SSD, 100 GB HDD is one-time 30 CHF for setup, 40 CHF for monthly fee. +* The price with 10% discount: 36 CHF/month +* For the whole year you pay 462 CHF instead of 510 CHF. You save 48 CHF. +* Prices exclude VAT. + +## How to buy it + +You can order from the following link and write us the domain name you want for the chat to support at datacenterlight.ch + +Our team will get in touch with you and setup the Mattermost Chat for you, and give you the access. + +Order a Zero Carbon Chat Light for a year with 10% discount \ No newline at end of file diff --git a/content/u/advent-calendar/22/contents.lr b/content/u/advent-calendar/22/contents.lr new file mode 100644 index 0000000..596d659 --- /dev/null +++ b/content/u/advent-calendar/22/contents.lr @@ -0,0 +1,68 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: OpenBSD for a whole year +--- +subtitle: 20% off for 10 limited VMs +--- +image: /u/image/cards/advent-22.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 22: +--- +headline2: 20% off +--- +headline3: OpenBSD VMs +--- +content1_image: openbsd.jpg +--- +content1_text: + +## IPv6 only, OpenBSD VMs with 20% discount + +We want to enable anyone, anyone with IPv6. We are giving out IPv6 only, OpenBSD VMs for a year with 20% discount. Only available for the fastest 10! Grab it while you can. + +## About the product + +- OS: OpenBSD +- 2 Core, 4 GB RAM, 20 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +- The standard price for IPv6 only VMs with 2 Cores, 4 GB RAM, 20 GB SSD: 21 CHF/month +- The price with 20% discount: 16.8 CHF/month +- In a yearly plan, you pay 201.6 CHF instead of 252 CHF. You save 50.4 CHF. +- Prices exclude VAT + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + + +## How to buy it + +You can order from the following link and send us your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order OpenBSD VM for a year with 20% discount diff --git a/content/u/advent-calendar/22/openbsd.jpg b/content/u/advent-calendar/22/openbsd.jpg new file mode 100644 index 0000000..c75978b Binary files /dev/null and b/content/u/advent-calendar/22/openbsd.jpg differ diff --git a/content/u/advent-calendar/23/contents.lr b/content/u/advent-calendar/23/contents.lr new file mode 100644 index 0000000..422a760 --- /dev/null +++ b/content/u/advent-calendar/23/contents.lr @@ -0,0 +1,87 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Temperature Sensor +--- +subtitle: enabled by VIIRB and VIWIB +--- +image: /u/image/cards/advent-23.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 23: +--- +headline2: IPv6 Temperature +--- +headline3: Sensor +--- +content1_image: ipv6-temp-sensor.jpg +--- +content1_text: + +## IPv6 Temperature Sensor + +We are introducing our IPv6 Temperature Sensor - another cool way to use IPv6 in everyday. With IPv6 Temperature Sensor you can monitor the temperature from anywhere you are via IPv6 directly. The data goes from your security system via [IPv6 VPN](https://ipv6vpn.ch) to you like a charm. + +## About the product + +The IPv6 Temperature Sensor can be used with [VIIRB](https://https://ungleich.ch/u/products/viirb-ipv6-box/) or [VIWIB.](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) + +The package contains the following. + +- 1 USB Temperature Sensor +- 1 VIIRB or VIWIB + +## Ordering + +We deliver worldwide. To order the IPv6 Temperature Sensor with VIIRB or VIWIB, send us an email with your shipping address to support -at- ungleich.ch. Our team will get back to you with payment information. + +## Price + +Our IPv6 Temperature Sensor is only 20 CHF. You can order it as an add-on to VIIRB or VIWIB. + +### Discount + +You can get a discount for buying a set of 5 IPv6 Temperature Sensors. + +- 5 IPv6 Temperature Sensors with VIIRB are 375 CHF, instead of 390 CHF. You save 15 CHF. +- 5 IPv6 Temperature Sensors with VIWIB are 420 CHF, instead of 440 CHF. You save 20 CHF. + +### Shipping costs + +When you order we will confirm the actual shipping cost before +payment. To Switzerland or to EU, you can pay with a credit card on the page below for standard shipping. + +1 IPv6 Temperature Sensor with VIWIB + +* [Order to Switzerland: +10 CHF](https://datacenterlight.ch/product/viwib-temp-sensor-ch/) +* [Order to EU: +14 CHF](https://datacenterlight.ch/product/viwib-temp-sensor-eu/) + +1 IPv6 Temperature Sensor with VIIRB + +* [Order to Switzerland: +10 CHF](https://datacenterlight.ch/product/viirb-temp-sensor-ch/) +* [Order to EU: +14 CHF](https://datacenterlight.ch/product/viirb-temp-sensor-eu/) + +Tracked priority shipping is possible to EU, get in touch with our team with your address and we will let you know the shipping cost. +All prices exlude VAT. + +## More options + +You have options to include cool add-ons to your IPv6 Temperature Sensor and create cool variations. Check the add-ons here. + +* [VIIRB add-ons](https://ungleich.ch/u/products/viirb-ipv6-box/) +* [VIWIB add-ons](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) + + + + + + +--- diff --git a/content/u/advent-calendar/23/ipv6-temp-sensor.jpg b/content/u/advent-calendar/23/ipv6-temp-sensor.jpg new file mode 100644 index 0000000..c802927 Binary files /dev/null and b/content/u/advent-calendar/23/ipv6-temp-sensor.jpg differ diff --git a/content/u/advent-calendar/24/advent.jpg b/content/u/advent-calendar/24/advent.jpg new file mode 100644 index 0000000..c1a387e Binary files /dev/null and b/content/u/advent-calendar/24/advent.jpg differ diff --git a/content/u/advent-calendar/24/contents.lr b/content/u/advent-calendar/24/contents.lr new file mode 100644 index 0000000..e66dfbd --- /dev/null +++ b/content/u/advent-calendar/24/contents.lr @@ -0,0 +1,67 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Christmas VM for a whole year +--- +subtitle: 100 CHF discount for 10 limited VMs +--- +image: /u/image/cards/advent-24.jpg +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Surprise 24: +--- +headline2: 100 CHF off +--- +headline3: Christmas VM +--- +content1_image: advent.jpg +--- +content1_text: + +## IPv4+IPv6 VMs with 100 CHF discount + +We are giving out dual-stack VMs for a year with 100 CHF discount. Only available for the fastest 10! Grab it while you can. + +## About the product + +- OS: You can choose from anything we offer. The available options are Alpine Linux, Archlinux, CentOS, Debian, Devuan, Fedora, FreeBSD, OpenBSD, Ubuntu +- 4 Core, 8 GB RAM, 40 GB SSD +- 1 year subscription +- 1 free IPv6 VPN is included +- full control over rDNS +- VM is running with 100% renewable energy(hydropower) in our [datacenter](https://datacenterlight.ch) in Glarus, Switzerland. + +## The discount + +- The standard price for dual-stack VMs with 4 Cores, 8 GB RAM, 40 GB SSD is 59 CHF/month. The yearly plan is 708 CHF. +- The Christmas VM for a year is 608 CHF. You save 100 CHF. +- Prices exclude VAT + +## Scalable + +What if you want to scale the VM, or want to attach IPv4 address? You can scale your VM anytime or add HDD storage with our standard rate. You can drop a mail to our support and our team will help you. + +* 1 CPU: 3 CHF/month +* 1 GB RAM: 4 CHF/month +* 10 GB SSD: 3.5 CHF/month +* 100 GB HDD: 1.5 CHF/month +* Prices exclude VAT. + + +## How to buy it + +You can order from the following link and send us your preferred OS version and your public SSH key to support-at-datacenterlight.ch + +Our team will set up the VM in 1 business day and give you the access. + +The payment link is visible as long as the deal is available. + +Order Christmas VM for a year with 100 CHF discount diff --git a/content/u/advent-calendar/contents.lr b/content/u/advent-calendar/contents.lr new file mode 100644 index 0000000..fc48991 --- /dev/null +++ b/content/u/advent-calendar/contents.lr @@ -0,0 +1,6 @@ +_model: offers +--- +title: IPv6 Advent Calendar 2020 +--- +subtitle: Dec 1st - 24th, everyday a new surprise is revealed. +--- diff --git a/content/u/blog/2020-the-year-of-ipv6/contents.lr b/content/u/blog/2020-the-year-of-ipv6/contents.lr new file mode 100644 index 0000000..2b60523 --- /dev/null +++ b/content/u/blog/2020-the-year-of-ipv6/contents.lr @@ -0,0 +1,109 @@ +title: 2020 is the year of IPv6 +--- +pub_date: 2020-08-07 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +IPv6 is beginning to take off in 2020 +--- +body: + +When is IPv6 beginning to matter? When is IPv6 taking off? These are +questions that we debate in the IPv6 community at meetings, online and offline. + +For us, 2020 has already become the year of IPv6, even way before it +is ending. + +## IPv6 traffic reached more than 33% (1/3) of traffic to Google + +According to Google, IPv6 search traffic already exceeds 33%: + +![](/u/image/google-ipv6-2020-08-07.png) + +The recent growth this year is also attributed to more people working +from home, where IPv6 is already more present than in business +connections. + +33% - this is clearly not yet 100%, however it means that every third +search request is made using IPv6. + +## Some countries passed the 50% IPv6 deployment status + +[India](https://stats.labs.apnic.net/ipv6/IN), +[Belgium](https://stats.labs.apnic.net/ipv6/BE), +[the US](https://stats.labs.apnic.net/ipv6/US) and +[Malaysia](https://stats.labs.apnic.net/ipv6/MY) - all of them have +passed the 50% IPv6 deployment mark. **India even surpassed the 70% +mark!** + +And [Greece](https://stats.labs.apnic.net/ipv6/GR) and +[Germany](https://stats.labs.apnic.net/ipv6/DE) are not far from +passing the 50% mark (while we in +[Switzerland](https://stats.labs.apnic.net/ipv6/CH) only passed the +40% mark...). + +In other words: if you are living or travelling to the above countries, +you have a good chance of getting IPv6 - and it's growing. + +## IPv6 community is active and growing + +At the moment there are so many cool IPv6 projects and communities +around, more active than we have ever seen before. +Let us list some projects/communities we are aware of: + +* [IPv6 Buzz](https://packetpushers.net/series/ipv6-buzz/) + by Ed Horley, Scott Hogg, and Tom Coffeen +* [The IPv6 Chat on Matrix and IRC](/u/projects/ipv6-chat/) +* [The APNIC blog](https://blog.apnic.net/) +* [RIPE labs](https://labs.ripe.net/) +* [IPv6 on Reddit](https://www.reddit.com/r/ipv6/) +* [Afrinic is offering education](https://learn.afrinic.net/) +* [The IPv6 blog](https://ipv6.blog/) is a community maintained link + collection - add your IPv6 resources there! +* [#IPv6 on Twitter](https://twitter.com/search?q=%23ipv6) + +.. and probably many more! Did we miss a community? Just [let us know about it](/u/contact/). + +![](/u/image/nico-ripe79.jpeg) + +## IPv6 hardware/software support improving + +For many years we have been watching IPv6 support in (network) +hardware and open source software. And while not every everything is +fixed, many pain points have been solved. +And the great thing is, even if your network equipment does not work with IPv6 nicely, +a lot of equipment can now be made IPv6 usable just by flashing +[OpenWRT](https://openwrt.org/). + + +## IPv6 everywhere + +You might have heard the claims of our CEO, [Nico + Schottelius](https://twitter.com/NicoSchottelius), + that [you can have IPv6 + everywhere](https://twitter.com/RobbieMitch/status/1183731875292037121). + +This year at ungleich we released the +[VIIRB](u/products/viirb-ipv6-box/), the world's smallest IPv6 +router. + +![](/u/image/viirb-strawberry.jpeg) + +This device is so easy and so small that you really don't have an +excuse for not having IPv6: power it on, plug it into an IPv4 only +network: all devices in your network have IPv6 via autoconfiguration. + +## IPv6 in 2020 + +So in 2020, you can go out, connect yourself anywhere with IPv6, talk +about it with everybody and get your software up and running easily. +Oh, and if you think it is just us, we are not the only ones +who think [the attitude towards IPv6 +changed!](https://blog.apnic.net/2020/08/03/ipv4-ipv6-and-a-sudden-change-in-attitude/). diff --git a/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/contents.lr b/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/contents.lr new file mode 100644 index 0000000..f35b214 --- /dev/null +++ b/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/contents.lr @@ -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. diff --git a/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/metalcase.jpg b/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/metalcase.jpg new file mode 100644 index 0000000..ce8aad4 Binary files /dev/null and b/content/u/blog/2021-08-31-datacenterlight-bye-bye-netboot/metalcase.jpg differ diff --git a/content/u/blog/36c3/contents.lr b/content/u/blog/36c3/contents.lr index 5bc7bb1..929ce6f 100644 --- a/content/u/blog/36c3/contents.lr +++ b/content/u/blog/36c3/contents.lr @@ -57,7 +57,7 @@ It makes perfect sense and we could have written the above criterion for ourselv ## Slack VS. Mattermost -XR is using [Mattermost](www.mattermost.com), the same as [our chat](https://chat.ungleich.ch), for mobilising and organising 475 teams of national and local branches. Unlike XR, ungleich chat moved away from Slack earlier and first went to Rocketchat, before eventually settling down[TM] to Mattermost. Rocketchat also has a user-friendly interface and is Open Source, but we decided to move due to instability caused by MongoDB. +XR is using [Mattermost](www.mattermost.com), the same as [our chat](https://chat.with.ungleich.ch), for mobilising and organising 475 teams of national and local branches. Unlike XR, ungleich chat moved away from Slack earlier and first went to Rocketchat, before eventually settling down[TM] to Mattermost. Rocketchat also has a user-friendly interface and is Open Source, but we decided to move due to instability caused by MongoDB. The following points were considered by XR when moving away from Slack to Mattermost. - UI similarity to Slack: had to get thousands off Slack, fast diff --git a/content/u/blog/DRAFT-2020-incompatible-without-ipv6/contents.lr b/content/u/blog/DRAFT-2020-incompatible-without-ipv6/contents.lr new file mode 100644 index 0000000..a97cbe3 --- /dev/null +++ b/content/u/blog/DRAFT-2020-incompatible-without-ipv6/contents.lr @@ -0,0 +1,49 @@ +title: 2020 incompatible: without IPv6 +--- +pub_date: 2020-10-16 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +2020 is the year of IPv6 - are you ready for it? +--- +body: + +## TL;DR + +As of 2020-10-16 we will start to label software and hardware that is not fully IPv6 compatible +as "2020 incompatible". And we encourage everyone to join. + +## Background + +Latest with the [exhaustion of IPv4 space at +RIPE](https://www.ripe.net/publications/news/about-ripe-ncc-and-ripe/the-ripe-ncc-has-run-out-of-ipv4-addresses), +it has become a necessity to switch to IPv6 in 2020. + +Additionally IPv4 address have become a very scarce and expensive +resource. Not only in buying the actual addresses, but also to keep +the legacy IP stack active and maintained. + +## 2020: Switching to IPv6 only networks + +Running dual stack networks is not feasible, because you do not profit +from the advantages of IPv6, but suffer from complexity in your +network. + +Dual stack networks also limit the scope of IPv6 implementation, as +layouts are orientated on legacy network designs. So in a nutshell: If +you want to make your life easier and your operations less cost +intensive, you switch to IPv6 only networks. + +## Blocker for the IPv6 only migration + +We argue that there is no practical blocker anymore for moving to IPv6 +only networks, because even reachability from the IPv4 Internet can +easily be achieved using [IPv4-to-IPv6 +proxies](/u/products/ipv4-to-ipv6-proxy/) or diff --git a/content/u/blog/DRAFT-3y-ungleich/contents.lr b/content/u/blog/DRAFT-3y-ungleich/contents.lr new file mode 100644 index 0000000..b7f561a --- /dev/null +++ b/content/u/blog/DRAFT-3y-ungleich/contents.lr @@ -0,0 +1,87 @@ +title: 3y of ungleich +--- +pub_date: 2020-10-16 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: yes +--- +_discoverable: no +--- +abstract: +2020 is the year of IPv6 - are you ready for it? +--- +body: + +## TL; DR + +For once there is no TL;DR, but we wish you a happy reading. + +## What is ungleich? + +A question that I am asked at every conference is, "what is ungleich"? +Literally translated to English it means "not equal" or +"different". And that describes our approach to things pretty well. + +Because ungleich is not one company. Matter of fact, ungleich is at +least two companies: Originally ungleich was incorporated in 2013 as +ungleich GmbH (llc). In 2017 we decided to found ungleich glarus ltd, +to make it easier for investors to join our efforts to build a +sustainable data center in the middle of the Swiss mountains. + +But even that does not describe ungleich very well. Because ungleich +is actually a movement. + +## Sustainability and IPv6 + +We are basically doing two things at ungleich: we foster +sustainability. And we foster sustainability. To be more precise, we +are deeply engaded into environmental and technical +sustainability. And none of this would be possible without the +community that is surrounding us. + +## TDD is the past - CDD is now + +Some years ago in the software development world "TDD" (test driven +development/design) was a big hype and shifted the mindset towards +verified software. Proof ("test") that your software does, what you +intent it to do. + +At ungleich we use this approach to some degree. However much more in +the focus is CDD - community driven development. Let me elaborate a +bit, because this is one of the most important things, if not the most +important part of being at ungleich. + +## Living and working in the Swiss mountains + +ungleich is not by accident based +[in the middle of the Swiss +mountains](https://www.openstreetmap.org/#map=17/46.92599/8.99964&layers=N). No, +our home, leisure and work place is in the middle of the Digital +Glarus valley. Why? Glarus used to be a place of textile +companies. Nowadays, these companies have moved on to other place. So +what is still here? An excellent view +([checkout the pictures on +twitter](https://twitter.com/DigitalGlarus), many nice places and +great Internet connectivity. When we incorporated the ungleich glarus +ltd., to build a place for people like us, who like to work in the +nature, but also need a proper technical environment. We started in +2017 in one location and in 2020 we are present in four location +(Schwanden, Linthal, Luchsingen, Diesbach). Together with other other +people and companies who have become close friends over the +years. Together with people who did not ever hear about Glarus before +meeting us. Together, we are building a new home for those loving +nature and wanting to work in a great environment. + +## + +At ungleich we see mainly + +Coming from a German speaking con +## 3 years of ungleich glarus ag + + + +You might not know it, but diff --git a/content/u/blog/DRAFT-blocking-source-address-spoofing/contents.lr b/content/u/blog/DRAFT-blocking-source-address-spoofing/contents.lr new file mode 100644 index 0000000..63e3460 --- /dev/null +++ b/content/u/blog/DRAFT-blocking-source-address-spoofing/contents.lr @@ -0,0 +1,26 @@ +title: Blocking Source Address Spoofing +--- +pub_date: 2020-10-23 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: yes +--- +_discoverable: no +--- +abstract: +Let's not let the wrong packets in. +--- +body: + +## TL;DR + +Effective 2020-10-23 we drop source address spoofed packets in Data +Center Light. + +## Introduction + +We have received a very helpful hint from a group of researchers that +spoofed packets from our own diff --git a/content/u/blog/DRAFT-how-to-suport-opensource/contents.lr b/content/u/blog/DRAFT-how-to-suport-opensource/contents.lr index 8a859bf..fa2a0a6 100644 --- a/content/u/blog/DRAFT-how-to-suport-opensource/contents.lr +++ b/content/u/blog/DRAFT-how-to-suport-opensource/contents.lr @@ -27,4 +27,4 @@ for a free IPv6-VM and free IPv6-VPN. You can get in touch with us via * email: info at ungleich.ch -* chat: [chat.ungleich.ch](https://chat.ungleich.ch) +* chat: [chat.with.ungleich.ch](https://chat.with.ungleich.ch) diff --git a/content/u/blog/an-alternative-to-annoying-phone-hotlines/contents.lr b/content/u/blog/an-alternative-to-annoying-phone-hotlines/contents.lr new file mode 100644 index 0000000..b5fdb20 --- /dev/null +++ b/content/u/blog/an-alternative-to-annoying-phone-hotlines/contents.lr @@ -0,0 +1,154 @@ +title: An alternative to annoying phone hotlines +--- +pub_date: 2020-11-29 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Making technologies improve our life +--- +body: + +## The phone hotline + +If you have a problem with your contract, if you want to have some +information about your product or you just want to change some +detail. By default, many companies nowadays offer something that we +call "hotline". Or in other words: a voice based communication that +allows to easily queue people. + +The motivation and how it works is rather clear: there are a finite +number of employees, each of which can only talk to one person at a +time. So if the number of requests is more than number of employees, +then you are stuck in the queue. However this post is not about the +annoyance of waiting in a queue and enduring little quality, down +sampled classic music pieces. + +No, in this post I want to address a different fundamental problem: +every time you call, you start a fresh conversation. You are likely to +talk to a different person with a different background and probably +not much knowledge of your situation. From a customer perspective you +usually don't have any trail of previous communication. Actually, the +company you are calling might record (and correctly announce it +before) the call. However as a customer, you cannot easily record as +well. Often it is also impossible to correspond with the company by +email, so all written communication has to be sent in letters. In +2020! + +Looking at it this way clearly shows how much power imbalance the +innovation of the phone hotline is causing. But it could easily be +different. + + +## The classic way + +You might or might not remember when companies used to be smaller and +you would request a service with the counterpart in person. Both of +you know each other and are fully aware of each other responsibilities +("I give you money, you give me a product or service") and also of the +support process (A: "It did not work" - B: "I'll fix it!). +Often the service provider was not far away, might even have been my +neighbour. And it's really not good for our relationship if my +neighbour does do what he promised to do. + +As you can easily imagine this does not scale nor work easily in big +companies where staff is rotated or fluctuating. The old value system +of being responsible on a personal basis cannot easily be +transferred. This also means that the classic way is much more +expensive in terms of time and resources, but the responsibilities are +enforced by social relationships. + +## Mixing the two? + +So we could say that they are two extremes: one very personal, high +quality, expensive and the other - well, you get the picture. Is it +possible to improve the current situation and how can we get the best +of the two worlds? Before answering this question, let me give you a +short background of where we, ungleich, are and how we work, to show +you how these approaches can naturally merge. + + +## ungleich @ Digital Glarus + +ungleich is based in [Digital Glarus](/u/projects/digital-glarus/), +a really old mountain valley in Switzerland. Majority of its buildings +are very old (I'd guess most are built prior to 1900, many even much +older), major businesses are industry, farming and also tourism. Many +people here get up before 6 and start working latest by 8. + +We from ungleich on the other hand are working in IPv6 only +networks connected by our own fiber or with long range wifi links. Our +working hours are very flexible, can be morning, day, night, week, +weekend - we are free to choose. Our topics are very technical by +nature. + +These two approaches can contradict, but they can also work together +very well. Like the two ways of communication. + +Interestingly our experience here is that they can easily be combined: +many people living in Digital Glarus have what we call an "old value +system". If you offer a service towards people in Digital Glarus, you +need to take responsibility and be trustworthy. Otherwise the word +will get out within a few days and social enforcement will result in +no more work for you. +While this might sound cruel, you could actually call this "social +quality assurance". Actually a bit similar to what we see in social +media, just lower scale. + +And how does this look like in reality? People here want and need to +be convinced that you are trustworthy. You are having in +person meetings (before corona), one person will make a protocol and then later send +it for verification back to the other party. If something is noted +incorrectly, the protocol will be amended and again verified. + +This ensures that trust is built and also that both parties, the +delivering company as well as the customer are playing on eye level. + +## Combining old values and new communication + +Let's come back to the original problem: we shifted from high quality, +individual services to mass produced in-transparent +communication. Technically and organisational, it is not necessary to +provide a worse product or service if it is mass produced. It just +happens to be the case due to technical limitations in the beginning. + +So let's go back to the hotline problem: we advocate a simple change +that costs little for companies to implement but restores trust and +quality in communication: + +**Every support hotline should be, by default, accompanied by a text based +ticketing system that sends users a protocol and let's them interact +with you on a text basis.** + +So how does this work? The agent in the call center will make notes of +the phone call - they are already done nowadays, but unavailable for +you. Some of these notes might be internal ("The customer does not +know the difference between the power button and the reset button - +always advise to push the button on the right") and are not for +sharing. However, **the key points of the conversation must be sent to +the customer**. This way, as a customer I can easily react and correct +statements that have been incorrectly recorded. With a trail. + +Furthermore in a later stage, as a customer, I also have a trail and +the ability to respond to the previous conversation by text, giving me +the opportunity to add to the trail. And to built trust on the way. + +Obviously, our suggestion here is not rocket science. In fact, it is a +very easy, natural and cost effective measure to be more transparent +and to built mutual trust. + +Some companies might try to argue that it is too complex or too +expensive to implement such a system. To prevent that argument from +being true, we have added a [Hosted Support +System](/u/products/hosted-support-system/) to our product +list. Nobody needs to get it from us, but anybody can. And thus there +is no excuse, not to have it implemented. It is a very similar +[approach to not have an excuse for not having +IPv6](/u/products/ipv6-vpn/), but that is a story for +another day... diff --git a/content/u/blog/an-alternative-to-annoying-phone-hotlines/phone.jpg b/content/u/blog/an-alternative-to-annoying-phone-hotlines/phone.jpg new file mode 100644 index 0000000..2747ba8 Binary files /dev/null and b/content/u/blog/an-alternative-to-annoying-phone-hotlines/phone.jpg differ diff --git a/content/u/blog/chat-app-of-2021/contents.lr b/content/u/blog/chat-app-of-2021/contents.lr new file mode 100644 index 0000000..223b099 --- /dev/null +++ b/content/u/blog/chat-app-of-2021/contents.lr @@ -0,0 +1,277 @@ +title:The chat app of 2021 +--- +pub_date: 2021-02-09 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Why we use Matrix and things to consider for choosing a chat app +--- +body: + +## Introduction + +At this point we've all seen many chat apps - some very popular and +some not. Some very secure and some not. Some very centralised and +some not. The difficult thing when choosing a chat app is that the +most important differences are not something you can intuitively find +out. That is more a question of how each chat app was designed from +the beginning. + +What we are going to do in this post is that we will talk about what +we have used as chat so far and why, and we will discuss what you need +to consider when making a decision for yourself. What are the +differences between the chat apps out there, and what do those +differences mean to their end-users? + +## About us + +Each community or individual has a different need for the chat and +what's best for others does not necessarily mean that's going to be +the best for you. Before starting we want to give you an idea about +who we are. + +- Our team is rather deeply into technology probably more than most people. +- The age of our chat users is somewhere between 18-55 (with minor exceptions). +- Many of our chat users are working with laptops for a big part of the day. +- Most of our chat users are comfortable using English for communication. +- Our chat users are about 80 % male and 20 % female. +- A big part of our community values sustainability and the environment +- A big part of us is interested in software with its code publicly open - in other words, open source. + +The evolution of our chat was really finding what fits us the best. We +have started our team chat at Slack many years ago, then we moved to +Rocketchat, and then we moved to Mattermost. While keeping Mattermost +running, we started our Matrix instance on the side. We have gradually +moved more to Matrix over time and now have most of our main +conversations in Matrix. There were reasons for each of our moves, we +will explain them below. + +![](/u/image/ungleich-chat-evolution.jpg) + +## What we based our decisions on + +### Work chat + +We (ungleich) are a company working with Free and Open Source and +Linux. Our work happens around many text information and we have many +parallel projects shared with people from different timezones. This +requires our chat to be as efficient and organised as possible, so +that everybody can get their work done and collaborate easily. This +was the reason why we were initially landing in Slack which has an +interface suitable for our work life. Apps designed for more casual, +mobile use such as Telegram and Signal did not fit our need. + +### Self-hosted + +We need to mention that for a Swiss company like ourselves +[that physically runs our servers with local hydropower,](https://datacenterlight.ch/en-us/cms/hydropower/) we knew +that it is senseless to have our chat somewhere in the U.S. (whose +privacy laws are more relaxed than ours) run by servers with fossil fuels. + +![](/u/image/security-class.jpg) + +That's why we soon moved away from Slack to chats that we can host on +our own. We first moved to Rocketchat, and although the transition was +easy and smooth at the beginning its mobile version was not as smooth +as we liked it to be at that time and our team would miss getting +messages often while on the run between different data center +locations. + +After spending some time with Rocketchat we moved to [self-hosted +Mattermost](https://ungleich.ch/u/products/zero-carbon-chat/) looking for a more stable experience. With its robust +performance and friendly UI (that we still think is one of the best +out there), our team became quite happy with Mattermost. + +### Decentralised + +You might have noticed that we are not the most typical company: +renewable-only energy driven Linux, FOSS and IPv6 aficionados in the +Alps. This means we attract quite some people who have a lot of +stories and chats to share with us. More and more over the time it +became clear that our work chat is not only for our internal work - +but it's also for a community chat, a community with very diverse +backgrounds for that matter. Hobby computer lovers, mountain lovers, +hackers and makers, climate activists, penguin lovers, you name it. + +![](/u/image/ungleich-community.jpg) + +While happily staying on Mattermost we started to receive requests +from our community for enabling our chat to be more decentralised: +meaning not all the chat data staying in our server only +(centralisation), but enabling others to connect from their servers +too (decentralisation). + +This was a fair request and we knew it was the right way to go. As a +solution we started to phase in Matrix into our chat - we first +started it as a side chat from our main channels in Mattermost. + +Over time we moved most of our conversations to it, while keeping +Mattermost on the side. Using Matterbridge to bridge between the two +chats, this dual system has been working quite well, and it is +especially useful when one of the instances experiences downtime. + +## What you should consider when choosing a team chat + +Above was our specific case and you probably have a different use for +the chat app. Should you consider Matrix? Mattermost? Or Slack? Some +questions need to be answered first to see what your requirements are. + +### 1. Workspace or SMS + +This depends on what your use case is. Are you looking for a secure +version of SMS, or are you looking for an organised place for +different groups and tasks to be handled? The former fits the use case +of Threema, Signal, Telegram, Whatsapp, and the latter is better handled +by Slack, Mattermost, Rocketchat, and Matrix. + +![](/u/image/chat-usecase.jpg) + +### 2. Can you be anonymous + +This is closely linked to the #1, because the chat apps that function +as SMS replacement such as Signal, Telegram, Whatsapp, need a phone +number to work. So if staying anonymous is an important factor for you +this is something you want to consider in choosing a chat. For using +Matrix or Mattermost you do not need a phone number, and in the case +of Matrix you do not even need an email address that can identify you. + +### 3. Where is the chat server + +This is something most people don't think about: the physical location +of the servers where the chat is running. It mostly becomes a crucial +question in two ways. + +One is if you face the possibility of having to deal with +authorities - then you need to know which law will apply in case +you are being investigated. + +Two is if you care for the environmental and ethical impact of your +servers, such as [what kind of energy source is being used and what is +the ethical stance of the +hosters.](https://ungleich.ch/en-us/cms/blog/2019/06/28/how-run-really-green-datacenter/) + +![](/u/image/environment-chat.jpg) + +The ability to decide where your servers will physically be, either by +running the server by yourself or by somebody you can trust is a big +difference between some chat apps and others. Chats that offer home +servers, self-hosted options such as Matrix or Mattermost give you the +ability to choose, and any chat app that does not, locks you in the +choice of the chat provider. + +### 4. Decentralised or centralised + +Does all of our conversation only go to one company or to one country, or +can it be in the different small or big streams everywhere and be +independently open to each other? Most chats out there are the former, +and federated chats are the latter. + +Say there's a special house where everybody goes to for communication, +and you have to go there whenever you want to talk to anybody, and the +conversation stays only in that house. Anybody who wants to say +anything to anybody, has to go into this house. Doesn't it sound +really strange? That's what most chats are. + +![](/u/image/decentralised-chat.jpg) + +But what if we can stay in our own home and call each other and still +can have a conversation? And the conversation does not only stay in +one house, but in everybody's house when it's their own +conversation? That's more like how Matrix imagined how chats should +work. + +This is the single most standout identity of Matrix, that it has +built-in federation. Means you can stay on your chat and go to other +Matrix instance and talk to them. + +### 5. Are you into the latest, hottest technology + +It might sound silly but it is still an important factor for a lot of +early adopters and people who just gotta have their hands on the +latest groundbreaking stuff (*cough*). This is it. Matrix is the hottest +chat system of 2021 and hands down the most innovative project amongst +all the chat apps out there because of its federation and security +design. + +## The baselines that you shouldn't compromise + +A lot of us brush off the topic of privacy thinking "But *I* don't have +anything to hide." but it is not that simple. Even though you might +not have anything to hide now, people who you have a conversation with +might have a very different stance and you affect them with your +choices. + +Using a chat app for communication involves the privacy of everybody +in your network - family, friends, colleagues, and more. That's why +whatever chat you choose, there should be some baselines you shouldn't +compromise. These are what we think is important in choosing which +chat to use in 2021. + +## The baseline 1: End-to-End Encrypted + +As a very base your chat should be End-to-End Encrypted (E2EE). E2EE +means even when the 3rd party (including law enforcement or the +hosting company itself) snoops into the chat data, they will just see +a series of useless encrypted texts that can not be decrypted. + +![](/u/image/encrypted.jpg) + +Not all chats have proper E2EE and especially not all chats have it as +default. Matrix has E2EE as a default for example, and Telegram does +not. It works quite the opposite way in fact: disabling E2EE has to be +manually opted in Matrix, whereas enabling E2EE can be done only by +choosing "Secret Chat" Function in Telegram. + +## The baseline 2: Not collecting your data + +Even when the chat app can not read your conversation thanks to the +encryption, some chats do access a lot of other information, such as +with whom you are talking to for how often and for how long ("meta +data"). We tend to focus on not revealing the content of our +chat and to forget that the other information can be collected while +being unnoticed. + +Whatsapp is a particularly risky choice for this reason, because it +belongs to Facebook whose entire business model relies on collecting +user information for monetisation. + +## The baseline 3: Is the code open for public + +The thing about closed code is that nobody outside the chat app +company can see how and what is built in the chat. Is it having some +back doors users are unaware of, is it monitoring the user activity +without letting the user know, with closed code we will never know. + +So for a chat (or any software for that matter) to be claimed secure, +its code has to be open for the public, so unbiased third parties can +review its sanity. If you think about it, it's quite simple - no +system can achieve robust integrity without transparency. + +![](/u/image/penguin-customer-support.jpg) + +## Try it yourself + +When it comes to technology, the best approach is trying it +yourself. Our ungleich chat, both Matrix and Mattermost, are open for +anybody to join: we heartily invite you to give it a try. Create an +account, join rooms, say hi and ask questions you might have. + +We claim our chat is one of the safest places to try a chat app you +are not sure about yet - it does not collect your data, it does not +need your phone number, it runs on 100% renewable energy. + +* [Try our Matrix](https://chat.with.ungleich.ch) +* [Get in touch with ungleich](/u/contact/) + +More about us and Matrix + +* [Matrix for Climate](https://ungleich.ch/en-us/cms/matrix-for-climate/) +* [ungleich open infrastructure:MaaS](https://redmine.ungleich.ch/projects/open-infrastructure/wiki/Ungleich_Matrix-as-a-Service_(MaaS) +* [The Matrix foundation](https://matrix.org/foundation/) diff --git a/content/u/blog/chat-app-of-2021/laptop.jpg b/content/u/blog/chat-app-of-2021/laptop.jpg new file mode 100644 index 0000000..0782fbd Binary files /dev/null and b/content/u/blog/chat-app-of-2021/laptop.jpg differ diff --git a/content/u/blog/coronavirus-chat-francais/contents.lr b/content/u/blog/coronavirus-chat-francais/contents.lr new file mode 100644 index 0000000..2d05ea5 --- /dev/null +++ b/content/u/blog/coronavirus-chat-francais/contents.lr @@ -0,0 +1,71 @@ +title: Chat Francophone à propos du Coronavirus (COVID-19) +--- +pub_date: 2020-03-22 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +--- +body: + +## Version courte: + +* Va à l'adresse https://account.ungleich.ch et créé-toi un nouveau compte +* Vérifie ta messagerie (y.c. le spam ;-) et valide ton adresse e-mail +* Va à l'adresse https://matrix.ungleich.ch et connecte-toi avec ton nouveau compte +* Dans le champ texte, copie /join #covid-19-fr:ungleich.ch +* Tu peux désormais échanger avec d'autres francophones depuis chez toi ou en isolement + +## Gardons le contact malgré la distanciation sociale + +En cette période de pandémie, il est important que nous gardions une +certaine distance entre personnes et que nous ne nous infections pas +mutuellement, afin de ne pas surcharger nos systèmes de santé. Afin de +maintenir le contact malgré l'isolement, nous mettons à disposition le +canal ouvert #covid-19-fr:ungleich.ch pour les échanges d'idées, +d'informations et simplement de contact social + +## Pourquoi pas Whatsapp, Facebook ou similaire? + +Il y a un gros problème avec Whatsapp, Facebook, Telegram, Signal, +Threema, etc.: Ce sont tous des systèmes fermés. Quelqu'un qui n'est +que sur Whatsapp ne peut pas communiquer avec quelqu'un qui n'utilise +que Telegram. Le chat Matrix est construit différemment: il est +ouvert et accessible à des utilisateurs de différents systèmes +Matrix. Il est aussi possible d'intégrer des groupes d'autres systèmes +comme Telegram ou Whatsapp. + +## Comment ça fonctionne? + +Tu peux créer ton propre compte sur https://account.ungleich.ch. Tu +recevras un email pour vérifier et valider ton compte, que tu devras +approuver. Une fois ceci fait, tu pourras te connecter sur +https://matrix.ungleich.ch. Pour rejoindre le groupe francophone +consacré au nouveau coronavirus, tape simplement +**/join #covid-19-fr:ungleich.ch** Il y a également un groupe germanophone: +**#covid-19-de:ungleich.ch** avec son manuel: +https://ungleich.ch/u/blog/deutschsprachiger-coronavirus-chat/. +Et un anglophone: **#covid-19:ungleich.ch** et son manuel: +https://ungleich.ch/u/blog/work-from-home-work-remote-with-matrix/ + +## Avoir son propre serveur de chat pour une entreprise + +Ce chat est gratuit et publiquement disponible. Si tu as besoin de ton propre +système pour ton organisation, tu peux le commander à cette address: +https://ungleich.ch/u/products/hosted-matrix-chat/. Ceci te permet de +gérer toi-même tes utilisateurs. Si tu veux simplement discuter avec +tes amis et ta famille, tu peux simplement utiliser le service gratuit +https://matrix.ungleich.ch + +## Coronavirus + +C'est à nous tous de limiter les conséquences du Coronavirus. Ceci ne +se fera que si nous faisons tous attention, que nous gardons nos +distances et que nous nous lavons les mains régulièrement. Participez +et aidez votre prochain! Merci d'avoir lu jusqu'ici! diff --git a/content/u/blog/coronavirus-chat-korean-hangul/contents.lr b/content/u/blog/coronavirus-chat-korean-hangul/contents.lr new file mode 100644 index 0000000..5eff73e --- /dev/null +++ b/content/u/blog/coronavirus-chat-korean-hangul/contents.lr @@ -0,0 +1,32 @@ +title: 코로나바이러스 챗 (한국어) +--- +pub_date: 2020-03-22 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +코로나 시대를 살아가는 경험을 공유하세요. +--- +body: + +## 밖에 안나가고 바깥 세상과 디지털로 연결하기 + +* https://account.ungleich.ch 에서 계정 만들기 (무료) +* 계정 생성 확인 이메일 받기 +* https://matrix.ungleich.ch 로 가서 새로 만든 계정으로 로그인하기 +* **/join #covid-19-kr:ungleich.ch** 바이러스와 관련된 얘기하기 +* 사람들과 소통하세요. 당신은 혼자가 아닙니다. +* 원하면 새로운 챗방을 만들수 있습니다 +* 계속 집에 계세요. + +## 코로나바이러스, 재택근무, 정신줄 챙기기 + +코로나는 많은 사람들의 생각과 행동, 근무방식을 바꾸고 있습니다. 자발적으로든 강제적으로든 재택근무하게되신 여러분, 그래도 세상과 소통하고 싶으실거예요. 동료들 또는 다른 나라에서 같은 처치에 처한 분들과요. + +집에 계세요. 하지만 우리는 연결되어 있죠. diff --git a/content/u/blog/coronavirus-chats/contents.lr b/content/u/blog/coronavirus-chats/contents.lr new file mode 100644 index 0000000..f4e04af --- /dev/null +++ b/content/u/blog/coronavirus-chats/contents.lr @@ -0,0 +1,27 @@ +title: List of Coronavirus (COVID19) Chats +--- +pub_date: 2020-03-22 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +List of coronavirus chats +--- +body: + +Instead of meeting in person, you can chat with others about your +coronavirus thoughts. It is available in the following languages: + +* [Auf Deutsch](/u/blog/deutschsprachiger-coronavirus-chat/) **#covid-19-de:ungleich.ch** +* [In English](/u/blog/work-from-home-work-remote-with-matrix/) **#covid-19:ungleich.ch** +* [En Français](/u/blog/coronavirus-chat-francais/) **#covid-19-fr:ungleich.ch** +* [한국어](/u/blog/coronavirus-chat-korean-hangul/) **#covid-19-kr:ungleich.ch** + +All channels are available via the open Matrix chat and can be joined +with an account from any Matrix server. Details can be found in the links. diff --git a/content/u/blog/datacenterlight-active-active-routing/contents.lr b/content/u/blog/datacenterlight-active-active-routing/contents.lr new file mode 100644 index 0000000..994815c --- /dev/null +++ b/content/u/blog/datacenterlight-active-active-routing/contents.lr @@ -0,0 +1,162 @@ +title: Active-Active Routing Paths in Data Center Light +--- +pub_date: 2019-11-08 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: no +--- +abstract: + +--- +body: + +From our last two blog articles (a, b) you probably already know that +it is spring network cleanup in [Data Center Light](https://datacenterlight.ch). + +In [first blog article]() we described where we started and in +the [second blog article]() you could see how we switched our +infrastructure to IPv6 only netboot. + +In this article we will dive a bit more into the details of our +network architecture and which problems we face with active-active +routers. + +## Network architecture + +Let's have a look at a simplified (!) diagram of the network: + +... IMAGE + +Doesn't look that simple, does it? Let's break it down into small +pieces. + +## Upstream routers + +We have a set of **upstream routers** which work stateless. They don't +have any stateful firewall rules, so both of them can work actively +without state synchronisation. Moreover, both of them peer with the +data center upstreams. These are fast routers and besides forwarding, +they also do **BGP peering** with our upstreams. + +Over all the upstream routers are very simple machines, mostly running +bird and forwarding packets all day. They also provide a DNS service +(resolving and authoritative), because they are always up and can +announce service IPs via BGP or via OSPF to our network. + +## Internal routers + +The internal routers on the other hand provide **stateful routing**, +**IP address assignments** and **netboot services**. They are a bit +more complicated compared to the upstream routers, but they care only +a small routing table. + +## Communication between the routers + +All routers employ OSPF and BGP for route exchange. Thus the two +upstream routers learn about the internal networks (IPv6 only, as +usual) from the internal routers. + +## Sessions + +Sessions in networking are almost always an evil. You need to store +them (at high speed), you need to maintain them (updating, deleting) +and if you run multiple routers, you even need to sychronise them. + +In our case the internal routers do have session handling, as they are +providing a stateful firewall. As we are using a multi router setup, +things can go really wrong if the wrong routes are being used. + +Let's have a look at this a bit more in detail. + +## The good path + +IMAGE2: good + +If a server sends out a packet via router1 and router1 eventually +receives the answer, everything is fine. The returning packet matches +the state entry that was created by the outgoing packet and the +internal router forwards the packet. + +## The bad path + +IMAGE3: bad + +However if the + +## Routing paths + +If we want to go active-active routing, the server can choose between +either internal router for sending out the packet. The internal +routers again have two upstream routers. So with the return path +included, the following paths exist for a packet: + +Outgoing paths: + +* servers->router1->upstream router1->internet +* servers->router1->upstream router2->internet +* servers->router2->upstream router1->internet +* servers->router2->upstream router2->internet + +And the returning paths are: + +* internet->upstream router1->router 1->servers +* internet->upstream router1->router 2->servers +* internet->upstream router2->router 1->servers +* internet->upstream router2->router 2->servers + +So on average, 50% of the routes will hit the right router on +return. However servers as well as upstream routers are not using load +balancing like ECMP, so once an incorrect path has been chosen, the +packet loss is 100%. + +## Session synchronisation + +In the first article we talked a bit about keepalived and that +it helps to operate routers in an active-passive mode. This did not +turn out to be the most reliable method. Can we do better with +active-active routers and session synchronisation? + +Linux supports this using +[conntrackd](http://conntrack-tools.netfilter.org/). However, +conntrackd supports active-active routers on a **flow based** level, +but not on a **packet** based level. The difference is that the +following will not work in active-active routers with conntrackd: + +``` +#1 Packet (in the original direction) updates state in Router R1 -> + submit state to R2 +#2 Packet (in the reply direction) arrive to Router R2 before state + coming from R1 has been digested. + +With strict stateful filtering, Packet #2 will be dropped and it will +trigger a retransmission. +``` +(quote from Pablo Neira Ayuso, see below for more details) + +Some of you will mumble something like **latency** in their head right +now. If the return packet is guaranteed to arrive after state +synchronisation, then everything is fine, However, if the reply is +faster than the state synchronisation, packets will get dropped. + +In reality, this will work for packets coming and going to the +Internet. However, in our setup the upstream routers are route between +different data center locations, which are in the sub micro second +latency area - i.e. lan speed, because they are interconnected with +dark fiber links. + + +## Take away + +Before moving on to the next blog article, we would like to express +our thanks to Pablo Neira Ayuso, who gave very important input for +session based firewalls and session synchronisation. + +So active-active routing seems not to have a straight forward +solution. Read in the [next blog +article](/u/blog/datacenterlight-redundant-routing-infrastructure) on +how we solved the challenge in the end. diff --git a/content/u/blog/datacenterlight-ipv6-only-netboot/contents.lr b/content/u/blog/datacenterlight-ipv6-only-netboot/contents.lr new file mode 100644 index 0000000..a2fbd73 --- /dev/null +++ b/content/u/blog/datacenterlight-ipv6-only-netboot/contents.lr @@ -0,0 +1,219 @@ +title: IPv6 only netboot in Data Center Light +--- +pub_date: 2021-05-01 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +How we switched from IPv4 netboot to IPv6 netboot +--- +body: + +In our [previous blog +article](/u/blog/datacenterlight-spring-network-cleanup) + we wrote about our motivation for the +big spring network cleanup. In this blog article we show how we +started reducing the complexity by removing our dependency on IPv4. + +## IPv6 first + +When you found our blog, you are probably aware: everything at +ungleich is IPv6 first. Many of our networks are IPv6 only, all DNS +entries for remote access have IPv6 (AAAA) entries and there are only +rare exceptions when we utilise IPv4 for our infrastructure. + +## IPv4 only Netboot + +One of the big exceptions to this paradigm used to be how we boot our +servers. Because our second big paradigm is sustainability, we use a +lot of 2nd (or 3rd) generation hardware. We actually share this +passion with our friends from +[e-durable](https://recycled.cloud/), because sustainability is +something that we need to employ today and not tomorrow. +But back to the netbooting topic: For netbooting we mainly +relied on onboard network cards so far. + +## Onboard network cards + +We used these network cards for multiple reasons: + +* they exist virtually in any server +* they usually have a ROM containing a PXE capable firmware +* it allows us to split real traffic to fiber cards and internal traffic + +However using the onboard devices comes also with a couple of disadvantages: + +* Their ROM is often outdated +* It requires additional cabling + +## Cables + +Let's have a look at the cabling situation first. Virtually all of +our servers are connected to the network using 2x 10 Gbit/s fiber cards. + +On one side this provides a fast connection, but on the other side +it provides us with something even better: distances. + +Our data centers employ a non-standard design due to the re-use of +existing factory halls. This means distances between servers and +switches can be up to 100m. With fiber, we can easily achieve these +distances. + +Additionally, have less cables provides a simpler infrastructure +that is easier to analyse. + +## Disabling onboard network cards + +So can we somehow get rid of the copper cables and switch to fiber +only? It turns out that the fiber cards we use (mainly Intel X520's) +have their own ROM. So we started disabling the onboard network cards +and tried booting from the fiber cards. This worked until we wanted to +move the lab setup to production... + +## Bonding (LACP) and VLAN tagging + +Our servers use bonding (802.3ad) for redundant connections to the +switches and VLAN tagging on top of the bonded devices to isolate +client traffic. On the switch side we realised this using +configurations like + +``` +interface Port-Channel33 + switchport mode trunk + mlag 33 + +... +interface Ethernet33 + channel-group 33 mode active +``` + +But that does not work, if the network ROM at boot does not create an +LACP enabled link on top of which it should be doing VLAN tagging. + +The ROM in our network cards **would** have allowed VLAN tagging alone +though. + +To fix this problem, we reconfigured our switches as follows: + +``` +interface Port-Channel33 + switchport trunk native vlan 10 + switchport mode trunk + port-channel lacp fallback static + port-channel lacp fallback timeout 20 + mlag 33 +``` + +This basically does two things: + +* If there are no LACP frames, fallback to static (non lacp) + configuration +* Accept untagged traffic and map it to VLAN 10 (one of our boot networks) + +Great, our servers can now netboot from fiber! But we are not done +yet... + +## IPv6 only netbooting + +So how do we convince these network cards to do IPv6 netboot? Can we +actually do that at all? Our first approach was to put a custom build of +[ipxe](https://ipxe.org/) on a USB stick. We generated that +ipxe image using **rebuild-ipxe.sh** script +from the +[ungleich-tools](https://code.ungleich.ch/ungleich-public/ungleich-tools) +repository. Turns out using a USB stick works pretty well for most +situations. + +## ROMs are not ROMs + +As you can imagine, the ROM of the X520 cards does not contain IPv6 +netboot support. So are we back at square 1? No, we are not. Because +the X520's have something that the onboard devices did not +consistently have: **a rewritable memory area**. + +Let's take 2 steps back here first: A ROM is an **read only memory** +chip. Emphasis on **read only**. However, modern network cards and a +lot of devices that support on-device firmware do actually have a +memory (flash) area that can be written to. And that is what aids us +in our situation. + +## ipxe + flbtool + x520 = fun + +Trying to write ipxe into the X520 cards initially failed, because the +network card did not recognise the format of the ipxe rom file. + +Luckily the folks in the ipxe community already spotted that problem +AND fixed it: The format used in these cards is called FLB. And there +is [flbtool](https://github.com/devicenull/flbtool/), which allows you +to wrap the ipxe rom file into the FLB format. For those who want to +try it yourself (at your own risk!), it basically involves: + +* Get the current ROM from the card (try bootutil64e) +* Extract the contents from the rom using flbtool +* This will output some sections/parts +* Locate one part that you want to overwrite with iPXE (a previous PXE + section is very suitable) +* Replace the .bin file with your iPXE rom +* Adjust the .json file to match the length of the new binary +* Build a new .flb file using flbtool +* Flash it onto the card + +While this is a bit of work, it is worth it for us, because...: + +## IPv6 only netboot over fiber + +With the modified ROM, basically loading iPXE at start, we can now +boot our servers in IPv6 only networks. On our infrastructure side, we +added two **tiny** things: + +We use ISC dhcp with the following configuration file: + +``` +option dhcp6.bootfile-url code 59 = string; + +option dhcp6.bootfile-url "http://[2a0a:e5c0:0:6::46]/ipxescript"; + +subnet6 2a0a:e5c0:0:6::/64 {} +``` + +(that is the complete configuration!) + +And we used radvd to announce that there are other information, +indicating clients can actually query the dhcpv6 server: + +``` +interface bond0.10 +{ + AdvSendAdvert on; + MinRtrAdvInterval 3; + MaxRtrAdvInterval 5; + AdvDefaultLifetime 600; + + # IPv6 netbooting + AdvOtherConfigFlag on; + + prefix 2a0a:e5c0:0:6::/64 { }; + + RDNSS 2a0a:e5c0:0:a::a 2a0a:e5c0:0:a::b { AdvRDNSSLifetime 6000; }; + DNSSL place5.ungleich.ch { AdvDNSSLLifetime 6000; } ; +}; +``` + +## Take away + +Being able to reduce cables was one big advantage in the beginning. + +Switching to IPv6 only netboot does not seem like a big simplification +in the first place, besides being able to remove IPv4 in server +networks. + +However as you will see in +[the next blog posts](/u/blog/datacenterlight-active-active-routing/), +switching to IPv6 only netbooting is actually a key element on +reducing complexity in our network. diff --git a/content/u/blog/datacenterlight-redundant-routing-infrastructure/contents.lr b/content/u/blog/datacenterlight-redundant-routing-infrastructure/contents.lr new file mode 100644 index 0000000..c0ce350 --- /dev/null +++ b/content/u/blog/datacenterlight-redundant-routing-infrastructure/contents.lr @@ -0,0 +1,222 @@ +title: Redundant routing infrastructure at Data Center Light +--- +pub_date: 2021-05-01 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: no +--- +abstract: + +--- +body: + +In case you have missed the previous articles, you can +get [an introduction to the Data Center Light spring +cleanup](/u/blog/datacenterlight-spring-network-cleanup), +see [how we switched to IPv6 only netboot](/u/blog/datacenterlight-ipv6-only-netboot) +or read about [the active-active routing +problems](/u/blog/datacenterlight-active-active-routing/). + +In this article we will show how we finally solved the routing issue +conceptually as well as practically. + +## Active-active or passive-active routing? + +In the [previous blog article](/u/blog/datacenterlight-active-active-routing/) +we reasoned that active-active routing, even with session +synchronisation does not have a straight forward solution in our +case. However in the +[first blog article](/u/blog/datacenterlight-spring-network-cleanup) +we reasoned that active-passive routers with VRRP and keepalived are +not stable enough either + +So which path should we take? Or is there another solution? + +## Active-Active-Passive Routing + +Let us introduce Active-Active-Passive routing. Something that sounds +strange in the first place, but is going to make sense in the next +minutes. + +We do want multiple active routers, but we do not want to have to +deal with session synchronisation, which is not only tricky, but due +to its complexity can also be a source of error. + +So what we are looking for is active-active routing without state +synchronisation. While this sounds like a contradiction, if we loosen +our requirement a little bit, we are able to support multiple active +routers without session synchronisation by using **routing +priorities**. + +## Active-Active routing with routing priorities + +Let's assume for a moment that all involved hosts (servers, clients, +routers, etc.) know about multiple routes for outgoing and incoming +traffic. Let's assume also for a moment that **we can prioritise** +those routes. Then we can create a deterministic routing path that +does not need session synchronisation. + +## Steering outgoing traffic + +Let's have a first look at the outgoing traffic. Can we announce +multiple routers in a network, but have the servers and clients +**prefer** one of the routers? The answer is yes! +If we checkout the manpage of +[radvd.conf(5)](https://linux.die.net/man/5/radvd.conf) we find a +setting that is named **AdvDefaultPreference** + +``` +AdvDefaultPreference low|medium|high +``` + +Using this attribute, two routers can both actively announce +themselves, but clients in the network will prefer the one with the +higher preference setting. + +### Replacing radvd with bird + +At this point a short side note: We have been using radvd for some +years in the Data Center Light. However recently on our +[Alpine Linux based routers](https://alpinelinux.org/), radvd started +to crash from time to time: + +``` +[717424.727125] device eth1 left promiscuous mode +[1303962.899600] radvd[24196]: segfault at 63f42258 ip 00007f6bdd59353b sp 00007ffc63f421b8 error 4 in ld-musl-x86_64.so.1[7f6bdd558000+48000] +[1303962.899609] Code: 48 09 c8 4c 85 c8 75 0d 49 83 c4 08 eb d4 39 f0 74 0c 49 ff c4 41 0f b6 04 24 84 c0 75 f0 4c 89 e0 41 5c c3 31 c9 0f b6 04 0f <0f> b6 14 0e 38 d0 75 07 48 ff c1 84 c0 75 ed 29 d0 c3 41 54 49 89 +... +[1458460.511006] device eth0 entered promiscuous mode +[1458460.511168] radvd[27905]: segfault at 4dfce818 ip 00007f94ec1fd53b sp 00007ffd4dfce778 error 4 in ld-musl-x86_64.so.1[7f94ec1c2000+48000] +[1458460.511177] Code: 48 09 c8 4c 85 c8 75 0d 49 83 c4 08 eb d4 39 f0 74 0c 49 ff c4 41 0f b6 04 24 84 c0 75 f0 4c 89 e0 41 5c c3 31 c9 0f b6 04 0f <0f> b6 14 0e 38 d0 75 07 48 ff c1 84 c0 75 ed 29 d0 c3 41 54 49 89 +... +``` + +Unfortunately it seems that either the addresses timed out or that +radvd was able to send a message de-announcing itself prior to the +crash, causing all clients to withdraw their addresses. This is +especially problematic, if you run a [ceph](https://ceph.io/) cluster +and the servers don't have IP addresses anymore... + +While we did not yet investigate the full cause of this, we had a very +easy solution: as all of our routers run +[bird](https://bird.network.cz/) and it also supports sending router +advertisements, we replaced radvd with bird. The configuration is +actually pretty simple: + +``` +protocol radv { + # Internal + interface "eth1.5" { + max ra interval 5; # Fast failover with more routers + other config yes; # dhcpv6 boot + default preference high; + }; + rdnss { + lifetime 3600; + ns 2a0a:e5c0:0:a::a; + ns 2a0a:e5c0:0:a::b; + }; + dnssl { + lifetime 3600; + domain "place5.ungleich.ch"; + }; +} +``` + + +## Steering incoming traffic + +As the internal and the upstream routers are in the same data center, +we can use an IGP like OSPF to distribute the routes to the internal +routers. And OSPF actually has this very neat metric called **cost**. +So for the router that sets the **default preference high** for the +outgoing routes, we keep the cost at 10, for the router that +ses the **default preference low** we set the cost at 20. The actual +bird configuration on a router looks like this: + +``` +define ospf_cost = 10; +... + +protocol ospf v3 ospf6 { + instance id 0; + + ipv6 { + import all; + export none; + }; + + area 0 { + interface "eth1.*" { + authentication cryptographic; + password "weshouldhaveremovedthisfortheblogpost"; + cost ospf_cost; + }; + }; +} +``` + +## Incoming + Outgoing = symmetric paths + +With both directions under our control, we now have enabled symmetric +routing in both directions. Thus as long as the first router is alive, +all traffic will be handled by the first router. + +## Failover scenario + +In case the first router fails, clients have a low life time of 15 +seconds (3x **max ra interval**) +for their routes and they will fail over to the 2nd router +automatically. Existing sessions will not continue to work, but that +is ok for our setup. When the first router with the higher priority +comes back, there will be again an interruption, but clients will +automatically change their paths. + +And so will the upstream routers, as OSPF is a quick protocol that +updates alive routers and routes. + + +## IPv6 enables active-active-passive routing architectures + +At ungleich it almost always comes back to the topic of IPv6, albeit +for a good reason. You might remember that we claimed in the +[IPv6 only netboot](/u/blog/datacenterlight-ipv6-only-netboot) article +that this is reducing complexity? If you look at the above example, +you might not spot it directly, but going IPv6 only is actually an +enabler for our setup: + +We **only deploy router advertisements** using bird. We are **not using DHCPv4** +or **IPv4** for accessing our servers. Both routers run a dhcpv6 +service in parallel, with the "boot server" pointing to themselves. + +Besides being nice and clean, +our whole active-active-passive routing setup **would not work with +IPv4**, because dhcpv4 servers do not have the same functionality to +provide routing priorities. + +## Take away + +You can see that trying to solve one problem ("unreliable redundant +router setup") entailed a slew of changes, but in the end made our +infrastructure much simpler: + +* No dual stack +* No private IPv4 addresses +* No actively communicating keepalived +* Two daemons less to maintain (keepalived, radvd) + +We also avoided complex state synchronisation and deployed only Open +Source Software to address our problems. Furthermore hardware that +looked like unusable in modern IPv6 networks can also be upgraded with +Open Source Software (ipxe) and enables us to provide more sustainable +infrastructures. + +We hope you enjoyed our spring cleanup blog series. The next one will +be coming, because IT infrastructures always evolve. Until then: +feel free to [join our Open Soure Chat](https://chat.with.ungleich.ch) +and join the discussion. diff --git a/content/u/blog/datacenterlight-report-2021-03-15/contents.lr b/content/u/blog/datacenterlight-report-2021-03-15/contents.lr new file mode 100644 index 0000000..ef08ce5 --- /dev/null +++ b/content/u/blog/datacenterlight-report-2021-03-15/contents.lr @@ -0,0 +1,88 @@ +title: Data Center Light Report 2021-03-15 +--- +pub_date: 2021-03-15 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +Report of the state of Data Center Light +--- +body: + +In this report we reveal the partial network outage that happened +2021-03-15 between ca. 1700 and 1736 in place6. + +## 1700: router reconfiguration + +At 17:00:45 a planned, regular reconfiguration of two firewall/routing +systems was applied. + +## 1702: outage detection + +A few minutes later our team noticed that some virtualisation hosts +became unreachable. + +## 1702..1733: staff gathering and remote analysis + +Our staff is working in multiple locations (place5, place6, place7, +place10) and our core team agreed to meet onsite. During this time we +discovered that all routers are reachable, but all virtualisation +servers are unreachable. There was no power outage, no switch +reconfiguration, no visible network loops. + +## 1733..1736: onsite debugging and problem solution + +Onsite we discovered that the backup router had configuration error in +the keepalived configuration that prevented restarting the keepalived +process. As keepalived is only manually restarted, this bug was not +spotted until we tried switching traffic to the backup router. + +After this bug was discovered and consequently the patch applied to +the production router, restarting the keepalived process on the main +router restored network connectivity. + +## Post mortem + +Just after the problem solution we continued investigating, as the +virtualisation infrastructure should continue working without this +specific set of routers. The affected routers are only used for +routing and firewalling servers, but do not pass the traffic of VMs. + +However these routers are responsible for assigning addresses via +router advertisements to all servers with the software *radvd*. + +Radvd is by default disabled on the routers and only started by +keepalived, if the router is the main router (based on the VRRP +protocol). So when we restarted keepalived, it would also restart +radvd. And from what we can see, radvd on the main router started +crashing recently: + +``` +[20853563.567958] radvd[14796]: segfault at 47b94bc8 ip 00007f042397d53b sp 00007ffd47b94b28 error 4 in ld-musl-x86_64.so.1[7f0423942000+48000] +``` + +Thus restarting keepalived triggered a restart of radvd, which then in +turn restored connectivity of the servers. We are not fully aware +which router advertisements were sent prior to the crash (because we +don't log network traffic), but there is an option for radvd to +announce that the router is leaving the network and clients should +remove their IP addresses. + +We also have seen that the servers logged an outage in the ceph +cluster, which is likely due to the loss of IP addresses in the +storage cluster, again due to the crash of radvd. That again caused +VMs to have stale I/O. + +## Follow up + +Our monitoring so far did not monitor whether or not one radvd process +was running, which might have led to faster resolution of this +incident. We will add a new expression to our monitoring that "there +is one radvd process running on either of the two routers" to get a +better insight in the future. diff --git a/content/u/blog/datacenterlight-spring-network-cleanup/contents.lr b/content/u/blog/datacenterlight-spring-network-cleanup/contents.lr new file mode 100644 index 0000000..073b4b1 --- /dev/null +++ b/content/u/blog/datacenterlight-spring-network-cleanup/contents.lr @@ -0,0 +1,161 @@ +title: Data Center Light: Spring network cleanup +--- +pub_date: 2021-05-01 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +From today on ungleich offers free, encrypted IPv6 VPNs for hackerspaces +--- +body: + +## Introduction + +Spring is the time for cleanup. Cleanup up your apartment, removing +dust from the cabinet, letting the light shine through the windows, +or like in our case: improving the networking situation. + +In this article we give an introduction of where we started and what +the typical setup used to be in our data center. + +## Best practice + +When we started [Data Center Light](https://datacenterlight.ch) in +2017, we orientated ourselves at "best practice" for networking. We +started with IPv6 only networks and used RFC1918 network (10/8) for +internal IPv4 routing. + +And we started with 2 routers for every network to provide +redundancy. + +## Router redundancy + +So what do you do when you have two routers? In the Linux world the +software [keepalived](https://keepalived.org/) +is very popular to provide redundant routing +using the [VRRP protocol](https://en.wikipedia.org/wiki/Virtual_Router_Redundancy_Protocol). + +## Active-Passive + +While VRRP is designed to allow multiple (not only two) routers to +co-exist in a network, its design is basically active-passive: you +have one active router and n passive routers, in our case 1 +additional. + +## Keepalived: a closer look + +A typical keepalived configuration in our network looked like this: + +``` +vrrp_instance router_v4 { + interface INTERFACE + virtual_router_id 2 + priority PRIORITY + advert_int 1 + virtual_ipaddress { + 10.0.0.1/22 dev eth1.5 # Internal + } + notify_backup "/usr/local/bin/vrrp_notify_backup.sh" + notify_fault "/usr/local/bin/vrrp_notify_fault.sh" + notify_master "/usr/local/bin/vrrp_notify_master.sh" +} + +vrrp_instance router_v6 { + interface INTERFACE + virtual_router_id 1 + priority PRIORITY + advert_int 1 + virtual_ipaddress { + 2a0a:e5c0:1:8::48/128 dev eth1.8 # Transfer for routing from outside + 2a0a:e5c0:0:44::7/64 dev bond0.18 # zhaw + 2a0a:e5c0:2:15::7/64 dev bond0.20 # + } +} +``` + +This is a template that we distribute via [cdist](https:/cdi.st). The +strings INTERFACE and PRIORITY are replaced via cdist. The interface +field defines which interface to use for VRRP communication and the +priority field determines which of the routers is the active one. + +So far, so good. However let's have a look at a tiny detail of this +configuration file: + +``` + notify_backup "/usr/local/bin/vrrp_notify_backup.sh" + notify_fault "/usr/local/bin/vrrp_notify_fault.sh" + notify_master "/usr/local/bin/vrrp_notify_master.sh" +``` + +These three lines basically say: "start something if you are the +master" and "stop something in case you are not". And why did we do +this? Because of stateful services. + +## Stateful services + +A typical shell script that we would call containes lines like this: + +``` +/etc/init.d/radvd stop +/etc/init.d/dhcpd stop +``` +(or start in the case of the master version) + +In earlier days, this even contained openvpn, which was running on our +first generation router version. But more about OpenVPN later. + +The reason why we stopped and started dhcp and radvd is to make +clients of the network use the active router. We used radvd to provide +IPv6 addresses as the primary access method to servers. And we used +dhcp mainly to allow servers to netboot. The active router would +carry state (firewall!) and thus the flow of packets always need to go +through the active router. + +Restarting radvd on a different machine keeps the IPv6 addresses the +same, as clients assign then themselves using EUI-64. In case of dhcp +(IPv4) we would have used hardcoded IPv4 addresses using a mapping of +MAC address to IPv4 address, but we opted out for this. The main +reason is that dhcp clients re-request their same leas and even if an +IPv4 addresses changes, it is not really of importance. + +During a failover this would lead to a few seconds interrupt and +re-establishing sessions. Given that routers are usually rather stable +and restarting them is not a daily task, we initially accepted this. + +## Keepalived/VRRP changes + +One of the more tricky things is changes to keepalived. Because +keepalived uses the *number of addresses and routes* to verify +that the received VRRP packet matches its configuration, adding or +deleting IP addresses and routes, causes a problem: + +While one router was updated, the number of IP addresses or routes is +different. This causes both routers to ignore the others VRRP messages +and both routers think they should be the master process. + +This leads to the problem that both routers receive client and outside +traffic. This causes the firewall (nftables) to not recognise +returning packets, if they were sent out by router1, but received back +by router2 and, because nftables is configured *stateful*, will drop +the returning packet. + +However not only changes to the configuration can trigger this +problem, but also any communication problem between the two +routers. Since 2017 we experienced it multiple times that keepalived +was unable to receive or send messages from the other router and thus +both of them again became the master process. + +## Take away + +While in theory keepalived should improve the reliability, in practice +the number of problems due to double master situations we had, made us +question whether the keepalived concept is the fitting one for us. + +You can read how we evolved from this setup in +[the next blog article](/u/blog/datacenterlight-ipv6-only-netboot/). diff --git a/content/u/blog/deutschsprachiger-coronavirus-chat/contents.lr b/content/u/blog/deutschsprachiger-coronavirus-chat/contents.lr new file mode 100644 index 0000000..a4b7d3e --- /dev/null +++ b/content/u/blog/deutschsprachiger-coronavirus-chat/contents.lr @@ -0,0 +1,83 @@ +title: Deutschsprachiger Coronavirus (COVID19) Chat +--- +pub_date: 2020-03-22 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Wo man sich über den Virus austauschen kann +--- +body: + + +## Wie es funktioniert in Kürze + +* Gehe auf https://account.ungleich.ch und erzeuge einen neuen Account +* Schaue in Deine Inbox, verifiziere Deine E-Mail +* Gehe auf https://matrix.ungleich.ch und melde Dich mit Deinem + Benutzernamen an +* In dem Textfeld gib **/join #covid-19-de:ungleich.ch** ein +* Nun kannst Du Dich mit anderen austauschen, auch wenn Du zuhause + oder isoliert bist + + +## Kontakt trotz sozialer Distanz + +In Zeiten des Coronavirus ist es wichtig, dass wir Abstand zueinander +halten und uns nicht gegenseitig infizieren, damit unser +Gesundheitssystem nicht überlastet. + +Damit wir in der Isolation trotzdem Kontakt miteinander haben können, +stellen den offenen Kanal **#covid-19-de:ungleich.ch** zum Austausch +zur Verfügung. + +## Warum nicht Whatsapp, Facebook oder ähnliches? + +Es gibt 1 grosses Probleme bei Whatsapp, Facebook, Telegram, Signal, +Threema und co.: + +Es sind alles geschlossene Systeme. Jemand der nur auf Whatsapp ist, +kann nicht mit jemanden von Telegram kommunizieren. + +Der Matrix-Chat ist anders: er ist offen und man kann sich mit +Teilnehmern von verschiedenen Matrix-Systemen unterhalten. Und man +kann Gruppen von anderen Systemen wie Telegram oder Whatsapp einbinden. + +## Wie es funktioniert + +Du kannst Dir einen Account auf https://account.ungleich.ch +anlegen. Danach bekommst Du eine E-Mail, die Du bestätigen musst. +Nachdem der Account erstellt ist, kannst Du Dich auf +https://matrix.ungleich.ch anmelden. Um dann mit anderen zum Thema +Coronavirus zu sprechen, tippe **/join #covid-19-de:ungleich.ch** +ein. + +Für Englischsprachige Personen gibt es bereits den internationalen +Chat **#covid-19:ungleich.ch**, mit einer [englischen +Anleitung](/u/blog/work-from-home-work-remote-with-matrix/). + +## Eigene Chat-Server für Firmen + +Der Chat ist kostenlos und öffentlich verfügbar. Wenn Du einen eigenen +Chat brauchst für Deine Organisation, +kannst Du diesen auf der [Hosted Matrix +Chat](/u/products/hosted-matrix-chat/) Webseite bestellen. Dies +ermöglicht Dir, selber Deine Benutzer zu verwalten. + +Falls Du jedoch nur mit Deinen Freunden und Familie Dich unterhalten +willst, kannst Du einfach kostenlos den Dienst auf +https://matrix.ungleich.ch benutzen. + +## Coronavirus + +Es liegt an uns allen, die Folgen des Coronavirus zu begrenzen. Dies +passiert nur, wenn wir alle Vorsicht walten lassen und Abstand zu +anderen halten und die Hände häufig waschen. + +Macht mit und helft allen anderen. Danke fürs Lesen! diff --git a/content/u/blog/emacs-server-the-smart-way/contents.lr b/content/u/blog/emacs-server-the-smart-way/contents.lr new file mode 100644 index 0000000..80bb967 --- /dev/null +++ b/content/u/blog/emacs-server-the-smart-way/contents.lr @@ -0,0 +1,143 @@ +title: Emacs server the fun way +--- +pub_date: 2020-04-23 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Let's dive into a very nice emacs feature +--- +body: + +Today I want to talk about how amazing emacs is. Not because it is the +most feature complete operating system out there or because +[it fully emulates vi/vim](https://github.com/emacs-evil/evil). +No, because emacs has a very nice feature called **emacs server**. + +## What's an emacs server? + +If emacs is not an operating system, at least emacs stands for +"**e**ight **m**egabytes **a**nd **c**onstantly **s**wapping", doesn't +it? (This is actually from times where 8 megabytes were quite a lot of +memory) + +So why do people make fun of emacs and how is it related to the emacs +server? +Emacs, like any other operating system, loads a lot of things at +startup. In my case this is initialising +[org-mode](https://orgmode.org/), starting my mail client, calculating +my agenda view to tell me what to do today. + +An emacs server creates a special emacs process that listens on a +socket for connecting to it. This way the initialisation is already +done before you connect to it and all +configurations are already loaded. This is the actual "slow" part of +emacs. And is a bit similar to starting python, which also needs to +load its libraries at start. + +With the emacs server running, you can connect to it using the +**emacsclient** program. + +As a matter of fact, +[rxvt-unicode](http://software.schmorp.de/pkg/rxvt-unicode.html) also +knows about a server mode (checkout the manpage, look for +**urxvtd -q -f -o**). For rxvt-unicode, you'd use **urxvtc** to +connect to it. So quite simlar. + +## What is so cool about the emacs server? + +Saving a lot of response time and making working with emacs **feel** +much faster is the obvious advantage. However, there is a much bigger +one: + +With the emacs server, you can connect to it from the terminal **and** X +Window. Because the emacs server also manages the buffers ("open +files" for non-emacs users), you can view the same open file from the +terminal or an x window. + +## Turning the notebook into a server + +As you might know, we at ungleich are pretty much into IPv6. So all of +our devices are generally speaking world-wide reachable. Our work +notebooks are no exception from that. In fact, most notebooks even +have their own [/48 IPv6 network assigned via +VPN](/u/products/ipv6-vpn/). + +So if I am away from my notebook, but need to check my open (and +potentially unsaved) notes or view my emails, I can use any other +computer, ssh to my notebook and type **emacslient -nw** in the +terminal. + +While my regular emacs is running as an X11 window, I can select, +display and work in all buffers that I have previously opened in the +emacs server. In the terminal, on a remote computer. + +## How to configure your system to use the emacs server + +In my case I start the emacs server when I start X11 in my .xinitrc: + +``` +eval $(ssh-agent) +... +urxvtd -q -f -o +emacs --daemon +... +``` + +Instead of running emacs --daemon, you can also use **M-x +server-start** in a running emacs process. + +And because I always want to have my mail client open, just after I start +i3, I have i3 launch the following command: + +``` +ssh-add is intentionally omitted. + +That paragraph links to a bug registered at w3.org (see next chapter). + + +## IPv6 link local address support at w3.org + +At [w3.org](https://www.w3.org/) there is a +bug titled +[Support IPv6 link-local +addresses?](https://www.w3.org/Bugs/Public/show_bug.cgi?id=27234#c2) +that is set to status **RESOLVED WONTFIX**. It is closed basically +based on the following statement from Ryan Sleevi: + +``` +Yes, we're especially not keen to support these in Chrome and have +repeatedly decided not to. The platform-specific nature of +makes it difficult to impossible to validate the well-formedness of +the URL (see https://tools.ietf.org/html/rfc4007#section-11.2 , as +referenced in 6874, to fully appreciate this special hell). Even if we +could reliably parse these (from a URL spec standpoint), it then has +to be handed 'somewhere', and that opens a new can of worms. + +Even 6874 notes how unlikely it is to encounter these in practice - + "Thus, URIs including a + ZoneID are unlikely to be encountered in HTML documents. However, if + they do (for example, in a diagnostic script coded in HTML), it would + be appropriate to treat them exactly as above." + +Note that a 'dumb' parser may not be sufficient, as the Security Considerations of 6874 note: + "To limit this risk, implementations MUST NOT allow use of this format + except for well-defined usages, such as sending to link-local + addresses under prefix fe80::/10. At the time of writing, this is + the only well-defined usage known." + +And also + "An HTTP client, proxy, or other intermediary MUST remove any ZoneID + attached to an outgoing URI, as it has only local significance at the + sending host." + +This requires a transformative rewrite of any URLs going out the +wire. That's pretty substantial. Anne, do you recall the bug talking +about IP canonicalization (e.g. http://127.0.0.1 vs +http://[::127.0.0.1] vs http://012345 and friends?) This is +conceptually a similar issue - except it's explicitly required in the +context of that the not be emitted. + +There's also the issue that zone_id precludes/requires the use of APIs +that user agents would otherwise prefer to avoid, in order to +'properly' handle the zone_id interpretation. For example, Chromium on +some platforms uses a built in DNS resolver, and so our address lookup +functions would need to define and support 's and map them to +system concepts. In doing so, you could end up with weird situations +where a URL works in Firefox but not Chrome, even though both +'hypothetically' supported 's, because FF may use an OS +routine and Chrome may use a built-in routine and they diverge. + +Overall, our internal consensus is that 's are bonkers on +many grounds - the technical ambiguity (and RFC 6874 doesn't really +resolve the ambiguity as much as it fully owns it and just says +#YOLOSWAG) - and supporting them would add a lot of complexity for +what is explicitly and admittedly a limited value use case. +``` + +This bug references the Mozilla Firefox bug above and +[RFC3986 (replaced by RFC +6874)](https://datatracker.ietf.org/doc/html/rfc6874#section-2). + +## IPv6 link local address support in Chrome / Chromium + +On the chrome side there is a +[huge bug +report](https://bugs.chromium.org/p/chromium/issues/detail?id=70762) +which again references a huge number of other bugs that try to request +IPv6 link local support, too. + +The bug was closed by cbentzel@chromium.org stating: + +``` +There are a large number of special cases which are required on core +networking/navigation/etc. and it does not seem like it is worth the +up-front and ongoing maintenance costs given that this is a very +niche - albeit legitimate - need. +``` + +The bug at chromium has been made un-editable so it is basically +frozen, besides people have added suggestions to the ticket on how to +solve it. + +## Work Arounds + +### IPv6 link local connect hack + +Peter has [documented on the IPv6 link local connect +hack](https://website.peterjin.org/wiki/Snippets:IPv6_link_local_connect_hack) +to make firefox use **fe90:0:[scope id]:[IP address]** to reach +**fe80::[IP address]%[scope id]**. Checkout his website for details! + +### IPv6 hack using ip6tables + +Also from Peter is the hint that you can also use newer iptable +versions to achieve a similar mapping: + +"On modern Linux kernels you can also run + +```ip6tables -t nat -A OUTPUT -d fef0::/64 -j NETMAP --to fe80::/64``` + +if you have exactly one outbound interface, so that fef0::1 translates +to fe80::1" + +Thanks again for the pointer! + +## Other resources + +If you are aware of other resources regarding IPv6 link local support +in browsers, please join the [IPv6.chat](https://IPv6.chat) and let us +know about it. diff --git a/content/u/blog/isnt-it-too-late-to-build-a-datacenter/contents.lr b/content/u/blog/isnt-it-too-late-to-build-a-datacenter/contents.lr index 113dcf4..a6d983a 100644 --- a/content/u/blog/isnt-it-too-late-to-build-a-datacenter/contents.lr +++ b/content/u/blog/isnt-it-too-late-to-build-a-datacenter/contents.lr @@ -114,7 +114,7 @@ encourage distributing the Internet more to different places. Put all the fun stuff on it. Put your development on it. Don't forget to backup your stuff to somewhere else, though. -We even invite you to [join our chat](https://chat.ungleich.ch) to ask +We even invite you to [join our chat](https://chat.with.ungleich.ch) to ask about how to build a data center and we are more than happy to share our experiences. @@ -149,7 +149,7 @@ If you want to learn more about this topic, you can always get in touch with us as follows: * email: info at ungleich.ch -* open chat: [chat.ungleich.ch](https://chat.ungleich.ch) +* open chat: [chat.ungleich.ch](https://chat.with.ungleich.ch) diff --git a/content/u/blog/kubernetes-dns-entries-nat64/contents.lr b/content/u/blog/kubernetes-dns-entries-nat64/contents.lr new file mode 100644 index 0000000..3fd6a81 --- /dev/null +++ b/content/u/blog/kubernetes-dns-entries-nat64/contents.lr @@ -0,0 +1,144 @@ +title: Automatic A and AAAA DNS entries with NAT64 for kubernetes? +--- +pub_date: 2021-06-24 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Given a kubernetes cluster and NAT64 - how do you create DNS entries? +--- +body: + +## The DNS kubernetes quiz + +Today our blog entry does not (yet) show a solution, but more a tricky +quiz on creating DNS entries. The problem to solve is the following: + +* How to make every IPv6 only service in kubernetes also IPv4 + reachable? + +Let's see who can solve it first or the prettiest. Below are some +thoughts on how to approach this problem. + +## The situation + +Assume your kubernetes cluster is IPv6 only and all services +have proper AAAA DNS entries. This allows you +[to directly receive traffic from the +Internet](/u/blog/kubernetes-without-ingress/) to +your kubernetes services. + +Now to make that service also IPv4 reachable, we can deploy NAT64 +service that maps an IPv4 address outside the cluster to an IPv6 service +address inside the cluster: + +``` +A.B.C.D --> 2001:db8::1 +``` + +So all traffic to that IPv4 address is converted to IPv6 by the +external NAT64 translator. + +## The proxy service + +Let's say the service running on 2001:db8::1 is named "ipv4-proxy" and +thus reachable at ipv4-proxy.default.svc.example.com. + +What we want to achieve is to expose every possible service +inside the cluster **also via IPv4**. For this purpose we have created +an haproxy container that access *.svc.example.com and forwards it via +IPv6. + +So the actual flow would look like: + +``` +IPv4 client --[ipv4]--> NAT64 -[ipv6]-> proxy service + | + | + v +IPv6 client ---------------------> kubernetes service +``` + +## The DNS dilemma + +It would be very tempting to create a wildcard DNS entry or to +configure/patch CoreDNS to also include an A entry for every service +that is: + +``` +*.svc IN A A.B.C.D +``` + +So essentially all services resolve to the IPv4 address A.B.C.D. That +however would also influence the kubernetes cluster, as pods +potentially resolve A entries (not only AAAA) as well. + +As the containers / pods do not have any IPv4 address (nor IPv4 +routing), access to IPv4 is not possible. There are various outcomes +of this situation: + +1. The software in the container does happy eyeballs and tries both + A/AAAA and uses the working IPv6 connection. + +2. The software in the container misbehaves and takes the first record + and uses IPv4 (nodejs is known to have or had a broken resolver + that did exactly that). + +So adding that wildcard might not be the smartest option. And +additionally it is unclear whether coreDNS would support that. + +## Alternative automatic DNS entries + +The *.svc names in a kubernetes cluster are special in the sense that +they are used for connecting internally. What if coreDNS (or any other +DNS) server would instead of using *.svc, use a second subdomain like +*abc*.*namespace*.v4andv6.example.com and generate the same AAAA +record as for the service and a static A record like describe above? + +That could solve the problem. But again, does coreDNS support that? + +## Automated DNS entries in other zones + +Instead of fully automated creating the entries as above, another +option would be to specify DNS entries via annotations in a totally +different zone, if coreDNS was supporting this. So let's say we also +have control over example.org and we could instruct coreDNS to create +the following entries automatically with an annotation: + +``` +abc.something.example.org AAAA +abc.something.example.org A +``` + +In theory this might be solved via some scripting, maybe via a DNS +server like powerDNS? + +## Alternative solution with BIND + +The bind DNS server, which is not usually deployed in a kubernetes +cluster, supports **views**. Views enable different replies to the +same query depending on the source IP address. Thus in theory +something like that could be done, assuming a secondary zone +*example.org*: + +* If the request comes from the kubernetes cluster, return a CNAME + back to example.com. +* If the request comes from outside the kubernetes cluster, return an + A entry with the static IP +* Unsolved: how to match on the AAAA entries (because we don't CNAME + with the added A entry) + + +## 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) diff --git a/content/u/blog/kubernetes-making-dns-publicly-reachable/contents.lr b/content/u/blog/kubernetes-making-dns-publicly-reachable/contents.lr new file mode 100644 index 0000000..39e7e2a --- /dev/null +++ b/content/u/blog/kubernetes-making-dns-publicly-reachable/contents.lr @@ -0,0 +1,227 @@ +title: Making kubernetes kube-dns publicly reachable +--- +pub_date: 2021-06-13 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Looking into IPv6 only DNS provided by kubernetes +--- +body: + +## Introduction + +If you have seen our +[article about running kubernetes +Ingress-less](/u/blog/kubernetes-without-ingress/), you are aware that +we are pushing IPv6 only kubernetes clusters at ungleich. + +Today, we are looking at making the "internal" kube-dns service world +reachable using IPv6 and global DNS servers. + +## The kubernetes DNS service + +If you have a look at your typical k8s cluster, you will notice that +you usually have two coredns pods running: + +``` +% kubectl -n kube-system get pods -l k8s-app=kube-dns +NAME READY STATUS RESTARTS AGE +coredns-558bd4d5db-gz5c7 1/1 Running 0 6d +coredns-558bd4d5db-hrzhz 1/1 Running 0 6d +``` + +These pods are usually served by the **kube-dns** service: + +``` +% kubectl -n kube-system get svc -l k8s-app=kube-dns +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +kube-dns ClusterIP 2a0a:e5c0:13:e2::a 53/UDP,53/TCP,9153/TCP 6d1h +``` + +As you can see, the kube-dns service is running on a publicly +reachable IPv6 address. + +## IPv6 only DNS + +IPv6 only DNS servers have one drawback: they cannot be reached via DNS +recursions, if the resolver is IPv4 only. + +At [ungleich we run a variety of +services](https://redmine.ungleich.ch/projects/open-infrastructure/wiki) +to make IPv6 only services usable in the real world. In case of DNS, +we are using **DNS forwarders**. They are acting similar to HTTP +proxies, but for DNS. + +So in our main DNS servers, dns1.ungleich.ch, dns2.ungleich.ch +and dns3.ungleich.ch we have added the following configuration: + +``` +zone "k8s.place7.ungleich.ch" { + type forward; + forward only; + forwarders { 2a0a:e5c0:13:e2::a; }; +}; +``` + +This tells the DNS servers to forward DNS queries that come in for +k8s.place7.ungleich.ch to **2a0a:e5c0:13:e2::a**. + +Additionally we have added **DNS delegation** in the +place7.ungleich.ch zone: + +``` +k8s NS dns1.ungleich.ch. +k8s NS dns2.ungleich.ch. +k8s NS dns3.ungleich.ch. +``` + +## Using the kubernetes DNS service in the wild + +With this configuration, we can now access IPv6 only +kubernetes services directly from the Internet. Let's first discover +the kube-dns service itself: + +``` +% dig kube-dns.kube-system.svc.k8s.place7.ungleich.ch. aaaa + +; <<>> DiG 9.16.16 <<>> kube-dns.kube-system.svc.k8s.place7.ungleich.ch. aaaa +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23274 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 4096 +; COOKIE: f61925944f5218c9ac21e43960c64f254792e60f2b10f3f5 (good) +;; QUESTION SECTION: +;kube-dns.kube-system.svc.k8s.place7.ungleich.ch. IN AAAA + +;; ANSWER SECTION: +kube-dns.kube-system.svc.k8s.place7.ungleich.ch. 27 IN AAAA 2a0a:e5c0:13:e2::a + +;; AUTHORITY SECTION: +k8s.place7.ungleich.ch. 13 IN NS kube-dns.kube-system.svc.k8s.place7.ungleich.ch. +``` + +As you can see, the **kube-dns** service in the **kube-system** +namespace resolves to 2a0a:e5c0:13:e2::a, which is exactly what we +have configured. + +At the moment, there is also an etherpad test service +named "ungleich-etherpad" running: + +``` +% kubectl get svc -l app=ungleichetherpad +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +ungleich-etherpad ClusterIP 2a0a:e5c0:13:e2::b7db 9001/TCP 3d19h +``` + +Let's first verify that it resolves: + +``` +% dig +short ungleich-etherpad.default.svc.k8s.place7.ungleich.ch aaaa +2a0a:e5c0:13:e2::b7db +``` + +And if that works, well, then we should also be able to access the +service itself! + +``` +% curl -I http://ungleich-etherpad.default.svc.k8s.place7.ungleich.ch:9001/ +HTTP/1.1 200 OK +X-Powered-By: Express +X-UA-Compatible: IE=Edge,chrome=1 +Referrer-Policy: same-origin +Content-Type: text/html; charset=utf-8 +Content-Length: 6039 +ETag: W/"1797-Dq3+mr7XP0PQshikMNRpm5RSkGA" +Set-Cookie: express_sid=s%3AZGKdDe3FN1v5UPcS-7rsZW7CeloPrQ7p.VaL1V0M4780TBm8bT9hPVQMWPX5Lcte%2BzotO9Lsejlk; Path=/; HttpOnly; SameSite=Lax +Date: Sun, 13 Jun 2021 18:36:23 GMT +Connection: keep-alive +Keep-Alive: timeout=5 +``` + +(attention, this is a test service and might not be running when you +read this article at a later time) + +## IPv6 vs. IPv4 + +Could we have achived the same with IPv4? The answere here is "maybe": +If the kubernetes service is reachable from globally reachable +nameservers via IPv4, then the answer is yes. This could be done via +public IPv4 addresses in the kubernetes cluster, via tunnels, VPNs, +etc. + +However, generally speaking, the DNS service of a +kubernetes cluster running on RFC1918 IP addresses, is probably not +reachable from globally reachable DNS servers by default. + +For IPv6 the case is a bit different: we are using globally reachable +IPv6 addresses in our k8s clusters, so they can potentially be +reachable without the need of any tunnel or whatsoever. Firewalling +and network policies can obviously prevent access, but if the IP +addresses are properly routed, they will be accessible from the public +Internet. + +And this makes things much easier for DNS servers, which are also +having IPv6 connectivity. + +The following pictures shows the practical difference between the two +approaches: + +![](/u/image/k8s-v6-v4-dns.png) + +## Does this make sense? + +That clearly depends on your use-case. If you want your service DNS +records to be publicly accessible, then the clear answer is yes. + +If your cluster services are intended to be internal only +(see [previous blog post](/u/blog/kubernetes-without-ingress/), then +exposing the DNS service to the world might not be the best option. + +## Note on security + +CoreDNS inside kubernetes is by default configured to allow resolving +for *any* client that can reach it. Thus if you make your kube-dns +service world reachable, you also turn it into an open resolver. + +At the time of writing this blog article, the following coredns +configuration **does NOT** correctly block requests: + +``` + Corefile: | + .:53 { + acl k8s.place7.ungleich.ch { + allow net ::/0 + } + acl . { + allow net 2a0a:e5c0:13::/48 + block + } + forward . /etc/resolv.conf { + max_concurrent 1000 + } +... +``` + +Until this is solved, we recommend to place a firewall before your +public kube-dns service to only allow requests from the forwarding DNS +servers. + + +## More of this + +We are discussing +kubernetes and IPv6 related topics in +**the #hacking:ungleich.ch Matrix channel** +([you can signup here if you don't have an +account](https://chat.with.ungleich.ch)) and will post more about our +k8s journey in this blog. Stay tuned! diff --git a/content/u/blog/kubernetes-network-planning-with-ipv6/contents.lr b/content/u/blog/kubernetes-network-planning-with-ipv6/contents.lr new file mode 100644 index 0000000..61e580e --- /dev/null +++ b/content/u/blog/kubernetes-network-planning-with-ipv6/contents.lr @@ -0,0 +1,122 @@ +title: Kubernetes Network planning with IPv6 +--- +pub_date: 2021-06-26 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +Learn which networks are good to use with kubernetes +--- +body: + +## Introduction + +While IPv6 has a huge address space, you will need to specify a +**podCidr** (the network for the pods) and a **serviceCidr** (the +network for the services) for kubernetes. In this blog article we show +our findings and give a recommendation on what are the "most sensible" +networks to use for kubernetes. + +## TL;DR + + +## Kubernetes limitations + +In a typical IPv6 network, you would "just assign a /64" to anything +that needs to be a network. It is a bit the IPv6-no-brainer way of +handling networking. + +However, kubernetes has a limitation: +[the serviceCidr cannot be bigger than a /108 at the +moment](https://github.com/kubernetes/kubernetes/pull/90115). +This is something very atypical for the IPv6 world, but nothing we +cannot handle. There are various pull requests and issues to fix this +behaviour on github, some of them listed below: + +* https://github.com/kubernetes/enhancements/pull/1534 +* https://github.com/kubernetes/kubernetes/pull/79993 +* https://github.com/kubernetes/kubernetes/pull/90115 (this one is + quite interesting to read) + +That said, it is possible to use a /64 for the **podCidr**. + +## The "correct way" without the /108 limitation + +If kubernetes did not have this limitation, our recommendation would +be to use one /64 for the podCidr and one /64 for the serviceCidr. If +in the future the limitations of kubernetes have been lifted, skip +reading this article and just use two /64's. + +Do not be tempted to suggest making /108's the default, even if they +"have enough space", because using /64's allows you to stay in much +easier network plans. + +## Sanity checking the /108 + +To be able to plan kubernetes clusters, it is important to know where +they should live, especially if you plan having a lot of kubernetes +clusters. Let's have a short look at the /108 network limitation: + +A /108 allows 20 bit to be used for generating addresses, or a total +of 1048576 hosts. This is probably enough for the number of services +in a cluster. Now, can we be consistent and also use a /108 for the +podCidr? Let's assume for the moment that we do exactly that, so we +run a maximum of 1048576 pods at the same time. Assuming each service +consumes on average 4 pods, this would allow one to run 262144 +services. + +Assuming each pod uses around 0.1 CPUs and 100Mi RAM, if all pods were +to run at the same time, you would need ca. 100'000 CPUs and 100 TB +RAM. Assuming further that each node contains at maximum 128 CPUs and +at maximum 1 TB RAM (quite powerful servers), we would need more than +750 servers just for the CPUs. + +So we can reason that **we can** run kubernetes clusters of quite some +size even with a **podCidr of /108**. + +## Organising /108's + +Let's assume that we organise all our kubernetes clusters in a single +/64, like 2001:db8:1:2::/64, which looks like this: + +``` +% sipcalc 2001:db8:1:2::/64 +-[ipv6 : 2001:db8:1:2::/64] - 0 + +[IPV6 INFO] +Expanded Address - 2001:0db8:0001:0002:0000:0000:0000:0000 +Compressed address - 2001:db8:1:2:: +Subnet prefix (masked) - 2001:db8:1:2:0:0:0:0/64 +Address ID (masked) - 0:0:0:0:0:0:0:0/64 +Prefix address - ffff:ffff:ffff:ffff:0:0:0:0 +Prefix length - 64 +Address type - Aggregatable Global Unicast Addresses +Network range - 2001:0db8:0001:0002:0000:0000:0000:0000 - + 2001:0db8:0001:0002:ffff:ffff:ffff:ffff +``` + +A /108 network on the other hand looks like this: + +``` +% sipcalc 2001:db8:1:2::/108 +-[ipv6 : 2001:db8:1:2::/108] - 0 + +[IPV6 INFO] +Expanded Address - 2001:0db8:0001:0002:0000:0000:0000:0000 +Compressed address - 2001:db8:1:2:: +Subnet prefix (masked) - 2001:db8:1:2:0:0:0:0/108 +Address ID (masked) - 0:0:0:0:0:0:0:0/108 +Prefix address - ffff:ffff:ffff:ffff:ffff:ffff:fff0:0 +Prefix length - 108 +Address type - Aggregatable Global Unicast Addresses +Network range - 2001:0db8:0001:0002:0000:0000:0000:0000 - + 2001:0db8:0001:0002:0000:0000:000f:ffff +``` + +Assuming for a moment that we assign a /108, this looks as follows: diff --git a/content/u/blog/kubernetes-production-cluster-1/contents.lr b/content/u/blog/kubernetes-production-cluster-1/contents.lr new file mode 100644 index 0000000..00436de --- /dev/null +++ b/content/u/blog/kubernetes-production-cluster-1/contents.lr @@ -0,0 +1,70 @@ +title: ungleich production cluster #1 +--- +pub_date: 2021-07-05 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +In this blog article we describe our way to our first production +kubernetes cluster. +--- +body: + +## Introduction + +This article is WIP to describe all steps required for our first +production kubernetes cluster and the services that we run in it. + +## Setup + +### Bootstrapping + +* All nodes are running [Alpine Linux](https://alpinelinux.org) +* All nodes are configured using [cdist](https://cdi.st) + * Mainly installing kubeadm, kubectl, crio *and* docker + * At the moment we try to use crio +* The cluster is initalised using **kubeadm init --config + k8s/c2/kubeadm.yaml** from the [ungleich-k8s repo](https://code.ungleich.ch/ungleich-public/ungleich-k8s) + +### CNI/Networking + +* Calico is installed using **kubectl apply -f + cni-calico/calico.yaml** from the [ungleich-k8s + repo](https://code.ungleich.ch/ungleich-public/ungleich-k8s) +* Installing calicoctl using **kubectl apply -f + https://docs.projectcalico.org/manifests/calicoctl.yaml** +* Aliasing calicoctl: **alias calicoctl="kubectl exec -i -n kube-system calicoctl -- /calicoctl"** +* All nodes BGP peer with our infrastructure using **calicoctl create -f - < cni-calico/bgp-c2.yaml** + +### Persistent Volume Claim support + +* Provided by rook +* Using customized manifests to support IPv6 from ungleich-k8s + +``` +for yaml in crds common operator cluster storageclass-cephfs storageclass-rbd toolbox; do + kubectl apply -f ${yaml}.yaml +done +``` + +### Flux + +Starting with the 2nd cluster? + + +## Follow up + +If you are interesting in continuing the discussion, +we are there for you in +**the #kubernetes:ungleich.ch Matrix channel** +[you can signup here if you don't have an +account](https://chat.with.ungleich.ch). + +Or if you are interested in an IPv6 only kubernetes cluster, +drop a mail to **support**-at-**ungleich.ch**. diff --git a/content/u/blog/kubernetes-without-ingress/contents.lr b/content/u/blog/kubernetes-without-ingress/contents.lr new file mode 100644 index 0000000..370cbe9 --- /dev/null +++ b/content/u/blog/kubernetes-without-ingress/contents.lr @@ -0,0 +1,201 @@ +title: Building Ingress-less Kubernetes Clusters +--- +pub_date: 2021-06-09 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: + +--- +body: + +## Introduction + +On [our journey to build and define IPv6 only kubernetes +clusters](https://www.nico.schottelius.org/blog/k8s-ipv6-only-cluster/) +we came accross some principles that seem awkward in the IPv6 only +world. Let us today have a look at the *LoadBalancer* and *Ingress* +concepts. + +## Ingress + +Let's have a look at the [Ingress +definition](https://kubernetes.io/docs/concepts/services-networking/ingress/) +definiton from the kubernetes website: + +``` +Ingress exposes HTTP and HTTPS routes from outside the cluster to +services within the cluster. Traffic routing is controlled by rules +defined on the Ingress resource. +``` + +So the ingress basically routes from outside to inside. But, in the +IPv6 world, services are already publicly reachable. It just +depends on your network policy. + +### Update 2021-06-13: Ingress vs. Service + +As some people pointed out (thanks a lot!), a public service is +**not the same** as an Ingress. Ingress has also the possibility to +route based on layer 7 information like the path, domain name, etc. + +However, if all of the traffic from an Ingress points to a single +IPv6 HTTP/HTTPS Service, effectively the IPv6 service will do the +same, with one hop less. + +## Services + +Let's have a look at how services in IPv6 only clusters look like: + +``` +% kubectl get svc +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +etherpad ClusterIP 2a0a:e5c0:13:e2::a94b 9001/TCP 19h +nginx-service ClusterIP 2a0a:e5c0:13:e2::3607 80/TCP 43h +postgres ClusterIP 2a0a:e5c0:13:e2::c9e0 5432/TCP 19h +... +``` +All these services are world reachable, depending on your network +policy. + +## ServiceTypes + +While we are at looking at the k8s primitives, let's have a closer +look at the **Service**, specifically at 3 of the **ServiceTypes** +supported by k8s, including it's definition: + +### ClusterIP + +The k8s website says + +``` +Exposes the Service on a cluster-internal IP. Choosing this value +makes the Service only reachable from within the cluster. This is the +default ServiceType. +``` + +So in the context of IPv6, this sounds wrong. There is nothing that +makes an global IPv6 address be "internal", besides possible network +policies. The concept is probably coming from the strict difference of +RFC1918 space usually used in k8s clusters and not public IPv4. + +This difference does not make a lot of sense in the IPv6 world though. +Seeing **services as public by default**, makes much more sense. +And simplifies your clusters a lot. + +### NodePort + +Let's first have a look at the definition again: + +``` +Exposes the Service on each Node's IP at a static port (the +NodePort). A ClusterIP Service, to which the NodePort Service routes, +is automatically created. You'll be able to contact the NodePort +Service, from outside the cluster, by requesting :. +``` + +Conceptually this can be similarily utilised in the IPv6 only world +like it does in the IPv4 world. However given that there are enough +addresses available with IPv6, this might not be such an interesting +ServiceType anymore. + + +### LoadBalancer + +Before we have a look at this type, let's take some steps back +first to ... + + +## ... Load Balancing + +There are a variety of possibilities to do load balancing. From simple +round robin, to ECMP based load balancing, to application aware, +potentially weighted load balancing. + +So for load balancing, there is usually more than one solution and +there is likely not one size fits all. + +So with this said, let.s have a look at the +**ServiceType LoadBalancer** definition: + +``` +Exposes the Service externally using a cloud provider's load +balancer. NodePort and ClusterIP Services, to which the external load +balancer routes, are automatically created. +``` + +So whatever the cloud provider offers, can be used, and that is a good +thing. However, let's have a look at how you get load balancing for +free in IPv6 only clusters: + +## Load Balancing in IPv6 only clusters + +So what is the most easy way of reliable load balancing in network? +[ECMP (equal cost multi path)](https://en.wikipedia.org/wiki/Equal-cost_multi-path_routing) +comes to the mind right away. Given that +kubernetes nodes can BGP peer with the network (upstream or the +switches), this basically gives load balancing to the world for free: + +``` + [ The Internet ] + | + [ k8s-node-1 ]-----------[ network ]-----------[ k8s-node-n] + [ ECMP ] + | + [ k8s-node-2] + +``` + +In the real world on a bird based BGP upstream router +this looks as follows: + +``` +[18:13:02] red.place7:~# birdc show route +BIRD 2.0.7 ready. +Table master6: +... +2a0a:e5c0:13:e2::/108 unicast [place7-server1 2021-06-07] * (100) [AS65534i] + via 2a0a:e5c0:13:0:225:b3ff:fe20:3554 on eth0 + unicast [place7-server4 2021-06-08] (100) [AS65534i] + via 2a0a:e5c0:13:0:225:b3ff:fe20:3564 on eth0 + unicast [place7-server2 2021-06-07] (100) [AS65534i] + via 2a0a:e5c0:13:0:225:b3ff:fe20:38cc on eth0 + unicast [place7-server3 2021-06-07] (100) [AS65534i] + via 2a0a:e5c0:13:0:224:81ff:fee0:db7a on eth0 +... +``` + +Which results into the following kernel route: + +``` +2a0a:e5c0:13:e2::/108 proto bird metric 32 + nexthop via 2a0a:e5c0:13:0:224:81ff:fee0:db7a dev eth0 weight 1 + nexthop via 2a0a:e5c0:13:0:225:b3ff:fe20:3554 dev eth0 weight 1 + nexthop via 2a0a:e5c0:13:0:225:b3ff:fe20:3564 dev eth0 weight 1 + nexthop via 2a0a:e5c0:13:0:225:b3ff:fe20:38cc dev eth0 weight 1 pref medium +``` + +## TL;DR + +We know, a TL;DR at the end is not the right thing to do, but hey, we +are at ungleich, aren't we? + +In a nutshell, with IPv6 the concept of **Ingress**, +**Service** and the **LoadBalancer** ServiceType +types need to be revised, as IPv6 allows direct access without having +to jump through hoops. + +If you are interesting in continuing the discussion, +we are there for you in +**the #hacking:ungleich.ch Matrix channel** +[you can signup here if you don't have an +account](https://chat.with.ungleich.ch). + +Or if you are interested in an IPv6 only kubernetes cluster, +drop a mail to **support**-at-**ungleich.ch**. diff --git a/content/u/blog/love-letter-to-isc-bind/contents.lr b/content/u/blog/love-letter-to-isc-bind/contents.lr new file mode 100644 index 0000000..9217af9 --- /dev/null +++ b/content/u/blog/love-letter-to-isc-bind/contents.lr @@ -0,0 +1,91 @@ +title: A love letter to ISC bind +--- +pub_date: 2021-02-22 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Everyone does some mistakes in their life, but sometimes it's time to +move on. +--- +body: + +Dear ISC bind, + +this is a love letter to you. You probably don't know me, but I have +been a long term user of yours. + +I started my time with you in the late 90's. It was when you were +called "bind 4". I was very happy with our relationship. You'd not +only take care of all authoritative requests, but also take care of +caching client requests. Me, still being young at the time, I did not +know nor care about security concerns in the beginning. + +But then over time I got more experienced and I read and tried DNS +cache poisoning and I was shocked. How could you? How could you accept +incorrect entries? I had so much trust in you and then that! + +Years passed and after my shock, I had a fling with +[djbdns](https://cr.yp.to/djbdns.html) (together with qmail and +daemontools). Which right away took security more serious. So serious +that even managing djbdns with its own suite was almost like a crypto +analysis adventure (no offense, Dan!). Many years this was my software +solution of choice, compiled by source, patched by hand. Oh, the old +2000's! + +Over time the effort for managing software by source code and +/usr/local installations did not turn out to be very efficient. So I +looked around and found [powerdns](https://www.powerdns.com/), +[nsd](https://www.nlnetlabs.nl/projects/nsd/about/) and +[unbound](https://www.nlnetlabs.nl/projects/unbound/about/). + +I settled for the nsd/unbound combination for many years. Solid, easy +to use and nice separation of concerns. Thanks nlnetlabs! Then I +stumbled upon +[dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html). Dnsmasq +feels a bit like a younger sibling of bind: it does everything and +even includes dhcp and tftp support! Crazy, isn't it? Many years to +come, dnsmasq, first discovered on an embedded router, turned out to +be a very stable solution for even mid sized installations. And it +comes with a very simple configuration as well. + +But then 2017 happened. And ungleich started the [Data Center +Light](/u/projects/data-center-light/) project. An IPv6 first +hosting. And there you were, dear bind. Looking at me from the side of +the software projects, saying "I think it's time we have a talk.". + +And indeed, we did have a talk. A talk about implementing DNS64. About +different DNS64 prefixes in one configuration. About being +an authoritative name server that functions even if all upstreams are +down. A name server that even allows the most funky configuration of +*removing native AAAA entries* for DNS64 networks that should only +access mapped IPv4 addresses. You can do it all, but you are still not +complicated. Who can say that from oneself? + +I admit, I was not always loyal to you. And I also admit that I am +still sceptical about mixing caching and authoritative features in one +process. But you do it so damn well. Not only have you been around for +decades and collected the wisdom over the years, but also have you +adapted to the time. + +This is why I am writing you this love letter today, to say +thanks. Thanks for making the life in a data center easier, thanks to +being flexible, thanks for improving over time and thanks to still +adhearing to the same configuration file format that I used in the +late 90's. + +Dear BIND, you are by far not perfect, but then neither is +reality. And this is your strength, solving real world problems. + +Thank you for doing so and thanks to all the involved developers for +creating bind. + +In love, yours, + +Nico diff --git a/content/u/blog/love-letter-to-isc-bind/loveletter.jpg b/content/u/blog/love-letter-to-isc-bind/loveletter.jpg new file mode 100644 index 0000000..b55097e Binary files /dev/null and b/content/u/blog/love-letter-to-isc-bind/loveletter.jpg differ diff --git a/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr new file mode 100644 index 0000000..abd60df --- /dev/null +++ b/content/u/blog/managing-ipv4-islands-with-jool-and-openwrt/contents.lr @@ -0,0 +1,112 @@ +_hidden: no +--- +_discoverable: yes +--- +pub_date: 2020-12-15 +--- +title: Managing IPv4 islands with Jool and OpenWrt +--- +abstract: How to access IPv4 islands from IPv6 networks +--- +author: ungleich +--- +twitter_handle: ungleich +--- +body: + +## Introduction + +At ungleich we are using [Jool](https://www.jool.mx/) in a variety of +scenarios with NAT64 or SIIT. The main use of jool in our +infrastructure is to enable IPv6 only hosts to communicate with the +IPv4 Internet. + +However today we want to show you a different use case of jool: +Enabling IPv4 islands to communicate with the IPv6 Internet. + +For this we will focus on using Jool on +[OpenWrt](https://openwrt.org), because this is a platform that you +can also easily use in your networks or even at home. + +## The general problem to solve + +The literally biggest problem to solve when connecting the two +different worlds is that the IPv6 space is significantly bigger. This +is a problem, because we cannot achieve a 1:1 mapping from the IPv4 +world, but we can do a 1:1 mapping from the IPv6 world: + +![](/u/image/ipv4-ipv6-nat-asymmetric.png) + +## Installing jool + +Installing jool on OpenWrt is very easy, it is just a matter of +installing the kernel module and the tools for managing jool: + +``` +opkg update +opkg install kmod-jool jool-tools +``` + +## Making IPv4 islands reachable + +Assume that you are mostly running IPv6 only networks. And you happen +to have some hosts, which, for whatever reason, cannot be switched to +IPv6. We can use a stateful NAT64 to map "the whole IPv6 Internet" to +192.0.2.1 as follows: + +![](/u/image/ipv4-only-island-ipv6-reachable.png) + +This works pretty similar to regular NAT that you are used from +home. If we compare it visually, it is even more clear: + +![](/u/image/ipv4-nat.png) + +Let's have a look at this in an OpenWrt context: + +* The LAN network is usually 192.168.1.0/24 +* The router's IPv4 address is usually 192.168.1.1 +* In this example we routed 2a0a:e5c1:18f::/48 to the router +* 192.168.1.0/24 has 8 bits for the hosts (32-24=8) +* We choose 2a0a:e5c1:18f:b00::/120 to map the IPv4 island (128-120=8) +* We use the OpenWrt's standard address to masquerade/squash the IPv6 Internet + +First we will create an "IPv4 pool": + +``` +root@vigir2:~# jool -4 -a 192.168.1.1 +root@vigir2:~# jool -4 ++------------+-------+--------------------+-----------------+-------------+ +| Mark | Proto | Max iterations | Address | Ports | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | TCP | 1024 ( auto) | 192.168.1.1 | 1-65535 | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | UDP | 1024 ( auto) | 192.168.1.1 | 1-65535 | ++------------+-------+--------------------+-----------------+-------------+ +| 0 | ICMP | 1024 ( auto) | 192.168.1.1 | 0-65535 | ++------------+-------+--------------------+-----------------+-------------+ + (Fetched 3 samples.) +``` + +This allows jool to map IPv6 addresses stateful to 192.168.1.1 and +basically allows incoming IPv6 traffic. What is left now is to +configure the mapping from IPv6 to IPv4. For this we use the pool6 +argument of jool: + +``` +jool -6 2a0a:e5c1:18f:b00::/96 +``` + +Note that we cheated here. We did not only map +2a0a:e5c1:18f:b00::/120, but we did actually map the whole IPv4 +range. The advantage of this is that we do not need to care which +networks are used on the IPv4 island. Any IPv4 address inside the LAN +segment is now reachable. If you want to reach the IP address +192.168.1.42, you can ping as **2a0a:e5c1:18f:b00::192.168.1.42**. As +a matter of fact, while writing this article, the sample network is up and +running and you should be able to **ping +2a0a:e5c1:18f:b00::192.168.1.1** from the IPv6 Internet. + +## More of this? + +If you are interested in IPv6 or network, feel free to join us on the +[IPv6.chat](https://IPv6.chat). diff --git a/content/u/blog/nftables-block-dhcp-and-router-advertisements/contents.lr b/content/u/blog/nftables-block-dhcp-and-router-advertisements/contents.lr new file mode 100644 index 0000000..5b134fc --- /dev/null +++ b/content/u/blog/nftables-block-dhcp-and-router-advertisements/contents.lr @@ -0,0 +1,108 @@ +title: Blocking DHCP servers and router advertisements with nftables +--- +pub_date: 2020-08-27 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Blocking typical data center workloads with nftables +--- +body: + +## Motivation + +Here at [ungleich](https://ungleich.ch) we are providing a variety of +hosting services in the [Data Center +Light](https://datacenterlight.ch). One of the workloads we offer is +VM hosting and we need to take some security measures to prevent one +customer abusing another customer. + +## The problem + +The virtual machines in our next generation uncloud hosting will be +using standard DHCP and IPv6 address assignments. Currently +we are still using the +[OpenNebula](https://github.com/OpenNebula/addon-context-linux) +contextualisation scripts that read the networking information from an +attached ISO. + +While this makes it easier to create VM images and VMs behave even +more like regular computers, this exposes the VMs to attacks where one +customer runs a DHCP server or IPv6 router advertisement daemon and +tricks the other VMs into sending traffic to it. + +## The architecture + +VMs are connected to a single shared network in which they get +their IP addresses (in uncloud usually only IPv6) and then they can +retrieve more information from a metadata server. So the main +protection that is required is preventing to trick other customers +into using a wrong IP address or route. + +Also, if the network is IPv6 only, another customer should not be able +to trick someone else into using IPv4. + +## Fixing it + +So the easiest thing to do is to disallow IPv6 router advertisements +and IPv4 DHCP server answers. However as all the interfaces are put +into one bridge, we will need to filter on bridge and not ip level: + +``` +table bridge filter { + chain prerouting { + type filter hook prerouting priority 0; + policy accept; + } +``` + +Next we create a chain to drop the packets we dislike: + +``` + chain drop_ra_dhcp { + # Blocks: router advertisements, dhcpv6, dhcpv4 + icmpv6 type nd-router-advert drop + ip6 version 6 udp sport 547 drop + ip version 4 udp sport 67 drop + } +``` + +Now the only thing left is to correctly classify the traffic. For this +lets take some real world assumptions: + +* Let's assume the bridge is named **br100** +* Let's assume the upstream interface that should allow RA/DHCP is + named **vxlan100** + +Then we can connect the chains together: + +``` +table bridge filter { + chain prerouting { + type filter hook prerouting priority 0; + policy accept; + + iifname != vxlan100 meta ibrname br100 jump drop_ra_dhcp + } + + chain drop_ra_dhcp { + # Blocks: router advertisements, dhcpv6, dhcpv4 + icmpv6 type nd-router-advert drop + ip6 version 6 udp sport 547 drop + ip version 4 udp sport 67 drop + } +} +``` + +This way we have a very simple filter to prevent router advertisements +or dhcp answers to come from customer VMs. + +We hope you enjoyed reading it, but if something does not make sense, +you can ask on our [open chat](/u/projects/open-chat/) or +[consult the nftables reference](https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes#Meta). diff --git a/content/u/blog/no-ipv6-in-2021-not-acceptable/contents.lr b/content/u/blog/no-ipv6-in-2021-not-acceptable/contents.lr new file mode 100644 index 0000000..b63673d --- /dev/null +++ b/content/u/blog/no-ipv6-in-2021-not-acceptable/contents.lr @@ -0,0 +1,106 @@ +title: No IPv6 in 2021? Not acceptable. +--- +pub_date: 2021-01-09 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Time is over for legacy-only-IP services. +--- +body: + +It's 2021 and it's time to stop using legacy IP (IPv4) only +services. In 2020 we have already seen quite a rise in IPv6 +connectivity, as well as more and more services emerging IPv6 only. + +## The IPv6 community is very active + +The IPv6 community has reported many bugs to products like +[Steam from +Valve](https://github.com/ValveSoftware/steam-for-linux/issues/3372), +[Dockerhub](https://github.com/docker/roadmap/issues/89) and so many +more that it was not possible for me to list them all in this article. + +As a matter of fact, websites or services that have degraded or +non-existing IPv6 connectivity [are reported daily on +Twitter](https://twitter.com/search?q=%23ipv6). + +## Time to move on + +As I can see it from the work at ungleich, 2020 was a very active year +when it comes to IPv6. But at some point, services that don't work +with IPv6 are simply not worth caring about anymore. + +While IPv6 [has been defined in +1998](https://tools.ietf.org/html/rfc2460), it is clear that vendors +and providers need some time to adapt. But 23 years should have been +more than enough to migrate. + +For this reason we want to encourage everyone in 2021 to move on, to +cut off the old legacy IP applications, services or hardware. + +## How to move on? + +There are a variety of things everyone of us can do and we have +collected some easy to take steps. + +### Setup networks IPv6 only + +For every new network you setup, set it up with IPv6 only. All current +mobile phones, tablets and operating systems work in IPv6 only +networks. + +### Setup services and applications IPv6 only + +If you are an application developer, I suggest to develop your +application with IPv6 first. And if you setup a new service, configure +IPv6 first and maybe only. + +It's important to understand that setting up something IPv6 only, does +not mean it will be unreachable from the legacy IP Internet. NAT64 is +one easy to use technology to solve this problem. + +### Abandon legacy only + +Whether it's network hardware, applications, Internet providers, +hosting providers - stop using them if they don't work in IPv6 only +environments. And let the everyone know that you did so. + +While I am not a fan of shaming anyone, it is still important to let +vendors know that you have moved on because of the lack of +IPv6. Otherwise the vendor does not know why they are losing +customers. When you communicate that you abandon a product or service +because of lacking proper IPv6 support, I recommend to doing so in a +clear, but respectful way. + +### Advocate IPv6 only + +To be able to spot bugs and to make life for network operators easier, +I strongly recommend going IPv6 only. Not dualstack, but simply IPv6 +only. If you deploy NAT64 in IPv6 only networks, you can even create +reachability in both directions. + +Many of us network operators, developers and sysadmins are very good +in implementing things. However, it is important to share the word. + +### Help each other + +For about 2 years there is an open, community driven [IPv6 +Chat](https://ipv6.chat). In this chat you can ask others for help, +ask which alternative products or services to use. Or how to migrate +to IPv6 only networks. There is also an [IPv6 +reddit](https://www.reddit.com/r/ipv6/) and an [IPv6 group on +Facebook](https://www.facebook.com/groups/2234775539). Many of the +RIRs (RIPE, APNIC, Afrinic, LACNIC and ARIN) also offer IPv6 training +resources. + +Migrating to IPv6 is not difficult and there is a community to help +you with it. + +Let's do it, together. diff --git a/content/u/blog/no-ipv6-in-2021-not-acceptable/no.jpg b/content/u/blog/no-ipv6-in-2021-not-acceptable/no.jpg new file mode 100644 index 0000000..5adc429 Binary files /dev/null and b/content/u/blog/no-ipv6-in-2021-not-acceptable/no.jpg differ diff --git a/content/u/blog/only-ipv6-only/contents.lr b/content/u/blog/only-ipv6-only/contents.lr index 78166c3..1c98166 100644 --- a/content/u/blog/only-ipv6-only/contents.lr +++ b/content/u/blog/only-ipv6-only/contents.lr @@ -107,7 +107,7 @@ It is very easy to create a static website on an IPv6 only webserver and have it reachable from IPv6 and the legacy Internet: you can either [create an IPv6 only virtual machine](../../products/ipv6-only-hosting/), setup a webserver on it and use the -[IPv4 to IPv6 proyx](../../products/ipv4-to-ipv6-proxy/). +[IPv4 to IPv6 proxy](../../products/ipv4-to-ipv6-proxy/). Or, if you want to have it much easier, you could go with [IPv6 enabled webhosting](../../products/zerocarbon-webhosting-with-ipv6/) diff --git a/content/u/blog/redundant-ipv6-routers-multiple-prefixes/contents.lr b/content/u/blog/redundant-ipv6-routers-multiple-prefixes/contents.lr new file mode 100644 index 0000000..4aaf81e --- /dev/null +++ b/content/u/blog/redundant-ipv6-routers-multiple-prefixes/contents.lr @@ -0,0 +1,32 @@ +title: Building stateless redundant IPv6 routers +--- +pub_date: 2021-04-21 +--- +author: ungleich virtualisation team +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +It's time for IPv6 in docker, too. +--- +body: + +``` +interface eth1.2 +{ + AdvSendAdvert on; + MinRtrAdvInterval 3; + MaxRtrAdvInterval 5; + AdvDefaultLifetime 10; + + prefix 2a0a:e5c0:0:0::/64 { }; + prefix 2a0a:e5c0:0:10::/64 { }; + + RDNSS 2a0a:e5c0:0:a::a 2a0a:e5c0:0:a::b { AdvRDNSSLifetime 6000; }; + DNSSL place5.ungleich.ch { AdvDNSSLLifetime 6000; } ; +}; +``` diff --git a/content/u/blog/remote-working-with-opensource-sustainability/contents.lr b/content/u/blog/remote-working-with-opensource-sustainability/contents.lr new file mode 100644 index 0000000..6fe71a9 --- /dev/null +++ b/content/u/blog/remote-working-with-opensource-sustainability/contents.lr @@ -0,0 +1,97 @@ +title: Remote Working with Open Source +--- +pub_date: 2020-03-16 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Remote working infrastructure at team ungleich +--- +body: + +## Working at the time of Covid19 + +So looks like 2020 is the year of remote working for a whole lot of people. Hey, welcome to the club! Our team has been working remotely since 2013, and now we are distributed in 5 different time zones. For us remote working has been a lot of fun, all you need is the right setup that enables everybody to be connected and be productive. + +We obviously couldn't do it without the digital infrastructure. Lately we've been getting a lot of requests for sharing tips for which tool or software to use for remote working, and we thought it'd be a good idea to share a practical list of tech stack we use in our daily business. So, here we go: remote working stack chez ungleich. + +## How we decide what to use + +Before we continue, an important disclaimer: we’re an open-source, sustainability- focused IT company. So we decide which tools to use by these criteria. + +- open-source +- sustainablility +- state of the art +- usability for people with all backgrounds + +## 1. Chat: Zero carbon chat - Mattermost and Matrix + +You need a chat system when working remotely with your +team, and you need it to be secure and hassle-free. We used to be on +Slack at the very beginning, but we did not like the fact that Slack +is hosted with AWS: from our point of view AWS datacenters are not +sustainable compared to [our own renewable energy datacenter in +Switzerland,](https://datacenterlight.ch) so we moved away from Slack into hosting our own chat. + +Now we have two chat systems, [Mattermost](https://ungleich.ch/u/products/zero-carbon-chat/) and [Matrix.](https://ungleich.ch/u/products/hosted-matrix-chat/) +Mattermost offers an extremely easy and smooth team communication for +people with all kinds of backgrounds. Most of our team talk happens on +this platform. [Our chat](https://chat.with.ungleich.ch) is open for the public +and anybody can join with their email and have a conversation with +us. + + +![](/u/image/zerocarbon-chat-screen.jpg) + +[Zero Carbon +Matrix](https://ungleich.ch/u/products/hosted-matrix-chat/), on the +other hand, offers end-to-end encryption and federation, which makes +it very attractive for people with high sensitivity for privacy and +security. It also allows us to be more open. Matrix works nicely with +video and audio calls as well, suitable for the secure conference call +with different teams. + + +![](/u/image/penguin-matrix.jpg) + +## 2. Cloud storage - Nextcloud + +We are using hosted [Nextcloud](https://ungleich.ch/u/products/zero-carbon-cloud) for data storage and sharing. It supports cloud storage, file sharing between teams and real-time collaboration for document editing. It's pretty easy and we like to save data in Switzerland and not somewhere we don't trust how the authorities operate. + +![](/u/image/nextcloud-docediting.jpg) + +## 3. Project management - Redmine + +[Redmine](https://ungleich.ch/u/products/project-management/) is our longest standing project management tool since the beginning of our company. It supports calendar, ticket creating, issue tracking, wiki, roadmap and more. + +![](/u/image/open-infrastructure.jpg) + +Redmine is just very handy for managing multiple projects and subprojects, and giving access to different people can be done on a role basis. Our whole [data center infrastructure](https://redmine.ungleich.ch/projects/open-infrastructure) is actually in redmine & we open it for the public, so you can take a look to get an impression. + +![](/u/image/open-infrastructure-overview.jpg) + +## 4. Code hosting - Gitlab + +We used GitHub before, but [we decided to move to our own Gitlab in 2018](https://ungleich.ch/en-us/cms/blog/2018/10/18/moving-away-github/) due to GitHub's lack of #IPv6 support and some other issues. We are very happy with our new home, and that's why we're hosting Gitlab for our customers too. + +![](/u/image/github-penguin.jpg) + +## A decision with sustainability goes a long way + +As we disclosed at the beginning, sustainability is an important factor for us so we run all of the above on our servers with renewable energy. +Many of you who are new to remote working might have to make decisions in a hurry, but try to remember that decisions with sustainability in mind saves a lot of pain in the long run, and also saves our environment. + +![](/u/image/decarbonize-penguin.jpg) + +## Questions? + +It can be overwhelming when you need to decide what to use for a new style of work: you'll have to use it every day and you want to make the right decision. Our approach is that we know where are values stand such as decentralisation, open-source, sustainability, and we try to make our decisions aligned to our values. For us working remotely with open source is fun and exciting, it gives so much freedom to everybody involved. +If you have any questions on the above stack, our remote-working team is around to give you answers. ;) Stay healthy, and happy remote working to you all! + +![](/u/image/zerocarbon_no.jpg) diff --git a/content/u/blog/remote-working-with-opensource-sustainability/zerocarbon-meditation.jpg b/content/u/blog/remote-working-with-opensource-sustainability/zerocarbon-meditation.jpg new file mode 100644 index 0000000..f73c74a Binary files /dev/null and b/content/u/blog/remote-working-with-opensource-sustainability/zerocarbon-meditation.jpg differ diff --git a/content/u/blog/sample-post/contents.lr b/content/u/blog/sample-post/contents.lr new file mode 100644 index 0000000..68fd3a2 --- /dev/null +++ b/content/u/blog/sample-post/contents.lr @@ -0,0 +1,17 @@ +title: +--- +pub_date: +--- +author: +--- +twitter_handle: +--- +_hidden: yes +--- +_discoverable: no +--- +abstract: + +--- +body: + diff --git a/content/u/blog/southpole-meets-ungleich/contents.lr b/content/u/blog/southpole-meets-ungleich/contents.lr new file mode 100644 index 0000000..8a51b22 --- /dev/null +++ b/content/u/blog/southpole-meets-ungleich/contents.lr @@ -0,0 +1,102 @@ +title: South Pole meets ungleich +--- +pub_date: 2020-06-15 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Penguins push sustainability forward together +--- +body: + +## Where penguins meet + +Do you know where penguins live? Probably all of us assume that they +live at the South Pole. That is correct. And it is [a really +fascinating story how penguins +meet](https://en.wikipedia.org/wiki/March_of_the_Penguins). If you +haven't seen the movie, we can highly recommend it! + +But did you know that penguins also live and meet at other places? For +instance [in Africa](https://en.wikipedia.org/wiki/African_penguin). +Or in the case of the penguin companies [South +Pole](https://www.southpole.com/) and [ungleich](https://ungleich.ch): +in Switzerland. + +This blog post is about how penguins and ethical values brought South +Pole and ungleich together. + +## Who is South Pole? + +South Pole is a 350-people team of passionate climate experts with its headquarters in Zürich. It provides global climate solutions and develops projects for companies and organizations embarking on their Climate Journey, which includes assessing their carbon footprint and climate risks, green investments, carbon neutrality, and renewable energy. + +Started as a handful of people with great ideas back in 2006, now their offices are spread over 18 countries, including Singapore, London, Amsterdam, Sydney, Stockholm, and more. And most importantly: their mascot is a penguin, and the team calls themselves the Penguins. + +Sustainability, Switzerland, penguins?! Instant love for us. + +We recommend that you take a look at [the South Pole +blog](https://www.southpole.com/blog) that covers inspiring +projects such as forest conservation, wild animal protection, clean +water project for local communities, and many more. + +![](/u/image/southpole-projects.jpg) + +## Sustainability at ungleich + +A few years ago ungleich started building data centers in +[the Canton of Glarus in Switzerland](https://en.wikipedia.org/wiki/Canton_of_Glarus). +This valley does not only offer a gorgeous view, but was the home of +the weaving industry for more than a century. And it's our luck and +privilege to build on top of this heritage. + +Our focus is on re-using and re-modeling buildings from this +time. Many factory halls in Glarus also come with on-site hydropower +plants, which allows us to run servers on 100% renewable, locally +produced power. + +Not only do we re-use old buildings, but with recycled hardware, +we were all in for creating a data center that is +as sustainable as possible. + +When we started this project it was not 100% clear for us what kind of +people would be interested in this kind of hosting. + +![](/u/image/datacenter-location.jpg) + +More and more we are realising that how we started and continued our +journey has actually brought us the best kind of people. The kind +who shares our visions of sustainable technology and understands the +value of what we do. So such was the case for team ungleich and team +South Pole. We love that those whom we provide our services to have +the same mission as we do. Enabling and supporting like-minded people +with what we have built has been a really exciting journey for our +team. + +## Continuing our work on sustainability together + +South Pole is offering a variety of +[Sustainability +Solutions](https://www.southpole.com/sustainability-solutions) in all +kinds of areas. At ungleich we focus on sustainable hosting in the +[Data Center Light](https://datacenterlight.ch/), the renewable +energy-powered data center in the Alps. And we are proud to say that +South Pole hosts data in the Data Center Light. + +Together we can make a change for a better world. + +![](/u/image/southpole-ungleich-penguin-together.jpg) + +## Join the discussion + +If you like to discuss sustainability topics, we invite you to get in +touch with us: + +* [Get in touch with South Pole](https://www.southpole.com/contacts) +* [Get in touch with ungleich](/u/contact/) +* [Join the online chat for sustainability](https://chat.with.ungleich.ch) diff --git a/content/u/blog/southpole-meets-ungleich/penguin-bg.jpg b/content/u/blog/southpole-meets-ungleich/penguin-bg.jpg new file mode 100644 index 0000000..f987965 Binary files /dev/null and b/content/u/blog/southpole-meets-ungleich/penguin-bg.jpg differ diff --git a/content/u/blog/testtesttest/contents.lr b/content/u/blog/testtesttest/contents.lr new file mode 100644 index 0000000..c0e930b --- /dev/null +++ b/content/u/blog/testtesttest/contents.lr @@ -0,0 +1,18 @@ +title: something i want to talk about +--- +pub_date: 2020-04-11 +--- +author: Sanghee Kim +--- +twitter_handle: ungleich +--- +_hidden: yes +--- +_discoverable: no +--- +abstract: +this is test post +--- +body: + +This is test post \ No newline at end of file diff --git a/content/u/blog/the-broken-internet/contents.lr b/content/u/blog/the-broken-internet/contents.lr new file mode 100644 index 0000000..46e5fab --- /dev/null +++ b/content/u/blog/the-broken-internet/contents.lr @@ -0,0 +1,130 @@ +title: The broken Internet +--- +subtitle: And how to fix it +--- +pub_date: 2020-09-02 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: no +--- +abstract: +--- +body: + +## The Internet is broken + +If you are working in IT or if you +computer scientist, you probably have mumbled this +sentence already before yourself: "the network is broken", or more +specific, "the Internet is broken". + +But what is really wrong with the Internet? + +## Computers are not reachable by default + +One of the most bizarre and weird things in the Internet is that +computers cannot reach each other. You might have a question mark +reading this claim, so I'll try to elaborate a bit: + +While you are reading this article, checkout your IP address on your +computer. Does it start with 192.168., 10. or 172.16.? It probably +does and that means your computer is configured to use a **private**, or +**degraded** IPv4 address. These addresses are being filtered on the +Internet and are used, because your provider does not have enough +**proper, public** IPv4 addresses. + +## What is the problem with degraded IP addresses? + +The first problem is that these IP addresses are used multiple +times. You, your neighbor, people in different cities - they all use +the same IP address. So if you want to reach their computer you need +to tell your computer "I want to reach that computer on 192.168.1.42", +but your computer is already on the same address! How can it send to +192.168.1.42? It can't! + +The second problem with these degraded IP addresses is that you cannot use +them on the Internet. Because these IP addresses are private and not +supposed to be seen in the Internet, they are filtered by ISPs. + +You might be puzzled reading this, because you are in the Internet +reading this article, aren't you? + +## You are not in the Internet + +Practically seen, having a private IP address, you are a second class +citizen of the Internet. You cannot tell anybody else "this is my IP +address, just download a file from my computer". If you want to +download a file from a friend, you will need to use an external +service, like cloud storage. + +If you want to chat with someone, you again cannot just connect to the +computer or mobile phone of the person you want to connect to. Instead +you will need to use another intermediary party. + +This is not the Internet. The Internet is a network of networks, which +allows anyone to connect anywhere. + +You want to access your own NAS that is in your home? You'll again +need to connect it to someone else to be able to reach it. + +![](/u/image/ipv4doublenat.png) + +All those intermediate services introduce latency and cost into your +daily routine. For many of us above scenario sounds like a normal +thing to do. However, it is a very degraded version of the Internet +that we are using. + +## No public IP addresses left + +So why are using private IP addresses anyway? Basically your ISP, like +almost all ISPs in the world does not have enough +public IP addresses to give every of your device a public IP +address. So instead of connecting you directly to the Internet, you +are given a maximum of 1 public IPv4 address for all your devices. + +However even 1 public IPv4 address per customer was too much for some +ISPs. So they started repeating the NAT process, making the network +more complex, slower and also putting you further away from other +participants of the Internet. + +![](/u/image/ipv4natandcgnat.png) + + +## The new Internet + +Some of you already can guess where this article is going to and you +are right: It's about IPv6. While there have been many articles written about +IPv6, I think it is important to remember that the old IPv4 does not +work like an **Internet** anymore. IPv6 with its huge amount of +addresses fixes this problem for many human lives ahead. +**IPv6 restores direct connectivity**. + +If you think you don't need to care about IPv6 and you are fine with +the current status, think about it this way: the Internet usage is +growing. Without IPv6, the Internet is becoming slower every +day. Without IPv6 you get more depending on a small amount of big +companies. And this dependency is getting more and more difficult to +reverse in the future. + +## Switching to IPv6 today + +The good news is: you can switch to using IPv6 today. You can request +IPv6 from your current ISP and if your ISP does not support IPv6, +you can change your ISP. Even if there is no ISP with IPv6 around, you +can get IPv6 via anywhere using the +[VIIRB](/u/products/viirb-ipv6-box/) using the +[IPv6VPN](/u/products/ipv6-vpn/). + +At the moment about 33% or one third of the Internet +[have already switched to IPv6, according to +Google](https://www.google.com/intl/en/ipv6/statistics.html). [APNIC +even provides a nice map](https://stats.labs.apnic.net/ipv6) showing +the IPv6 adoption on a per country and per ISP basis. + +Besides making the Internet faster, more reliable and less complex +with IPv6, there is one more reason to switch today: IPv6 is fun! diff --git a/content/u/blog/the-dangerous-eu-draft/contents.lr b/content/u/blog/the-dangerous-eu-draft/contents.lr new file mode 100644 index 0000000..f859a0d --- /dev/null +++ b/content/u/blog/the-dangerous-eu-draft/contents.lr @@ -0,0 +1,130 @@ +title: The new EU draft endangers everyone's security +--- +pub_date: 2020-11-09 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +The EU is about to make the life of all citizens more +dangerous. Besides the ones it tries to target. +--- +body: + +## TL;DR + +The EU is trying to disable encryption for everyone. +However, this approach is fundamentally flawed, as the bad guys don't +follow the law. + +## Introduction + +The Council of the European Union [has published a +draft](https://www.heise.de/downloads/18/2/9/9/8/5/2/0/eu-council-draft-declaration-against-encryption-12143-20.pdf) +which requires everyone who is offering secure communication channels +to allow authorities to read the communication. + +The motivation is clear: terrorist attacks and unlawful behaviour +should be prevented by wiretapping. No crime is better for everyone. +So far, so good. In theory. + +## First problem: reducing security affects everybody + +The first problem is that modern encryption is not easy to break, or +let's put it clearly: it is almost impossible to break. Thus passing +this law requires decades of work to be undone. To make systems that +have been mathematically proven to be secure, more insecure. + +This reduces security for any communication by default. And this does +not only affect terrorists, but also government agencies and the +general public. + +Thus it also reduces the freedom of speech. There are activists out there +(f.i. in the area of climate change) that fear their life, if their +communication is revealed, because some governments do not allow free +speech. + +## Second problem: the bad guys don't comply + +One of the strangest problems with the EU proposal is that the idea is +to make this into a law that everyone has to follow. Or, more precisely: the +idea is that companies like Whatsapp or Signal have to provide keys or +backdoors into their systems that authorities can use for wiretapping. + +Now, this is a crucial problem. Because companies like us, ungleich, +also provide [secure communication using +Matrix](https://ungleich.ch/u/products/hosted-matrix-chat/). And we +are not in the EU (fact check: Switzerland is not in the EU). + +See the problem? No? Well, let's say you are the bad guys and you plan +to coordinate some attack. What do you do? + +You run your own chat system. It is very easy to do. It cannot be +technically prevented. It might be against the law in the EU to run a +chat system that does not allow backdoor access, ok. But then again - you +are going to do something that is against the law anyway. So this is +the least of your problems. + +So the proposed law is actually doing the opposite of its intention: + +* It reduces security for everyone who is behaving according to law +* It does not prevent unlawful parties from communicating securely + +## Third problem: criminalizing science + +Apart from the obvious two really strong problems, the law might +actually lead to research and science being prohibited. The underlying +algorithms are usually based on mathematically hard-to-solve +problems. + +The problems are carefully researched and in the end used to provide +security, confidentiality and integrity. + +Researchers can be hindered by legal questions whether or not they +are able to solve mathematical problems. Which then again can and will stop the progress in other areas of science as well. This all sounds terribly wrong, doesn't it? + +## Fourth problem: a new attack vector + +Let's assume for a moment that none of the above problems is already +crucial enough to stop the whole motion. There is one more big and +crucial problem: if authorities have a backdoor into your +communication, this backdoor needs to be submitted to the +authorities. It needs to be securely stored by authorities. + +It means that this law will make authorities a very interesting target for hacking into. You do +not need to attack a technically very secure system. You can just hack +the authorities server and you gain access to everyone's +communication. + +This enables much easier access for terrorists, foreign (enemy) governments and +everyone else who is interested in getting access to your +communication. + +## Summary + +The proposed draft is dangerous for everyone except the criminals. It is dangerous for civilians, +governments, journalists, whistle-blowers and even the science and medical +sectors. + +The whole approach is fundamentally flawed and if passed as-is reduces +security for everyone, but the bad guys. + +We urge everyone reading this article to do whatever is in their power +to stop this law passing, before it is too late. And too late might +unfortunately already be on the 19th of November 2020. + +## Related websites + +* [Report from heise (DE)](https://www.heise.de/hintergrund/EU-Regierungen-planen-Verbot-sicherer-Verschluesselung-4951415.html) +* [Report from ORF (Austria, DE)](https://fm4.orf.at/stories/3008930/) +* [Reddit discussion](https://www.reddit.com/r/cybersecurity/comments/jqp84o/eu_encryption_ban_proposed_following_terrorist/) +* [Technical details on politico](https://www.politico.eu/wp-content/uploads/2020/09/SKM_C45820090717470-1_new.pdf) +* [The EU draft document (on + heise.de)](https://www.heise.de/downloads/18/2/9/9/8/5/2/0/eu-council-draft-declaration-against-encryption-12143-20.pdf) +* [The EU draft document (on orf.at)](https://files.orf.at/vietnam2/files/fm4/202045/783284_fh_st12143-re01en20_783284.pdf) +* [Matrix.org about the current backdoor requests](https://matrix.org/blog/2020/10/19/combating-abuse-in-matrix-without-backdoors) diff --git a/content/u/blog/the-dangerous-eu-draft/eu.jpg b/content/u/blog/the-dangerous-eu-draft/eu.jpg new file mode 100644 index 0000000..f035964 Binary files /dev/null and b/content/u/blog/the-dangerous-eu-draft/eu.jpg differ diff --git a/content/u/blog/the-ipv6-eye-a-proper-ipv6-camera/contents.lr b/content/u/blog/the-ipv6-eye-a-proper-ipv6-camera/contents.lr new file mode 100644 index 0000000..de91e45 --- /dev/null +++ b/content/u/blog/the-ipv6-eye-a-proper-ipv6-camera/contents.lr @@ -0,0 +1,94 @@ +title: The IPv6-eye: a proper IPv6 camera +--- +pub_date: 2020-11-04 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Looking for an IPv6 camera? Do not look any further. +--- +body: + +## TL;DR + +At ungleich we have created an IPv6 camera that brings its own IPv6 +connectivity. And a world wide reachable name. We are +currently +[crowdfunding](https://swiss-crowdfunder.com/campaigns/the-1000-eyes-project/) +the production of the first 100 cameras. + +## A real IPv6 camera? + +What is the advantage of IPv6 again? Exactly, world wide reachability +without any hacks or quirks. + +To support this, we have not only created a camera **that works within +all types of networks**: + +* IPv6 only +* IPv4 only +* Dual Stack (IPv6+IPv4) + +We took it one step further: The +**IPv6-eye** is an IPv6 camera that **brings its own IPv6 +connectivity**. This way it works independently of whether your network +actually supports IPv6 or not. + +On top of all of this, we created the [1000ey.es](https://1000ey.es) +project that even **gives a cool name** to every IPv6 camera in the world. + +## How to use the IPv6-eye + +It is very simple: + +* plugin a network cable with Internet uplink +* connect it to power +* It works! + +After that you can ... + +* Point the camera to what you want to show +* Visit *yourname*.1000ey.es:8081 (you can find an example on + [mountains-diesbach.1000ey.es](http://mountains-diesbach.1000ey.es:8081/) +* Optionally configure it to connect to your existing wifi network + +## How does the IPv6-eye work? + +But what happens under the hood? The IPv6-eye is based on a similar +concept as the [VIIRB](/u/products/viirb-ipv6-box). The IPv6-eye +uses the [IPv6VPN](https://IPv6VPN.ch) to acquire IPv6 +connectivity. This works in IPv4 only, IPv6 only and dual stack networks. + +From that moment on, the camera is world wide reachable. + +## A name for every IPv6 camera out there + +However, people do not like to type IP addresses. Not IPv4, not +IPv6. For this reason you can choose a name below the domain +**1000ey.es** for your camera. This offer is for free on top of the +actual hardware. + +## Fully Open Source + +Like the VIIRB, the whole stack is fully Open Source. The +operating system is OpenWRT. The VPN software is wireguard. And the +video streaming server is based on mjpg-streamer or motion (still has +to be decided for the final shipment). All files that are required to +configure the IPv6-eye can be found in the [ungleich-tools +repository](https://code.ungleich.ch/ungleich-public/ungleich-tools). + +## Crowdfunding the production + +As it is usual for the production process to start at a minimum size, +we aim to crowdfund the first 100 units. If we exceed the minimum goal +of 100 IPv6 eyes, we have added some extra goodies as an option. + +Checkout the [crowdfunding +campaign](https://swiss-crowdfunder.com/campaigns/the-1000-eyes-project/) +for more details. diff --git a/content/u/blog/the-v6-pattern-for-proxied-hosts/2021-02-24-183437_817x476_scrot.png b/content/u/blog/the-v6-pattern-for-proxied-hosts/2021-02-24-183437_817x476_scrot.png new file mode 100644 index 0000000..7b8f4c3 Binary files /dev/null and b/content/u/blog/the-v6-pattern-for-proxied-hosts/2021-02-24-183437_817x476_scrot.png differ diff --git a/content/u/blog/the-v6-pattern-for-proxied-hosts/contents.lr b/content/u/blog/the-v6-pattern-for-proxied-hosts/contents.lr new file mode 100644 index 0000000..43a75d0 --- /dev/null +++ b/content/u/blog/the-v6-pattern-for-proxied-hosts/contents.lr @@ -0,0 +1,36 @@ +title: The v6 pattern for IPv6 only hosts +--- +pub_date: 2021-02-24 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +ungleich tech talk number 1 +--- +body: + + + +At ungleich we have a lot of IPv6-only web servers. Many of them are +are proxied from the IPv4 world, so the domain name points to two +different machines: + +* the AAAA entry points to the server directly +* the A entry points to a proxy + +This sometimes makes configuring the right system a bit harder, +because on dual stack clients, accessing www.example.com brings you to +either machine. In the [first ungleich tech +talk](https://www.youtube.com/watch?v=cANwo0IdZYU) we show how this +looks in detail and how we ensure that we configure the right machine. + +This is our first tech talk and we love to [hear your feedback](/u/contact/). diff --git a/content/u/blog/ungleich-adds-bounty-program/contents.lr b/content/u/blog/ungleich-adds-bounty-program/contents.lr new file mode 100644 index 0000000..8238f45 --- /dev/null +++ b/content/u/blog/ungleich-adds-bounty-program/contents.lr @@ -0,0 +1,56 @@ +title: ungleich adds a bounty program +--- +pub_date: 2020-04-29 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Hack on Free and Open Source Software and get money for it +--- +body: + +## TL;DR + +At ungleich we love [FOSS](/u/projects/opensource). If you want to +contribute to selected Free and Open Source Software and even get paid +for it, checkout the [ungleich bounty +program](/u/projects/jobs-hacks-bounties/). + +## Introduction + +At ungleich we have something like an "infinite task queue". While we +do contribute to Free and Open Source Software on daily basis, there +are a variety of things we can't do during daily work. + +## It's Open Source + +So because everything we use is Open Source and we live the Open +Source spirit, chances are high that somebody will scratch the itch +that we have found some time in the future. Because it is Open Source, +anyone with the technical skills can actually fix it. + +## It's about values + +Many bounty items will actually list support for IPv6 or fixing things +that are necessary for having "good" or clean software. With +volunteers contributing to Open Source Software, everyone profits from +the changes that you make. + +## The bounty list + +The list of bounties can be found on our +[Jobs, Hacks and Bounties page](/u/projects/jobs-hacks-bounties/). It +will be updated regularly with the progress. + +If you think you have a project that fits very much the ungleich +project, you can also suggest a bounty by writing an email to **support +at ungleich.ch**. + +You are also invited to join our [open chat](/u/projects/open-chat/), +to hang out or to discuss the bounty idea. diff --git a/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/2021-02-28-162036_1282x678_scrot.png b/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/2021-02-28-162036_1282x678_scrot.png new file mode 100644 index 0000000..b31731f Binary files /dev/null and b/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/2021-02-28-162036_1282x678_scrot.png differ diff --git a/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/contents.lr b/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/contents.lr new file mode 100644 index 0000000..125c32d --- /dev/null +++ b/content/u/blog/ungleich-tech-talk-2-accessing-ipv4-only-devices-via-ipv6/contents.lr @@ -0,0 +1,39 @@ +title: Accessing IPv4 only hosts via IPv6 +--- +pub_date: 2021-02-28 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +ungleich tech talk number 2 +--- +body: + +In the [second ungleich tech +talk](https://www.youtube.com/watch?v=Gfe35IFdx-Q) you can find out +how to access IPv4 only devices from the IPv6 Internet using a simple +NAT64 translator. + + + + +This is especially helpful if you are by default in IPv6 only +networks, but you still have legacy-only networks or legacy-only +devices that you need to access. + +In this ungleich tech talk we use the +[VIWIB](/u/products/viwib-wifi-ipv6-box/) as a NAT64 translator and +a reconfigured [VIGIR](/u/products/vigir/) as an IPv4 only demo +device. + +If you have any questions, feel free to join the [IPv6 +chat](/u/projects/ipv6-chat/). diff --git a/content/u/blog/ungleich-tech-talk-3-nat64-introduction/contents.lr b/content/u/blog/ungleich-tech-talk-3-nat64-introduction/contents.lr new file mode 100644 index 0000000..0b77323 --- /dev/null +++ b/content/u/blog/ungleich-tech-talk-3-nat64-introduction/contents.lr @@ -0,0 +1,29 @@ +title: An Introduction to NAT64 +--- +pub_date: 2021-03-09 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +ungleich tech talk number 3 +--- +body: + +In the +[third ungleich tech +talk](https://www.youtube.com/watch?v=AeqS6Cjkd5E) +we give an introduction on NAT64 and how it works in general. + + + +We hope that you enjoy this video and +if you have any questions, feel free to join the [IPv6 chat](/u/projects/ipv6-chat/). diff --git a/content/u/blog/ungleich-tech-talk-3-nat64-introduction/ungleich-tt-3.png b/content/u/blog/ungleich-tech-talk-3-nat64-introduction/ungleich-tt-3.png new file mode 100644 index 0000000..445142e Binary files /dev/null and b/content/u/blog/ungleich-tech-talk-3-nat64-introduction/ungleich-tt-3.png differ diff --git a/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/contents.lr b/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/contents.lr new file mode 100644 index 0000000..f76bfb6 --- /dev/null +++ b/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/contents.lr @@ -0,0 +1,32 @@ +title: IPv4 as a service (ungleich tech talk #4) +--- +pub_date: 2021-03-25 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +ungleich tech talk number 4 +--- +body: + +In the +[fourth +ungleich tech talk](https://youtu.be/RcgB7S6lo54) +you can see how to get IPv4 via IPv6. + + + +We hope that you enjoy this video and +if you have any questions, feel free to join the [IPv6 +chat](/u/projects/ipv6-chat/). You can also read more about +[IPv4-as-a-service](https://ungleich.ch/u/products/ipv4-as-a-service/). diff --git a/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/ungleich-tt4.png b/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/ungleich-tt4.png new file mode 100644 index 0000000..a5dfd4c Binary files /dev/null and b/content/u/blog/ungleich-tech-talk-4-ipv4-as-a-service/ungleich-tt4.png differ diff --git a/content/u/blog/video-conference-for-all/contents.lr b/content/u/blog/video-conference-for-all/contents.lr new file mode 100644 index 0000000..f495832 --- /dev/null +++ b/content/u/blog/video-conference-for-all/contents.lr @@ -0,0 +1,65 @@ +title: Free Video Conference Call For All +--- +pub_date: 2020-04-26 +--- +author: ungleich +--- +twitter_handle: ungleich +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Now we offer free, Open Source video conference +--- +body: + +## A Sustainable Video Conference System + +For many people who can work remotely, now is the time to stay home and to move meetings from in person to (video) conference. We have published [our remote working stack](https://ungleich.ch/u/blog/remote-working-with-opensource-sustainability/) for those who look for a sustainable solution for digitally continuing their work. + +Good news, one more nice thing is added to this list of remote working stack: a free and open source [video conference system.](https://talk.ungleich.ch/) Powered by [100% renewable energy,](https://datacenterlight.ch/en-us/cms/hydropower/) running on a VM at our Swiss data center. + +You can try now at +[talk.ungleich.ch](https://talk.ungleich.ch/) + +## Deciding what to use + +An important note: we’re an open-source, sustainability- focused IT company. We decide which tools to use by these criteria. + +- open-source +- sustainablility +- state of the art +- usability for people with all backgrounds + +![](/u/image/jitsi-ungleich.jpg) + +## Cool thing about Jitsi + +The underlying technology for our free video conference call is Jitsi. We love that Jitsi has a really cool architecture - it does not encode or decode the video streams, but only forwards video streams so the client does the encoding and decoding. This means the virtual machine that runs Jitsi doesn't need to be much powerful and can stay fairly small. + +## Go ahead, use it for free + +You can have a video call with multiple parties, you can share screen, and you can share video over it. You can use have a conference call with or without video. No signup is needed, you can just use it on the go. We don't track any of your information: we want to enable people to work from home and stay safe, with open source and renewable energy. + +![](/u/image/jitsi-ungleich-confcall.jpg) + +## Useful things to know + +Our free video conference call is rolled out on March 20th and since then we have collected some feedbacks. Here are some useful infos we got from using it first-hand and from the inputs of our users. + +- Could show mixed result with video call when used on Firefox. We heard that the great developers of Jitsi are working on this right now and the fix is on its way. +- Users have reported that when one call has more than 12 active videos the quality degrades. In such case turning off the video solves the issue. +- The video quality varies greatly depending on the cleint computer. Computers with more graphic capability shows better performance. + +## Call as much as you need, and stay home + +Use our free video conference to call the ones you need to talk to. We hope this helps your communication in this extraordinary time we're living in. + +If you have any thoughts to share, feel free to get in touch with us at our [Twitter](https://twitter.com/ungleich) or [Matrix.](https://matrix.ungleich.ch) +Wherever you are, stay safe. + + + + diff --git a/content/u/blog/visit-a-zero-carbon-datacenter/contents.lr b/content/u/blog/visit-a-zero-carbon-datacenter/contents.lr index dc33598..b280704 100644 --- a/content/u/blog/visit-a-zero-carbon-datacenter/contents.lr +++ b/content/u/blog/visit-a-zero-carbon-datacenter/contents.lr @@ -47,7 +47,7 @@ like wasting a lot of resources, then why don't you even stay with us and work or relax? We can provide you with a place to sleep and stay over in the -[Hacking Hotel](/u/projects/hacking-hotel/) or the +[Hacking Villa](/u/projects/hacking-villa/) or the [Digital Chalet](/u/projects/digital-chalet/), where you can work with a 10 Gbit/s connection that goes directly to the data center. @@ -68,6 +68,6 @@ fairy tale, just in reality. ## How to visit Just reach out to us by email (info at ungleich.ch), -[chat](https://chat.ungleich.ch) or +[chat](https://chat.with.ungleich.ch) or [twitter](https://twitter.com/ungleich) and we will share information of how and when to best reach us with you. diff --git a/content/u/blog/voty-bringing-democracy-to-schools/contents.lr b/content/u/blog/voty-bringing-democracy-to-schools/contents.lr new file mode 100644 index 0000000..2de6fa9 --- /dev/null +++ b/content/u/blog/voty-bringing-democracy-to-schools/contents.lr @@ -0,0 +1,42 @@ +title: voty.ch - Bringing Democracy to Schools +--- +pub_date: 2020-11-25 +--- +author: voty.ch & ungleich +--- +_hidden: no +--- +_discoverable: no +--- +body: + + + +## voty.ch - Bringing Democracy to Schools + +Democracy is one of Switzerland's most valuable assets. And it's not something we can just take for granted, that's what we realize during this special year 2020. But how can we motivate our younger generation to care about it? + +The project voty.ch tries to increase the understanding of democracy for children aged 12-18 years with three modules: + +**Understand Democracy:** How does democracy actually work in Switzerland and why is it indispensable? voty.ch would like to motivate our youth to understand and discuss the building blocks of our political system using existing and newly created learning material. + +**Test Democracy:** Only adults may cast a vote. But young people have an opinion, too! voty.ch started to organize test votings for school classes during national ballots. What does our youth think about the upcoming ballots? + +**Experience Democracy:** Who decides at school? Are students invited to propose initiatives and discuss them? voty.ch would like to experiment with bringing democratical decision processes to schools in Switzerland. + +The project is developed in [open-source](http://github.com/teachen-ch/voty/) as part of the [prototypefund.opendata.ch](https://prototypefund.opendata.ch), a fund to bring forward civic tech in Switzerland. When it came to hosting, it became quickly clear, that storing student data with political opinions at AWS or Google is a complete no-go. So the team decided to go for a Swiss ISP and didn't hestate long before opting for a sustainable solution with 100% renewable energy at ungleich.ch. + + +## ungleich's take on voty.ch + + +From the very beginning at ungleich, our goal has been fostering sustainability in technology. That is why we run a Zero Carbon data center, which only uses the local hydropower plant as a source of electricity. And that is why we reuse existing buildings and recycled hardware to reduce carbon emissions as much as possible. + +We strive for a digital sustainability in every way we can: all our services are IPv6 first, many of our services even run IPv6 only. All our tools are fully Open Source, and we open our infrastructure and monitoring data for free. With our hosted Matrix chat and the IPv6VPN.ch we have been supporting free speech and allowing unhindered communication in situations where it would not be possible otherwise. Our way of pursuing sustainability has attracted like-minded people as our customers, especially those who are passionate about the responsibility of technology towards sustainability. + +Given all that, we must admit that our team became very excited when we learned about the project voty.ch. A platform that helps students to experience democratic processes first hand, we find it as a true enabler. Democratic processes, discourses and finding consensus is deeply rooted in Switzerland and we can not stress its importance enough. +voty.ch, as seen by ungleich, is not only a Swiss project to foster its own democracy, but it is also an inspiration to the rest of the world where sound democracy is needed for our future generation. The beauty of voty.ch is that it is Open Source – everyone can use and adapt it to their needs. Translate it into your own language. Or even host it yourself. + +We are very happy to welcome voty.ch to our infrastructure. We look +forward to seeing students practicing democracy on +[voty.ch](https://voty.ch). diff --git a/content/u/blog/voty-bringing-democracy-to-schools/voty.png b/content/u/blog/voty-bringing-democracy-to-schools/voty.png new file mode 100644 index 0000000..9b73ce8 Binary files /dev/null and b/content/u/blog/voty-bringing-democracy-to-schools/voty.png differ diff --git a/content/u/blog/work-from-home-work-remote-with-matrix/contents.lr b/content/u/blog/work-from-home-work-remote-with-matrix/contents.lr new file mode 100644 index 0000000..fd8a5d1 --- /dev/null +++ b/content/u/blog/work-from-home-work-remote-with-matrix/contents.lr @@ -0,0 +1,107 @@ +title: Remote Working with Matrix in covid-19 times +--- +pub_date: 2020-03-15 +--- +author: Nico Schottelius +--- +twitter_handle: NicoSchottelius +--- +_hidden: no +--- +_discoverable: yes +--- +abstract: +Workin from home or remote and using the Internet to stay in touch +--- +body: + +## TL;DR + +Stay isolated in real life, stay connected digitally. + +* Go to https://account.ungleich.ch, create an account, it's free +* Verify your account by email +* Go to https://matrix.ungleich.ch, login with your new account +* Type **/join #covid-19:ungleich.ch** if you want to talk about + topics related to the virus. +* Talk to people. You are not alone. +* Create your own rooms as needed (as in above channel if you need help) +* Stay home + +## Coronavirus, remote working and how to not go crazy + +The covid-19 virus forces a lot of us to think differently, behave +differently and work differently. Whether you have to work from home +or whether you do it voluntarily, you might want to stay in touch with +other people. With your teammates, colleagues or other people. + +## Isolate in real life, stay connected digitally + +One of the most important things to do at the moment is to not further +spread the virus. Here in Switzerland, we try to reduce the risk by +social distancing. No shaking hands, coughing and sneezing into your +elbow and in general to stay away from other people. + +If you are not used to staying alone or being isolated, this can be a +tricky +thing to do. Luckily, we do have the Internet that allows us to talk +with each other, without causing a danger to each other. + +While there are a variety of tools out there to stay in touch with +each other, we propose to use the **Matrix** chat for a variety of +reasons: + +## Matrix is federated. Federated = open to talk to others + +Matrix is federated. As opposed to Whatsapp, Telegram, Hangouts, +Skype or Slack, Matrix is open to connect to others. Let me guide you through +how it differs to other systems: + +If you create an account on https://account.ungleich.ch and then go to +https://matrix.ungleich.ch afterwards, you can talk to anyone in the +world, who is also using Matrix. Not the one from ungleich, but maybe +the one from https://matrix.org. Or from somebody completely +different. + +Matrix is not a closed system. If you decide that you want to write to +somebody on a different server, you can do so. + +Matrix also allows you to **call** other people or have **video +conferences**. + +## A Matrix channel dedicated to COVID-19 + +So coronavirus. Social distancing. We created a channel dedicated to +the coronavirus to discuss the topic. If you created an account above +and joined https://matrix.ungleich.ch, you can join the channel by +typing **/join #covid-19:ungleich.ch** or use the +[matrix.to](https://matrix.to/#/#covid-19:ungleich.ch) service. + +The covid-19 channel is open for everyone. You can discuss how you +feel, whether you are affected, infected, bored or ask questions about +how to behave. Beware though, we are **not** a medical team. This is +more the type of alcoholics anonymous style, not a digital hospital. + +There is now also a [German speaking +channel](/u/blog/deutschsprachiger-coronavirus-chat/) available. + +## Your own Matrix server + +If you are newly into remote work and you want or need your +own Matrix server, +this is something that we provide. You can checkout the +[Hosted Matrix Chat](/u/products/hosted-matrix-chat/) for details. It +allows you to manage your own chat rooms and to control whom to invite +to what. + +If you just need a place to talk with your friends, you can +do so freely on https://matrix.ungleich.ch. + +## Future of the coronavirus + +No one of us knows at the moment how things will continue with the +covid-19 virus, but we wish everyone to stay safe. And hopefully above +chat helps some of us to not stay too alone, even if we are alone at +home. + +Stay safe! diff --git a/content/u/contact/contents.lr b/content/u/contact/contents.lr new file mode 100644 index 0000000..bb8179f --- /dev/null +++ b/content/u/contact/contents.lr @@ -0,0 +1,43 @@ +title: Contact ungleich +--- +_model: page-2020 +--- +content: + +## General inquiries + +You can send an email to **info at ungleich.ch**. + +## Support requests + +You can send an email to **support at ungleich.ch**. + +## Chat + +Feel free to join our [Open Community +Chat](/u/projects/open-chat/). For support requests you can ping us in +any of the public rooms and we will create a private room for you. + +## Data Center Light Status + +There is a dedicated matrix room +**#datacenterlight-status:ext.ungleich.ch** that is hosted outside of +Data Center Light and is used for status announcements. + +You can use any regular matrix account to connect to it or +[register an account on it](https://matrix.ext.ungleich.ch). + +## Post + +* **ungleich glarus ag** Bahnhofstrasse 1, 8783 Linthal +* **ungleich GmbH** Hauptstrasse 14, 8775 Luchsingen + +## Telephone + +* +41 55 505 62 66 + +## Coworking Space / Education Center + +* Co-Working & Co-Living: [Digital Chalet + Schwanden](/u/projects/digital-chalet/) In der Au 7, 8762 Schwanden +* Co-Working & Co-Living & Education: [Hacking Villa Diesbach](/u/projects/hacking-villa/) Hauptstrasse 28, 8777 Diesbach diff --git a/content/u/offers/advent-calendar/advent.jpg b/content/u/offers/advent-calendar/advent.jpg new file mode 100644 index 0000000..c1a387e Binary files /dev/null and b/content/u/offers/advent-calendar/advent.jpg differ diff --git a/content/u/offers/advent-calendar/contents.lr b/content/u/offers/advent-calendar/contents.lr new file mode 100644 index 0000000..175b899 --- /dev/null +++ b/content/u/offers/advent-calendar/contents.lr @@ -0,0 +1,31 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Advent Calendar (Closed) +--- +subtitle: December, a new deal is revealed everyday! +--- +headline1: December 1 -24 +--- +headline2: Discover new deals +--- +headline3: everyday +--- +header_background_color: #C12107 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/advent.jpg +--- +content1_image: advent.jpg +--- +content1_text: + +## the ungleich advent calender + +Every day from 1st to 24th of December, a new surprise is being revealed. Discover great deals with sustainable technology. Your new surprise is soon to be activated, stay tuned! \ No newline at end of file diff --git a/content/u/offers/black-friday-2020/blackfriday-giftcard.jpg b/content/u/offers/black-friday-2020/blackfriday-giftcard.jpg new file mode 100644 index 0000000..7afe8d7 Binary files /dev/null and b/content/u/offers/black-friday-2020/blackfriday-giftcard.jpg differ diff --git a/content/u/offers/black-friday-2020/blackfriday-vpn.jpg b/content/u/offers/black-friday-2020/blackfriday-vpn.jpg new file mode 100644 index 0000000..0aedaee Binary files /dev/null and b/content/u/offers/black-friday-2020/blackfriday-vpn.jpg differ diff --git a/content/u/offers/black-friday-2020/blackfriday.jpg b/content/u/offers/black-friday-2020/blackfriday.jpg new file mode 100644 index 0000000..1f1f887 Binary files /dev/null and b/content/u/offers/black-friday-2020/blackfriday.jpg differ diff --git a/content/u/offers/black-friday-2020/contents.lr b/content/u/offers/black-friday-2020/contents.lr new file mode 100644 index 0000000..eb6d0f6 --- /dev/null +++ b/content/u/offers/black-friday-2020/contents.lr @@ -0,0 +1,118 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: Black IPv6 Friday 2020 (Closed) +--- +subtitle: Special deals 2020.11.26-11.30 +--- +headline1: Black IPv6 Friday +--- +headline2: 2020.11.26 - 2020.11.30 +--- +image: /u/image/cards/blackfriday20.jpg +--- +header_background_color: #211C1E +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +description1: + + +## Black IPv6 Friday + +We prepared some exciting deals for the limited time of 2020.11.26 - 2020.11.30. +Get yourself a treat with sustainable technology! + +* Deal 1: IPv6 VPN for 2 years +* Deal 2: Get a VIIRB and get 2 years of VPN with it +* Deal 3: 50% Discount for the VPN extension for VIIRB and PIB users +* Deal 4: 5% Discount for all ungleich Gift Cards + +--- +content1_text: + +## Deal 1. IPv6 VPN for 2 years for the price of 1. + +During Black Friday sales, we offer our IPv6 VPN for 2 years for the price of 1 year! + +### About IPv6 VPN + +The underlying technology is wireguard, 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. + +IPv6 VPN encrypts the traffic until the endpoint in Switzerland. Thus the IPv6 VPN allows you to originate traffic in a different country. +As you receive 80 bit of IPv6 space, you can divide the network to your liking. The connection is encrypted with modern cryptographic algorithms. No network traffic is logged to preserve privacy. + +### Order IPv6 VPN now and save 120 CHF! + +Our IPv6 VPN is 120 CHF per year. Now you can pay just 120 CHF for 2 year's VPN subscription instead of 240 CHF, you save 120 CHF. + +Order IPv6 VPN for 2 years for the price of 1 year +--- +content1_image: blackfriday-vpn.jpg +--- +content2_text: + +## Deal 2. VIIRB with 2 years of free IPv6 VPN + +Everyone who orders VIIRB during Black Friday Sales gets a VIIRB with 2 years IPv6 VPN included instead of 1 year. Buy a VIIRB now, and you get the special deal included automatically. + +* [Buy VIIRB](https://ungleich.ch/u/products/viirb-ipv6-box/) +* [Buy PIB](https://ungleich.ch/u/products/pro-ipv6-box/) + +--- +content2_image: viirb-blackfriday.jpg +--- +content3_text: + +## Deal 3. 50% Discount on IPv6 VPN extension for VIIRB or PIB users + +Do you already have our star product [VIIRB,](https://ungleich.ch/u/products/viirb-ipv6-box/) or [PIB](https://ungleich.ch/u/products/pro-ipv6-box/)? Now we offer the next year's VPN for your VIIRB 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 adorable VIIRB and powerful PIB, and keep your IPv6 VPN uninterrupted! +Offer is valid for VIIRB and PIB users. + +Order IPv6 VPN for VIIRB or PIB with 50% discount + +--- +content3_image: vpn-extension.jpg +--- +content4_text: + +## Deal 4. 5% off on all ungleich Gift Cards + +Now you have a way of giving sustainable technology to people you care. With our [Gift Card,](https://ungleich.ch/u/products/giftcard/) you can choose any of our products as a gift. For the Gift Cards bought during Black Friday Deals, we give you 5% discount. + +### Available products + +You can use our Gift Card for the following products. + +* [Zero Carbon Cloud](https://ungleich.ch/u/products/zero-carbon-cloud/) +* [Zero Carbon VPS](https://ungleich.ch/u/products/virtual-machine-hosting/) +* [Zero Carbon Chat](https://ungleich.ch/u/products/zero-carbon-chat/) +* [Hosted Matrix Chat](https://ungleich.ch/u/products/hosted-matrix-chat/) +* [VIIRB](https://ungleich.ch/u/products/viirb-ipv6-box/) +* [PIB](https://ungleich.ch/u/products/pro-ipv6-box/) +* [IPv6 VPN](https://ungleich.ch/u/products/ipv6-vpn/) +* [IPv6 Holiday Kit](https://ungleich.ch/u/products/ipv6-holiday-kit/) +* [IPv6 Camera](https://ungleich.ch/u/products/ipv6-camera/) + +### How to get the 5% discount + +Go through the checkout and write us that you bought the Gift Card during Black Friday sales, we will give you back the 5% of the amount you purchased. + +[Order Gift Card](https://ungleich.ch/u/products/giftcard/) +--- +content4_image: blackfriday-giftcard.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 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 PIB 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 [PIB product page.](https://ungleich.ch/u/products/pro-ipv6-box/) + +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! diff --git a/content/u/offers/black-friday-2020/viirb-blackfriday.jpg b/content/u/offers/black-friday-2020/viirb-blackfriday.jpg new file mode 100644 index 0000000..1f8c92f Binary files /dev/null and b/content/u/offers/black-friday-2020/viirb-blackfriday.jpg differ diff --git a/content/u/offers/black-friday-2020/vpn-extension.jpg b/content/u/offers/black-friday-2020/vpn-extension.jpg new file mode 100644 index 0000000..e7eec0d Binary files /dev/null and b/content/u/offers/black-friday-2020/vpn-extension.jpg differ diff --git a/content/u/offers/ipv6-year-2020-07-29/contents.lr b/content/u/offers/ipv6-year-2020-07-29/contents.lr new file mode 100644 index 0000000..ca277a9 --- /dev/null +++ b/content/u/offers/ipv6-year-2020-07-29/contents.lr @@ -0,0 +1,50 @@ +title: 2020 year of IPv6 (Closed) +--- +subtitle: Support IPv6 - get a discount +--- +_model: product +--- +_hidden: no +--- +_discoverable: yes +--- +headline1: Commit on IPv6 +--- +headline2: Support the community +--- +headline3: Get a nice discount +--- +header_background_color: #a165c7 +--- +header_text_color: text-light +--- +image: /u/image/cards/yearly-2020.jpg +--- +nav_classes: navbar-dark +--- +description1: + +## 2020 is the year of IPv6 + +IPv6 is growing everywhere and 2020 is the year of change. If you are +not yet running your services on IPv6, it is probably a good time to +give it a try. + +## Supporting you with IPv6 + +To make it easier for you to join the IPv6 movement, we are giving out +discounts for those who commit on IPv6 for at least a year: + +* 4% discount on any Dual Stack VM (if committed for a year) +* 6% discount on all IPv6 only VMs with at least 2 cores and 2 GB RAM (if committed for a year) + +## How it works + +* Select your favorite operating system on https://datacenterlight.ch +* Send an email to support@ungleich.ch with the specs + * Number of cores + * GB RAM + * Size of the SSD disk + * The selected operating system +* This offer is valid for all orders that arrive between **2020-08-01 to 2020-08-14** +* The discount stays the same even after the year passed! diff --git a/content/u/offers/penguin-day-2020-01-06/contents.lr b/content/u/offers/penguin-day-2020-01-06/contents.lr index 628f66e..a9bf754 100644 --- a/content/u/offers/penguin-day-2020-01-06/contents.lr +++ b/content/u/offers/penguin-day-2020-01-06/contents.lr @@ -1,6 +1,6 @@ _model: page-2020 --- -title: Penguin Day 2020 +title: Penguin Day 2020 (Closed) --- subtitle: Draw your own cute penguin and get 10% discount --- diff --git a/content/u/offers/stay-home-2020-03/contents.lr b/content/u/offers/stay-home-2020-03/contents.lr new file mode 100644 index 0000000..61ccba3 --- /dev/null +++ b/content/u/offers/stay-home-2020-03/contents.lr @@ -0,0 +1,59 @@ +title: Stay home and get a month for free (Closed) +--- +subtitle: Proof that you stay home and get a month for free +--- +_model: product +--- +_hidden: no +--- +_discoverable: yes +--- +headline1: Stay home +--- +headline2: Protect Others +--- +headline3: Get 1 month for free +--- +header_background_color: #071f2e +--- +header_text_color: text-light +--- +nav_classes:navbar-dark +--- +image: /u/image/cards/stayhomesale.jpg +--- +content1_text: + +## Let's trick the Coronavirus! + +It's important to stay home to protect yourself and others from the +Coronavirus. To motivate you to stay home, we give away one month for +free, if you send us a picture that + +* shows you working at home +* or shows your home office work place + +(you can render it anonymous or blur sensitive parts, +but you must be convincing that the picture is indeed from you and +that you are indeed staying home). + +We will use the pictures on social media to encourage others to stay +home and work from home. + +## How it works + +Order a VM at either https://datacenterlight.ch or +https://ipv6onlyhosting.com. Send your picture and the order number to +**support at ungleich.ch** or contact us via the +[Open Chat](../../projects/open-chat/). + +As soon as our team checks your message, we will apply the 100% +discount coupon for your next month's payment. You only pay for 1 +month but get 2 months. + +This offer is valid from 2020-03-25 to 2020-04-25. + +## I don't need a VM, but still want to participate + +That's great! Just send us a picture as described above and we will +repost it! diff --git a/content/u/offers/timesale-2020-03/contents.lr b/content/u/offers/timesale-2020-03/contents.lr new file mode 100644 index 0000000..e021e33 --- /dev/null +++ b/content/u/offers/timesale-2020-03/contents.lr @@ -0,0 +1,51 @@ +title: Time sale 13:00-15:00 (Closed) +--- +subtitle: Order a VM and get the next month for free +--- +_model: product +--- +_hidden: no +--- +_discoverable: yes +--- +headline1: 1 Month Free +--- +headline2: Every day +--- +headline3: 13:00-15:00 CET +--- +header_background_color: #2A8FD0 +--- +header_text_color: text-light +--- +nav_classes:navbar-dark +--- +image: /u/image/cards/timesale-2020-03.jpg +--- +content1_text: +Order a new VM and get one month free every day between 13:00 - 15:00 CET. Starting 2020/03/20. + + +## Pay for 1 month, get the next month free. + +You get 100% discount for your next month invoice when you order a VM at [DataCenterLight.ch](https://datacenterlight.ch) between 13:00 - 15:00 CET for 9 days. VMs with the following OS will get the discount each day. + +* Alpine Linux: 2020/03/20 +* Ubuntu: 2020/03/21 +* ArchLinux: 2020/03/22 +* OpenBSD: 2020/03/23 +* CentOS: 2020/03/24 +* FreeBSD: 2020/03/25 +* Fedora: 2020/03/26 +* Debian: 2020/03/27 +* Devuan: 2020/03/28 + +We announce which OS will get discount beforehand on this page and on our [Twitter.](https://twitter.com/ungleich) + + +## How to get one month for free + +Order a monthly or yearly plan on [Data Center Light](https://datacenterlight.ch) and go through the checkout, and send us the following message to support@ungleich.ch or Twitter @ungleich +"I want the next month free for my Debian VM." + +As soon as our team checks your message, we will apply the 100% discount coupon for your next month's payment. You only pay for 1 month but get 2 months. diff --git a/content/u/offers/valentine-machine-2020/contents.lr b/content/u/offers/valentine-machine-2020/contents.lr index eb4644c..5b4e492 100644 --- a/content/u/offers/valentine-machine-2020/contents.lr +++ b/content/u/offers/valentine-machine-2020/contents.lr @@ -1,4 +1,4 @@ -title: Zero Carbon Valentine 2020 +title: Zero Carbon Valentine 2020 (Closed) --- subtitle: give sustainability to your beloved --- diff --git a/content/u/offers/vpn-celebration-2021/contents.lr b/content/u/offers/vpn-celebration-2021/contents.lr new file mode 100644 index 0000000..b116036 --- /dev/null +++ b/content/u/offers/vpn-celebration-2021/contents.lr @@ -0,0 +1,66 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 VPN celebration 2021 (Closed) +--- +subtitle: VPNs for IPv6 are fun +--- +headline1: IPv6 VPN +--- +headline2: Celebration 2021 +--- +headline3: 2021.02.01 - 2021.02.06 +--- +image: /u/image/cards/vpn-2021.jpg +--- +header_background_color: #A9D254 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +description1: + +## IPv6VPN celebration 2021 + +Only a few years ago we started offering IPv6 addresses and IPv6 connectivity via +the [IPv6VPN](/u/products/ipv6-vpn/). Since then the IPv6VPN is +bringing IPv6 to countries **on every continent in the world**. + +There is no day at ungleich that we are not using the IPv6VPN +ourselves. And we hear great stories from people who realise IoT +projects with it. And stories of people who remotely collaborate with +IPv6. What all of these stories have in common is that people are +enabled, are able to remotely access their computers, devices, +printers - things that are simply not possible with IPv4 or at least +very complex. + +We cannot always share stories from our users, as we value the privacy +of our users. However, the feedback and stories we have received in +the last months are amazing. +This is enough reason for us to celebrate the IPv6VPN in 2021 and +potentially help more people to get online with IPv6. + +## Special IPv6VPN offer + +We want to bring IPv6 to even more places in the world and thus offer +you a discount if you buy 2 or more IPv6VPN related products: + +* For 2-5 products: 2% discount +* For 6-15 producst: 6% discount +* For 16-30 products: 10% discount + +You can combine any of the following products in this offer: + +* [The IPv6VPN for 1 year](/u/products/ipv6-vpn/) +* [The VIIRB](/u/products/viirb-ipv6-box/) - the world's smallest IPv6 router +* [The VIWIB](/u/products/viwib-wifi-ipv6-box/) - a tiny IPv6 router with WiFi +* [The VIGIR](/u/products/vigir/) - the professional IPv6 router with + an LTE modem + +This offer is valid from 2021-02-01 to 2021-02-06. + +Let's bring IPv6 everywhere! Happy IPv6VPN week! diff --git a/content/u/offers/womensday-2020/contents.lr b/content/u/offers/womensday-2020/contents.lr index 2f396a8..e1327d2 100644 --- a/content/u/offers/womensday-2020/contents.lr +++ b/content/u/offers/womensday-2020/contents.lr @@ -1,4 +1,4 @@ -title: Women's Day 2020 +title: Women's Day 2020 (Closed) --- subtitle: First month free for all women --- diff --git a/content/u/penguincomics/contents.lr b/content/u/penguincomics/contents.lr index 1b64227..9976617 100644 --- a/content/u/penguincomics/contents.lr +++ b/content/u/penguincomics/contents.lr @@ -1,3 +1,7 @@ _model: comics --- title: Penguin Comics +--- +_discoverable: no +--- +_hidden: yes diff --git a/content/u/products/backup/contents.lr b/content/u/products/backup/contents.lr index 09d9c58..3c79a3b 100644 --- a/content/u/products/backup/contents.lr +++ b/content/u/products/backup/contents.lr @@ -1,12 +1,114 @@ -_discoverable: no +_discoverable: yes --- _hidden: no --- title: Backup --- -subtitle: Your insurance in Switzerland +subtitle: Backup your data safely in Switzerland --- +image: /u/image/cards/backup.jpg +--- +headline1: Safely Backup +--- +headline2: Your VM +--- +headline3: Your Data +--- +header_background_color: #5273C2 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: -Pricing: +## Managed Backup -"VM" (IP?) +For Managed Backup, we use our existing backup server. It requires SSH access to your server and makes the data available via web (nextcloud). We recommend Managed Backup service when you don't want to be involved too much into the backup logic and want to focus on something else. +We keep 4 daily backups, 4 weekly and 12 monthly. With our solution you usually need about 5x the original VM space to keep the total of 20 (4+4+12) backups. +--- +content1_image: /u/image/managed-backup.jpg +--- +description3: + +## Pricing + +You can start to backup your VM with below plans. The cost is made of two parts, a one-time initial setup fee and the monthly plan you choose. Our team will get in touch with you as soon as we receive the order and will give you the access to the backup in 1 business day. Growing your storage after starting a plan is very easy and can be done anytime, 100 GB HDD is 2 CHF per month. +--- +offer1_title: ungleich Managed Backup (S) 35 CHF/Month +--- +offer1_text: + +* 1 TB space +* 4 daily, 4 weekly, 12 monthly backups +* [30 CHF Setup fee](https://ungleich.ch/product/backup-setup/) + +--- +offer1_link: https://ungleich.ch/product/managed-backup-s/ +--- +offer2_title: ungleich Managed Backup (M) 115 CHF/Month +--- +offer2_text: + +* 5 TB space +* 4 daily, 4 weekly, 12 monthly backups +* [30 CHF Setup fee](https://ungleich.ch/product/backup-setup/) + +--- +offer2_link: https://ungleich.ch/product/managed-backup-m/ +--- +offer3_title: ungleich Managed Backup (L) 215 CHF/Month +--- +offer3_text: + +* 10 TB space +* 4 daily, 4 weekly, 12 monthly backups +* [30 CHF Setup fee](https://ungleich.ch/product/backup-setup/) + +--- +offer3_link: https://ungleich.ch/product/managed-backup-l/ + +--- +content2_text: + +## DIY Backup + +You can manage your own backup with a VM in our 2nd data center, so +the backup is safely stored in case of physical disasters. You can add +HDD storage on top as you want. The following offers are samples based +on typical usage of backup servers customers take. + +--- +content2_image: /u/image/diy-backup.jpg +--- +offer4_title: DIY Backup (S) 45.5 CHF/Month +--- +offer4_text: + +* 1 TB HDD space +* 2 Cores, 4 GB RAM, 10 GB SSD VM +* HDD storage can be added with 2 CHF for 100 GB per month. +--- +offer4_link: https://ungleich.ch/product/diy-backup-s/ +--- +offer5_title: DIY Backup (M) 125.5 CHF/Month +--- +offer5_text: + +* 5 TB HDD space +* 2 Cores, 4 GB RAM, 10 GB SSD VM +* HDD storage can be added with 2 CHF for 100 GB per month. + +--- +offer5_link: https://ungleich.ch/product/diy-backup-m/ +--- +offer6_title: DIY Backup (L) 225.5 CHF/Month +--- +offer6_text: + +* 10 TB HDD space +* 2 Cores, 4 GB RAM, 10 GB SSD VM +* HDD storage can be added with 2 CHF for 100 GB per month. + +--- +offer6_link: https://ungleich.ch/product/diy-backup-l/ diff --git a/content/u/products/bgp-peering/contents.lr b/content/u/products/bgp-peering/contents.lr index 62cb45c..704ca93 100644 --- a/content/u/products/bgp-peering/contents.lr +++ b/content/u/products/bgp-peering/contents.lr @@ -1,4 +1,4 @@ -_discoverable: no +_discoverable: yes --- _hidden: no --- @@ -6,3 +6,62 @@ title: BGP Peering --- subtitle: Manage your own address space --- +image: /u/image/cards/bgp-peering.jpg +--- +headline1: BGP Peering +--- +headline2: Your own IP Space +--- +headline3: At Data Center Light +--- +header_background_color: #11A88A +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: + +## For whom is BGP peering? + +If you have your own ASN with IPv6 or IPv4 address space, you can +announce it in our data centers. + +## What is required for BGP peering + +To be able to peer with us, you will need to have IP addresses in our +data center. This is the case if you have one of these products: + +* [A Data Center Light VM](../virtual-machine-hosting/) +* [An IPv6 Only VM](../ipv6-only-hosting/) +* [Physical co-located hardware](../colocation/) +* [A VIIRB](../viirb-ipv6-box/), [A VIWIB](../viwib-wifi-ipv6-box/), or [A VIGIR](../vigir/) + +## How to setup BGP peering + +Send a mail to support -at- ungleich.ch containing the following +information: + +* Your ASN and the list of networks you intend to announce +* Your local IP addresses + +Before we can peer, ensure that all objects in the RIPE database are +setup correctly. Specifically ensure that you have + +* route6 / route objects +* inet6num / inetnum objects +* ROA / RPKI configured + +## Ordering BGP Peering + +Setting up peering has a 42 CHF one time fee. + +--- +offer1_title: BGP Peering +--- +offer1_text: +* 42 CHF 1 time set up fee + +--- +offer1_link: https://ungleich.ch/product/bgp-peering/ +--- diff --git a/content/u/products/colocation/contents.lr b/content/u/products/colocation/contents.lr index 354b7a7..39f4860 100644 --- a/content/u/products/colocation/contents.lr +++ b/content/u/products/colocation/contents.lr @@ -89,12 +89,10 @@ dedicated for you and adding routing to your own network. ## Sample calculations * 1 base unit, 100 Mbit, /48 IPv6, no IPv4 = 50 + 75 = 125 CHF/month -* 2 base units, 100 Mbit, /48 IPv6, 2 IPv4 addresses = 2*50 + 75 + 2*9 = 193 CHF/month -* 4 base units, 100 Mbit, /48 IPv6, 40 IPv4 addresses = 4*50 + 75 + 40*9 = 635 CHF/month -* 4 base units, 1000 Mbit/s, /48 IPv6, no IPv4 = 4*50 + 400 = 600 CHF/month +* 2 base units, 100 Mbit, /48 IPv6, 2 IPv4 addresses = 2\*50 + 75 + 2\*9 = 193 CHF/month +* 4 base units, 100 Mbit, /48 IPv6, 40 IPv4 addresses = 4\*50 + 75 + 40\*9 = 635 CHF/month +* 4 base units, 1000 Mbit/s, /48 IPv6, no IPv4 = 4\*50 + 400 = 600 CHF/month -## Fine print - -All prices listed as usual without vat. +All prices listed above are without VAT. --- diff --git a/content/u/products/demo-product/contents.lr b/content/u/products/demo-product/contents.lr index 8a41475..2680dde 100644 --- a/content/u/products/demo-product/contents.lr +++ b/content/u/products/demo-product/contents.lr @@ -5,6 +5,47 @@ _hidden: no title: Demo product --- subtitle: Using all possible fields +--- +description1: + +## This is the first markdown description block + +Description content + +--- +description2: + +## This is the second markdown description block + +Description content + +--- +description3: + +## This is the third markdown description block + +Description content + +--- +description4: + +## This is the fourth markdown description block + +Description content + +--- +description5: + +## This is the 5. markdown description block + +Description content +--- +description6: + +## This is the 6. markdown description block + +Description content + --- link: https://link-to-the-real-product.ch --- @@ -46,6 +87,24 @@ offer3_text: The text for the third offer --- offer3_link: https://ungleich.ch --- +offer4_title: Title of 4. offer +--- +offer4_text: The text for the third offer +--- +offer4_link: https://ungleich.ch +--- +offer5_title: Title of 5. offer +--- +offer5_text: The text for the third offer +--- +offer5_link: https://ungleich.ch +--- +offer6_title: Title of 6. offer +--- +offer6_text: The text for the third offer +--- +offer6_link: https://ungleich.ch +--- description: The real field [Nico](https://www.nico.schottelius.org) wants to use! --- diff --git a/content/u/products/django-hosting/contents.lr b/content/u/products/django-hosting/contents.lr index 4e2d3e6..42e8d01 100644 --- a/content/u/products/django-hosting/contents.lr +++ b/content/u/products/django-hosting/contents.lr @@ -1,4 +1,4 @@ -_discoverable: no +_discoverable: yes --- _hidden: no --- @@ -6,6 +6,20 @@ title: Django Hosting --- subtitle: Hassle free Django hosting --- +headline1:Zero Carbon +--- +headline2: Hassle free +--- +headline3: Django Hosting +--- +header_background_color: #13410B +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image:/u/image/cards/django-hosting.jpg +--- feature1_title: Proven over years --- feature1_text: Here at ungleich we do not only provide django hosting @@ -27,12 +41,13 @@ application with a good conscience and without emitting extra carbon. --- content1_text: + ## Development flow The diagram gives an overview of a typical development flow with our Django hosting. -We strongly recommend to develop Django (like any other application) +We strongly recommend you to develop Django (like any other application) with a version control system, even if you are just a single developer. You can even use the [ungleich code repository](https://code.ungleich.ch) for free @@ -40,11 +55,6 @@ repository](https://code.ungleich.ch) for free ---- -content1_image: djangohosting.svg ---- -description2: - ## Components Depending on your stage of development, a Django hosting may contain @@ -52,12 +62,62 @@ Depending on your stage of development, a Django hosting may contain production) and optionally a backup. - ## Pricing -* Setup fee is 35 CHF -* Monthly fee is 20 CHF + price of the VM - * Typical development VM: 1 cores, 2 GB RAM, 10 GB SSD - * Typical small prod VM: 2 cores, 4 GB RAM, 20 GB SSD - * Typical default prod VM: 4 cores, 8 GB RAM, 50 GB SSD -* All VMs can be extended with extra HDD space +Our Django hosting is consisted with two parts of pricing. First part is a one-time, initial setup fee of 30 CHF, and the second part is a monthly payment for the managed VM at Data Center Light. For the latter you can calculate a standard VM price with 25 CHF monthly maintenance fee. + +## Getting started + +Below offers can get you started with your Django hosting. Our team will get in touch with you as soon as we receive the order. +--- +content1_image: djangohosting.svg +--- +offer1_title: Django Hosting S 42.5 CHF/month +--- +offer1_text: + +* [One time setup fee 30 CHF](https://datacenterlight.ch/product/django-hosting-setup/) +* VM with 1 Core, 2 GB RAM, 10 GB SSD, 100 GB HDD +* Suitable for a development use +* Can be extended with extra HDD space (2 CHF/month per 100 GB) + +--- +offer1_link: https://datacenterlight.ch/product/django-hosting-s/ +--- +offer2_title: Django Hosting M 59 CHF/month +--- +offer2_text: + +* [One time setup fee 30 CHF](https://datacenterlight.ch/product/django-hosting-setup/) +* VM with 2 Core, 4 GB RAM, 20 GB SSD, 200 GB HDD +* Suitable for a small production use +* Can be extended with extra HDD space (2 CHF/month per 100 GB) + +--- +offer2_link: https://datacenterlight.ch/product/django-hosting-m +--- +offer3_title: Django Hosting L 97.5CHF/month +--- +offer3_text: + +* [One time setup fee 30 CHF](https://datacenterlight.ch/product/django-hosting-setup/) +* VM with 4 Core, 8 GB RAM, 50 GB SSD, 500 GB HDD +* Suitable for a standard production use +* Can be extended with extra HDD space (2 CHF/month per 100 GB) + +--- +offer3_link: https://datacenterlight.ch/product/django-hosting-l +--- +content2_text: + +## Get a free quote + +No Django project is exactly the same. It can be very helpful to have a chat with our team when you want to find the suitable setting for your new Django hosting. We invite you to reach out to **support -at- ungleich.ch**. + +For technical details you can check the +[Django Hosting article in the Open Infrastructure +project](https://redmine.ungleich.ch/projects/open-infrastructure/wiki/Django-Hosting). + +## Related products + +* [Webhosting for static files](../zerocarbon-webhosting-with-ipv6/) diff --git a/content/u/products/giftcard/1000eyes-collage.jpg b/content/u/products/giftcard/1000eyes-collage.jpg new file mode 100644 index 0000000..8e74acc Binary files /dev/null and b/content/u/products/giftcard/1000eyes-collage.jpg differ diff --git a/content/u/products/giftcard/contents.lr b/content/u/products/giftcard/contents.lr new file mode 100644 index 0000000..7b9622c --- /dev/null +++ b/content/u/products/giftcard/contents.lr @@ -0,0 +1,60 @@ +_discoverable: yes +--- +_hidden: no +--- +title: ungleich Gift Card +--- +subtitle: A sustainable and Open Source Gift +--- +headline1: Zero Carbon +--- +headline2: Open Source +--- +headline3: Gift Card +--- +header_background_color: #48BE75 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/giftcard.jpg +--- +content1_text: + +## A Zero Carbon, Open Source Gift Idea + +A Gift made in Switzerland with 100% renewable energy, Open Source technology and a lot of love. Give something sustainable and cutting-edge to your family, friends, coworkers. +--- +content1_image: giftcard.jpg +--- +content2_text: + +## Usable for all our star products + +With our Gift Card you can let the card holder choose any of our products: the full list can be seen [here.](https://ungleich.ch/en-us/cms/ungleich-gift-card) The Gift Card is valid for 24 months. + + +## Price + +The price of our Gift Card starts with as little as 30 CHF. This is also an awesome way to try our products hassle-free. + +- Buy [30 CHF Gift Card](https://ungleich.ch/product/giftcard-30/) +- Buy [50 CHF Gift Card](https://ungleich.ch/product/giftcard-50/) +- Buy [70 CHF Gift Card](https://ungleich.ch/product/giftcard-70/) +- Buy [100 CHF Gift Card](https://ungleich.ch/product/giftcard-100/) +- Buy [150 CHF Gift Card](https://ungleich.ch/product/giftcard-150/) +- Buy [200 CHF Gift Card](https://ungleich.ch/product/giftcard-200/) +- Buy [250 CHF Gift Card](https://ungleich.ch/product/giftcard-250/) +- Buy [300 CHF Gift Card](https://ungleich.ch/product/giftcard-300/) + +## How to use the Gift Card + +1. Choose a gift card amount and go through the checkout. +2. Drop us an email to giftcard@ungleich.ch and let us know the name and email of gift card receiver. +3. We will get in touch with the gift card receiver and help them to use the gift card. + +--- +content2_image: giftcard-products.jpg +--- + diff --git a/content/u/products/giftcard/giftcard-products.jpg b/content/u/products/giftcard/giftcard-products.jpg new file mode 100644 index 0000000..5bc176a Binary files /dev/null and b/content/u/products/giftcard/giftcard-products.jpg differ diff --git a/content/u/products/giftcard/giftcard.jpg b/content/u/products/giftcard/giftcard.jpg new file mode 100644 index 0000000..6092ee7 Binary files /dev/null and b/content/u/products/giftcard/giftcard.jpg differ diff --git a/content/u/products/hosted-gitlab/contents.lr b/content/u/products/hosted-gitlab/contents.lr new file mode 100644 index 0000000..451eda5 --- /dev/null +++ b/content/u/products/hosted-gitlab/contents.lr @@ -0,0 +1,113 @@ +_discoverable: no +--- +_hidden: no +--- +title: Zero Carbon Webhosting +--- +subtitle: Host your page without negative climate effects +--- +image: /u/image/cards/zerocarbonwebhosting.jpg +--- +header: + +#### generic-header #### +headers: + +Zero Carbon +Web +Hosting +---- +primary_color: #7B95D4 +---- +header_color: text-light +---- +nav_link_color: navbar-dark +--- +content1_text: + +##Webhosting made clean + +Are you looking for a climate neutral, sustainable and future-proven +static webhosting? Are you interested in serving a small website or +even huge files? Search no more, we have it. + +## Zero Carbon Webhosting Plans + +You can start Zero Carbon Webhosting with below plans. The cost is made of two parts, a one-time initial setup fee and the monthly plan you choose. Our team will get in touch with you as soon as we receive the order and will give you the access to the cloud in 1 business day. Growing your webhosting after starting a plan is very easy and can be done anytime. +--- +content1_image: /u/image/zerocarbon-webhosting.jpg +--- +content2_text: + +## Custom Offers + +Above specs don't match what you need? Get in touch with us and let us know what you need, we'll come back to you with a custom offer. Send us a mail to support@datacenterlight.ch or you can talk to us directly at [our chat.](https://chat.with.ungleich.ch) +--- +content2_image: /u/image/penguin-webhosting.jpg +--- +feature1_title: Easy +--- +feature1_text: + +Webhosting can be so easy. That's what we think and that's what you +should get. You can login to our webhost with your +standard credentials and just upload your pages. +--- +feature2_title: Secure +--- +feature2_text: + +We believe that security is a first-class citizen: we take security serious from the beginning. All your data is uploaded +encrypted and uses the state-of-the art SFTP protocol. +--- +feature3_title: Zero Carbon +--- +feature3_text: +The web sites are hosted in our [own +datacenter](/u/projects/data-center-light/) in Switzerland, which we believe to +be as ecologically-friendly as a datacenter can get: we reuse old factory halls, +reuse hardware, only do passive cooling and are directly plugged into a +hydroelectric power plant. + +--- +offer1_title: Webhosting-S 9 CHF/Month +--- +offer1_text: + +* 100 GB space +* SFTP access +* IPv6 and legacy IP reachable +* Data storage replicated 3 times +* [10 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/) +* Suitable for starting + +--- +offer1_link: https://ungleich.ch/product/0carbonwebhosting-s/ +--- +offer2_title: Webhosting-M 22.5 CHF/Month +--- +offer2_text: + +* 1000 GB space +* SFTP access +* IPv6 and legacy IP reachable +* Data storage replicated 3 times +* No Setup fee +* Suitable for most websites + +--- +offer2_link: https://ungleich.ch/product/0carbonwebhosting-m/ +--- +offer3_title: Webhosting-L 157.5 CHF/Month +--- +offer3_text: + +* 10TB space +* SFTP access +* IPv6 and legacy IP reachable +* Data storage replicated 3 times +* No Setup fee +* Suitable for websites publishing big data + +--- +offer3_link: https://ungleich.ch/product/0carbonwebhosting-l/ diff --git a/content/u/products/hosted-matrix-chat/contents.lr b/content/u/products/hosted-matrix-chat/contents.lr index 3d8a2bd..c7ae470 100644 --- a/content/u/products/hosted-matrix-chat/contents.lr +++ b/content/u/products/hosted-matrix-chat/contents.lr @@ -6,11 +6,13 @@ title: Hosted Matrix Chat --- subtitle: Easy, decentralised & end-to-end encrypted chat --- -image:/u/image/cards/zerocarbonmatrix.jpg +image:/u/image/cards/matrix-hot.jpg --- -headline1: Open, Secure +headline1: E2EE --- -headline2: Decentralized Chat +headline2: Federated +--- +headline3: Zero carbon Matrix --- header_background_color: #1BC0A1 --- @@ -23,8 +25,7 @@ description1:

What is Matrix?

Matrix is a modern and decentralised, -open-source chat solution backed by a dynamic community. It provides many -advanced user-focused features such as end-to-end encryption, bridging or audio +open-source chat solution backed by a dynamic community. It provides advanced user-focused features such as end-to-end encryption, bridging or audio & video calls.

@@ -35,23 +36,22 @@ advanced user-focused features such as end-to-end encryption, bridging or audio
  • - The strongest point of Matrix is federation: a Matrix homeserver - which is - what we offer - allows to manage your own community... and to join the whole + The strongest point of Matrix is federation: a Matrix homeserver allows you to manage your own community and to join the whole Matrix network. You will be able to exchange with users on any other Matrix server without any special configuration!
  • - End-to-end encryption (E2EE) means that - when enabled - only the sender and - intended receiver(s) will be able to read the messages: even ungleich, who + You can enable end-to-end encryption (E2EE): only the sender and + intended receiver(s) will be able to read the messages. Even ungleich, who manages the matrix server, will not be able to access the content of E2EE messages.
  • - Our Matrix servers are provided with a TURN server, meaning that you'll be + Our Matrix servers are provided with a TURN server: you'll be able to use voice and video calls out of the box.
  • - We support bridging to other networks such as Mattermost instances, IRC, + You can bridge to other networks: Mattermost instances, IRC, Slack, Telegram and more via Matterbridge.
  • @@ -69,7 +69,7 @@ feature1_text: The evolution of Matrix is managed through an open governance process, supervised by [The Matrix.org Foundation](https://matrix.org/foundation). -Moreover, all the software backing the network is [Free and Open +All the software backing the network is [Free and Open Source](https://en.wikipedia.org/wiki/Free_and_open-source_software), which guarantees quality and security. @@ -88,8 +88,8 @@ feature3_title: Zero Carbon feature3_text: We host your Matrix homeserver in our [own datacenter](/u/projects/data-center-light/) in Switzerland, which we believe to -be as ecologically-friendly as a datacenter can get: we use old buildings, -second-hand hydroelectric, passive cooling and are directly plugged into a +be as ecologically-friendly as a datacenter can get: we use old factory halls, +recycled servers, passive cooling and our servers are directly plugged into a hydroelectric power plant. --- @@ -106,8 +106,7 @@ description3: accounts, ~5.0M messages a day, ~40.000 federated servers and even governments!

    -

    A lot of privacy, security and usability work is going on... which - means that Matrix will get even more awesome in the coming months!

    +

    A lot of privacy, security and usability work is going on: Matrix will get even more awesome in the coming months!

    You can follow the Matrix.org blog to get frequent updates on Matrix's development, and chat with @@ -124,38 +123,47 @@ description3:

    Hosted Matrix Chat

    -

    We will provide you with your own dedicated Matrix 'Home Server', as well as +

    We provide you with your own dedicated Matrix home server, as well as a hosted web client. Matrix requires a domain name in order to join the global networks, which will appear in your username (e.g. @penguin:example.0co2.cloud): you can either use a subdomain of - 0co2.cloud (e.g. example.0co2.cloud) or your own domain name. We - will deploy a Matterbridge) - instance (bridging to Mattermost, IRC, Slack, Telegram, ...) on demand. + 0co2.cloud (e.g. example.0co2.cloud) or your own domain name.

    There are many Matrix clients, although we strongly recommend Riot which is the most - advanced at the moment. Be aware, however, that you might be a bit - confused with its UI/UX at first (there is ongoing work to improve - onboarding): we encourage you to try - Riot/Matrix first if your are not already familiar with it. + href="https://github.com/vector-im/element-web/">Element web which is the most + advanced at the moment.

    -

    Transparent Costs

    +

    How the pricing works

    + +

    We try to be as transparent as possible for our Matrix pricing. The pricing is made of 2 essential parts. +

    +
      +
    • + a one-time set up fee for initially setting up the Matrix instance for you. We set up the Matrix and also customize* the login page with your own logo and text. +
    • +
    • + a monthly maintenance fee that includes the price of a dedicated virtual machine(VM)** and the fee for maintaining the service. +
    • +
    +

    + You're all set with above 2 costs for starting your own Matrix. +

    + +

    + * Further customization such as favicon, background and more is possible at additional fee, get in touch with us to learn more. +

    +

    + ** The number of users or size of rooms depend on the size of your VM, and you can scale them anytime you want. The extention will be done according to our standard VM pricing. +

    -

    The cost of our Matrix-as-a-Service offer is divided between a base maintenance - fee and the price of the dedicated Virtual Machine (VM) we deploy for you in - our own datacenter. There is no artifical - restriction on the number of users or size of rooms: the only limit is the - resources we allocate to your node. We will extend them on demand, following - the pricing model (CPU, RAM, Disk) of our VM - offer.

    - We also offer custom-sized deployment. You can discuss our offer with us by + Your usecase doesn't fit the offers below? We do custom-sized deployment for you. Get in touch with us by email or even on matrix, via #matrix:ungleich.ch!
    @@ -173,39 +181,137 @@ closer to what you expect for a enterprise team chat at the moment. We use both at ungleich, since Matrix is especially convenient to reach out to the world!
    +## Matrix Light + +Matrix Light is an economic and practical plan for using Matrix chat. If you are not familiar with Matrix and want to start chatting on it you can start with Matrix Light plans. You can easily upgrading to bigger Matrix Light or to Matrix Pro anytime you want. + --- -offer1_title: Matrix-S 36 CHF/Month +offer1_title: Matrix Light 1 (47.5 CHF/Month) --- offer1_text: +* Suitable for chatting with up to 25 users * VM with 1 Core, 2 GB RAM, 10 GB SSD and 100 GB HDD +* Maintenance fee 30 CHF/month included * Application firewall included -* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) -* Maintenance fee 20 CHF/month +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) --- -offer1_link: https://ungleich.ch/product/hosted-matrix-s/ +offer1_link: https://ungleich.ch/product/matrix-light-1/ --- -offer2_title: Matrix-M 63 CHF/Month +offer2_title: Matrix Light 2 (66.5 CHF/Month) --- offer2_text: +* Suitable for chatting with up to 50 users * VM with 2 Core, 4 GB RAM, 10 GB SSD and 500 GB HDD +* Maintenance fee 30 CHF/month included * Application firewall included -* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) -* Maintenance fee 30 CHF/month +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) + --- -offer2_link: https://ungleich.ch/product/hosted-matrix-m/ +offer2_link: https://ungleich.ch/product/matrix-light-2/ --- -offer3_title: Matrix-L 157 CHF/Month +offer3_title: Matrix Light 3 (92.5 CHF/Month) --- offer3_text: -* VM with 8 Core, 16 GB RAM, 10 GB SSD and 1000 GB HDD +* Suitable for chatting with up to 100 users +* VM with 2 Core, 8 GB RAM, 10 GB SSD and 1000 GB HDD +* Maintenance fee 30 CHF/month included * Application firewall included -* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) -* Maintenance fee 50 CHF/month +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) + --- -offer3_link: https://ungleich.ch/product/hosted-matrix-l/ +offer3_link: https://ungleich.ch/product/matrix-light-3/ +--- +content2_text: + +## Matrix Pro + +For communities with more frequent and dynamic use, we recommend Matrix Pro plans. Matrix Pro Chat offers fast reaction and optimal perfomance. Matrix Pro is designed to fit the nature of Matrix which benefits a lot from memory caching. + +--- +offer4_title: Matrix Pro 1 (108.5 CHF/Month) +--- +offer4_text: + +* Suitable for communities up to 50 users +* VM with 2 Cores, 16 GB RAM, 10 GB SSD and 200 GB HDD +* Maintenance fee 30 CHF/month included +* Application firewall included +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) + +--- +offer4_link: https://ungleich.ch/product/matrix-pro-1/ +--- +offer5_title: Matrix Pro 2 (322.5 CHF/Month) +--- +offer5_text: + +* Suitable for communities with 50-100 users +* VM with 4 Core, 64 GB RAM, 10 GB SSD and 1000 GB HDD +* Maintenance fee 30 CHF/month included +* Application firewall included +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) + + +--- +offer5_link: https://ungleich.ch/product/matrix-pro-2/ +--- +offer6_title: Matrix Pro 3 (958.5 CHF/Month) +--- +offer6_text: + +* Suitable for communities with more than 100 users +* VM with 8 Core, 200 GB RAM, 10 GB SSD and 5000 GB HDD +* Maintenance fee 30 CHF/month included +* Application firewall included +* [Initial setup fee 50 CHF](https://ungleich.ch/product/matrix-setup/) + + +--- +offer6_link: https://ungleich.ch/product/matrix-pro-3/ +--- +content4_text: + +## Matterbridge option + +You can use [matterbridge](https://github.com/42wim/matterbridge) for +bridging to other networks. +Matterbridge can be set up with a one-time fee of **25 CHF per connected +protocol** and **5 CHF/month and protocol** maintenance fee +(with the exception of WhatsApp, see below). +Matterbridge supports the following protocols: + +* Discord +* Gitter +* IRC +* Keybase +* Matrix +* Mattermost 4.x, 5.x +* Rocket.chat +* Slack +* Ssh-chat +* Steam +* Telegram +* Twitch +* XMPP +* Zulip + +### WhatsApp Bridge + +As WhatsApp requires additional resources, the pricing for the +WhatsApp bridge is + +* 75 CHF one-time setup fee +* 15 CHF/month + +## Custom deployment consultancy + +It is possible to integrate your Matrix instance into your other projects and apps. There are a lot of ways to best utilize the security and federation Matrix offers to best fit your usecase. Talk to us about your ideas and we will help you realise how to customize your Matrix. Get in touch with us via support -at- ungleich.ch and you will hear from our team. +--- +content4_image: matrix-bridge-irc.jpg +--- diff --git a/content/u/products/hosted-matrix-chat/matrix-bridge-irc.jpg b/content/u/products/hosted-matrix-chat/matrix-bridge-irc.jpg new file mode 100644 index 0000000..f966579 Binary files /dev/null and b/content/u/products/hosted-matrix-chat/matrix-bridge-irc.jpg differ diff --git a/content/u/products/hosted-support-system/contents.lr b/content/u/products/hosted-support-system/contents.lr new file mode 100644 index 0000000..6079982 --- /dev/null +++ b/content/u/products/hosted-support-system/contents.lr @@ -0,0 +1,86 @@ +_discoverable: yes +--- +_hidden: no +--- +title: Hosted Support System +--- +subtitle: Easy and transparent support +--- +headline1: Easy to use +--- +headline2: Great support +--- +headline3: Reducing workload +--- +header_background_color: #1393B4 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/supportsystem.jpg +--- +feature1_title: Great customer support +--- +feature1_text: With our hosted support system you can manage support +requests easily. Customer requests are tracked and can easily be +assigned to your team to work on. +--- +feature2_title: Easy to use +--- +feature2_text: Support needs to be transparent, efficient and of worth +for your users. Our hosted support system works smoothly to make most +of your time while providing the best support to your customers. +--- +feature3_title: Managed Support System +--- +feature3_text: With the hosted support system you can focus on your +core business. The system upgrade and maintaenance is taken cared by us. +--- +content1_text: + + +## A Support System + +The hosted support system enables you to easily organise support requests. You can + +* Receive requests from your customers +* Organise tickets in different groups +* Assign tickets to your team +* Reply to your customers directly +* Have an auto responder ("Thanks for reaching out") +* Easily handle spams + +## How to use it + +With our hosted support system you get a url such as +https://support.ungleich.ch. Your team can login to the system and +work on requests. Your customers or users can either correspond with +you via email or login to the support system directly to manage +their tickets. + +## Fully Open Source and IPv6 enabled + +The hosted support system is completely based on Open +Source Software components. From the operating system to the software +stack, nothing is closed. + +Tech Stack + +* [Alpine Linux](https://alpinelinux.org/) +* [PostgreSQL](https://www.postgresql.org/) +* [cdist](https://cdi.st) +* [RT](https://bestpractical.com/request-tracker) from Best Practical + + + +## Zero Carbon + +The hosted support system is running in our [Zero Carbon +Data Center.](httsp://datacenterlight.ch) + +## How to order + +As the support system can be setup for very different use cases, we +recommend to contact us at **support -at- ungleich.ch** to discuss how +you would like to have your system setup. diff --git a/content/u/products/ipv4-as-a-service/contents.lr b/content/u/products/ipv4-as-a-service/contents.lr new file mode 100644 index 0000000..2cfdfaf --- /dev/null +++ b/content/u/products/ipv4-as-a-service/contents.lr @@ -0,0 +1,168 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv4 as a Service +--- +subtitle: Your static IPv4 address +--- +image: /u/image/cards/ipv4asaservice.jpg +--- +headline1: Your IPv4 address +--- +headline2: With a VPN +--- +headline3: Usable anywhere +--- +header_background_color: #4FB578 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +feature1_title: Your own IPv4 address +--- +feature1_text: +Do you need a publicly reachable IPv4 address? Does somebody want to +whitelist you in their firewall? This static IPv4 address can be used +anywhere you need to be reliable, and reachable. + +--- +feature2_title: Next gen service +--- +feature2_text: +Are you behind a NAT or even CGNAT? Do you only get a dynamic IPv4 +address? Are all your resources IPv6 only and you just need 1 IPv4 +address to map to the old Internet? All of these situations can be +solved with an IPv4 address as a service. +--- +feature3_title: Works anywhere +--- +feature3_text: To deliver the IPv4 address we are using the state of the +art VPN based on the Wireguard technology. This allows you to take +your IPv4 address everywhere. Even behind NAT. It just requires UDP +traffic to pass. +--- +content1_text: + +## How to get your static IPv4 address + +To get a static IPv4, you simply connect your computer to our VPN +server using the [wireguard](https://www.wireguard.com/) +technology. You can use the IPv4 address anywhere in the world. On +your notebook, on a server, on a router or even on a +[VIIRB](/u/products/viirb-ipv6-box/)! + + +## Using it for IPv6 only and private IPv4 address VMs + +If your VM does not have a public IPv4 address, you can use this +service to make your VM reachable via IPv4. + +## Reverse DNS included + +You can also setup reverse DNS entries. Drop a mail to support +at ungleich.ch with your DNS name, and we will set it up for you. + +## IPv4 VPN with your own static IPv4 address + +You can use IPv4 as a service like a traditional VPN. Compared to +other VPN providers, you get your own dedicated IPv4 address. The +traffic to this IPv4 address is not shared and only your traffic is +emitted from it. + +## /48 IPv6 network included for free + +The IPv4-as-a-Service product includes an IPv6 network +as described on the [IPv6 VPN](/u/products/ipv6-vpn/) page. We believe +that every service should include IPv6 support. + +## Ordering + +Our standard IPv4 as a Service offer is made of yearly subscription with a one-time setup fee. Our team will get in touch with you for setup as soon as we receive the order. + +--- +content1_image /u/image/ipv6-vpn-ungleich-swiss.jpg +--- +offer1_title: 1x static IPv4 address 144 CHF/year +--- +offer1_text: + +* IPv4 address registered in Switzerland +* Static, dedicated address +* Secured with wireguard +* /48 IPv6 network included for free +* 80 bit of IPv6 space +* Encrypted traffic until exit node in Switzerland +* with a /48 network +* [1 time setup fee 30 CHF](https://datacenterlight.ch/product/4aas-setup/) + +--- +offer1_link: https://datacenterlight.ch/product/1x-static-ipv4-address/ +--- +offer2_title: 2x static IPv4 addresses 280 CHF/year +--- +offer2_text: + +* Includes 2 IPv4 addresses +* IPv4 addresses registered in Switzerland +* Static, dedicated address +* Secured with wireguard +* /48 IPv6 network included for free +* 80 bit of IPv6 space +* Encrypted traffic until exit node in Switzerland +* with a /48 network +* You save 8 CHF/year +* Other features same as the regular offer +* [1 time setup fee 30 CHF](https://datacenterlight.ch/product/4aas-setup/) + +--- +offer2_link: https://datacenterlight.ch/product/2x-static-ipv4-addresses/ +--- +offer3_title: For DataCenterLight customers 108 CHF/year +--- +offer3_text: + +* Usable only with VMs from IPv6OnlyHosting.com or DataCenterLight.ch +* Other features same as the regular offer +* [1 time setup fee 30 CHF](https://datacenterlight.ch/product/4aas-setup/) + +--- +offer3_link: https://datacenterlight.ch/product/1x-static-IPv4-address-for-dcl-customers/ +--- +content2_text: + +## Monthly IPv4 as a Service + +If you want to try the IPv4 as a service for a shorter period for test purpose, you can opt for a monthly plan. You can switch it to a yearly plan anytime, there will be no additional setup fee charged in such cases. + +--- +offer4_title: 1x static IPv4 address 18 CHF/month +--- +offer4_text: + +* IPv4 address registered in Switzerland +* Static, dedicated address +* Secured with wireguard +* /48 IPv6 network included for free +* 80 bit of IPv6 space +* Encrypted traffic until exit node in Switzerland +* with a /48 network +* [1 time setup fee 30 CHF](https://datacenterlight.ch/product/4aas-setup/) + +--- +offer4_link: https://datacenterlight.ch/product/ipv4-as-a-service-monthly/ +--- +content4_text: + +## Related products + +* The [IPv4-to-IPv6 proxy](/u/products/ipv4-to-ipv6-proxy/) enables + IPv6 only websites to be reachable from the IPv4 world. +* The [IPv6VPN](/u/products/ipv6-vpn/) brings IPv6 anywhere + +--- + + + + diff --git a/content/u/products/ipv4-to-ipv6-proxy/contents.lr b/content/u/products/ipv4-to-ipv6-proxy/contents.lr index 0439a2f..2beff03 100644 --- a/content/u/products/ipv4-to-ipv6-proxy/contents.lr +++ b/content/u/products/ipv4-to-ipv6-proxy/contents.lr @@ -8,7 +8,7 @@ subtitle: Make your IPv6 resources reachable from the IPv4 world --- image: /u/image/cards/ipv4-ipv6-proxy.jpg --- -headline1: IPv4 to +headline1: IPv4 to --- headline2: IPv6 Proxy --- @@ -49,4 +49,17 @@ customers. * Up to 1000 domains: 100 CHF/month (0.1 CHF/domain) * Above 1000 domains: on request -The pricing includes traffic. +The pricing includes 15 TB traffic/month. + +## Related products + +If you are providing services that are only reachable by IPv4 and want +to make them accessible by IPv6, our [IPv6-to-IPv4 +Proxy](../ipv6-to-ipv4-proxy/) helps you to accomplish the opposite +translation. + +## Technical documentation + +Technical details about the service can be found on +[the redmine +wiki](https://redmine.ungleich.ch/projects/open-infrastructure/wiki/How_to_use_the_IPv4-to-IPv6-Proxy). diff --git a/content/u/products/ipv6-autonomous-security-system/contents.lr b/content/u/products/ipv6-autonomous-security-system/contents.lr new file mode 100644 index 0000000..0a691ed --- /dev/null +++ b/content/u/products/ipv6-autonomous-security-system/contents.lr @@ -0,0 +1,103 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Autonomous Security System +--- +subtitle: With VIIRB or VIWIB +--- +image: /u/image/cards/ass.jpg +--- +header_background_color: #23569D +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: IPv6 +--- +headline2: Autonomous +--- +headline3: Security System +--- +content1_image: ipv6-security-system.jpg +--- +content1_text: + +## IPv6 Autonomous Security System + +Meet our IPv6 Autonomous Security System - you can reach and track your target from anywhere you are via IPv6 directly. The data goes from your security system via [IPv6 VPN](https://ipv6vpn.ch) to you without compromises. + +## About the product + +The IPv6 Autonomous Security System can be used with VIIRB or VIWIB. VIIRB is the world's smallest IPv6 Router, and VIWIB is a slightly bigger version of VIIRB with a reliable WiFi. Both VIIRB or VIWIB can be of course used on its own, with or without Autonomous Security System. To learn more what these powerful little router boxes can do, check out their product pages. + +- [VIIRB: VPN IPv6 IoT Router Box](https://ungleich.ch/u/products/viirb-ipv6-box/) +- [VIWIB: VPN IPv6 WiFi IoT Box](https://ungleich.ch/u/products/viwib-wifi-ipv6-box/) + +## What it contains + +The IPv6 Autonomous Security System contains + +- 1 USB Hub +- 1 LTE/4G Router (Internet Uplink, excluding SIM card) +- GPS Tracker +- USB Camera +- 1 VIIRB or VIWIB + +## Price + +The IPv6 Autonomous Security System works as an add-on to the VIIRB or VIWIB. + +| Product | Price | +| --------- | ------ | +| VIIRB Security System (includes 1 VIIRB) | 203 CHF | +| VIWIB Security System (includes 1 VIWIB) | 213 CHF | + + + +## Shipping cost + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland | 10 CHF | 14 CHF| +| Denmark, Finland, France, | 14 CHF | 24 CHF| +| Germany, Great Britain, Iceland | 14 CHF | 24 CHF| +| The Netherlands, Romania, Spain | 14 CHF | 24 CHF| +| Sweden, Italy, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| Canada, US, India, Australia | 23 CHF | 29 CHF| + + +## How to buy it + +You can order from the URLs below and send us your shipping address to support-at-datacenterlight.ch. + + +**VIIRB Autonomous Security System** + +* [Order VIIRB Autonomous Security System to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/viirb-ass-eu-tracked/) + +* [Order VIIRB Autonomous Security System to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/viirb-ass-eu/) + +* [Order VIIRB Autonomous Security System to Switzerland](https://datacenterlight.ch/product/viirb-ass-ch/) + +* [Order VIIRB Autonomous Security System to Australia, Canada, India, US](https://datacenterlight.ch/product/viirb-ass-world/) + +**VIWIB Autonomous Security System** + +* [Order VIWIB Autonomous Security System to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/viwib-ass-eu-tracked//) + +* [Order VIWIB Autonomous Security System to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/viwib-ass-eu/) + +* [Order VIWIB Autonomous Security System to Switzerland](https://datacenterlight.ch/product/viwib-ass-ch/) + +* [Order VIWIB Autonomous Security System to Australia, Canada, India, US](https://datacenterlight.ch/product/viwib-ass-world/) + + +--- diff --git a/content/u/products/ipv6-autonomous-security-system/ipv6-security-system.jpg b/content/u/products/ipv6-autonomous-security-system/ipv6-security-system.jpg new file mode 100644 index 0000000..8c384c5 Binary files /dev/null and b/content/u/products/ipv6-autonomous-security-system/ipv6-security-system.jpg differ diff --git a/content/u/products/ipv6-camera/1000eyes-collage.jpg b/content/u/products/ipv6-camera/1000eyes-collage.jpg new file mode 100644 index 0000000..8e74acc Binary files /dev/null and b/content/u/products/ipv6-camera/1000eyes-collage.jpg differ diff --git a/content/u/products/ipv6-camera/1000eyes-vertical.jpg b/content/u/products/ipv6-camera/1000eyes-vertical.jpg new file mode 100644 index 0000000..0517fb1 Binary files /dev/null and b/content/u/products/ipv6-camera/1000eyes-vertical.jpg differ diff --git a/content/u/products/ipv6-camera/contents.lr b/content/u/products/ipv6-camera/contents.lr new file mode 100644 index 0000000..f59b70c --- /dev/null +++ b/content/u/products/ipv6-camera/contents.lr @@ -0,0 +1,62 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Camera +--- +subtitle: World wide reachability & its own IPv6 connectivity +--- +headline1: IPv6 Camera +--- +headline2: 1000ey.es +--- +header_background_color: #73BDDD +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/ipv6camera.jpg +--- +content1_text: + +## What it is + +Imagine a camera with world wide reachability without any hacks or quirks. That's our IPv6 camera. +--- +content1_image: 1000eyes-collage.jpg +--- +content2_text: + +## IPv6 Camera "The Eye" + +IPv6 Camera, a.k.a "The Eye" works within all kinds of networks: IPv4only, IPv6only, IPv4+IPv6. It even brings its own IPv6 connectivity by using [IPv6VPN](https://ipv6vpn.ch). + +## Name your camera + +When you order your camera you get to choose a cool name for viewing what your camera sees! Any name under the domain 1000ey.es is offered for free. + +## Fully Open Source + +Like everything we do at ungleich, the whole stack is fully Open Source. + +- The operating system: OpenWRT. +- The VPN software: wireguard. +- The video streaming server: mjpg-streamer or motion (still has to be decided for the final shipment). + +All files that are required to configure the IPv6-eye can be found in the ungleich-tools repository. + + +## Price + +- IPv6 Camera is 123 CHF. + + +## How to place an order + +We deliver worldwide. You can place an order to support (at) ungleich.ch with your shipping address. Our team will get back to you with payment information. + +--- +content2_image: 1000eyes-vertical.jpg +--- + diff --git a/content/u/products/ipv6-camera/ipv6-holiday-vertical.jpg b/content/u/products/ipv6-camera/ipv6-holiday-vertical.jpg new file mode 100644 index 0000000..bc579a8 Binary files /dev/null and b/content/u/products/ipv6-camera/ipv6-holiday-vertical.jpg differ diff --git a/content/u/products/ipv6-car-tracker/contents.lr b/content/u/products/ipv6-car-tracker/contents.lr new file mode 100644 index 0000000..c6cbb84 --- /dev/null +++ b/content/u/products/ipv6-car-tracker/contents.lr @@ -0,0 +1,117 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Car Tracker +--- +subtitle: Track your Car +--- +headline1: Track your Car +--- +headline2: With IPv6 +--- +headline3: From everywhere +--- +header_background_color: #68B9C4 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/ipv6-cartracker.jpg +--- +content1_text: + +## Tracking your car + +The IPv6 car tracker is based on the +[VIWIB](/u/products/viwib-wifi-ipv6-box/) with additional add-ons. It +works autonomously using a SIM card and an LTE modem. + +## The IPv6 car tracker package + +The package contains: + +* One VIWIB including 1 year of [IPv6VPN](../ipv6-vpn/) subscription +* One USB HUB +* One USB car charger +* One GPS receiver + +Optional components: + +* USB Camera +* Battery (30'000 mAh) + +Not included: SIM card + +## How to use it + +Simply connect the usb car charger in your car. Then connect the VIWIB + +## Use cases + +### Finding your car by GPS + +You can locate your car anywhere it is with IPv6 and GPS. The VIWIB +exposes the GPS information on the standard GPS port 2947, any +standard GPS visualisation can be used. + +### WiFi in the car + +The VIWIB comes with its **IPv6 everywhere** that you can use to surf +in the car. + +### Seeing your car or the environment + +With the optional camera you can also spot where your car is. Simply +point your browser to port 8080 of your VIWIB and see what is around! + +## Shipping cost + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland | 10 CHF | 14 CHF| +| Denmark, Finland, France, | 14 CHF | 24 CHF| +| Germany, Great Britain, Iceland | 14 CHF | 24 CHF| +| The Netherlands, Romania, Spain | 14 CHF | 24 CHF| +| Sweden, Italy, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| US, Canada, India, Australia | 23 CHF | 29 CHF| + +## How to buy it + +You can order from the URLs below and send us your shipping address to support-at-datacenterlight.ch. + +**IPv6 car tracker - 208 CHF** + +A pre-configured VIWIB, including an USB hub, an LTE +modem and a GPS tracker. + +* [Order IPv6 car tracker to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/ipv6-car-tracker-tracked-eu/) + +* [Order IPv6 car tracker to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/ipv6-car-tracker-eu/) + +* [Order IPv6 car tracker to Switzerland](https://datacenterlight.ch/product/ipv6-car-tracker-ch/) + +* [Order IPv6 car tracker to Australia, Canada, India, US](https://datacenterlight.ch/product/ipv6-car-tracker-us/) + +**IPv6 car tracker with camera - 233 CHF** + +Like the base car tracker with an additional camera that allows you to see where your car is. + +* [Order IPv6 car tracker with camera to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/ipv6-car-tracker-camera-tracked-eu/) + +* [Order IPv6 car tracker with camera to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/viirb-ass-eu/) + +* [Order IPv6 car tracker with camera to Switzerland](https://datacenterlight.ch/product/ipv6-car-tracker-camera-ch/) + +* [Order IPv6 car tracker with camera to Australia, Canada, India, US](https://datacenterlight.ch/product/ipv6-car-tracker-camera-us/) + +**IPv6 car tracker with Camera and battery - 313 CHF** + +Includes a 30'000 mAh battery that allows your tracker to continue to run while the car is off. Lasts for about 24h. Get in touch with our support and we will let you know the shipping cost. +--- +content1_image: viwib-car-tracker-text.jpg \ No newline at end of file diff --git a/content/u/products/ipv6-car-tracker/viwib-car-tracker-text.jpg b/content/u/products/ipv6-car-tracker/viwib-car-tracker-text.jpg new file mode 100644 index 0000000..7a3b2e3 Binary files /dev/null and b/content/u/products/ipv6-car-tracker/viwib-car-tracker-text.jpg differ diff --git a/content/u/products/ipv6-hardware/contents.lr b/content/u/products/ipv6-hardware/contents.lr new file mode 100644 index 0000000..dce0562 --- /dev/null +++ b/content/u/products/ipv6-hardware/contents.lr @@ -0,0 +1,418 @@ +_discoverable: no +--- +_hidden: no +--- +title: IPv6 Hardware List +--- +subtitle: Enabling your network with IPv6 +--- +headline1: IPv6 Hardware List +--- +headline2: IPv6 Routers - IPv6 VPN +--- +headline3: IPv6 WiFi - IPv6 Cameras +--- +header_background_color: #1BC0A1 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +description1: + +

    IPv6 Hardware List

    + +

    +We at ungleich provide a variety of IPv6 only services. Through the +years we have tested, retested, flashed, upgraded and tested again a +lot of hardware.
    + +We want to allow that our IPv6 experiences are a value for everyone +interested in IPv6 networking.
    + +For some devices we have taken the opportunity to replace the original +firmware with OpenWRT to give full networking freedom and full IPv6 +support to you. + +

    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DeviceDescriptionIPv6VPNWiFiEthernet4G/LTEWireguard SpeedOperating System
    VIIRB (58)The world's smallest IPv6 routeryesno1x 100Mbit/sadd-on?OpenWRT
    Wired-IPv6-Camera (83)IPv6 Video Streaming (1280x720)optionalno1x 100Mbit/sadd-onN/AOpenWRT
    WIVIRB (73)Tiny WiFi enabled IPv6 routeryesyes1x 100Mbit/sadd-on?OpenWRT
    Wireless-IPv6-Camera (98)IPv6 Video Streaming (1280x720)optionalyes1x 100Mbit/sadd-onN/AOpenWRT
    FIVIRB (79)Fast and Small IPv6 routeryesno5x 1 Gbit/s, POEno200Mbit/sOpenWRT
    PIB (300)Professional IPv6 Routeryesyes3x 1 Gbit/sadd-on?OpenWRT
    WIAPLITEIPv6 compatible Wifi Access Pointoptional867 Mbit/s (5Ghz), 300 Mbit/s (2.4 Ghz)1x 1 Gbit/sno?OpenWRT
    WIAPLRIPv6 compatible Wifi Access Pointoptional866 Mbit/s (5Ghz), 450 Mbit/s (2.4 Ghz)1x 1 Gbit/sno?OpenWRT
    WIAPPROIPv6 compatible Wifi Access Pointoptional1300 Mbit/s (5Ghz), 450 Mbit/s (2.4 Ghz)1x 1 Gbit/sno?OpenWRT
    +
    +
    +
    + +Additional to support IPv6 properly, due to OpenWRT the devices also +support: + +* prometheus + + +
    +
    +
    + +
    +
    +
      +
    • + The strongest point of Matrix is federation: a Matrix homeserver allows you to manage your own community and to join the whole + Matrix network. You will be able to exchange with users on any other Matrix + server without any special configuration! +
    • +
    • + You can enable end-to-end encryption (E2EE): only the sender and + intended receiver(s) will be able to read the messages. Even ungleich, who + manages the matrix server, will not be able to access the content of E2EE + messages. +
    • +
    • + Our Matrix servers are provided with a TURN server: you'll be + able to use voice and video calls out of the box. +
    • +
    • + You can bridge to other networks: Mattermost instances, IRC, + Slack, Telegram and more via Matterbridge. +
    • +
    +
    +
    +
    + +
    + +--- +feature1_title: Open +--- +feature1_text: + +The evolution of Matrix is managed through an open governance process, +supervised by [The Matrix.org Foundation](https://matrix.org/foundation). +All the software backing the network is [Free and Open +Source](https://en.wikipedia.org/wiki/Free_and_open-source_software), which +guarantees quality and security. + +--- +feature2_title: Secure & decentralized +--- +feature2_text: + +Both end-to-end encryption and federation are *built-in* into Matrix. The +former will be enabled by default in the near future, making it a valuable tool +for activists and privacy-minded people all across the world. + +--- +feature3_title: Zero Carbon +--- +feature3_text: +We host your Matrix homeserver in our [own +datacenter](/u/projects/data-center-light/) in Switzerland, which we believe to +be as ecologically-friendly as a datacenter can get: we use old factory halls, +recycled servers, passive cooling and our servers are directly plugged into a +hydroelectric power plant. + +--- +description3: + +
    +
    +
    + +
    +
    +

    Growing fast!

    +

    As of February 2020, the Matrix network supports ~13.5M visible + accounts, ~5.0M messages a day, ~40.000 federated servers and even governments!

    + +

    A lot of privacy, security and usability work is going on: Matrix will get even more awesome in the coming months!

    + +

    You can follow the Matrix.org + blog to get frequent updates on Matrix's development, and chat with + us on #matrix:ungleich.ch! +

    +
    +
    + +
    + +
    +
    +
    +

    Hosted Matrix Chat

    + +

    We will provide you with your own dedicated Matrix home server, as well as + a hosted web client. Matrix requires a domain name in order to join the global + networks, which will appear in your username (e.g. + @penguin:example.0co2.cloud): you can either use a subdomain of + 0co2.cloud (e.g. example.0co2.cloud) or your own domain name. We + will deploy a Matterbridge) + instance (bridging to Mattermost, IRC, Slack, Telegram, ...) on demand. +

    + +

    There are many Matrix + clients, although we strongly recommend Riot which is the most + advanced at the moment. Be aware, however, that you might be a bit + confused with its UI/UX at first (there is ongoing work to improve + onboarding): we encourage you to try + Riot/Matrix first if your are not already familiar with it. +

    + +
    +
    +

    How the pricing works

    + +

    We try to be as transparent as possible for our Matrix pricing. The pricing is made of 2 essential parts. +

    +
      +
    • + a one-time set up fee for initially setting up the Matrix instance for you. We set up the Matrix and also customize* the login page with your own logo and text. +
    • +
    • + a monthly maintenance fee that includes the price of a dedicated virtual machine(VM)** and the fee for maintaining the service. +
    • +
    +

    + You're all set with above 2 costs for starting your own Matrix. +

    + +

    + * Further customization such as favicon, background and more is possible at additional fee, get in touch with us to learn more. +

    +

    + ** The number of users or size of rooms depend on the size of your VM, and you can scale them anytime you want. The extention will be done according to our standard VM pricing. +

    + + +
    + Your usecase doesn't fit the offers below? We do custom-sized deployment for you. Get in touch with us by + email or even on matrix, via #matrix:ungleich.ch! +
    +
    +
    + +

    You will find more details +on our Matrix-as-a-Service FAQ and on Matrix's official documentation. +

    + +
    +You might be also interested in our Mattermost-based chat offer, which might be +closer to what you expect for a enterprise team chat at the moment. We use both +at ungleich, since Matrix is especially convenient to reach out to the world! +
    + +--- +offer1_title: Matrix-S 36 CHF/Month +--- +offer1_text: + +* VM with 1 Core, 2 GB RAM, 10 GB SSD and 100 GB HDD +* Maintenance fee 20 CHF/month included +* Application firewall included +* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) + +--- +offer1_link: https://ungleich.ch/product/hosted-matrix-s/ +--- +offer2_title: Matrix-M 63 CHF/Month +--- +offer2_text: + +* VM with 2 Core, 4 GB RAM, 10 GB SSD and 500 GB HDD +* Maintenance fee 30 CHF/month included +* Application firewall included +* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) + + +--- +offer2_link: https://ungleich.ch/product/hosted-matrix-m/ +--- +offer3_title: Matrix-L 157 CHF/Month +--- +offer3_text: + +* VM with 8 Core, 16 GB RAM, 10 GB SSD and 1000 GB HDD +* Maintenance fee 50 CHF/month included +* Application firewall included +* [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) + + +--- +offer3_link: https://ungleich.ch/product/hosted-matrix-l/ +--- +description4: + +## Additional offers + +* Bridging to other networks using + [matterbridge](https://github.com/42wim/matterbridge) is a 10 CHF + setup fee and 5 CHF/month maintenance fee. It supports the following protocols: +** Discord +** Gitter +** IRC +** Keybase +** Matrix +** Mattermost 4.x, 5.x +** Microsoft Teams +** Rocket.chat +** Slack +** Ssh-chat +** Steam +** Telegram +** Twitch +** WhatsApp +** XMPP +** Zulip + +## Matrix UI/UX development support program + +On 2020-04-21 we started our new support program to specifically +enhance the UI and UX of Matrix. With this program we want to enhance +the usability of the web client and the apps. + +### How the matrix support program works + +If you want to support UI/UX improvements of Matrix, +you can support the work financially with 15 CHF (roughly about 15 +USD) as a one time or monthly payment (below 15 CHF is costing too +much in transfer fees). + +To do so, write an email with the subject "I want to support the +Matrix UI/UX improvements" to **support -at- ungleich.ch** and include +the amount that you are willing to contribute and whether you want to +pay via credit card or wire transfer. + +Also mention whether you want to be publicly listed as a supporter on +this website. + +### Development and transparency + +All money that comes in will only be used to finance development and +design work related to Matrix. We will continuously +update this website with contributions and which tasks we work on. + +### Why is ungleich doing this? + +We at ungleich think that Matrix has one really, really huge edge over +almost all other solutions: it is really decentralised and +federated. It finally solves the problems of **data silos** that +exists in many places in IT. + +However we do acknowledge that Matrix can benefit a lot from UI/UX +improvements and thus we wanted to create an easy way for anyone to +contribute to it. + +### List of tasks / work + +* [UI/UX improvement suggestions for + matrix](https://redmine.ungleich.ch/issues/7876) diff --git a/content/u/products/ipv6-holiday-kit/contents.lr b/content/u/products/ipv6-holiday-kit/contents.lr new file mode 100644 index 0000000..db4a3c2 --- /dev/null +++ b/content/u/products/ipv6-holiday-kit/contents.lr @@ -0,0 +1,157 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Holiday Kit +--- +subtitle: Take a break from IPv4 +--- +headline1: Take a break +--- +headline2: from IPv4 +--- +headline3: IPv6 Holiday Kit +--- +header_background_color: #0B53A8 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/ipv6holidaykit.jpg +--- +content1_text: + +## What it is + +Off to your holidays and want to take some fun with you? Take our IPv6 Holiday Kit: It's a set of our best IPv6 treats: VIIRB, IPv6 t-shirt, and 3 IPv6 stickers. +--- +content1_image: ipv6-holiday.jpg +--- +content2_text: + +## 1. VIIRB (VPN IPv6 IoT Router Box) + +The [VIIRB](https://viirb.ungleich.ch) is pre-configured with a Wireguard VPN. You can plug in VIIRB and you'll get IPv6 anywhere, anytime. The IPv6 connectivity is provided by +[Data Center Light](https://ungleich.ch/u/projects/data-center-light/). + +VIIRB features + +- Operating System: Linux (OpenWRT) +- Size: 28mm x 30mm x 30mm +- CPU: MT7628, 580 MHz, MIPS 24K +- Memory: 128MB, DDR2, 166MHz +- Storage: 16M NOR on board, support SDXC up to 2TB +- Wifi: 802.11n, 2T2R, speed up to 300Mbps. (disabled by default, if you want Wifi enabled IPv6 holiday kit, you can opt for VIWIB instead of VIIRB) +- Antenna: One U.FL slot, one on board antenna. +- Ethernet: 1 port, up to 100Mbps. +- USB: Support USB 2.0, up to 480MBit/s. +- USB debugging: there is a serial console on the micro USB port +- Audio: 3.5mm jack (in/out) +- Power supply: 3.6V ~ 5.5V, 500mA +- Power Consumption: 74mA wifi standby, 230mA wifi full speed, 5V input. + +Reguar price: 58 CHF + +## 2. IPv6 t-shirt + +What do you want to wear on your IPv6 holiday? IPv6 T-shirt of course, what else. This cotton t-shirt declares your love for IPv6 on the front: and our IPv6 penguin got your back. (Yes, there is the IPv6 penguin printed on the back!) This shirt will certainly make you smile when you put it on. + +- Material: 100% cotton. +- Size: S, M, L, XL (Very few left), 2XL (Very few left) + +The size is on the slimmer side, we advise to take one size up if you like a comfort fit. + +- Limited edition, designed and printed in Switzerland +- Unisex fit. + +Regular price: 50 CHF + +## 3. IPv6 stickers x3 + +Last but not least, we include 3 of our beloved IPv6 stickers in the IPv6 holiday pack. One for your laptop, one for your bike, one for your car. + +- Size: 62mm x 60mm +- Material: Outdoor UV-coated sticker + +Regular price: 12 CHF + +### Bonus: IPv6VPN included + +A free subscription of [IPv6 VPN](../ipv6-vpn) for 1 year is included. This way you can plug in +the VIIRB and just get started with IPv6. + +Regular price: 120 CHF + +## Price + +Our IPv6 holiday kit is only 100 CHF for a limited period while our stock lasts. + +Regular price would be 58 CHF (VIIRB) + 50 CHF (t-shirt) + 12 CHF (stickers) + 120 CHF (VPN) = 240 CHF. You save 140 CHF! + +## Wifi enabled IPv6 Holiday Kit + +You can also opt for [VIWIB](../viwib-wifi-ipv6-box/) instead of VIIRB as your IPv6 Holiday Kit! The price for VIWIB IPv6 Holiday Kit is 110 CHF, just 10 CHF more than the VIIRB kit. + + +### Shipping costs + + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. You can order multiple VIIRBs within the same package. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland, Liechtenstein | 10 CHF | 14 CHF| +| Denmark, Finland, Sweden | 14 CHF | 24 CHF| +| Germany, Austria, France | 14 CHF | 24 CHF| +| Portugal, Italy, Spain | 14 CHF | 24 CHF| +| Latvia, The Netherlands, Iceland | 14 CHF | 24 CHF| +| Romania, Great Britain, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| Canada, US, India, Australia | 23 CHF | 29 CHF| + + +## Ordering + +We deliver worldwide. You can place an order with a credit card and send us an email with your shipping address and your t-shirt size to support -at- ungleich.ch. Payment via wire transfer is also available, get in touch with our support with your shipping address. + +All prices exluding VAT. + +--- +content2_image: ipv6-holiday-vertical.jpg +--- +offer4_title: IPv6 Holiday Kit shipped to Switzerland 110 CHF +--- +offer4_text: + +* 1 VIIRB, 1 IPv6 Tshirt, 3 IPv6 stickers +* 1 year subscription of IPv6 VPN included + +--- +offer4_link: https://datacenterlight.ch/product/ipv6-holiday-ch/ +--- +offer5_title: IPv6 Holiday Kit shipped to EU 114 CHF +--- +offer5_text: + +* 1 VIIRB, 1 IPv6 Tshirt, 3 IPv6 stickers +* 1 year subscription of IPv6 VPN included + +--- +offer5_link: https://datacenterlight.ch/product/ipv6-holiday-eu/ +--- +offer6_title: IPv6 Holiday Kit with VIWIB 10 CHF +--- +offer6_text: + +* Replace VIIRB into VIWIB in your IPv6 Holiday Kit order +* Can be ordered in addition to IPv6 Holiday Kit order +* Stable Wifi enabled for your Holiday! +* 10 CHF one-time charge +* This option is only possible before shipping started + +--- +offer6_link: https://datacenterlight.ch/product/replace-viirb-into-viwib/ +--- + diff --git a/content/u/products/ipv6-holiday-kit/ipv6-holiday-vertical.jpg b/content/u/products/ipv6-holiday-kit/ipv6-holiday-vertical.jpg new file mode 100644 index 0000000..bc579a8 Binary files /dev/null and b/content/u/products/ipv6-holiday-kit/ipv6-holiday-vertical.jpg differ diff --git a/content/u/products/ipv6-holiday-kit/ipv6-holiday.jpg b/content/u/products/ipv6-holiday-kit/ipv6-holiday.jpg new file mode 100644 index 0000000..0adf774 Binary files /dev/null and b/content/u/products/ipv6-holiday-kit/ipv6-holiday.jpg differ diff --git a/content/u/products/ipv6-holiday-kit/ipv6-sticker.jpg b/content/u/products/ipv6-holiday-kit/ipv6-sticker.jpg new file mode 100644 index 0000000..0cf2898 Binary files /dev/null and b/content/u/products/ipv6-holiday-kit/ipv6-sticker.jpg differ diff --git a/content/u/products/ipv6-holiday-kit/ipv6-tshirt.jpg b/content/u/products/ipv6-holiday-kit/ipv6-tshirt.jpg new file mode 100644 index 0000000..74d4a1b Binary files /dev/null and b/content/u/products/ipv6-holiday-kit/ipv6-tshirt.jpg differ diff --git a/content/u/products/ipv6-holiday-kit/viirb-penguin.jpg b/content/u/products/ipv6-holiday-kit/viirb-penguin.jpg new file mode 100644 index 0000000..250526e Binary files /dev/null and b/content/u/products/ipv6-holiday-kit/viirb-penguin.jpg differ diff --git a/content/u/products/ipv6-mobile-internet-router/contents.lr b/content/u/products/ipv6-mobile-internet-router/contents.lr new file mode 100644 index 0000000..4a9b0e0 --- /dev/null +++ b/content/u/products/ipv6-mobile-internet-router/contents.lr @@ -0,0 +1,118 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 Mobile Router +--- +subtitle: IPv6 everywhere +--- +headline1: Mobile Internet +--- +headline2: With IPv6 +--- +headline3: From everywhere +--- +header_background_color: #2D436B +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/ipv6-mobile-router.jpg +--- +content1_text: + +## IPv6 Mobile Internet Router + +Looking for the IPv6 routers that work well with IPv6, are Open Source and fun to use? We heard you. Save your time and nerve for searching endlessly, our IPv6 experts at ungleich did the job for you. Here are three routers we recommend for using with mobile Internet (SIM cards): + +### The smallest: the VIIRB + +The [VIIRB](/u/products/viirb-ipv6-box/) has one Ethernet port and can +be used to provide IPv6 enabled Internet to an existing network. + +Choose this one if you intend to add mobile Internet with IPv6 to one +computer or an existing network. +Usable with Internet speed up to 50 Mbit/s. LAN speed is 100 Mbit/s. + +### The wifi enabler: the VIWIB + +The [VIWIB](/u/products/viwib-wifi-ipv6-box/) has 2 Ethernet ports and +comes with WiFi enabled. In its second ethernet port (WAN), it can +also use an existing network as an uplink. + +Choose this one if you want to have included WiFi. +Usable with Internet speed up to 50 Mbit/s. LAN speed is 100 Mbit/s. + + +### The professional: the VIGIR + +The [VIGIR](/u/products/vigir/) is the most professional IPv6 router +from ungleich. It features 5 Gigabit Ethernet ports, one of which can +be used as a WAN port. It features 6 (!) antennas: 2 for 2.4 Ghz WiFi, +2 for 5 Ghz WiFi, 2 for 4G/LTE for great reception. + +Choose this one if you want to build a professional or new network. +Usable with Internet speed up to 300 Mbit/s. LAN speed is 1 Gbit/s. + +## The Internet connection + +If you are in Switzerland, we also offer you the mobile subscription +for your IPv6 router - checkout [SIXNET](/u/products/sixnet/) for more +information. + +## Shipping cost + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland | 10 CHF | 14 CHF| +| Denmark, Finland, France, | 14 CHF | 24 CHF| +| Germany, Great Britain, Iceland | 14 CHF | 24 CHF| +| The Netherlands, Romania, Spain | 14 CHF | 24 CHF| +| Sweden, Italy, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| US, Canada, India, Australia | 23 CHF | 29 CHF| + +## How to buy it + +You can order from the URLs below and send us your shipping address to support-at-datacenterlight.ch. + +**VIIRB mobile router - 128 CHF** + +A VIIRB with pre-configured IPv6VPN and a USB-LTE modem. + +* [Order VIIRB mobile router to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/viirb-mobile-router-eu-tracked/) + +* [Order VIIRB mobile router to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/viirb-mobile-router-eu/) + +* [Order VIIRB mobile router to Switzerland](https://datacenterlight.ch/product/viirb-mobile-router-ch/) + +* [Order VIIRB mobile router to Australia, Canada, India, US](https://datacenterlight.ch/product/viirb-mobile-router-us/) + +**VIWIB mobile router - 138 CHF** + +A VIWIB with pre-configured IPv6VPN and a USB-LTE modem. + +* [Order VIWIB mobile router to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/viwib-mobile-router-eu-tracked/) + +* [Order VIWIB mobile router to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with economy shipping without tracking](https://datacenterlight.ch/product/viwib-mobile-router-eu/) + +* [Order VIWIB mobile router to Switzerland](https://datacenterlight.ch/product/viwib-mobile-router-ch/) + +* [Order VIWIB mobile router to Australia, Canada, India, US](https://datacenterlight.ch/product/viwib-mobile-router-us/) + +**The VIGIR - 250 CHF** + +A VIGIR with pre-configured IPv6VPN and included Cat6 LTE modem. + +* [Order VIGIR to Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy with priority shipping with tracking](https://datacenterlight.ch/product/vigir-eu/) + +* [Order VIGIR to Switzerland](https://datacenterlight.ch/product/vigir-ch/) + +* [Order VIGIR to Australia, Canada, India, US](https://datacenterlight.ch/product/vigir-us/) + +--- +content1_image: ipv6-mobile-router.jpg \ No newline at end of file diff --git a/content/u/products/ipv6-mobile-internet-router/ipv6-mobile-router.jpg b/content/u/products/ipv6-mobile-internet-router/ipv6-mobile-router.jpg new file mode 100644 index 0000000..6d62e79 Binary files /dev/null and b/content/u/products/ipv6-mobile-internet-router/ipv6-mobile-router.jpg differ diff --git a/content/u/products/ipv6-only-hosting/contents.lr b/content/u/products/ipv6-only-hosting/contents.lr index 3cb1dce..0a6b6cd 100644 --- a/content/u/products/ipv6-only-hosting/contents.lr +++ b/content/u/products/ipv6-only-hosting/contents.lr @@ -22,10 +22,10 @@ image:/u/image/cards/ipv6onlyhosting.jpg --- feature1_title: Necessary --- -feature1_text: We [ran out of IPv4 +feature1_text: The Internet [ran out of IPv4 space](https://www.ripe.net/publications/news/about-ripe-ncc-and-ripe/the-ripe-ncc-has-run-out-of-ipv4-addresses) by the end of 2019. While you can acquire IPv4 space on the market, it -is very expensive and effectively limiting new projects to come into +is constly and effectively limiting new projects to come into existence. IPv6 fixes all of this, today. --- feature2_title: Sustainable & Simple @@ -56,3 +56,5 @@ firewall setups, all this burden is lifted away with IPv6 only VMs. Additionally you can request a /64 network to be routed to your VM, for free! + +Check [IPv6 only hosting.](https://ipv6onlyhosting.com/) diff --git a/content/u/products/ipv6-to-ipv4-proxy/contents.lr b/content/u/products/ipv6-to-ipv4-proxy/contents.lr new file mode 100644 index 0000000..56a8152 --- /dev/null +++ b/content/u/products/ipv6-to-ipv4-proxy/contents.lr @@ -0,0 +1,93 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 to IPv4 Proxy +--- +subtitle: Enable IPv4 / legacy IP services to be reachable by IPv6 +--- +image: /u/image/cards/ipv6-ipv4-proxy.jpg +--- +headline1: IPv6 to +--- +headline2: IPv4 Proxy +--- +header_background_color: #66C4B0 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +description1: + +## Introduction + +The IPv6-to-IPv4 proxy allows existing IPv4 (also know as legacy IP) +resources to be reachable from the current IP (IPv6) Internet. +It supports the following protocols: + +* HTTP +* HTTPS +* IMAPS + +## When to use the IPv6-to-IPv4 proxy? + +More and more clients devices like mobile phones, computers and even +whole companies network are switched to **IPv6 only** due to the +IPv4 address shortage and the maintenance overhead for dual stack +networks. + +Most, but not all, of these devices can still reach the IPv4 Internet +via translation services like NAT64. However with every NAT process, a +litte bit of latency is added. + +And the higher the latency is, the slower a website loads for a customer. + +With our IPv6-to-IPv4 proxy you can make your IPv4 only website +accessible for clients on IPv6 only networks without a NAT service. + +## Pricing + +You can order the IPv6-to-IPv4 proxy in two different variants: the +**standard IPv6-to-IPv4 proxy** and the **caching IPv6-to-IPv4 +proxy**. + +If you are not sure which one to choose, you can always start with the +standard IPv6-to-IPv4 proxy and later switch to the caching IPv6-to-IPv4 +proxy. + +The pricing includes 15 TB traffic/month. + +### The standard IPv6-to-IPv4 proxy + +* Up to 10 domains: 5 CHF/month (0.5 CHF/domain) +* Up to 100 domains: 30 CHF/month (0.3 CHF/domain) +* Up to 1000 domains: 100 CHF/month (0.1 CHF/domain) +* Above 1000 domains: on request + +### The caching IPv6-to-IPv4 proxy + +This proxy allows IPv6 only clients to access the content of your IPv4 +only services even faster. + +* Caching IPv6-to-IPv4 proxy S with 1 Core, 2 GB RAM, 10 GB SSD: 35.5 CHF/month +* Caching IPv6-to-IPv4 proxy M with 4 Core, 8 GB RAM, 50 GB SSD: 82.5 CHF/month +* Caching IPv6-to-IPv4 proxy L with 8 Core, 16 GB RAM, 10 GB SSD, 1TB +HDD: 132.5 CHF/month + +The price consists of a VM plus 20 CHF maintenance fee/month. + +The one time setup fee is 30 CHF. + +The higher the amount of RAM and SSD, the more size for caching your +website is available. + +Caching objects requires to inspect the network connection. For this +reason the caching proxy uses its own SSL certificate and re-encrypts +the traffic to your backend host. + +## Related products + +If you are looking for a proxy that enables IPv6 only resources +(i.e. websites) to be accessible from the IPv4 only Internet, you can +use the [IPv4-to-IPv6 Proxy](../ipv4-to-ipv6-proxy/). diff --git a/content/u/products/ipv6-vpn/contents.lr b/content/u/products/ipv6-vpn/contents.lr new file mode 100644 index 0000000..f319f6b --- /dev/null +++ b/content/u/products/ipv6-vpn/contents.lr @@ -0,0 +1,115 @@ +_discoverable: yes +--- +_hidden: no +--- +title: IPv6 VPN +--- +subtitle: Take your IPv6 with you. +--- +image: /u/image/cards/ipv6vpn-bestseller.jpg +--- +headline1: Get IPv6 +--- +headline2: Anywhere, anytime +--- +headline3: IPv6 VPN +--- +header_background_color: #1393B4 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +feature1_title: Versatile +--- +feature1_text: You can use our IPv6 VPN to connect your office. Or +your notebook. Or to create your own VPN concentrator. +--- +feature2_title: State of the art +--- +feature2_text: The ungleich IPv6 is powered by Wireguard. Wireguard is +a light weight, portable and easy to use technology. And it comes with +a /48 IPv6 network routed! +--- +feature3_title: Works anywhere +--- +feature3_text: The VPN works in situations where you have NAT, NAT64 +or other network inspection modes in place. It just requires UDP +traffic to pass. +--- +content1_text: + +## IPv6 VPN + +At ungleich we believe that IPv6 should be available everywhere. To +help you connecting to IPv6 only resources, we offer the IPv6-VPN. + +We believe that IPv6 is an enabler for many organisations, companies, +developers and freelancers. For this reason we created the +VPN, which enables you to have IPv6 +connectivity from wherever you are for 120 CHF/year. + +One VPN is free for all existing customers with resources on +[Data Center Light](/u/projects/data-center-light). + +You can find more about the VPN and technical details, +on [IPv6VPN.ch](https://ipv6vpn.ch). + +## IPv4 address support + +We also support mapped IPv4 addresses on the IPv6VPN. With our NAT64 +technology we map a static, public IPv4 address to a dedicated IPv6 +address. + +This way you only need to manage IPv6 on your end, but you are world +wide IPv4 reachable. See below for sample pricings of up to 2 IPv4 +addresses. Reach out to [our support](/u/contact/) if you require more +mapped IPv4 addresses. + +## Related products + +* The [IPv4-to-IPv6 proxy](/u/products/ipv4-to-ipv6-proxy/) enables + IPv6 only websites to be reachable from the IPv4 world. +* [IPv4 as a service](/u/products/ipv4-as-a-service/) - enable you to + get your static IPv4 address anywhere +* [The VIIRB](/u/products/viirb-ipv6-box/) - the world's smallest IPv6 router +* [The VIWIB](/u/products/viwib-wifi-ipv6-box/) - tiny IPv6 router with WiFi +* [The VIGIR](/u/products/vigir/) - the professional IPv6 router (with LTE!) + + + +--- +content1_image /u/image/ipv6-vpn-ungleich-swiss.jpg +--- +offer1_title: IPv6 VPN 120 CHF/Year +--- +offer1_text: +* IPv6 addresses registerd in Switzerland +* 80 bit of IPv6 space +* Encrypted +* with a /48 network + +--- +offer1_link: https://datacenterlight.ch/product/ipv6-vpn-48/ +--- +offer2_title: 1 mapped IPv4 address (additional 24 CHF/Year, 50 CHF setup fee) +--- +offer2_text: +* Usable with an existing IPv6VPN +* 1 static public IPv4 address +* Mapped to an IPv6 address via NAT64 +* [50 CHF one time setup fee](https://datacenterlight.ch/product/ipv4-addon-setup/) + +--- +offer2_link: https://datacenterlight.ch/product/1-ipv4-address-addon-vpn/ +--- +offer3_title: 2 mapped IPv4 address (additional 160 CHF/Year, 50 CHF setup fee) +--- +offer3_text: +* Usable with an existing IPv6VPN +* 2 static public IPv4 addresses +* Mapped to an IPv6 address via NAT64 +* [50 CHF one time setup fee](https://datacenterlight.ch/product/ipv4-addon-setup/) + +--- +offer3_link: https://datacenterlight.ch/product/1-ipv4-address-addon-vpn/ diff --git a/content/u/products/ipv6vpn/contents.lr b/content/u/products/ipv6vpn/contents.lr deleted file mode 100644 index 5c6c3ee..0000000 --- a/content/u/products/ipv6vpn/contents.lr +++ /dev/null @@ -1,12 +0,0 @@ -title: IPv6 VPN ---- -_discoverable: no ---- -_hidden: no ---- -buy_link: http://ungleich.ch ---- -subtitle: We enable you with IPv6 everywhere ---- -body: Hi, this is body ---- diff --git a/content/u/products/mail-hosting/contents.lr b/content/u/products/mail-hosting/contents.lr new file mode 100644 index 0000000..6780e7b --- /dev/null +++ b/content/u/products/mail-hosting/contents.lr @@ -0,0 +1,64 @@ +_discoverable: yes +--- +_hidden: no +--- +title: Mail Hosting +--- +subtitle: Your mails in Switzerland +--- +image: /u/image/cards/mailhosting.jpg +--- +headline1: Mail Hosting: +--- +headline2: Your Mails in Switzerland +--- +header_background_color: #788BCE +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +feature1_title: Simple +--- +feature1_text: +This is a classic mail hosting. Webmail, SMTP, IMAP. Plain and simple. +--- +feature2_title: Safe +--- +feature2_text: +Your data is saved in Switzerland and stored 3 times on our CEPH +storage cluster. +--- +feature3_title: Zero Carbon Infrastructure +--- +feature3_text: +Data Center Light runs a zero carbon infrastructure. +[Read more about it](https://ungleich.ch/u/blog/how-to-sustainable-store-your-data/). +--- +description2: + +This mailhosting is mainly targeted for low volume, single person or +single system usage. +If you need a mail gateway for sending system logs or if you just need +an easy to use mail account, this is the right product. + +This product is feasible for normal use of email. Spamming is +prohibited and will lead to suspension and/or terminaton of your +account. + +If you are interested in a legit high volume mail traffic product, +[contact us](/u/contact/) for an individual offer. + +## What you get + +* A single mailbox account (yourname@ungleich.cloud) +* Up to 100 mail aliases +* Up to 100GB usage (additional storage: 100GB for 2 CHF/month) +* Access via SMTP, IMAPS and Webmail + +## Pricing + +The one time setup fee is 15 CHF, the monthly recurring fee is 7 CHF +per month. + +You can order it by sending an email to **support at ungleich.ch**. diff --git a/content/u/products/monitoring-as-a-service/contents.lr b/content/u/products/monitoring-as-a-service/contents.lr new file mode 100644 index 0000000..4012f63 --- /dev/null +++ b/content/u/products/monitoring-as-a-service/contents.lr @@ -0,0 +1,155 @@ +_discoverable: yes +--- +_hidden: no +--- +title: Hosted Monitoring +--- +subtitle: Safe monitoring from Switzerland +--- +headline1: Fully Open Source +--- +headline2: Hosted Monitoring +--- +header_background_color: #129A49 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image:/u/image/cards/monitoring.jpg +--- +feature1_title: Hosted Monitoring +--- +feature1_text: +You want to know how your services are doing, but don't want to spend +time on managing your monitoring? Then hosted monitoring is the right +solution for you. +--- +feature3_title: Open Source +--- +feature3_text: +Our Monitoring solution is based on 100% Open Source products. There +is no vendor lockin and also no proprietary software. +--- +feature2_title: Safe data storage +--- +feature2_text: + +Your monitoring data is stored in Switzerland, +a country with strong privacy laws that protect your data. +--- +content1_text: + +## How it works + +We setup a dedicated VM with monitoring for you: we setup & maintain the +prometheus, grafana and operating system installation. + +## Batteries included + +You receive alerting via E-Mail when you have hosted monitoring with us. By getting notified with the monitoring status you get to react fast when the system needs your attention. + +## Pricing + +The cost is made of two parts, a one-time initial setup fee and the monthly plan you choose. +For monitoring we setup a dual stack VM with 1 core, 1 GB RAM, +10 GB SSD: 11.5 CHF + 100 GB Storage 2 CHF / 100GB = 13.5 CHF + +One time setup fee is 30 CHF and to be paid only once at the beginning of monitoring setup. +Maintenance fee 8 CHF/month is included in the monthly monitoring. + +Our team will get in touch with you as soon as we receive the order. + +Note: You can increase storage space with a short downtime (about 5 +minutes) at any time. +--- +offer1_title: Monitoring (S) 21.5 CHF/month +--- +offer1_text: +* 1 Core/1 GB RAM/10 GB SSD/100 GB +* Suitable for 1-2 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) + +--- +offer1_link: https://ungleich.ch/product/monitoring-s/ +--- +offer2_title: Monitoring (M) 36.5 CHF/month +--- +offer2_text: +* 2 Core/2 GB RAM/10 GB SSD/500 GB +* Suitable for 5-10 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) + +--- +offer2_link: https://ungleich.ch/product/monitoring-m/ +--- +offer3_title: Monitoring (L) 80.5 CHF/month +--- +offer3_text: +* 4 Core/4 GB RAM/10 GB SSD/2000 GB +* Suitable for 20-30 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) +--- +offer3_link: https://ungleich.ch/product/monitoring-l/ +--- +content1_image: /u/image/zerocarbon-yes.jpg +--- +content2_text: + +## High Availability Monitoring + +Our monitoring offers High Availability options: if your organisation depends on critical services we recommend to use highly available monitoring in 2 data centers. + +## Pricing for HA Monitoring + +HA Monitoring consists of 2 VMs in 2 Data Centers, instead of 1 VM as in regular monitoring. Each VMs are +configured to monitor each other and to monitor all your systems. + +## Price reduction for IPv6 only monitoring + +Above offers are also available as IPv6 only offers. +The key facts are: + +* Dashboards are also reachable by IPv4 (via our IPv4-to-IPv6 proxy) +* Monitoring only works via IPv6 +* Uses a shared mailserver for sending emails + +The price is reduced by: + +* 4 CHF/month for the regular monitoring (-9 CHF for the IPv4 address, + +5 CHF for the mailservice) +* 13 CHF/month for the regular monitoring (-18 CHF for the IPv4 + addresses + 5 CHF for the mailservice) +--- +content2_image: /u/image/zerocarbon-no.jpg +--- +offer4_title: HA-Monitoring (S) 43 CHF/month +--- +offer4_text: +* 2x 1 Core/1 GB RAM/10 GB SSD/100 GB +* Suitable for 1-2 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) + +--- +offer4_link: https://ungleich.ch/product/ha-monitoring-s/ +--- +offer5_title: HA-Monitoring (M) 73 CHF/month +--- +offer5_text: +* 2x 2 Core/2 GB RAM/10 GB SSD/500 GB +* Suitable for 5-10 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) + +--- +offer5_link: https://ungleich.ch/product/ha-monitoring-m/ +--- +offer6_title: HA-Monitoring (L) 161 CHF/month +--- +offer6_text: +* 2x 4 Core/4 GB RAM/10 GB SSD/2000 GB +* Suitable for 20-30 systems +* [30 CHF Setup fee](https://ungleich.ch/product/monitoring-setup/) + +--- +offer6_link: https://ungleich.ch/product/ha-monitoring-l/ +--- \ No newline at end of file diff --git a/content/u/products/pro-ipv6-box/contents.lr b/content/u/products/pro-ipv6-box/contents.lr new file mode 100644 index 0000000..392b7ac --- /dev/null +++ b/content/u/products/pro-ipv6-box/contents.lr @@ -0,0 +1,89 @@ +_discoverable: yes +--- +_hidden: no +--- +title: The Pro IPv6 Box (PIB) +--- +subtitle: The PIB connects locations and offices with IPv6 +--- +image: /u/image/cards/pib.jpg +--- +content1_image: /u/image/pro-ipv6-box.jpg +--- +content1_text: + +## The professional IPv6 router + +Like the [VIIRB](../viirb-ipv6-box), the **PIB** is designed to +provide IPv6 connectivity for you. Compared to the VIIRB, the PIB is +suited for more professional use cases. It features Gigabit Ethernet +and up to 4 GB RAM at a very low energy consumption. + +## How it works + +The PIB is pre-configured with a Wireguard VPN. With this VPN you +will receive a /48 IPv6 prefix. The IPv6 connectivity is provided by +[Data Center Light](https://ungleich.ch/u/projects/data-center-light/). + +When you plug in the ethernet cable and power it on, it will do the +following: + +* Establish a VPN connection via IPv4 or IPv6 to Data Center Light +* Announce a pre-configured /64 network on the LAN +* Announce a pre-configured /64 network on the Wifi (optional) + +By default the firewall is configured to allow outgoing connections +from LAN/Wifi towards the VPN. Incoming ICMP6, SSH, HTTP and HTTPS is +open by default. + +## PIB use cases + +The configuration and uses cases are the same as the +[VIIRB](../viirb-ipv6-box). Additionally the PIB is suited for bigger +scale operations with 3 gigabit ports. + +--- +content2_image: /u/image/pro-ipv6-box-2.jpg +--- +content2_text: + +## Tech details + +* Operating System: Linux +* Size: 168 mm x 157 mm x 30 mm +* CPU: AMD Embedded G series GX-412TC, 1 GHz quad Jaguar core with 64 bit and AES-NI support, 32K data + 32K instruction cache per core, shared 2MB L2 cache. +* Memory: 2 or 4 GB DDR3-1333 DRAM +* Storage: 16GB m-SATA SSD +* SD card (internal sdhci controller), or external USB. 1 SATA + power connector. +* Power 12V DC, about 6 to 12W depending on CPU load. Jack = 2.5 mm, center positive +* Ethernet: 3 Gigabit Ethernet channels (Intel i211AT on apu2b2, i210AT on apu2b4) +* Serial: DB9 serial port +* 2 USB 3.0 external +* 2 USB 2.0 internal* +* Three front panel LEDs +* Expansion: 2 miniPCI express (one with SIM socket), LPC bus, GPIO header, I2C bus, COM2 (3.3V RXD / TXD) + +The PIB is based on the [apu2](https://www.pcengines.ch/apu2.htm) with +Linux pre-installed, pre-configured and combined with the [IPv6VPN](https://ipv6vpn.ch). + +## What is in the box + +When you order the PIB, you will receive one pre-configured +system and a power adapter. Please let us know whether you need the +EU, US or UK plug before ordering. The following models are available: + +* PIB with 2 GB RAM - 290 CHF +* PIB with 4 GB RAM - 300 CHF + +The PIB can come with optional 802.11ac WiFi Support for 30 CHF. +All prices excluding VAT and shipping costs. + +## Ordering + +To pre-order the PIB, send a mail with your shipping address +to **support -at- ungleich.ch**. Shipping will start from July 2020. + +## More of it + +If you need a more cost-effective and smaller router, we can recommend +the [VIIRB](../viirb-ipv6-box). diff --git a/content/u/products/project-management/contents.lr b/content/u/products/project-management/contents.lr new file mode 100644 index 0000000..6ac29ff --- /dev/null +++ b/content/u/products/project-management/contents.lr @@ -0,0 +1,92 @@ +_discoverable: yes +--- +_hidden: no +--- +title: Project Management +--- +subtitle: Project Management for teams +--- +image: /u/image/cards/projectmanagement.jpg +--- +headline1: Project Management +--- +headline2: For Teams +--- +header_background_color: #7BC7D4 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: + +##Hosted Redmine + +A sustainable project management for your team, powered by 100% renewable energy. Our team at ungleich has been using this open source project management for many years, Redmine very much enabled our remote collaboration between teams and communities. +Our hosted Redmine allows decentralized team to structure their workflow and to easily coordinate tasks. + +## Transparent and secure + +You can get on to doocumenting your processes and knowledge with version control, and pass it on to fellow coworkers. You can interact with your team or your customer via issue tracker and forum. Redmine allows you a transparent process and progress sharing. Access control is very easy and can be done on role-basis. + + +## Hosted Redmine Plan + +You can start hosted redmine with below plans. The cost is made of two parts, a one-time initial setup fee and the monthly plan. Our team will get in touch with you as soon as we receive the order and will give you the access in 1 business day. Growing your project management after starting a plan is very easy and can be done anytime. +--- +content1_image: /u/image/open-infrastructure.jpg +--- +content2_text: + +## A virtual tour + +Want to discover more how this project management works? You can check out our [Open Infrastructure Project](https://redmine.ungleich.ch/projects/open-infrastructure/) which is a part of our project management page for [Data Center Light.](https://datacenterlight.ch) All our knowledge on how to run an open-source data center is shared publicly. + +## Contact + +Get in touch with us! Migrating old redmine or custom offer with other services on top tailored for your team is also possible. Send us a mail to support@datacenterlight.ch or you can talk to us directly at [our chat.](https://chat.with.ungleich.ch) +--- +content2_image: /u/image/open-infrastructure-overview.jpg +--- +feature1_title: Easy management for multiple projects +--- +feature1_text: + +Manage your projects per task and per person easily. Redmine supports role-based access control +--- +feature2_title: Data kept in Switzerland +--- +feature2_text: + +Your project managment data is securely hosted in the servers in our data center in Switzerland, protected by strict privacy law +--- +feature3_title: Sustainable +--- +feature3_text: +Your Redmine is hosted in our [own +datacenter](/u/projects/data-center-light/) in Switzerland in a sustainable datacenter: operates in reused old factory halls, reuse hardware, only do passive cooling and are directly plugged into a +hydroelectric power plant. + +--- +offer1_title: Hosted Redmine (M) 22.5 CHF/Month +--- +offer1_text: + +* 100 GB space + 100 GB Backup +* Data storage replicated 3 times +* [35 CHF Setup fee](https://ungleich.ch/product/hosted-redmine-setup-fee/) + +--- +offer1_link: https://ungleich.ch/product/hosted-redmine-m/ +--- +offer2_title: Hosted Redmine (L) 34.5 CHF/Month +--- +offer2_text: + +* 1 TB space +* Data storage replicated 3 times +* [35 CHF Setup fee](https://ungleich.ch/product/hosted-redmine-setup-fee/) + +--- +offer2_link: https://ungleich.ch/product/hosted-redmine-l/ +--- diff --git a/content/u/products/sixnet/contents.lr b/content/u/products/sixnet/contents.lr new file mode 100644 index 0000000..33d7e4f --- /dev/null +++ b/content/u/products/sixnet/contents.lr @@ -0,0 +1,134 @@ +_model: product +--- +_discoverable: yes +--- +_hidden: no +--- +title: SIXNET +--- +subtitle: Mobile Internet - IPv6 enabled +--- +header_background_color: #FACA05 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +headline1: Sixnet +--- +headline2: Mobile Internet +--- +headline3: with IPv6 +--- +image: /u/image/cards/sixnet.jpg +--- +description1: + +## What is SIXNET? + +SIXNET is an offer from ungleich to bring IPv6 enabled Internet to +you. It is based on mobile (LTE, 3G/4G) Internet. The service is +provided in collaboration with +[Digital Republic](https://digitalrepublic.ch/) and the +[IPv6VPN](/u/products/ipv6-vpn/). + +## Where can I get SIXNET? + +SIXNET is currently only available in Switzerland. If you are a mobile +provider and you would like to offer IPv6 connectivity to your +customers, you can [get in touch with us](/u/contact/). + +## How can I use SIXNET? + +The easiest way to get started is to order a pre-configured IPv6 +router from us. You can choose between the following three options: + +* The VIIRB + Cat 4 USB-LTE (1 Ethernet port) +* The VIWIB + Cat 4 USB-LTE (2 Ethernet ports, WiFi) +* The VIGIR with builtin Cat 6 LTE mode (5 Gigabit Ethernet Ports, 2x WiFi) + +For more information, checkout our +[IPv6 Mobile Internet Router](/u/products/ipv6-mobile-internet-router) +page. + + +## Bandwidth & Pricing + +SIXNET pricing is transparent and consists of two components: the +mobile subscription and the IPv6 connectivity. Note that if you decide +to get one of our routers, the first year IPv6VPN is already included. + +| Internet Speed down | Internet speed up | Price per month | +|-----------------------------------------|-----------------| +| 0.4 | 0.2 | 8 | +| 1 | 0.5 | 12 | +| 10 | 5 | 18 | +| 50 | 25 | 30 | +| 300 | 150 | 55 | + + + +The listed Internet speed is the maximum bandwidth. Depending on your +region, the effective speed might vary. +Checkout the [Sunrise coverage +map](https://www.sunrise.ch/en/residential/mobile/mobile-network/network-coverage/network-coverage-map.html) +for details. + +### 0.4 Mbit/s + +Choose this speed if you want to access a small amount of sensors. For +instance temperature/humidity sensors. A small number of +[Prometheus](https://prometheus.io/) nodes work fine with this speed. + +### 1 Mbit/s + +Choose this speed if you have more than just a few sensors or if you +need low speed remote access to resources. + +### 10 Mbit/s + +This is the entrance tariff for surfing. If you rarely surf, mostly +check emails or use text based services such as +[SSH](https://openssh.org), this is a good tariff for you. Also very +suitable for holiday homes where you mostly want to relax and slow +Internet is actually a feature. + +### 50 Mbit/s + +This is the regular Internet speed. Use this for 1-3 people working in +an office. Also allows smooth remote access to resources. + +### 300 Mbit/s + +The fastest SIXNET speed. It's a pleasure working with this speed and +you really wonder why anyone needs to have a landline. With this +speed, you actually don't. Suitable for a small to mid sized office. + +We recommend to order the VIGIR, if you plan to use this speed. + +## How to order SIXNET + +To order a SIXNET Internet subscription, simply send an email to +support@ungleich.ch including your full name, shipping address and a +scan of an ID or excerpt from the chamber of commerce (for companies +only). + + + +--- +feature1_title: Mobile Internet +--- +feature1_text: SIXNET brings Internet via the mobile network to +you. You do not need any other mobile provider or a landline. Simply +plugin our router and you are ready to surf. +--- +feature2_title: IPv6 included +--- +feature2_text: With each subscription the IPv6VPN is included. That +means you receive a static /48 IPv6 network! +--- +feature3_title: Easy to adjust +--- +feature3_text: SIXNET is not only modern, but also flexible. You can +adjust your speed every month and the minimum contract period is only +3 months. Where else have you seen that? diff --git a/content/u/products/ungleich-infrastructure-availability/contents.lr b/content/u/products/ungleich-infrastructure-availability/contents.lr new file mode 100644 index 0000000..611351d --- /dev/null +++ b/content/u/products/ungleich-infrastructure-availability/contents.lr @@ -0,0 +1,89 @@ +_discoverable: no +--- +_hidden: no +--- +title: ungleich infrastructure availability +--- +subtitle: Making your services plannable +--- +description1: + +## Infrastructure availability + +Depending on your project or business case you have different +availbility requirements. In the IT industry, we usually use the +concept of accepted percentage downtime per year. The follow table +lists the typical availability categories: + +``` +| % | Accepted downtime / year | +| 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 at minimum 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 and indivual IP address blocks. + +## Related pages + +* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability/) +* [ungleich SLAs](../ungleich-sla/) +* [ungleich Service Hours](../ungleich-service-hour/) +* [ungleich Support Packages](../ungleich-support-package/) diff --git a/content/u/products/ungleich-service-hour/contents.lr b/content/u/products/ungleich-service-hour/contents.lr new file mode 100644 index 0000000..0ce6a78 --- /dev/null +++ b/content/u/products/ungleich-service-hour/contents.lr @@ -0,0 +1,86 @@ +_discoverable: no +--- +_hidden: no +--- +title: ungleich work hours +--- +subtitle: ungleich works for you +--- +description1: + +You can acquire ungleich staff for solving your infrastructure, +software development and project management tasks. Below table +summarises our standard rates. For bigger projects, +reach out to us individually. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Package/FeatureDefault rateSupport packageStarter packageCollaboration package
    Hourly Rate (during business hours)220 CHF/h210 CHF/h200 CHF/h180 CHF/h
    Hours included during business hours021020
    Hourly Rate (outside of business hours)360 CHF/h343 CHF/h327 CHF/h295 CHF/h
    Hours included (outside of business hours)0025
    Package valid foron demand1 month1 month2 months
    Discount0%4.5%9%18%
    Pricing per month050030005500
    + +* Business hours are Mo-Fr, 9-17, excluding Swiss national holidays +* Bigger packages allow us to offer a discount for better planning +* Hours not consumed during the given timeframe are expired. +* 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 Service Hours](../ungleich-service-hour) +* [ungleich Support Packages](../ungleich-support-package) diff --git a/content/u/products/ungleich-sla/contents.lr b/content/u/products/ungleich-sla/contents.lr new file mode 100644 index 0000000..7ee311e --- /dev/null +++ b/content/u/products/ungleich-sla/contents.lr @@ -0,0 +1,302 @@ +_discoverable: no +--- +_hidden: no +--- +title: ungleich SLA levels +--- +subtitle: ungleich service level agreements +--- +description1: + +Our Service Level Agreements (SLAs) define the reachability as well +as the reaction times. As every customer situation is unique, we allow +customization of + +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 + +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 09:00-17:00 on work days) +* Individual Development and Support available at standard rate of 220 CHF/h +* No telephone support + + +--- +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** within work +hours. 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: + +* 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 + +--- +offer1_link: https://ungleich.ch/u/contact/ +--- +offer2_title: Enterprise SLA +--- +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 + +--- +offer2_link: https://ungleich.ch/u/contact/ +--- +offer3_title: HA SLA +--- +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. + +--- +offer3_link: https://ungleich.ch/u/contact/ +--- +description4: + +### Overview of the different SLA levels +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Feature / SLAStandard SLABusiness SLAProfessional SLAProfessional Plus SLACritical Services SLA
    Support via E-Mailyesyesyesyesyes
    Guaranteed response time via E-Mailno (best effort)1 business day4h during business hours4h during extended business hours4h every day
    Support via telephonebest effortbest effortyes, Mo-Fr 09:00-17:00yes, Mo-Fr 06:00-22:00yes, Mo-Su 00:00-23:59
    PricingIncluded for free45090018004200
    +
    + +All prices are excluding the [working hours](../ungleich-service-hour). + +## 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. + +### 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. + +### 1 business day + +The request will be answered within the next business day. The table +below shows the details for every time of the week. + +
    + + + + + + + + + + + + + + + + + + + +
    Request receivedAnswer guaranteed until
    Between Monday 09:00-17:00 + Tuesday 17:00 +
    Between Tuesday 09:00-17:00 + Wednesday 17:00 +
    Between Wednesday 09:00-17:00 + Thursday 17:00 +
    Between Thursday 09:00-17:00 + Friday 17:00 +
    Between Friday 17:00 and Monday 09:00 + Monday 17:00 +
    +
    + +If a work day is a Swiss national holiday it is treated as Friday to +Monday period. + +### 4h during business hours + +The request will be answered within the 4h during business hours. The +table below shows the details: +
    + + + + + + + + + + + + + + + + + +
    Request receivedAnswer guaranteed until
    Between 09:00-13:00 on a work dayBetween 13:00-17:00 on the same work day
    Between 13:00-17:00 on a work dayBetween 09:00-13:00 on the next work day
    +
    + +### 4h during extended business hours + +The request will be answered within the 4h during business hours. The +table below shows the details: + +
    + + + + + + + + + + + + + +
    Request receivedAnswer guaranteed until
    Between 09:00-13:00 on a work day + Between 13:00-17:00 on the same work day +
    Between 13:00-17:00 on a work day + Between 09:00-13:00 on the next work day +
    +
    + +### Every day 4h response time + +The request will be answered within the 4h independent of the day or +time. +
    + + + + + + + +
    Request receivedAnswer guaranteed until
    Between 00:00-23:59 every day + Within 4 hours +
    +
    + +## Related pages + +* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability) +* [ungleich SLAs](../ungleich-sla) +* [ungleich Service Hours](../ungleich-service-hour) +* [ungleich Support Packages](../ungleich-support-package) diff --git a/content/u/products/ungleich-support-package/contents.lr b/content/u/products/ungleich-support-package/contents.lr new file mode 100644 index 0000000..e439ae5 --- /dev/null +++ b/content/u/products/ungleich-support-package/contents.lr @@ -0,0 +1,75 @@ +_discoverable: no +--- +_hidden: no +--- +title: ungleich support packages +--- +subtitle: Let us make your life easy +--- +description1: + +Every project and every business has invdiual needs in regards to +support reachablity, infrastructure uptime and development and +consultancy efforts. + +We allow every project to individually select their +SLA, consultancy packages and availability requirements. Below we have +summarised typical selections from our customers for easy selection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Package/FeatureBusiness LightBusiness StandardBusiness ProBusiness Pro PlusCritical Services
    Working hour packageSupport packageStarter packageStarter packageCollaboration packageCollaboration package
    SLA packageBusiness SLABusiness SLAProfessional SLAProfessional Plus SLACritical Services SLA
    Targetted Minimum Availability99%99.9%99.9%99.99%99.999%
    Pricing500+450 = 9503000+450 = 3'4503000+900 = 3'9005500+1800 = 7'3005500+4200 = 9'700
    + +## Targetted Minimum Availability + +The availability of our services is defined individually depending on +the services booked. Find more information about it on the +[ungleich infrastructure +availability](../ungleich-infrastructure-availability) page. + +## Related pages + +* [ungleich Infrastructure Availability](../ungleich-infrastructure-availability/) +* [ungleich SLAs](../ungleich-sla/) +* [ungleich Service Hours](../ungleich-service-hour/) +* [ungleich Support Packages](../ungleich-support-package/) diff --git a/content/u/products/video-conference/contents.lr b/content/u/products/video-conference/contents.lr new file mode 100644 index 0000000..79f4171 --- /dev/null +++ b/content/u/products/video-conference/contents.lr @@ -0,0 +1,38 @@ +_discoverable: yes +--- +_hidden: no +--- +title: Video Conference Call +--- +subtitle: Free, Open Source and sustainable Video Conference +--- +image: /u/image/cards/videoconf.jpg +--- +headline1: Secure & Free +--- +headline2: Video Conference +--- +header_background_color: #095fce +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: + +## A Sustainable Video Conference System + +Powered by [100% renewable energy,](https://datacenterlight.ch/en-us/cms/hydropower/) running on a VM at our [Swiss data center.](https://datacenterlight.ch) It is enabled by the open source technology Jitsi: it does not encode or decode but only forwards video streams. The encoding and decoding happens on the client side. + +## No signup needed + +You can have a call anytime at [talk.ungleich.ch](https://talk.ungleich.ch) +It's completely free. No signup needed, we don't collect your data. You can share screens or videos over it. The call works with or without video. + +## Stayhome + +Use our free video conference to call the ones you need to talk to. Wherever you are, stay safe. + +--- +content1_image: /u/image/jitsi-ungleich.jpg +--- \ No newline at end of file diff --git a/content/u/products/vigir/contents.lr b/content/u/products/vigir/contents.lr new file mode 100644 index 0000000..80cc561 --- /dev/null +++ b/content/u/products/vigir/contents.lr @@ -0,0 +1,176 @@ +_discoverable: yes +--- +_hidden: no +--- +title: VIGIR - The VPN IPv6 4G IoT Router +--- +subtitle: The IPv6 LTE platform +--- +image: /u/image/cards/vigir.jpg +--- +headline1: VIGIR: +--- +headline2: VPN IPv6 4G/LTE +--- +headline3: IPv6 Router +--- +header_background_color: #EBBD07 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: + +## The VIGIR + +The VIGIR is the solution for anyone who wants to have mobile +Internet, WiFi and IPv6 in one box. Like the +[VIIRB](/u/products/viirb-ipv6-box/) and the +[VIVIB](/u/products/viwib-wifi-ipv6-box/), the VIGIR comes included +with the IPv6VPN and brings IPv6 to you anywhere in the world. + +## The VIGIR + +While the VIIRB and the VIWIB are small, easy to carry, lightweight +devices, the VIGIR isn't. The VIGIR is a bit of a monster with a lot +of antennas and features: + +* it has 2 antennas for 5 Ghz WiFi +* it has 2 antennas for 2.4 Ghz WiFi +* it has 2 antennas for 4G/LTE +* it has a CAT6 LTE modem included! +* it has 5 Gigabit ports + +And there you already see the big difference: the main use case of the +VIGIR is to bring Internet to you via 4G/LTE. Combined with the +IPv6VPN, you get proper, static IPv6 connectivity into your +network. Independent of the actual mobile provider network. + +## The 4G/LTE modem + +The included 4G/LTE modem allows you to just insert a SIM card, +configure the APN and you are ready to surf. We ship with an LTE Cat 6 +modem. At the moment we ship the VIGIR only with the EU modem +model. If you are interested in a VIGIR suitable for other regions, +please send us an email to support -at- ungleich.ch with letting us +know which region/band/frequencies you are in. + +## How to use the VIGIR + +The VIGIR is very simple to use: + +* First, plugin the SIM card +* Power it on +* Connect to the webinterface +* Configure the APN/username details + +### IPv6 enabled LAN/Wifi + +The VIGIR comes with a built-in 802.11ac WiFi network. The default SSID is +"IPv6 everywhere" and the default password is "iloveipv6". + +Both the WiFi and LAN network are configured to be dual stack, because +most mobile providers supply IPv4 addresses. + +### Using the VIGIR as traditional router: no sim card required + +If you do not have a SIM card or if you want to use the VIGIR with an +existing Internet connection, you can simply plugin the Internet into +the WAN port and you are ready to go. + +## Tech details + +* Operating System: Linux ([OpenWRT](https://openwrt.org/toh/zbt/zbt_wg3526)) +* Size: 234mm x 164mm x 22mm +* Weight: ca. 800 Gramm +* CPU: MT7621, 880 Mhz +* Memory: 512MB +* Storage: 16M Flash +* Wifi: 802.11 ac/n/g/b/a +* LTE: CAT6, 1×SIM card slot (regular size) + * LTE band/frequencies: B1, B2, B3, B4, B5, B7, B12, B13, B20, B25, B26, B29, B30, B41 + * HSPA+, UMTS band/frequencies: B1, B2, B3, B4, B5, B8 +* Ethernet: 5 Gigabit/s ports (4 LAN, 1 WAN) +* USB: USB 3.0 +* 1 Micro SD Card slot +* Power supply: 12V/2A +* Power Consumption: <24W + +The VIGIR is based on the +[ZBT +WG3526](https://www.zbtlink.com/sale-12589416-ieee802-11ac-4g-lte-openwrt-wifi-router-192-168-1-1-wireless-router-1200mbps.html) +with the 4G/LTE card included. As usual it pre-configured with stock +OpenWrt and the [IPv6VPN](https://ipv6vpn.ch). + +### IPv6VPN included + +A free subscription for 1 year is included. This way you can plug in +the VIGIR and just get started with IPv6. + +## VIGIR Add-Ons + +All VIIRB add-ons are compatible with the VIGIR! Popular add-ons for +the VIGIR are: + +### A USB camera + +This is particularly useful if you want to use the VIGIR with a mobile +Internet to monitor a particular area. For **25 CHF** you can add a tested, +Full HD (1920x1080) USB camera to your order. + +### A temperature sensor + +If you want to know how hot (or cold) it is, +you can use an USB temperature sensor to measure the temperature. +For **20 CHF** you can add a tested temperature sensor to your order. + +### A storage server + +You can turn the VIGIR into a storage system! With the optional 32GB +micro SD card, you can save a lot of data on it. For **20 CHF** you +can add an 32GB microSD card to your order. + +## Ordering + +The order are open now, shipment is expected to begin in January 2021. +To order the VIGIR, send an email with your shipping address and +the requested quantity to **support -at- ungleich.ch**. +Let us know if you want tracked or untracked shipping. + +### Price + +**Update 2021-09-14: we are sold out!** + +Thanks to your love, we ran out of our stock of VIGIR. You can preorder now and we will start shipping our next batch of VIGIR from 2021-10-21 again. + +**The price of the VIGIR is 250 CHF**, including the LTE modem, +6 antennas and the power supply. + +The VIGIR ships with a [European style connector](https://en.wikipedia.org/wiki/Europlug) +power supply included. + +All prices exclude VAT and shipping costs. + +### Shipping costs + +Due to the size we can only ship 1 VIGIR in one package. + + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. + +* [VIGIR with priority tracked shipping to EU](https://datacenterlight.ch/product/vigir-eu/) + +* [VIGIR with shipping to Switzerland](https://datacenterlight.ch/product/vigir-ch/) + + +## More of it + +If you prefer a smaller device and you do not need wifi, we recommend to +checkout our [VIIRB](/u/products/viirb-ipv6-box/). + +If you prefer a smaller device and you do need wifi, we recommend to +checkout our [VIWIB](/u/products/viwib-wifi-ipv6-box/). + +--- +content1_image: vigir.jpg diff --git a/content/u/products/vigir/vigir.jpg b/content/u/products/vigir/vigir.jpg new file mode 100644 index 0000000..397b40e Binary files /dev/null and b/content/u/products/vigir/vigir.jpg differ diff --git a/content/u/products/viirb-ipv6-box/contents.lr b/content/u/products/viirb-ipv6-box/contents.lr new file mode 100644 index 0000000..ec24b9c --- /dev/null +++ b/content/u/products/viirb-ipv6-box/contents.lr @@ -0,0 +1,423 @@ +_discoverable: yes +--- +_hidden: no +--- +title: The VPN IPv6 IoT Router Box (VIIRB) +--- +subtitle: The VIIRB connects anything anywhere with IPv6. +--- +headline1: The VIIRB connects +--- +headline2: anything anywhere +--- +headline3: with IPv6 +--- +header_background_color: #119F21 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +image: /u/image/cards/viirb-hot.jpg +--- +content1_image: viirb-vertical-security.jpg +--- +content1_text: + +## Our mission + +We want to enable anyone, anyone with IPv6. It should be as simple as +"plug and play". We are very proud to announce that with the +**VPN IPv6 IoT Router Box** (VIIRB), we can now offer exactly this. + +## How it works + +The VIIRB is pre-configured with a Wireguard VPN. With this VPN you +will receive a /48 IPv6 prefix. The IPv6 connectivity is provided by +[Data Center Light](https://ungleich.ch/u/projects/data-center-light/). + +When you plug in the ethernet cable and power it on, it will do the +following: + +* Establish a VPN connection via IPv4 or IPv6 to Data Center Light +* Announce a pre-configured /64 network on the LAN + +By default the firewall is configured to allow outgoing connections +from LAN towards the VPN. Incoming ICMP6, SSH, HTTP and HTTPS are +open by default. + +## Fully Open + +The VIIRB is running stock [OpenWRT](https://openwrt.org/). We flash +the latest available version before shipping. SSH and http access to +the OpenWRT management is open. The password is randomly generated and +will be sent to you with the shipping confirmation. + +## VIIRB use cases + +So what can you do with the VIIRB? + +### 1. IPv6 on the go + +Going to a friend and the network does not have IPv6? Just bring your +VIIRB, plug it in and enjoy a fully enabled IPv6 network. + +### 2. IPv6 world wide reachable audio system + +You can install the [music player daemon](https://www.musicpd.org/) on +the VIIRB and allow remote control of the music from anywhere in the +world. You can either put your music locally on an SDXC card or you +can even mount your music collection or stream music to it. + +Just connect the VIIRB to your audio system, configure it and enjoy +remotely controlled music! + +### 3. A BGP router + +With +[bird2](https://openwrt.org/packages/pkgdata/bird2) +and +[quagga](https://openwrt.org/packages/pkgdata/quagga) available on +OpenWRT, you can use it directly for peering with other ASNs. + +In fact, if you let us know before ordering, we can even connect your +VIIRB to a VPN endpoint that allows peering with the real Internet. + +### 4. A hacking box + +Thi VIIRB contains a variety of additional features like PWM, GPIO, +A/D converter, D/A converter and so on. It can also plug in a small +camera, so you can turn it into an IPv6 enabled camera. The VIIRB is +so universal, easy and hackable that it's just fun to use it. + +Remote controlling your lights, your blinds, your doorbell - all +remotely via IPv6? You can do it with the VIIRB! + +## Tech details + +* Operating System: Linux (OpenWRT) +* Size: 28mm x 30mm x 30mm +* CPU: MT7628, 580 MHz, MIPS 24K +* Memory: 128MB, DDR2, 166MHz +* Storage: 16M NOR on board, support SDXC up to 2TB +* Wifi: 802.11n, 2T2R, speed up to 300Mbps. (**disabled by default**, + see below) +* Antenna: One U.FL slot, one on board antenna. +* Ethernet: 1 port, up to 100Mbps. +* USB: Support USB 2.0, up to 480MBit/s. +* USB debugging: there is a serial console on the micro USB port +* Audio: 3.5mm jack (in/out) +* Power supply: 3.6V ~ 5.5V, 500mA +* Power Consumption: 74mA wifi standby, 230mA wifi full speed, 5V input. + +The VIIRB is based on the [vocore2](https://vocore.io/v2u.html) with +an up-to-date firmware, pre-configured and +combined with the [IPv6VPN](https://ipv6vpn.ch). + +### Local throughput + +We measured throughput on a LAN, IPv6 based with iperf: + +``` +root@viirb1:~# iperf -c 2a0a:e5c0:13::42 -t 30 -V +------------------------------------------------------------ +Client connecting to 2a0a:e5c0:13::42, TCP port 5001 +TCP window size: 87.5 KByte (default) +------------------------------------------------------------ +[ 3] local 2a0a:e5c0:13:0:bad8:12ff:fe64:9d4d port 46452 connected with 2a0a:e5c0:13::42 port 5001 +[ ID] Interval Transfer Bandwidth +[ 3] 0.0-30.0 sec 332 MBytes 92.6 Mbits/sec +``` + +### Wireguard throughput + +``` +root@viirb88:/etc/config# iperf3 -t 30 -V -c 2a0a:e5c0:16:1::1 +iperf 3.7 +Linux viirb88 4.14.195 #0 Sun Sep 6 16:19:39 2020 mips +Control connection MSS 1348 +Time: Fri, 13 Nov 2020 13:53:10 UTC +Connecting to host 2a0a:e5c0:16:1::1, port 5201 + Cookie: qsx6vtbd5a5elhc6fkdt2n6t4mgbzjze4az4 + TCP MSS: 1348 (default) +[ 5] local 2a0a:e5c0:16:2::2 port 34376 connected to 2a0a:e5c0:16:1::1 port 5201 +Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 30 second test, tos +0 +[ ID] Interval Transfer Bitrate Retr Cwnd +[ 5] 0.00-1.00 sec 5.88 MBytes 49.2 Mbits/sec 0 247 KBytes +[ 5] 1.00-2.02 sec 6.17 MBytes 50.9 Mbits/sec 0 363 KBytes +[ 5] 2.02-3.00 sec 5.68 MBytes 48.5 Mbits/sec 0 506 KBytes +[ 5] 3.00-4.00 sec 6.06 MBytes 50.8 Mbits/sec 0 682 KBytes +[ 5] 4.00-5.01 sec 6.09 MBytes 50.7 Mbits/sec 0 837 KBytes +[ 5] 5.01-6.00 sec 5.99 MBytes 50.5 Mbits/sec 0 837 KBytes +[ 5] 6.00-7.04 sec 6.30 MBytes 50.9 Mbits/sec 0 886 KBytes +[ 5] 7.04-8.00 sec 6.09 MBytes 53.0 Mbits/sec 0 924 KBytes +[ 5] 8.00-9.04 sec 5.83 MBytes 47.1 Mbits/sec 1 744 KBytes +[ 5] 9.04-10.00 sec 6.32 MBytes 55.4 Mbits/sec 0 803 KBytes +[ 5] 10.00-11.01 sec 5.81 MBytes 48.3 Mbits/sec 0 881 KBytes +[ 5] 11.01-12.00 sec 6.60 MBytes 55.7 Mbits/sec 0 893 KBytes +[ 5] 12.00-13.01 sec 5.62 MBytes 47.0 Mbits/sec 0 893 KBytes +[ 5] 13.01-14.00 sec 6.19 MBytes 52.2 Mbits/sec 0 894 KBytes +[ 5] 14.00-15.01 sec 6.23 MBytes 52.0 Mbits/sec 0 950 KBytes +[ 5] 15.01-16.01 sec 6.01 MBytes 50.6 Mbits/sec 0 950 KBytes +[ 5] 16.01-17.00 sec 5.96 MBytes 50.3 Mbits/sec 0 973 KBytes +[ 5] 17.00-18.00 sec 6.30 MBytes 52.8 Mbits/sec 0 973 KBytes +[ 5] 18.00-19.06 sec 6.47 MBytes 51.4 Mbits/sec 0 973 KBytes +[ 5] 19.06-20.00 sec 5.92 MBytes 52.7 Mbits/sec 0 973 KBytes +[ 5] 20.00-21.01 sec 6.16 MBytes 51.3 Mbits/sec 0 973 KBytes +[ 5] 21.01-22.00 sec 6.01 MBytes 50.8 Mbits/sec 1 682 KBytes +[ 5] 22.00-23.00 sec 6.22 MBytes 52.1 Mbits/sec 0 723 KBytes +[ 5] 23.00-24.01 sec 6.21 MBytes 51.8 Mbits/sec 0 769 KBytes +[ 5] 24.01-25.00 sec 6.20 MBytes 52.1 Mbits/sec 0 799 KBytes +[ 5] 25.00-26.01 sec 6.01 MBytes 50.2 Mbits/sec 0 816 KBytes +[ 5] 26.01-27.01 sec 6.50 MBytes 54.6 Mbits/sec 0 821 KBytes +[ 5] 27.01-28.04 sec 6.09 MBytes 49.3 Mbits/sec 0 821 KBytes +[ 5] 28.04-29.03 sec 6.00 MBytes 51.1 Mbits/sec 0 827 KBytes +[ 5] 29.03-30.00 sec 6.28 MBytes 54.1 Mbits/sec 0 827 KBytes +- - - - - - - - - - - - - - - - - - - - - - - - - +Test Complete. Summary Results: +[ ID] Interval Transfer Bitrate Retr +[ 5] 0.00-30.00 sec 183 MBytes 51.2 Mbits/sec 2 sender +[ 5] 0.00-30.05 sec 183 MBytes 51.0 Mbits/sec receiver +CPU Utilization: local/sender 6.8% (0.2%u/6.6%s), remote/receiver 6.9% (1.6%u/5.3%s) +snd_tcp_congestion cubic +rcv_tcp_congestion cubic + +iperf Done. +``` + +### WiFi + +In our long term tests the WiFi of the VIIRB shows +reliability issues with clients that are not directly next to it. + +As the majority of VIIRB users we are in touch with did not use the +WiFi and our preference is on delivering stable systems, we have +turned the WiFi off by default. Effective since 2020-12-01. + +If you are looking for an IPv6 enabler with reliable WiFi, we +recommend to use the [VIWIB](/u/products/viwib-wifi-ipv6-box) instead. + + +## What is in the box + +When you order the VIIRB, you will receive one pre-configured +system. The box **does not** contain the micro usb cable or a charger, +because we think that most people already have this and we don't want +to contribute to tech waste. + +### IPv6VPN included + +A free subscription for 1 year is included. This way you can plug in +the VIIRB and just get started with IPv6. + +## VIIRB Add-Ons + +The VIIRB comes with a variety of possible add-ons that can turn it +into an even more versatile device. + +### Turning the VIIRB into an IPv6 camera + +You can turn the VIIRB into an IPv6 streaming camera with +a compatible USB-Webcam. For **25 CHF** you can add a tested, +Full HD (1920x1080) USB camera to your VIIRB order. + +### Turning the VIIRB into an IPv6 thermometer + +If you want to know how hot (or cold) it is, +you can use an USB temperature sensor to measure the temperature. +For **20 CHF** you can add a tested temperature sensor to your VIIRB +order. + +### Turning the VIIRB into an LTE/4G router + +Using an USB 4G Modem you can use the VIIRB to enable a network not +only with IPv6, but also with Internet connectivity in general. + +For **70 CHF** you can add a 4G modem to your VIIRB order. + +### Turning the VIIRB into a GPS tracker + +The VIIRB is small and universal. What if you could use it to track +things? Like your car, your bike, your boat? And check where your +things are using IPv6? + +You can add the USB GPS tracker add on for **25 CHF** as a single +device. + +### Multiple Add-Ons via USB Hub + +To connect more than one add-on to the VIIRB, you will need a +USB-Hub. For **25 CHF** you can add a verified, +4 Port USB hub to your VIIRB order. + + +### The VIIRB autonomous security system + +The VIIRB can be turned into an autonomous security system with the +following add-ons: + +* USB Hub (to support multiple add-ons) +* LTE/4G Router (Internet Uplink, excluding SIM card) +* GPS Tracker (To record where the VIIRB is) +* USB Camera (To stream what the VIIRB can see) + +The autonomous security system set can be added to your VIIRB order +for **145 CHF** (203 CHF including the VIIRB). + +## Ordering + + +### Price + +**Update 2021-09-14: we are sold out!** + +Thanks to your love, we ran out of our stock of VIIRB. You can preorder now and we will start shipping our next batch of VIIRB from 2021-10-21 again. + +**The price of the VIIRB is 58 CHF**. + +If you need a power supply, we can ship it with a +[European style connector](https://en.wikipedia.org/wiki/Europlug) +for 15 CHF. + +All prices excluding VAT and shipping costs. + + +### Shipping cost + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. You can order multiple VIIRBs within the same package. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland, Liechtenstein | 10 CHF | 14 CHF| +| Denmark, Finland, Sweden | 14 CHF | 24 CHF| +| Germany, Austria, France | 14 CHF | 24 CHF| +| Portugal, Italy, Spain | 14 CHF | 24 CHF| +| Latvia, The Netherlands, Iceland | 14 CHF | 24 CHF| +| Romania, Great Britain, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| Canada, US, India, Australia | 23 CHF | 29 CHF| + +You can order with a credit card via following links. Payment via wire transfer is also available, get in touch with our support with your shipping address. + +--- +offer1_title: 1 VIIRB to EU +--- +offer1_text: + +* Order 1 VIIRB to Austria, Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic, Latvia, Portugal +* Economy shipping without tracking +--- +offer1_link: https://datacenterlight.ch/product/viirb-eu/ +--- +offer2_title: 1 VIIRB to Switzerland, Liechtenstein +--- +offer2_text: + +* Order 1 VIIRB to Switzerland, Liechtenstein + +--- +offer2_link: https://datacenterlight.ch/product/viirb-ch/ +--- +offer3_title: 1 VIIRB to Australia, Canada, India, US +--- +offer3_text: + +* Order 1 VIIRB to Australia, Canada, India +* Economy shipping without tracking + +--- +offer3_link: https://datacenterlight.ch/product/viirb-us/ +--- +content2_text: + +## Order VIIRB multipack + +You can order VIIRB multipack and save the shipping cost. + +--- +offer4_title: 2 VIIRBs to EU +--- +offer4_text: + +* Order 2 VIIRBs to Austria, Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic, Latvia, Portugal +* Economy shipping without tracking +--- +offer4_link: https://datacenterlight.ch/product/viirb-2-eu/ +--- +offer5_title: 2 VIIRBs to Switzerland, Liechtenstein +--- +offer5_text: + +* Order 2 VIIRBs to Switzerland, Liechtenstein +--- +offer5_link: https://datacenterlight.ch/product/viirb-2-ch/ +--- +offer6_title: 2 VIIRBs to Australia, Canada, India, South Korea, US +--- +offer6_text: + +* Order 2 VIIRBs to Australia, Canada, India, South Korea, US +* Economy shipping without tracking + +--- +offer6_link: https://datacenterlight.ch/product/viirb-2-us/ +--- +content4_text: + +## Tracked shipping + +The following countries can get the VIIRB with priority shipping with tracking. If you want to receive VIIRB with tracked shipping, get in touch with our team with your shipping address. + + +* [Order to Austria, Denmark, Finland, France, Germany, Great Britain, Iceland, + The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic, Latvia, Portugal with shipping tracking: + 24 CHF](https://datacenterlight.ch/product/viirb-eu-tracked/) + * [Order 2 VIIRBs to Austria, Denmark, Finland, France, Germany, Great Britain, Iceland, The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic, Latvia, Portugal with shipping tracking](https://datacenterlight.ch/product/viirb-2-eu-tracked/) + +All prices exluding VAT. + + +## VIIRB in the Media + +* [Heise.de: Test & Beratung | IPv6-Würfelchen](https://www.heise.de/select/ct/2021/8/2104314534415582910) +* [APNIC blog: Connect to IPv6 everywhere with VIIRB](https://blog.apnic.net/2020/09/30/connect-to-ipv6-everywhere-with-viirb/) +* [Packetpushers podcast about the VIIRB](https://packetpushers.net/podcast/ipv6-buzz-058-tackling-ipv6-access-challenges/) +* [Blog post on + gnulinux.ch](https://gnulinux.ch/viirb-die-vpn-ipv6-iot-router-box) +* [VIIRB on Twitter](https://twitter.com/search?q=viirb) +* [Bookmark on tobru.ch](https://tobru.ch/newsletter-7/) + + +## More of it + +If you need more ports, Gigabit support, more RAM and more storage, +you can checkout the [Pro IPv6 Box](../pro-ipv6-box). + +If you like the VIIRB, but you would also like to have a reliable +WiFi, we recommend to checkout the [VIWIB](/u/products/viwib-wifi-ipv6-box/). + +You can also announce your own IPv6 space via the VIIRB. The only +requirement is that you have an ASN and an IPv6 prefix. Checkout the +[BGP Peering](/u/products/bgp-peering/) for more details. + +--- +content2_text: + +## How it works in detail + +The complete flow for how your computers get IPv6 in the LAN +is show in the following picture: + +![](/u/image/ipv6-with-the-viirb.png) + +So basically the VIIRB... + +* gets an IPv4 address in your LAN +* connects to the IPv6VPN.ch service +* Gets its /48 routed via Wireguard +* Announces (via Router Advertisements) IPv6 on the LAN +* Because of the announcement, all clients in the LAN assign themself + an IPv6 address + +--- diff --git a/content/u/products/viirb-ipv6-box/viirb-vertical-security.jpg b/content/u/products/viirb-ipv6-box/viirb-vertical-security.jpg new file mode 100644 index 0000000..155b3f1 Binary files /dev/null and b/content/u/products/viirb-ipv6-box/viirb-vertical-security.jpg differ diff --git a/content/u/products/virtual-machine-hosting/contents.lr b/content/u/products/virtual-machine-hosting/contents.lr index 7b6375a..a3e1305 100644 --- a/content/u/products/virtual-machine-hosting/contents.lr +++ b/content/u/products/virtual-machine-hosting/contents.lr @@ -18,7 +18,7 @@ header_text_color: text-light --- nav_classes: navbar-dark --- -image:/u/image/cards/zerocarbonvps.jpg +image:/u/image/cards/vps-bestseller.jpg --- feature1_title: Full virtualisation --- @@ -64,5 +64,5 @@ comes from the scarcity of IPv4 addresses: there is only a very limited pool of IPv4 addresses. Both offers include an optional /64 IPv6 network that you receive on -request and both offers can also be extended with HDD storage for 1.5 +request and both offers can also be extended with HDD storage for 2 CHF/month per 100 GB storage. diff --git a/content/u/products/viwib-wifi-ipv6-box/contents.lr b/content/u/products/viwib-wifi-ipv6-box/contents.lr new file mode 100644 index 0000000..c6e012a --- /dev/null +++ b/content/u/products/viwib-wifi-ipv6-box/contents.lr @@ -0,0 +1,198 @@ +_discoverable: yes +--- +_hidden: no +--- +title: VIWIB - The VPN IPv6 WiFi IoT Box +--- +subtitle: VIWIB brings you IPv6 and WiFi - everywhere. +--- +image: /u/image/cards/viwib.jpg +--- +headline1: VIWIB: +--- +headline2: VPN IPv6 +--- +headline3: WiFi IoT Box +--- +header_background_color: #EBBD07 +--- +header_text_color: text-light +--- +nav_classes: navbar-dark +--- +content1_text: + +## The VIWIB + +The VIWIB is the bigger sister of our +[VIIRB](/u/products/viirb-ipv6-box/). Compared to the VIIRB, VIWIB has 2 +Ethernet ports and a reliable WiFi. It is also slightly bigger in size +(58 x 58 x 25mm). However it does not weigh much - in fact, it +only weighs 40g! + +## VIWIB use cases + +The main use case of the VIWIB is the same as the VIIRB: to bring IPv6 +everywhere in the world. As the hardware differs slightly to the +VIIRB, we have some different use cases in mind for the VIWIB: + +### IPv6 only Wifi + +The VIWIB comes with a built-in WiFi network. The default SSID is +"IPv6 everywhere" and the default password is "iloveipv6". The +broadcasted WiFi is IPv6 only with DNS64 and NAT64 enabled. + +To show that IPv6 is fun, the default sub network id for the +wifi is "7ea", which reads similar to "tea". So if your VPN network +was 2001:db8:ace::/48, the wifi network would be 2001:db8:ace:7ea::/64. + +### IPv6-only LAN + +If you connect the LAN port to an unused network switch, the VIWIB +will create an IPv6-only network. It is very similar to the WiFi. + +To show that IPv6 is fun, the default subnetwork id for the LAN is +"cafe", which reads similar to ... you get point. + +### Dual stack LAN + +If you connect the LAN port to an existing network with IPv4 +connecvitity, the VIWIB will create a dual stack network. Whichever mode +you prefer, is up to you to decide! + +## How it works + +The VIWIB, like the VIIRB, uses the [IPv6VPN](/u/products/ipv6-vpn/) +to get IPv6 connectivity. The VIWIB is also 100% Open Source, and by +default the firewall is configured to allow outgoing connections from +LAN and WiFi towards the VPN. Incoming ICMP6, SSH, HTTP and HTTPS are +open by default, too. + +## Tech details + +* Operating System: Linux (OpenWRT) +* Size: 58 x 58 x 25mm +* Weight: 40g +* CPU: MTK7628NN @580Mhz SoC +* Memory: 128MB +* Storage: 16M Flash +* Wifi: 802.11 b/g/n +* Ethernet: 2 ports, up to 100Mbps. +* USB: USB 2.0 +* Power supply: 5V/1A Micro USB +* Power Consumption: <2.75W + +The VIWIB is based on the +[GL-MT300N-V2](https://www.gl-inet.com/products/gl-mt300n-v2/), +OpenWrt and is pre-configured with the [IPv6VPN](https://ipv6vpn.ch). + +### IPv6VPN included + +A free subscription for 1 year is included. This way you can plug in +the VIWIB and just get started with IPv6. + + +### Price + +**Update 2021-09-14: we are sold out!** + +Thanks to your love, we ran out of our stock of VIWIB. You can preorder now and we will start shipping our next batch of VIWIB from 2021-10-21 again. + +**The price of the VIWIB is 68 CHF**. + +If you need a power supply, we can ship it with a +[European style connector](https://en.wikipedia.org/wiki/Europlug) +for 15 CHF. + +All prices exclude VAT and shipping costs. + +### Shipping costs + +We ship world wide. If your country of residence is not in the list below, get in touch with our support and we will let you know the shipping cost. You can order multiple VIIRBs within the same package. + + +| Country | Economy (no tracking) | Priority (with tracking) | +|---------------------------------|--------------------------------|------------------------------| +| Switzerland, Liechtenstein | 10 CHF | 14 CHF| +| Denmark, Finland, Sweden | 14 CHF | 24 CHF| +| Germany, Austria, France | 14 CHF | 24 CHF| +| Portugal, Italy, Spain | 14 CHF | 24 CHF| +| Latvia, The Netherlands, Iceland | 14 CHF | 24 CHF| +| Romania, Great Britain, Czech Republic | 14 CHF | 24 CHF| +| South Korea | 16 CHF | 29 CHF| +| Canada, US, India, Australia | 23 CHF | 29 CHF| + +You can order with a credit card via following links. Payment via wire transfer is also available, get in touch with our support with your shipping address. + +## Ordering + +* [Order to Denmark, Finland, France, Germany, Great Britain, Iceland, + The Netherlands, + Romania, Spain, Sweden, Italy, Czech Republic: +14 CHF](https://datacenterlight.ch/product/viwib-eu/) + * [Order 2 VIWIBs to Denmark, Finland, France, Germany, Great + Britain, Iceland, The Netherlands, + Romania, Spain, Sweden, Italy, Czech Republic](https://datacenterlight.ch/product/viwib-2-eu/) +* [Order to Switzerland: +10 CHF](https://datacenterlight.ch/product/viwib-ch/) + * [Order 2 VIWIBs to Switzerland](https://datacenterlight.ch/product/viwib-2-ch/) +* [Order to Australia, Canada, India, US: +23 CHF](https://datacenterlight.ch/product/viwib-us/) + * [Order 2 VIWIBs to Australia, Canada, India, US](https://datacenterlight.ch/product/viwib-2-us/) + + +The following countries can get the VIWIB with priority shipping with tracking. If you want to receive VIIRB with tracked shipping, get in touch with our team with your shipping address. + +* [Order to Denmark, Finland, France, Germany, Great Britain, Iceland, + The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic with shipping tracking: + 24 CHF](https://datacenterlight.ch/product/viwib-eu-tracked/) + * [Order 2 VIIRBs to Denmark, Finland, France, Germany, Great Britain, Iceland, + The Netherlands, Romania, Spain, Sweden, Italy, Czech Republic with shipping tracking](https://datacenterlight.ch/product/viwib-2-eu-tracked/) + +## VIWIB Add-Ons + +All VIIRB add-ons are compatible with the VIWIB! So you can turn your +VIWIB into an IPv6 camera, an IPv6 thermometer, an IPv6 LTE/4G router, +into an IPv6 GPS tracker, use multiple add-ons or even turn +the VIWIB into a security system! + +### Turning the VIWIB into an IPv6 camera + +You can turn the VIWIB into an IPv6 streaming camera with a compatible USB-Webcam. For 25 CHF you can add a tested, HD (1280x720) USB camera to your VIWIB order. + +### Turning the VIWIB into an IPv6 thermometer + +If you want to know how hot (or cold) it is, you can use an USB temperature sensor to measure the temperature. For 20 CHF you can add a tested temperature sensor to your VIWIB order. + +### Turning the VIWIB into an LTE/4G router + +Using an USB 4G Modem you can use the VIWIB to enable a network not only with IPv6, but also with Internet connectivity in general. + +For 70 CHF you can add a 4G modem to your VIWIB order. + +### Turning the VIWIB into a GPS tracker + +The VIWIB is small and universal. What if you could use it to track things? Like your car, your bike, your boat? And check where your things are using IPv6? + +You can add the USB GPS tracker add on for 25 CHF as a single device. + +### Multiple Add-Ons via USB Hub + +To connect more than one add-on to the VIWIB, you will need a USB-Hub. For 25 CHF you can add a verified, 4 Port USB hub to your VIWIB order. + +### The VIWIB autonomous security system + +The VIWIB can be turned into an autonomous security system with the following add-ons: + +- USB Hub (to support multiple add-ons) +- LTE/4G Router (Internet Uplink, excluding SIM card) +- GPS Tracker (To record where the VIWIB is) +- USB Camera (To stream what the VIWIB can see) + +The autonomous security system set can be added to your VIWIB order for 145 CHF (213 CHF including the VIWIB). + +## More of it + +If you need more ports, Gigabit support, more RAM and more storage, +you can checkout our [Pro IPv6 Box](../pro-ipv6-box). + +If you prefer a smaller device and you do not need wifi, we recommend to +checkout our [VIIRB](/u/products/viirb-ipv6-box/). +--- +content1_image: /u/image/viwib-vertical.jpg diff --git a/content/u/products/zero-carbon-chat/contents.lr b/content/u/products/zero-carbon-chat/contents.lr index ab151c9..68c79e5 100644 --- a/content/u/products/zero-carbon-chat/contents.lr +++ b/content/u/products/zero-carbon-chat/contents.lr @@ -31,7 +31,7 @@ content1_text: ## What is Zero Carbon Chat? -Zero Carbon Chat is a secure and sustainable alternative to your Slack or Skype, Whatsapp. Our chat offers enhanced security and full control over your privacy, and it is hosted at a datacenter run by 100% renewable energy. By using Zero Carbon Chat instead of other environmentally unsustainable chats, you and your community will help our planet stay cooler while keeping your message private. +Zero Carbon Chat is a secure and sustainable alternative to your Slack or Whatsapp. Our chat offers enhanced security and full control over your privacy, and it is hosted at a datacenter run by 100% renewable energy. By using Zero Carbon Chat instead of other environmentally unsustainable chats, you and your community will help our planet stay cooler while keeping your message private. ## Whom is Zero Carbon Chat for? @@ -78,20 +78,16 @@ At Zero Carbon Chat you will not have * Chat data physically hosted at servers powered by fossil fuel or other unsustainable energy sources * Your privacy compromise from storing your data in a country where authorities have global access to your data -* Spam mails from us that use unnecessary bytes that cost all of us from our environment -* Cryptocurrency as payment option -* Unnecessary frills in our web interface which require more computing power and result in more carbon emission - --- content2_image: /u/image/carbonzero-chat.jpg --- -offer1_title: Light Chat 36 CHF/Month +offer1_title: Light Chat 40 CHF/Month --- offer1_text: -* Up to 50 users -* Fully scalable anytime (1.5 CHF/Month for 100 GB HDD) +* Suitable for up to 50 users +* Fully scalable anytime (2 CHF/Month for 100 GB HDD) * Application firewall included * [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) @@ -104,8 +100,8 @@ offer2_title: Community Chat 63 CHF/Month --- offer2_text: -* Up to 100 users -* Fully scalable anytime (1.5 CHF/Month for 100 GB HDD) +* Suitable for up to 100 users +* Fully scalable anytime (2 CHF/Month for 100 GB HDD) * Application firewall included * [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) @@ -118,8 +114,8 @@ offer3_title: Power Chat 157 CHF/Month --- offer3_text: -* Up to 1000 users -* Fully scalable anytime (1.5 CHF/Month for 100 GB HDD) +* Suitable for up to 1000 users +* Fully scalable anytime (2 CHF/Month for 100 GB HDD) * Application firewall included * [Initial setup fee 30 CHF](https://ungleich.ch/product/0carbonchat-setup/) @@ -130,9 +126,9 @@ offer3_link: https://ungleich.ch/product/0carbonchat-power/ --- headline1: zero carbon chat --- -headline2: team chat +headline2: hosted mattermost --- -headline3: made clean +headline3: with clean energy --- header_background_color: #4da553 --- diff --git a/content/u/products/zero-carbon-cloud/contents.lr b/content/u/products/zero-carbon-cloud/contents.lr index cbf3e1e..ffa4231 100644 --- a/content/u/products/zero-carbon-cloud/contents.lr +++ b/content/u/products/zero-carbon-cloud/contents.lr @@ -16,7 +16,7 @@ feature1_text: Stop storing your data in servers run by dirty energy, we use 100 --- feature2_title: Fully sustainable --- -feature2_text: New hardware is as bad as fast fashion for the environment. We opt for fully reusing hardware and buildings to extend the lifecycle of the technology. +feature2_text: We opt for fully reusing hardware and buildings to extend the lifecycle of the technology. --- feature3_title: Fully conscious --- @@ -48,12 +48,12 @@ You can access the storage easily from your desktop, mobile phone, tablet and of ## Zero Carbon Cloud Plans -You can start Zero Carbon Cloud with below plans. The cost is made of two parts, a one-time initial setup fee and the monthly plan you choose. Our team will get in touch with you as soon as we receive the order and will give you the access to the cloud in 1 business day. Growing your cloud after starting a plan is very easy and can be done anytime, 100 GB HDD is 1.5 CHF per month. +You can start Zero Carbon Cloud with below plans. The cost is made of two parts, a one-time initial setup fee and the monthly plan you choose. Our team will get in touch with you as soon as we receive the order and will give you the access to the cloud in 1 business day. Growing your cloud after starting a plan is very easy and can be done anytime, 100 GB HDD is 2 CHF per month. --- content1_image: /u/image/zerocarbon-yes.jpg --- -content2_text: +content4_text: ## Tech stack @@ -63,69 +63,111 @@ At Zero Carbon Cloud you will have * Fully scalable storage and backup * Your offsite backup for your own NAS * Unlimited bandwidth under fair use policy -* Our zero carbon emission cloud badge exposable on your website * Safe data storage protected by Swiss privacy laws * Monthly or yearly credit card payment option, or wire transfer payment option -* Discount for larger plans so you can be compensated more for the carbon emission you saved - -At Zero Carbon Cloud you will not have - -* Storage run by fossil fuel and other unsustainable energy sources -* Spam mails from us that use unnecessary bytes that cost all of us from our environment -* Cryptocurrency payment option -* Unnecessary frills in our web interface which again increase the -computing power and result in more carbon emission - --- -content2_image: /u/image/zerocarbon-no.jpg +content4_image: /u/image/zerocarbon-no.jpg --- -offer1_title: 100 GB @ 23CHF/month +offer1_title: Cloud S-100 GB @ 25CHF/month --- 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 +* 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/) Recommended for your private use or for a smaller project --- -offer1_link: https://ungleich.ch/product/0carboncloud-100GB/ +offer1_link: https://ungleich.ch/product/0carboncloud-s-100GB/ --- -offer2_title: 1 TB @ 36.5CHF/month +offer2_title: Cloud S-500 GB @ 33 CHF/month --- offer2_text: -* **Two free IPv6 VPNs** included for increased security +* **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 +* 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. + +--- +offer2_link: https://ungleich.ch/product/0carboncloud-s-500GB/ +--- +offer3_title: Cloud M-500 GB @ 44 CHF/month +--- +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 +* 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/) Recommended for small to medium organisations --- -offer2_link: https://ungleich.ch/product/0carboncloud-1TB/ +offer3_link: https://ungleich.ch/product/0carboncloud-m-500GB/ --- -offer3_title: 50 TB @ 540 CHF/month +offer4_title: Cloud M-5 TB @ 134 CHF/month --- -offer3_text: +offer4_text: -* **Ten 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 5-10 ppeople 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/) + +Recommended for small to medium organisations + +--- +offer4_link: https://ungleich.ch/product/0carboncloud-m-5TB/ +--- +offer5_title: Cloud L-1 TB @ 76 CHF/month +--- +offer5_text: + +* **One 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 +* 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/) -* **30% large scale discount** applied Recommended for medium to large organisations --- -offer3_link: https://ungleich.ch/product/0carboncloud-50TB/ +offer5_link: https://ungleich.ch/product/0carboncloud-L-1TB/ --- -headline1: don't offset, +offer6_title: Cloud L-10 TB @ 256 CHF/month --- -headline2: do zero carbon. +offer6_text: + +* **Three 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 +* 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/) + +Recommended for medium to large organisations + +--- +offer6_link: https://ungleich.ch/product/0carboncloud-L-10TB/ +--- +headline1: secure +--- +headline2: data storage --- headline3: zero carbon cloud --- diff --git a/content/u/products/zerocarbon-webhosting-with-ipv6/contents.lr b/content/u/products/zerocarbon-webhosting-with-ipv6/contents.lr index c72b18a..b287560 100644 --- a/content/u/products/zerocarbon-webhosting-with-ipv6/contents.lr +++ b/content/u/products/zerocarbon-webhosting-with-ipv6/contents.lr @@ -22,7 +22,7 @@ nav_classes: navbar-dark --- content1_text: -##Webhosting made clean +## Webhosting made clean Are you looking for a climate neutral, sustainable and future-proven static webhosting? Are you interested in serving a small website or @@ -38,7 +38,7 @@ content2_text: ## Custom Offers -Above specs don't match what you need? Get in touch with us and let us know what you need, we'll come back to you with a custom offer. Send us a mail to support@datacenterlight.ch or you can talk to us directly at [our chat.](https://chat.ungleich.ch) +Above specs don't match what you need? Get in touch with us and let us know what you need, we'll come back to you with a custom offer. Send us a mail to support@datacenterlight.ch or you can talk to us directly at [our chat.](https://chat.with.ungleich.ch) --- content2_image: /u/image/penguin-webhosting.jpg --- @@ -67,29 +67,29 @@ reuse hardware, only do passive cooling and are directly plugged into a hydroelectric power plant. --- -offer1_title: Webhosting-S 9 CHF/Month +offer1_title: Webhosting-S 22.5 CHF/Month --- offer1_text: -* 100 GB space -* SFTP access -* IPv6 and legacy IP reachable -* Data storage replicated 3 times -* [10 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/) -* Suitable for starting - ---- -offer1_link: https://ungleich.ch/product/0carbonwebhosting-s/ ---- -offer2_title: Webhosting-M 22.5 CHF/Month ---- -offer2_text: - * 1000 GB space * SFTP access * IPv6 and legacy IP reachable * Data storage replicated 3 times -* No Setup fee +* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/) +* Suitable for bigger websites + +--- +offer1_link: https://ungleich.ch/product/0carbonwebhosting-s/ +--- +offer2_title: Webhosting-M 82.5 CHF/Month +--- +offer2_text: + +* 5000 GB space +* SFTP access +* IPv6 and legacy IP reachable +* Data storage replicated 3 times +* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/) * Suitable for most websites --- @@ -103,7 +103,7 @@ offer3_text: * SFTP access * IPv6 and legacy IP reachable * Data storage replicated 3 times -* No Setup fee +* [30 CHF Setup fee](https://ungleich.ch/product/0carbonwebhosting-setup/) * Suitable for websites publishing big data --- diff --git a/content/u/projects/1000eyes/contents.lr b/content/u/projects/1000eyes/contents.lr new file mode 100644 index 0000000..7b726e3 --- /dev/null +++ b/content/u/projects/1000eyes/contents.lr @@ -0,0 +1,128 @@ +title: The 1000 eyes project +--- +subtitle: Let's connect back - digitally +--- +_hidden: yes +--- +_discoverable: no +--- +description1: + +## What is the 1000 eyes project? + +2020 has been a difficult year for everyone. Lockdowns, sickness, +limitations of movement, being unable to see friends and family. + +2020 might be the year that we talk about for decades, probably to our +children. + +In these times, when we need to social distance to keep others safe, +we can feel isolated, locked in - wanting to go out and meet other +people. + +With the 1000eyes project we aim to bring people back together. Safely +and everywhere in the world. + +## How does the 1000 eyes project work? + +Every **eye** allows you to see one spot in the world. An eye is an +IPv6 enabled camera that is world wide reachable (*). With an eye, you +can view parts of the world. Live and unedited. + +There are two options to choose from: Option (A) an eye at your place that you +operate. Or (B) an eye that we operate for you. + +### Option (A): An eye for you and your place + +### Option (B): An eye operated by ungleich + +## How do I connect the eye? + +You can either connect the eye via a network cable to your router or +you can connect it via WiFi. + +## Meet, talk and exchange ideas + +So what if you see a cool eye? Who can you talk to it about? Where can +you announce a trip that you do with your eye? + +For this we already created an open exchange platform on the [Open +Chat](/u/projects/open-chat/): simply register at the Open Chat +and then join **1000eyes:ungleich.ch**. + +## Financial Goals + +### Initial Goal: producing first batch of 100 eyes - 7520 CHF + +Let's create the first 100 eyes together. We will setup a website that +lists all available eyes and allows you to select an individual eye +for viewing. + +### Stretch Goal #1: 20'000 CHF + +If we are able to produce a bigger amount, we will be able to add +a battery and solar panel option to allow your eye to function without +external power source for some time. Our current tested option +includes a 30000mAh battery and a 1.65W solar panel. The estimated +price for this add-on is 75 CHF (the exact price will be communicated +once we passed this stretch goal). + +### Stretch Goal #3: 50'000 CHF + +This is roughly 500 eyes distributed in the world. Reaching this goal +will allow us to add a 4G/LTE option, allowing your eye to function +even without an Ethernet cable and without WiFi. We are currently +evaluating a partnership that will even allow us to distribute it with +SIM cards in Switzerland. Estimated price for the 4G/LTE extension is +75 CHF (the exact price will be communicated once we passed this stretch goal). + +### Stretch Goal 3: 100'000 CHF + +If we reach this goal we will add IPv4 proxy support for every eye - +that means every eye will also be accessible from the IPv4 Internet. + +Additionally we plan to add more sophisticated filtering and creating +your own collection of eyes on the website - so that you can show your +selection of eyes to your friends and family. + +## Tech details + +The eyes are based on tested and running on ungleich verified +hardware. +All eyes are +running the Open Source operating system +[OpenWRT](https://openwrt.org/). The camera is a HD (1280x720) +resolution. The eye **does not store** + +### The hardware + +The eye is based on a MediaTek MT7628AN with +580Mhz, 8 MB Flash and 64 MB RAM. The underlying hardware platform is +a TP-Link TL-WR902AC v3. It has dual band WiFi chip that supports +2.4 Ghz (b/g/n) and 5 Ghz (a/n/ac) networks. The Ethernet port is a +100 Mbit/s port. + +### IPv6 Connectivity + +All eyes are bringing their own IPv6 connectivity. So you can connect +your eye to any IPv4 or IPv6 network and the eye will use the +[IPv6VPN.ch](https://ipv6vpn.ch) to get its own IPv6 address. + +### Fully Open Source + +Not only is the operating system fully Open Source, also the process +to create the eyes and to configure is openly available. Because the +eyes are using OpenWRT, you are free to reconfigure the eye to your +need. + +### Wireguard included + +The eyes use the [Wireguard](https://www.wireguard.com/) protocol to +establish the VPN. If you are reconfiguring or resetting the eye, +ensure that you make a backup of the wireguard private key. + +## The footprint / small print + +(*) The eyes are only reachable via IPv6. If we reach the If you do not have an IPv6 +connection, you can get IPv6 connectivity from the +[IPv6VPN.ch](https://ipv6vpn.ch). diff --git a/content/u/projects/cdist/contents.lr b/content/u/projects/cdist/contents.lr index 093fa47..85cc8c3 100644 --- a/content/u/projects/cdist/contents.lr +++ b/content/u/projects/cdist/contents.lr @@ -8,7 +8,7 @@ any host that has a ssh server running. --- image: /u/image/cards/cdist.jpg --- -content: +description1: If you are like us, you like to run infrastructures and you like to have things open and simple. For this reason we created cdist, the diff --git a/content/u/projects/data-center-light/contents.lr b/content/u/projects/data-center-light/contents.lr index 4a52a93..316a747 100644 --- a/content/u/projects/data-center-light/contents.lr +++ b/content/u/projects/data-center-light/contents.lr @@ -4,7 +4,7 @@ subtitle: A clean and sustainable data center --- image: /u/image/cards/datacenterlight.jpg --- -content: +description1: ## Introduction @@ -104,7 +104,7 @@ In the Data Center Light we offer * [Virtual Machine Hosting](/u/products/virtual-machine-hosting) * [IPv6 only Virtual Machine Hosting](/u/products/ipv6-only-hosting) * [Data Storage](/u/products/data-storage/) -* Colocation +* [Colocation](/u/products/colocation/) Our objective is to enable people world wide and locally. From easier working to giving safety to being able to store your data sustainable. diff --git a/content/u/projects/digital-chalet/contents.lr b/content/u/projects/digital-chalet/contents.lr index c4459a5..8da7c61 100644 --- a/content/u/projects/digital-chalet/contents.lr +++ b/content/u/projects/digital-chalet/contents.lr @@ -4,7 +4,7 @@ subtitle: The start of Digital Glarus! --- image: /u/image/cards/digitalchalet-schwanden.jpg --- -content: +description1: ## Introduction diff --git a/content/u/projects/digital-glarus/contents.lr b/content/u/projects/digital-glarus/contents.lr index 90d3107..5f59805 100644 --- a/content/u/projects/digital-glarus/contents.lr +++ b/content/u/projects/digital-glarus/contents.lr @@ -4,7 +4,7 @@ image: /u/image/cards/digitalglarus.png --- subtitle: Using digitalisation for the good --- -content: +content1_text: ## Introduction @@ -35,15 +35,17 @@ meetups](https://www.meetup.com/Digital-Glarus-Business-Technology/) with technical and business topics. Due to the Digital Chalet getting crowded, we opened a new location -in 2019: the [Hacking Hotel](/u/projects/hacking-hotel). We plan to -turn the Hacking Hotel into a school and will offer first courses in +in 2019: the [Hacking Villa](/u/projects/hacking-villa). We plan to +turn the Hacking Villa into a school and will offer first courses in 2020. ## How you can participate If you are interested in joining us, you can contact us by mail (info -at digitalglarus.ch), [chat](https://chat.ungleich.ch) or even by +at digitalglarus.ch), [chat](https://chat.with.ungleich.ch) or even by phone (+41 55 505 62 66). It is possible to visit us for a day or two, or like many have, to stay longer and even stay with us permanently. +--- +content1_image: /u/image/diesbach_outside_small.jpg diff --git a/content/u/projects/digitale-bildung/contents.lr b/content/u/projects/digitale-bildung/contents.lr index aea789a..f24da37 100644 --- a/content/u/projects/digitale-bildung/contents.lr +++ b/content/u/projects/digitale-bildung/contents.lr @@ -8,7 +8,7 @@ Digital Chalet Schwanden and help each other in learning IT. --- image: /u/image/cards/digitalebildungungleich.jpg --- -content: +description1: Being one of the leading IT companies in [Digital Glarus](../digital-glarus/) comes with responsibility. For us it is @@ -19,7 +19,7 @@ For this reason we support the local club "Digital Bildung ungleich", which allows people to learn one evening per week. The meeting happens either in the [Digital Chalet](../digital-chalet/) -or in the [Hacking Hotel](../hacking-hotel/). +or in the [Hacking Villa](../hacking-villa/). You can read more about it in the [Digital Bildung blog diff --git a/content/u/projects/education/contents.lr b/content/u/projects/education/contents.lr new file mode 100644 index 0000000..1c7988a --- /dev/null +++ b/content/u/projects/education/contents.lr @@ -0,0 +1,54 @@ +title: Education +--- +subtitle: +Education is the key to digital sustainability + +--- +image: /u/image/cards/education.jpg +--- +description1: + +## Education by ungleich + +Here at ungleich we are facing a lot of technogies in and out every +day. From Linux to IPv6, from Open Source to LoRaWAN, from +virtualisation to IoT - modern technogie stacks are our home. + +We want to pass the knowledge that we acquire at ungleich to enable +you for your next project. + +The following are opportunities to learn with our ungleich team: + +## 1. Django Introduction Course (From 2020-07-27 to 2020-07-31) + +This is a great course for getting to know +[Django, web framework for perfectionists with +deadlines](https://www.djangoproject.com/). + +We are teaching the principles of Django and best practices. This +course is held in the [Hacking Villa](/u/projects/hacking-villa). +The course fee is 1'200 CHF. + +This is an introduction course with teaching hours from 1000-1300. + +Requirements: one laptop with Linux or Mac OS installed. A course +laptop can be rented for 100 CHF. + +For participation send a mail to django@ungleich.ch. + +**Limited to a maximum of 4 participants due to COVID-19 measurements.** + +## 2. ungleich learning circle + +Every Monday, Wednesday and Friday at 1400 CEST (2100 KST) +we meet virtually in the ungleich learning circle. Our main meeting +point is the +[matrix room #ungleich-learning-circle:ungleich.ch](https://chat.with.ungleich.ch). + +Topics include Python, IPv6, Django, Shell script and more. + +Mode of operation is: + +* Meeting and short introduction (1400 CEST/2100 KST) +* Working with the other participants until 1700 CEST/2400 KST +* Short review and presentations diff --git a/content/u/projects/hack4glarus/contents.lr b/content/u/projects/hack4glarus/contents.lr index b4555b8..e2d8eae 100644 --- a/content/u/projects/hack4glarus/contents.lr +++ b/content/u/projects/hack4glarus/contents.lr @@ -4,7 +4,7 @@ subtitle: Hack4Glarus is the first hackathon of Glarus. --- image: /u/image/cards/hack4glarus.png --- -content: +description1: ##The Hackathon of Glarus diff --git a/content/u/projects/hacking-hotel/contents.lr b/content/u/projects/hacking-villa/contents.lr similarity index 64% rename from content/u/projects/hacking-hotel/contents.lr rename to content/u/projects/hacking-villa/contents.lr index a64bb9b..b722e62 100644 --- a/content/u/projects/hacking-hotel/contents.lr +++ b/content/u/projects/hacking-villa/contents.lr @@ -1,47 +1,49 @@ -title: Hacking Hotel Diesbach +title: Hacking Villa Diesbach --- subtitle: A space for creative minds in the heart of Switzerland --- -image: /u/image/cards/hackinghotel.jpg +image: /u/image/cards/hackingvilla.jpg --- -content: +content1_text: ## TL;DR -The hacking hotel is an 1874 built hotel in Diesbach that welcomes +The Hacking Villa was built in 1874. It is located in Diesbach and +welcomes writers, designers, architects, geeks, hackers from all over the world. If you want to visit or stay with us, just get in touch with us -at **hackinghotel at ungleich.ch**. +at **hackingvilla at ungleich.ch**. -## Why a hacking hotel? +## A Hacking Villa? We are located in the heart of the pretty mountain valley [Glarus](https://en.wikipedia.org/wiki/Glarus) and we love our surrounding and the way of living here. We want to share this -spirit with you and this is why we opened up this hotel. -The hacking hotel is part of the [Digital +spirit with you and this is why we opened up this villa to the public. +The hacking villa is part of the [Digital Glarus](/u/projects/digital-glarus) project. ## What is there? -The Hacking Hotel has 13 rooms in total with 9 rooms open for +The Hacking Villa has 13 rooms in total with 9 rooms open for staying. It is located next to a pretty waterfall, a cross-country skiing area, some horses and a lot of cows. And more importantly: a direct 10 GBit/s network connection to the -next Data Center, the Data Center Light. +next Data Center, the [Data Center Light](/u/projects/data-center-light). You can have a sneak preview of how it looks inside -on the [Hacking and Living in Hotel Diesbach page](https://hack.digitalglarus.ch/hacking-and-living-in-hotel-diesbach.html). +on the [Hacking and Living in Villa Diesbach page](https://hack.digitalglarus.ch/hacking-and-living-in-hotel-diesbach.html). -## What to do in the hacking hotel? +## What to do in the Hacking Villa? We are here to enjoy our life while we work the way we like to work. However, you are free to do what you like - for instance: * enjoy the fast Internet * have a walk in the valley +* [learn in professional courses](/u/projects/education) * hike up in the nearby mountains * learn horse riding * cook together @@ -55,3 +57,16 @@ train to the nearby station. Checkout the [SBB page](https://www.sbb.ch/de/kaufen/pages/fahrplan/fahrplan.xhtml?von=Zurich&nach=Diesbach-Betschwanden) for the next train. + +The address is: + +``` +Hacking Villa +Hauptstrasse 28 +8777 Diesbach +Switzerland +``` + +--- +content1_image: hacking-villa-diesbach.jpg +--- diff --git a/content/u/projects/hacking-villa/hacking-villa-diesbach.jpg b/content/u/projects/hacking-villa/hacking-villa-diesbach.jpg new file mode 100644 index 0000000..787054c Binary files /dev/null and b/content/u/projects/hacking-villa/hacking-villa-diesbach.jpg differ diff --git a/content/u/projects/ipv6-chat/contents.lr b/content/u/projects/ipv6-chat/contents.lr index 8356518..b15a0c0 100644 --- a/content/u/projects/ipv6-chat/contents.lr +++ b/content/u/projects/ipv6-chat/contents.lr @@ -4,7 +4,7 @@ subtitle: Let's talk about IPv6 --- image: https://ungleich.ch/media/filer_public/c8/86/c8867297-4573-464b-ae60-0f38117626ad/ipv6chat.jpg --- -content: +description1: ## IPv6 chat @@ -14,10 +14,17 @@ answers to common IPv6 questions. We have created a chat room dedicated to IPv6 so that anyone can exchange their ideas about IPv6. -You can join the chat via +## How to join the chat -* [IPv6.chat](https://IPv6.chat) (via Mattermost) -* #ipv6:ungleich.ch (via Matrix) +If you already have a matrix account, you can join +**[#ipv6:ungleich.ch](https://matrix.to/#/#ipv6:ungleich.ch)** directly. + + +If you don't have a matrix account, you find the instructions +on [how to create a +matrix account on our Open Chat page](/u/projects/open-chat). + +## Other chat rooms Note: there is also an #ipv6 channel on Freenode. We are currently trying to figure out whether we can bridge IPv6.chat into the IRC room diff --git a/content/u/projects/ipv6-education/contents.lr b/content/u/projects/ipv6-education/contents.lr new file mode 100644 index 0000000..5f56e97 --- /dev/null +++ b/content/u/projects/ipv6-education/contents.lr @@ -0,0 +1,138 @@ +title: IPv6 Education +--- +subtitle: +Supporting and enhancing network education with a focus on IPv6 + +--- +image: /u/image/cards/ipv6education.jpg +--- +description1: + +## Objective + +IPv6 has become the de-facto network standard in many +environments. However our experience with network courses +at universities is that IPv6 is not featured at all or only is only +covered to a small extent. + +With our IPv6 education offer we would like to assist professors, +tutors and lecturers to support IPv6 in their courses. + +## Our knowledge + +We have not only given many private IPv6 courses at ungleich, but our +staff has graduated from [ETH Zurich](https://ethz.ch/) +and the university of applied sciences +[ZHAW](https://www.zhaw.ch). We have experience in the layout and +requirements of courses taught at bachelor and master level. + +Our CEO Nico Schottelius has given speeches at various conferences +include the [RIPE 79](https://ripe79.ripe.net/archives/video/165/) and +[multiple +times](https://www.ipv6.org.uk/2019/09/06/ipv6-council-annual-meeting-2019/) +at the [UK IPv6 +Council](https://www.ipv6.org.uk/2019/08/08/cloud-and-ipv6-workshop/). + +We are providing [IPv6 Only Hosting](https://ipv6onlyhosting.com/) and +maintain the [IPv6 first data center Data Center +Light](https://datacenterlight.ch/). + +And we teach courses at the [Hacking Villa Diesbach](/u/projects/hacking-villa/). + +![](/u/image/ipv6-education.png) + + +## Offer 1: IPv6 lecture counselling + +Knowing how courses look like and what professors, tutors and students +expect, we can advise on how to introduce IPv6 into course +material. We offer onsite and remote counselling, providing best +practices. We usually base our recommendations on your current course +material to simply update it for IPv6 without major changes to the +course itself. + +Typical counselling session: + +* Initial meeting to define objectives (1-2h) +* Review current course material (2-5h) +* Update of the current material by ungleich (2-5h) +* Discussion of changes and handing over new material (2-3h) + +The hourly rates for educational counselling are available at a +reduced rate of 140 CHF/h. + +## Offer 2: IPv6 course design + +If you are interested in adding a brand new network course focussed on +IPv6, we can aid you in creating the course. The setting is similar to +the IPv6 lecture counselling, however we will design and develop the +course from scratch including your requirements. + +Typical course design session: + +* Initial meeting to define objectives (1-2h) +* Development of the first draft (2-3h) +* Short review session (< 1h) +* Development of the course (5-10h) +* Final review session (2-3h) +* Final adjustments (2-5h) +* Final handover session (2-3h) + +All material is tracked in version control during development, so it +is easy for faculty to review the material in progress. This mode +avoids pitfals like inappropriate material development. + +## Offer 3: IPv6 faculty course + +If you are interested in educating your faculty to be able to teach +IPv6 courses, we provide you with a tailor made IPv6 course. + +Typical IPv6 faculty course session: + +* Initial meeting to define objectives (1-2h) +* Adjustments of our IPv6 course for your use case (1-2h) +* The course (varying - usually 2-3 days of teaching) + + +## Offer 4: IPv6 VPN with EDU discount + +In some labs and universities the Internet provider (ISP) or +the central IT department cannot provide IPv6 support. To help with +this issue, we offer the [IPv6 VPN](/u/products/ipv6-vpn/) with a 10% +education discount. Please use your department / university email for +contacting us to be eligible for the education discount. + +The IPv6 VPN provides you with one /48 network. +Inquire the support, if require bigger networks, for instance if you +want to equip the complete university with IPv6 connectivity. + +* Regular price: 120 CHF/year +* Education price: 108 CHF/year + +## Offer 5: IPv6 Pro Router: PIB + +The [PIB](/u/products/pro-ipv6-box/) is a versatile, professional +router that includes the above IPv6 VPN for one year for free. It is +suitable for dividing networks and isolating IPv6 +traffic. Specifically useful for student projects or labs. + +* Regular price: 300 CHF +* Education price: 270 CHF + +It can be setup by our staff on-site (hourly rates apply). + +![](/u/image/pro-ipv6-box-2.jpg) + +## Offer 6: IPv6 Mini Router: VIIRB + +The [VIIRB](/u/products/viirb-ipv6-box/) is not only the world's +smallest IPv6 router, but also a very handy device if you want to add +IPv6 to any IPv4 network without a hassle. The VIIRB can also be used +to enable IPv6 at the student homes: simple give your students a VIIRB +and your students can work on IPv6 related projects at home. +It also includes the first IPv6 VPN for free. + +* Regular price: 58 CHF +* Education price (for orders of 10 or more VIIRBs): 53 CHF + +![](/u/image/viirb-ipv6-box.png) diff --git a/content/u/projects/ipv6-for-you/contents.lr b/content/u/projects/ipv6-for-you/contents.lr new file mode 100644 index 0000000..b178042 --- /dev/null +++ b/content/u/projects/ipv6-for-you/contents.lr @@ -0,0 +1,115 @@ +title: IPv6 for you +--- +subtitle: IPv6 consultancy by ungleich +--- +image: /u/image/cards/ipv6consultancy.jpg +--- +description1: + +## TL;DR + +If you need to have IPv6 and don't have the fitting resources, we can +help you to get your network and services IPv6 ready. + +## Introduction + +We have been in the IPv6 world for a while and seen companies +struggling with their first or intermediate steps towards +IPv6. + +Many times we have witnessed that customers and users request IPv6 +from their service providers and the answers were + +* We have it on a plan +* We do not have it on the plan at all + +We understand that adding a new technology stack to your +infrastructure is not always easy, especially if you don't have the +resources in-house. + +## IPv6 consultancy from ungleich + +For this reason we offer our knowledge with running data centers and +IPv6 only networks in terms on consultancy for you. + +Below you find a list of typical services we offer. + +## Services + +### Network, Application and Requirement Analysis + +One of the first steps towards IPv6 enabled networks is to find out +what the needs are and how the current situation looks like. Whether +it is implementing IPv6 in your network or in the software stack, a +thorough analysis can save resources at a later stage. + +### Cost comparison + +Going IPv6 cannot only help your organisation to stay up-to-date, but +it can also reduce your total cost of ownership (TCO). We help you +analysing the current cost and create a comparison of the resources +required with IPv6. + +Often running **IPv6 only networks** can save resources, because the +degree of complexity is reduced and less IPv4 addresses are +required. + +In fact, many networks can operate completely without IPv4, only +requiring an NAT64 service. + +### Implementation and migration plans + +Once you know where youw want to go it is important to keep an eye on +the migration paths. Are there downtimes necessary? When should they +happen? Which equipment needs to be replaced or updated? + +Each organisation has different needs and each organisation should +take the path that is best in their situation. + +We help you finding the best path in your situation. + +### Network setup + +Apart from preparing the migration towards IPv6, we can also aid or +even fully implement the IPv6 migration for you. + +### IPv6 education + +Our [education](/u/projects/education/) program features a variety of +topics including IPv6 courses. If your or your staff is interested in +knowing how to setup, design and maintain IPv6 services and +infrastructures, we can provide courses in Glarus, Switzerland or +on-site. + +### IPv6 Security Analysis + +IPv6, like IPv4, needs to be deployed in a secure way. We help you +finding out which security policies are adequate for your +situation. Together with you we create a policy and, if you wish, also +detailed firewall rules. + +### Network maintenance + +If your daily business is not running networks, we can also manage +your networks. Whether it is an office network, a data center network +or a large scale university network - we can aid in choosing the right +components maintaining your infrastructure so that you can concentrate +on your daily business. + + +### IPv6 Progress Communication + +If you are implementing IPv6 based on customer or user requests, +communication with your customers is a key element. Providing more +details than just "IPv6 is planned" gives your customers confidence in +the process and can help to keep your users, even if IPv6 cannot be +implemented right away. + +In our experience customers are more likely to stay with your product, +when you can update about IPv6 progress in a regular manner. + + +## Request a quote + +If you are interested in IPv6 consultancy, you can [contact](/contact) +us and reach out for a quote. diff --git a/content/u/projects/ipv6-torrent-tracker/contents.lr b/content/u/projects/ipv6-torrent-tracker/contents.lr index 287f03f..4234150 100644 --- a/content/u/projects/ipv6-torrent-tracker/contents.lr +++ b/content/u/projects/ipv6-torrent-tracker/contents.lr @@ -4,7 +4,7 @@ subtitle: Make your Open Source torrent IPv6 reachable --- image:/u/image/cards/ipv6-torrent-tracker.jpg --- -content: +description1: ## Background diff --git a/content/u/projects/ipv6ula/contents.lr b/content/u/projects/ipv6ula/contents.lr new file mode 100644 index 0000000..a071def --- /dev/null +++ b/content/u/projects/ipv6ula/contents.lr @@ -0,0 +1,38 @@ +title: The IPv6 ULA registry +--- +subtitle: We revived the sixxs ULA registry! +--- +image: /u/image/cards/ula-registry.jpg +--- +description1: + +## Introduction + +The IPv6 ULA registry is based on Django, Bootstrap 4 +and uses LDAP authentication. It was written and designed for +powering [The IPv6 ULA registry](https://ula.ungleich.ch). + +ipv6ula is FOSS and its source code can be found on +[code.ungleich.ch](https://code.ungleich.ch/ungleich-public/ipv6ula/). +You can review the development from the +[Hack4Glarus](https://hack4glarus.ch) +in the [redmine ticket](https://redmine.ungleich.ch/issues/8673). + +## How to install + +* git clone above repository +* Setup a local postgresql database named "ipv6ula" +* Copy ipv6ula/sample_settings.py to ipv6ula/local_settings.py +* Modify settings as needed +* Install requirements using `pip install -r requirements.txt` + +## How to import the old sixxs database + +``` +python manage.py import_sixxs_prefixes +``` + +## How to run + +It is a standard Django app, so you can use uwsgi +or the included server for testing: `python manage.py runserver`. diff --git a/content/u/projects/jobs-hacks-bounties/contents.lr b/content/u/projects/jobs-hacks-bounties/contents.lr new file mode 100644 index 0000000..43835b8 --- /dev/null +++ b/content/u/projects/jobs-hacks-bounties/contents.lr @@ -0,0 +1,151 @@ +title: Jobs, Hacks and Bounties +--- +subtitle: Doing stuff with or at ungleich +--- +image: /u/image/cards/jobs.jpg +--- +description1: + +## Introduction + +You might know, ungleich means "not equal" or "different" in +English. So working for, with or at ungleich is usually a bit +different from working for other companies. We practice a high degree of +remote working and our team consists of a lot of international +members from a variety of cultures. + +So instead of the classical "job openings", we have three different +sections of how to get started with ungleich. + +## Hacks + +Hacks are easy to do, easy to learn tasks that help you understand +the way we work and the technology stacks we use. These are easy +things to do at home or anywhere you are. You can join the +[open chat room "Hacking & Learning"](/u/projects/open-chat/) for +asking questions. + +### Hack 1: Get IPv6 + +For most stuff we do, you will need IPv6. Head over to the +[IPv6 VPN](/u/products/ipv6-vpn/) to get yourself started. Note: +the VPN is for free if you have a VM with us. + +### Hack 2: Deploy ubookmark + +[ubookmark](/u/projects/ubookmark/) is a simple Django app. +Deploy it on your local machine (it +is IPv6 reachable, isn't it?) and send us a shout when it's reachable +using HTTPS. If you need a domain name for your letsencrypt +certificate, checkout [has-a.name](https://has-a.name). + +### Hack 3: IPv6 cat + +Create a micro django project that does the following: + +* If you are visiting via IPv4, it will show a static page saying "Sorry, only reachable by IPv6" +* If you are visiting it via IPv6, it will show a friendly cat picture +* No other features required, design up to you + + +## Jobs + +Currently there are no permanent job openings. + +## Bounties + +At ungleich we heavily depend on and contribute [Open Source +Software](/u/projects/opensource). Sometimes (often?) we have a lot of +ideas we would like to implement in Open Source Software, but daily +tasks prevent us from implementing them. + +We at ungleich have created a bounty program that offers +money for fixing/hacking Open Source Software. + + +### Bounty 1: eboard updates + +[eboard](https://www.bergo.eng.br/eboard/) is a classical FICS client +for playing chess on the Internet. However, it did not have some +updates for some time, so we offer the following bounties: + +* Add eboard to Alpine Linux packages (__30 CHF__) + * Bounty paid when it's in __apk add__ able from either edge/testing/community +* Add alsa support to eboard upstream (__50 CHF__) + * Enable beeping on move of the opponent without the OSS emulation + * Bounty successful when a new eboard release was made with it +* Add IPv6 support to eboard (__50 CHF__) + * FICS is basically using a telnet protocol + * Eboard does not work in NAT64 scenarios, because it does not have IPv6 support +** Bounty successful when a new eboard release was made with it + +### Bounty 2: Alpine Linux installable in IPv6 only networks + +Alpine Linux currently does not start rdnssd in the installer nor does +it have the ndisc package installed. + +The installer in particular needs to assign itself IPv6 addresses +(SLAAC should already work), needs to accept DNS servers and search +suffix from router advertisements (requires rdnssd running) and +wget/curl need to have IPv6 support to retrieve files via IPv6. + +Present a short video that successfully shows the updated upstream +installer working in an IPv6 only network to install Alpine +Linux. Bounty is __100 CHF__. + +### Bounty 3: Enable IPv6 only in the Linux kernel + +As you might remember, we created +[a challenge to disable +IPv4](https://ungleich.ch/en-us/cms/blog/2019/01/09/die-ipv4-die/) in +your operating system. It turns out that as of 2020-05-01, the only +operating system that truly can turn off IPv4, is FreeBSD. + +If you are into hacking the Linux kernel, we offer a __300 CHF__ +bounty to disable IPv4 in the Linux kernel. The bounty includes: + +* Create a patch against Linux mainline that completely disables IPv4 +* Ensure that make menuconfig/config can turn IPv4 off +* Preparing the patch so that it can be included +* Submission to LKML +* Polishing patch so that it can be accepted +* Patch is included in the Linux kernel source git repo +* Show a short proof of concept that there is truly no more IPv4 + +### Bounty 4: Enable IPv6 only in the OpenBSD kernel + +Very similar to bounty 3, we offer another __300 CHF__ bounty, if you +can patch OpenBSD to fully disable IPv4. Requirements for collecting +the bounty: + +* Create the necessary kernel patch +* Get it included into the OpenBSD source tree +* Show a short proof of concept that there is truly no more IPv4 + +### Bounty 5: Add VXLAN support to netbox + +At ungleich we love +[netbox](https://netbox.readthedocs.io/en/stable/). However at the +moment it only supports VLANs and not VXLANs. How amazing would it be, +if it also supported VXLANs? The bounty for adding this upstream is +__50 CHF__. + +### Bounty 5: Allow wireguard to automatically switch the underlying IP version + +If you establish a VPN connection with wireguard, it resolves the +hostname in your configuration and remembers that IP address. + +This is problematic, because if you connect to the VPN server in an +IPv6 only network and then later switch to an IPv4 only network, +wireguard will never reconnect. The same problem appears if you switch +the other way round. + +We offer a __150 CHF__ bounty for the person who successfully +patches/integrates/releases something (it can be a daemon, a patch) +open source that allows seamless transition between the different IP +networks. + +On the wireguard mailing list it was discussed whether a peer can have +multiple IP addresses. This could be a proper solution, as it also +addresses the case when a VPN server has multiple IPv6 or IPv4 +addresses. diff --git a/content/u/projects/open-chat/contents.lr b/content/u/projects/open-chat/contents.lr index cd80e02..2e88e91 100644 --- a/content/u/projects/open-chat/contents.lr +++ b/content/u/projects/open-chat/contents.lr @@ -4,15 +4,81 @@ subtitle: Open Source requires Open Communication --- image: /u/image/cards/open-chat.jpg --- -content: +description1: -You can chat with us either via Mattermost on -[chat.ungleich.ch](https://chat.ungleich.ch) or -Matrix on [matrix.ungleich.ch](https://matrix.ungleich.ch). -For matrix you can find our public channels on **+public:ungleich.ch**. +You can chat with us on [matrix.ungleich.ch](https://matrix.ungleich.ch). -To foster IPv6 deployement, we created [IPv6.chat](../ipv6-chat), -which is also reachable on both chat systems. +## How to join the chat + +* Create an account on https://account.ungleich.ch +* Verify your account by email +* Go to https://matrix.ungleich.ch, login with your new account +* Type **/join #ungleich:ungleich.ch** to join the main channel + +## IPv6 Chat + +To foster IPv6 deployement, we created [IPv6.chat](../ipv6-chat/), +which is also reachable via matrix. Follow above instructions and type +**/join #ipv6:ungleich.ch** instead. + +## 1000eyes + +Are you interested in the [1000eyes](https://1000ey.es) project? Then +do not hesitate to **/join #1000eyes:ungleich.ch**. + +## VIIRB + +If you own a [VIIRB](/u/products/viirb-ipv6-box) +or if you are interested in a VIIRB, **viirb.ungleich.ch** where +people interested in the VIIRB exchange their ideas. + +## Data Center Light + +For discussion and questions about [Data Center +Light](../data-center-light/), you can +**/join #datacenterlight:ungleich.ch**. Anything about VMs, hosting, +colocation or our setup can be discussed there. + +## Hacking and Learning + +Specifically for learning new technologies and to exchange knowledge +we created the **Hacking & Learning channel** which can be found at +**#hacking-and-learning:ungleich.ch**. + +## Kubernetes + +Recently (in 2021) we started to run Kubernetes cluster at +ungleich. We share our experiences in **#kubernetes:ungleich.ch**. + +## Ceph + +To exchange experiences and trouble shooting for ceph, we are running +**#ceph:ungleich.ch**. + +## cdist + +We meet for cdist discussions about using, developing and more +on **#cdist:ungleich.ch**. + +## Sustainability + +We discuss topics related to sustainability in +**#sustainability:ungleich.ch**. + +## More channels + +* The main / hangout channel is **#town-square:ungleich.ch** (also bridged + to Freenode IRC as #ungleich and + [discord](https://discord.com/channels/706144469925363773/706144469925363776)) +* The bi-yearly hackathon Hack4Glarus can be found in + **#hack4glarus:ungleich.ch** +* An unofficial bridge to the RIPE #social IRC channel: + **#ripe-social:ungleich.ch** (also bridged to + [discord](https://discord.gg/HfbMF6), thanks to + [spale](https://twitter.com/spale75/status/1260140467766919168) for + providing the server) + +## Bridged Channels And some of our channels are also available on IRC, you can find them on the [list of bridged channels](https://redmine.ungleich.ch/projects/open-infrastructure/wiki/CHATting_with_ungleich). diff --git a/content/u/projects/open-infrastructure/contents.lr b/content/u/projects/open-infrastructure/contents.lr index bef70b1..311a0f2 100644 --- a/content/u/projects/open-infrastructure/contents.lr +++ b/content/u/projects/open-infrastructure/contents.lr @@ -4,7 +4,7 @@ subtitle: Transparency everywhere --- image: /u/image/cards/open-infrastructure.jpg --- -content: +description1: Next to our [Open Source](../open-source/) efforts, we also believe that what you run your services on, should also be open and diff --git a/content/u/projects/opensource/contents.lr b/content/u/projects/opensource/contents.lr index 1000966..eddb5c6 100644 --- a/content/u/projects/opensource/contents.lr +++ b/content/u/projects/opensource/contents.lr @@ -4,7 +4,7 @@ subtitle: Open Source literally created ungleich --- image: /u/image/cards/opensource.jpg --- -content: +description1: ## History of Open Source at ungleich @@ -62,7 +62,7 @@ Mattermost and Matrix. We started the [Digital Glarus project](../digital-glarus) to support the local community and just recently opened the [Hacking -Hotel](../hacking-hotel) in Diesbach to welcome (FOSS) hackers from +Villa](../hacking-villa/) in Diesbach to welcome (FOSS) hackers from all around the world. And twice per year we welcome hackers to our (strongly Open Source diff --git a/content/u/projects/penguin-comics/contents.lr b/content/u/projects/penguin-comics/contents.lr index 2aa2e70..69c98aa 100644 --- a/content/u/projects/penguin-comics/contents.lr +++ b/content/u/projects/penguin-comics/contents.lr @@ -5,7 +5,7 @@ Welcome to the world of Linux & IPv6 penguins! --- image: /u/image/cards/penguincomics.jpg --- -content: +description1: Who doesn't love smart and stupid penguins talking about technology? Explore the cutting-edge, real time tech topics with our Linux & IPv6 penguin heroes. diff --git a/content/u/projects/sixnet/contents.lr b/content/u/projects/sixnet/contents.lr new file mode 100644 index 0000000..32ee3eb --- /dev/null +++ b/content/u/projects/sixnet/contents.lr @@ -0,0 +1,40 @@ +_model: product +--- +title: SIXNET +--- +subtitle:test +--- +_discoverable: no +--- +_hidden: no +--- +header_background_color #000000 +--- +header_text_color: text-light +--- +nav_classes:navbar-dark +--- +intro_image: /u/image/vigir.jpg +--- +content1_text: + +## SIXNET: Professional Internet. + +Sixnet brings professional Internet to you. +With full IPv6 support. Zero configuration, zero effort. + +## Variants + +### With router + +* Pre configured +* Only sim needs to be activated + +* Using the VIIRB: 128 CHF +* Using the VIWIB: 138 CHF +* Using the VIGIR: 250 CHF + +### Without router + +* Setup your own router. +* Send us your public Wireguard key diff --git a/content/u/projects/this-week-via-ipv6/contents.lr b/content/u/projects/this-week-via-ipv6/contents.lr index 846b328..eff3b98 100644 --- a/content/u/projects/this-week-via-ipv6/contents.lr +++ b/content/u/projects/this-week-via-ipv6/contents.lr @@ -2,7 +2,9 @@ title: This.week.via-IPv6.com --- subtitle: What happens in a week with IPv6? --- -content: +_discoverable: no +--- +description1: To be able to track what is going on in the IPv6 world, we created a dedicated page tracking IPv6 activity that we are aware of. The page diff --git a/content/u/projects/ubookmark/contents.lr b/content/u/projects/ubookmark/contents.lr new file mode 100644 index 0000000..25deaf2 --- /dev/null +++ b/content/u/projects/ubookmark/contents.lr @@ -0,0 +1,32 @@ +title: ubookmark +--- +subtitle: +ubookmark is a simple link collecting website. +--- +image: /u/image/cards/ubookmark.jpg +--- +description1: + +## Introduction + +ubookmark is based on Django, Bootstrap 4 +and uses LDAP authentication. It was written and designed for +running [IPv6.blog](https://IPv6.blog), but should be re-usable in +other situations. + +ubookmark is FOSS and its source code can be found on +[code.ungleich.ch](https://code.ungleich.ch/ungleich-public/ubookmark/). + +## How to install + +* git clone above repository +* Setup a local postgresql database named "ubookmark" +* Copy ubookmark/sample_settings.py to ubookmark/local_settings.py +* Modify settings as needed +* Install requirements using `pip install -r requirements.txt` +* + +## How to run + +It is a standard Django app, so you can use uwsgi +or the included server for testing: `python manage.py runserver`. diff --git a/content/u/projects/ungleich-quiz-v6/contents.lr b/content/u/projects/ungleich-quiz-v6/contents.lr index ff1748b..c984b62 100644 --- a/content/u/projects/ungleich-quiz-v6/contents.lr +++ b/content/u/projects/ungleich-quiz-v6/contents.lr @@ -6,7 +6,7 @@ it to the hall of fame? We're as curious as you are! --- image: /u/image/cards/ungleichquizv6.jpg --- -content: +description1: Who doesn't love quizzes? We certainly do and this is why we created the [ungleich quiz diff --git a/content/u/sitemap/contents.lr b/content/u/sitemap/contents.lr new file mode 100644 index 0000000..3802b58 --- /dev/null +++ b/content/u/sitemap/contents.lr @@ -0,0 +1,3 @@ +_template: sitemap.html +--- +_model: none diff --git a/models/offers.ini b/models/offers.ini index 09b79e8..55d20b1 100644 --- a/models/offers.ini +++ b/models/offers.ini @@ -1,6 +1,6 @@ [model] name = Offers -label = Offers +label = {{ this.title }} hidden = yes [fields.title] diff --git a/models/page-2020.ini b/models/page-2020.ini index 2a9b653..b526442 100644 --- a/models/page-2020.ini +++ b/models/page-2020.ini @@ -17,3 +17,7 @@ type = markdown [fields.image] label = Image type = url + +[fields.slider] +type = flow +flow_blocks = slider diff --git a/models/product.ini b/models/product.ini index be8906d..a0fa0d7 100644 --- a/models/product.ini +++ b/models/product.ini @@ -57,6 +57,10 @@ type = markdown label = Description 5 type = markdown +[fields.description6] +label = Description 6 +type = markdown + [fields.link] label = Link type = url @@ -102,6 +106,23 @@ type = markdown label = Content 2 Image type = url +[fields.content3_text] +label = Content 3 Text +type = markdown + +[fields.content3_image] +label = Content 3 Image +type = url + +[fields.content4_text] +label = Content 4 Text +type = markdown + +[fields.content4_image] +label = Content 4 Image +type = url + + [fields.offer1_title] label = Offer 1 Title type = string @@ -138,6 +159,42 @@ type = markdown label = Offer 3 Link type = url +[fields.offer4_title] +label = Offer 4 Title +type = string + +[fields.offer4_text] +label = Offer 4 Text +type = markdown + +[fields.offer4_link] +label = Offer 4 Link +type = url + +[fields.offer5_title] +label = Offer 5 Title +type = string + +[fields.offer5_text] +label = Offer 5 Text +type = markdown + +[fields.offer5_link] +label = Offer 5 Link +type = url + +[fields.offer6_title] +label = Offer 6 Title +type = string + +[fields.offer6_text] +label = Offer 6 Text +type = markdown + +[fields.offer6_link] +label = Offer 6 Link +type = url + [fields.image] label = Index Image type = url diff --git a/models/products.ini b/models/products.ini index 31b271f..c45a5e2 100644 --- a/models/products.ini +++ b/models/products.ini @@ -1,6 +1,6 @@ [model] name = Products -label = Products +label = {{ this.title }} hidden = yes [fields.title] diff --git a/models/projects.ini b/models/projects.ini deleted file mode 100644 index 01cd5ac..0000000 --- a/models/projects.ini +++ /dev/null @@ -1,20 +0,0 @@ -[model] -name = Projects -label = Projects -hidden = yes - -[fields.title] -label = Title -type = string - -[fields.subtitle] -label = Subtitle -type = string - -[fields.image] -label = Image -type = url - -[children] -model = page-2020 -order_by = title \ No newline at end of file diff --git a/models/projects.ini b/models/projects.ini new file mode 120000 index 0000000..10ce2d9 --- /dev/null +++ b/models/projects.ini @@ -0,0 +1 @@ +products.ini \ No newline at end of file diff --git a/templates/README b/templates/README deleted file mode 100644 index d2dfe6e..0000000 --- a/templates/README +++ /dev/null @@ -1,4 +0,0 @@ -The structure of templates should be: - -- layout.html: valid for everything -- product.html: valid for all products diff --git a/templates/README.md b/templates/README.md new file mode 100644 index 0000000..4c6f610 --- /dev/null +++ b/templates/README.md @@ -0,0 +1,10 @@ +Installation + +``` +$ pip install lektor +``` + +The structure of templates should be: + +- layout.html: valid for everything +- product.html: valid for all products \ No newline at end of file diff --git a/templates/blocks/slider.html b/templates/blocks/slider.html new file mode 100644 index 0000000..1397967 --- /dev/null +++ b/templates/blocks/slider.html @@ -0,0 +1,3 @@ +
    + {{ this.text }} +
    diff --git a/templates/layout-2020.html b/templates/layout-2020.html index 3a70c7b..ecfd2ba 100644 --- a/templates/layout-2020.html +++ b/templates/layout-2020.html @@ -5,14 +5,18 @@ - ungleich.ch - {% block title %}Welcome!{% endblock %} + {% block title %}Welcome!{% endblock %} - ungleich.ch + + +