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.
Content
Introduction
First Steps
Buying a domain
How DNS works
VPS
Storage volume
Recap: Linode VPS, Arch Linux, additional storage volume
Ansible Introduction
Ansible Installation and Configuration
Ansible Roles
DNS A records
Configuring DNS on Linux
Linux file permissions
Essentials
Security – SSH daemon, iptables, SSH config, LISH console
sysctl – Tweaking kernel parameters
Recap: venv, Ansible configuration, hostname, essentials, security, sysctl
certbot, ACME protocol, wildcard TLS certificates
WireGuard
Docker
MariaDB
LXC (Linux Containers)
Recap: certbot, WireGuard, Docker, MariaDB, LXC
iRedMail
Zulip
Recap: Zulip
Traefik
Pi-Hole
Nextcloud
checkmk
Borg and borgmatic
GitLab and GitLab Runner
do-p.com website
backup-checker Python application
Staying up to date
Docker prune
Outro