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.
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