• Post category:StudyBullet-15
  • Reading time:11 mins read


For startups, individuals, and self-hosting | Docker, LXC, GitLab, CI/CD, Ansible, certbot, WireGuard, Traefik, Pi-hole

What you will learn

Ansible

Server networking and security setup

Let’s Encrypt (certbot)

WireGuard (VPN)

Docker

docker-compose

Traefik

GitLab

GitLab CI/CD pipeline through implementing a simple project

Borg with borgmatic

LXC

Mail server

Description

This course will cover a DevOps project from its inception all the way to a finished product.

It is aimed at startups, small companies, and individuals who want to self-host their infrastructure.

We will combine multiple tools and services to produce a working, easily reproducible server which can support a small company.


Get Instant Notification of New Courses on our Telegram channel.


We will cover:

  • Ansible – to configure the server and deploy services.
  • Let’s Encrypt (certbot) – to obtain wildcard TLS certificate with auto renewal.
  • VPN (WireGuard) – for secure access to our services.
  • Docker with docker-compose – to easily deploy our applications and services.
  • MariaDB – MySQL fork.
  • LXC (Linux containers) – another virtualization technology.
  • iRedMail – mail server which we’ll use to send and receive notifications.
  • Zulip – an open source chat and collaborative software which can be self-hosted (alternative to Slack or Microsoft Teams).
  • Traefik (reverse proxy and TLS termination proxy) with Docker and file providers – a single entry point for our services with automatic TLS certificates.
  • Pi-hole – ad blocking on DNS level.
  • Nextcloud – Email, calendar, documents, photos…It even has built-in code editor.
  • checkmk – monitoring solution.
  • Borg with borgmatic – backup solution.
  • GitLab – Git server, CI/CD, GitLab Container Registry, etc.
  • backup-checker – with this project we will showcase everything we’ve created!We’ll create a Python program which will compare finished backups with the desired list of backups, use GitLab CI/CD to create Docker image, push it to our own, private Docker Registry, run it on our server via GitLab Runner, and send notification to our Zulip server.
  • Upgrade scripts for services running in Docker.
  • Upgrading iRedMail.
  • Upgrading Zulip.
  • Upgrading host OS.

When you finish the course, you’ll be equipped to add any additional services you need for your particular line of work.

English
language

Content

Introduction

Course overview

First Steps

First Steps

Buying a domain

Buying a domain

How DNS works

How DNS works

VPS

VPS

Storage volume

Adding and configuring storage volume

Recap: Linode VPS, Arch Linux, additional storage volume

Recap: Linode VPS, Arch Linux, additional storage volume

Ansible Introduction

Ansible Introtuction

Ansible Installation and Configuration

Ansible Installation and Configuration

Ansible Roles

Ansible Roles

DNS A records

DNS A records

Configuring DNS on Linux

Configuring DNS on Linux

Linux file permissions

Linux file permissions

Essentials

Essentials – Main
Essentials – Packages
Essentials – Cron
Essentials – Network bridge
Essentials – Loopback interface

Security – SSH daemon, iptables, SSH config, LISH console

Security – SSH daemon, iptables, SSH config, LISH console

sysctl – Tweaking kernel parameters

sysctl – Tweaking kernel parameters

Recap: venv, Ansible configuration, hostname, essentials, security, sysctl

Recap: venv, Ansible configuration, hostname, essentials, security, sysctl

certbot, ACME protocol, wildcard TLS certificates

certbot, ACME protocol, wildcard TLS certificates

WireGuard

WireGuard – Part 1
WireGuard – Part 2

Docker

Docker – Part 1
Docker – Part 2
Docker – Part 3

MariaDB

Installing and configuring MariaDB, Ansible Vault

LXC (Linux Containers)

LXC (Linux Containers) – installing and configuring

Recap: certbot, WireGuard, Docker, MariaDB, LXC

Recap: certbot, WireGuard, Docker, MariaDB, LXC

iRedMail

iRedMail – Part 1
iRedMail – Part 2
iRedMail – Part 3
iRedMail – Part 4
iRedMail – Part 5
iRedMail – Part 6

Zulip

Zulip – Part 1
Zulip – Part 2

Recap: Zulip

Recap: Zulip

Traefik

Traefik – Part 1
Traefik – Part 2
Traefik – Part 3

Pi-Hole

Deploying, configuring, and setting Pi-Hole as a DNS resolver

Nextcloud

Nextcloud – Part 1
Nextcloud – Part 2
Nextcloud – Recap

checkmk

checkmk – Part 1
checkmk – Part 2
checkmk – Part 3
checkmk – Recap

Borg and borgmatic

Borg and borgmatic – Installing and configuring Borg with brogmatic wrapper
Borg and borgmatic -Recap

GitLab and GitLab Runner

GitLab
GitLab Runner

do-p.com website

Deploying a website via GitLab CI/CD
do-p.com website – Recap

backup-checker Python application

backup-checker Python application – Part 1
backup-checker Python application – Part 2
backup-checker Python application – Recap

Staying up to date

Staying up to date – Docker services
Staying up to date – LXCs and host OS

Docker prune

Running ‘docker prune’ command periodically via crontab

Outro

The End