mirror of
https://github.com/house-of-vanity/house-of-vanity.github.io.git
synced 2025-08-21 15:07:16 +00:00
Zola init
This commit is contained in:
5
content/_index.md
Normal file
5
content/_index.md
Normal file
@@ -0,0 +1,5 @@
|
||||
+++
|
||||
paginate_by = 3
|
||||
sort_by = "date"
|
||||
+++
|
||||
|
68
content/custom/about.md
Normal file
68
content/custom/about.md
Normal file
@@ -0,0 +1,68 @@
|
||||
+++
|
||||
title = "About"
|
||||
date = "2023-08-25"
|
||||
path = "about"
|
||||
+++
|
||||
|
||||
## Curriculum Vitae
|
||||
|
||||
## Alexandr Bogomyakov
|
||||
|
||||
In love with GNU/Linux, Python and Rust.
|
||||
|
||||
Site Reliability Engineer (SRE) at Criteo
|
||||
|
||||
Limassol, Cyprus 🇨🇾
|
||||
***
|
||||
|
||||

|
||||
### Contacts
|
||||
* [https://github.com/house-of-vanity](https://github.com/house-of-vanity)
|
||||
* [Telegram @ultradesu](tg:@ultradesu)
|
||||
* [ab@hexor.cy](mailto:ab@hexor.cy)
|
||||
* [https://www.linkedin.com/in/alexandr-bogomyakov-732a8a73](https://www.linkedin.com/in/alexandr-bogomyakov-732a8a73)
|
||||
***
|
||||
|
||||
## Education
|
||||
|Years|Degree||
|
||||
|---|---|---|
|
||||
| **2009-2014** | **Bachelor in Economics** | Pacific National University, Khabarovsk, Russia |
|
||||
| **2005-2019** | **Bachelor in Computer Science** | Bauman Moscow State Technical University, Moscow, Russia |
|
||||
***
|
||||
|
||||
## Experience
|
||||
|
||||
### Criteo - Senior Site Reliability Engineer
|
||||
**May 2022 - Present** Cyprus, Limassol (former Iponweb)
|
||||
> Pioneers in applying machine learning to solving digital advertising’s biggest challenges, offer world-leading technology solutions for building and operating scalable, algorithmically complex media trading systems for innovative companies across the advertising spectrum.
|
||||
|
||||
* Cassandra
|
||||
* Kubernetes
|
||||
* Google cloud platform
|
||||
* AWS
|
||||
* Terraform
|
||||
* Puppet
|
||||
* Python
|
||||
* Linux
|
||||
|
||||
### VK Group - Senior Site Reliability Engineer
|
||||
**May 2021 - May 2022** Russia, Moscow
|
||||
> Mail.ru Group, LLC is a Russian internet company. It was started in 1998 as an e-mail service and went on to become a major corporate figure in the Russian-speaking segment of the Internet. As of 2013 according to comScore, websites owned by Mail.ru collectively had the largest audience in Russia and captured the most screen time. Mail.ru's sites reach approximately 86% of Russian Internet users on a monthly basis and the company is in the top 5 of largest Internet companies, based on the number of total pages viewed.
|
||||
|
||||
* Maintain Kubernetes on bare metal
|
||||
* Puppet
|
||||
* Python
|
||||
* Linux
|
||||
|
||||
### EPAM - DevOps
|
||||
**Sep 2020 - May 2021** Russia, Moscow
|
||||
> EPAM Systems, Inc. is an American company that specializes in product development, digital platform engineering, and digital and product design. The world's largest manufacturer of custom software, consulting specialist, resident of the Belarusian High Technologies Park. Its branches are represented in more than 30 countries of the world.
|
||||
|
||||
* Maintain infrastructure in clouds using Ansible, Terraform.
|
||||
* Develop and maintain automation tools.
|
||||
* Build CI/CD pipelines with Jenkins Pipelines.
|
||||
* Service containerization expirience with AWS ECS Fargate.
|
||||
|
||||
### IPONWEB - Operations Engineer
|
||||
**Nov 2016 - Sep 2020** Russia, Moscow
|
||||
> IPONWEB is a pioneer and global leader in the engineering of advanced programmatic, RTB, and media trading platforms across digital, TV, DOOH, and audio. Founded in the UK, IPONWEB has nearly 400 employees spread across the US, UK, Germany, Japan, Asia and Russia.
|
6
content/posts/_index.md
Normal file
6
content/posts/_index.md
Normal file
@@ -0,0 +1,6 @@
|
||||
+++
|
||||
path = "posts"
|
||||
template = "posts.html"
|
||||
transparent = true
|
||||
sort_by = "date"
|
||||
+++
|
97
content/posts/arch-repo.md
Normal file
97
content/posts/arch-repo.md
Normal file
@@ -0,0 +1,97 @@
|
||||
+++
|
||||
title = "Own Arch Linux Repository"
|
||||
date = "2020-07-14"
|
||||
description = "self-hosted repository for your own Arch Linux packages"
|
||||
|
||||
[taxonomies]
|
||||
tags = ["linux", "nginx", "selfhosting"]
|
||||
|
||||
[extra]
|
||||
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
|
||||
+++
|
||||
|
||||
## Prerequisites
|
||||
* Ubuntu Server with Nginx and Docker
|
||||
---
|
||||
|
||||
## Creating repository
|
||||
|
||||
Repository database is managed via `repo-add` script bundled with Arch Linux `pacman` package manager. Since pacman is not available in Ubuntu repository I use docker `archlinux` image for managing repository. This guide assumes that repository located in `/srv/arch-repo`. First of all move all your packages into /srv/arch-repo. Following command will create or update repository database.
|
||||
|
||||
```sh
|
||||
REPO_URL=repo.sun.hexor.ru
|
||||
REPO_PATH=/srv/arch-repo
|
||||
docker run -v ${REPO_PATH}:/repo --rm archlinux \
|
||||
bash -c "repo-add /repo/${REPO_URL}.db.tar.gz /repo/*pkg.tar.zst"
|
||||
```
|
||||
|
||||
### **Important aspect**
|
||||
* Name of the database should be REPO_URL.db.tar.gz, in this case REPO_URL is repo.sun.hexor.ru.
|
||||
---
|
||||
|
||||
## Periodically database repo update
|
||||
|
||||
I use systemd:
|
||||
```ini
|
||||
# Service unit
|
||||
# /etc/systemd/system/update-arch-repo.service
|
||||
[Unit]
|
||||
Description=Updating arch linux repository database for %I
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/docker run -v /srv/arch-repo:/repo --rm archlinux bash -c "repo-add /repo/%i.db.tar.gz /repo/*pkg.tar.zst"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
```ini
|
||||
# Timer unit
|
||||
# /etc/systemd/system/update-arch-repo.timer
|
||||
[Unit]
|
||||
Description=Schedule arch repo database update for %I
|
||||
|
||||
[Timer]
|
||||
# every 15 minutes
|
||||
OnCalendar=*:0/15
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
```
|
||||
|
||||
Activate timer:
|
||||
```sh
|
||||
REPO_URL=repo.sun.hexor.ru
|
||||
systemctl enable update-arch-repo@${REPO_URL}.timer
|
||||
```
|
||||
|
||||
## Reverse proxy for HTTPS access
|
||||
|
||||
I use NGINX
|
||||
```js
|
||||
server {
|
||||
server_name repo.sun.hexor.ru;
|
||||
listen [::]:443 ssl;
|
||||
listen 443 ssl;
|
||||
include security.conf; # my security options
|
||||
include letsencrypt.conf; # my ssl config.
|
||||
root /srv/arch-repo;
|
||||
location / {
|
||||
autoindex on;
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
access_log /var/log/nginx/logs/repo.sun.hexor.ru.access.log custom;
|
||||
error_log /var/log/nginx/logs/repo.sun.hexor.ru.error.log;
|
||||
}
|
||||
```
|
||||
|
||||
## Configure repo on your machines
|
||||
|
||||
Add your repo to `/etc/pacman.conf`:
|
||||
|
||||
```ini
|
||||
[repo.sun.hexor.ru]
|
||||
Server = https://repo.sun.hexor.ru
|
||||
```
|
||||
|
19
content/posts/htpasswd.md
Normal file
19
content/posts/htpasswd.md
Normal file
@@ -0,0 +1,19 @@
|
||||
+++
|
||||
title = ".htpasswd one-liner"
|
||||
date = "2020-07-13"
|
||||
description = "creating password hash for Basic auth"
|
||||
|
||||
[taxonomies]
|
||||
tags = ["linux", "tools", "selfhosting"]
|
||||
|
||||
[extra]
|
||||
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
|
||||
+++
|
||||
|
||||
It's annoying when you need apache2-utils just for creating password hash for Basic auth. So here is Shell one-liner doing it using openssl.
|
||||
```sh
|
||||
user=ab
|
||||
pass=pwd
|
||||
printf "${user}:$(openssl passwd -apr1 ${pass})\n"
|
||||
```
|
||||
---
|
76
content/posts/qemu.md
Normal file
76
content/posts/qemu.md
Normal file
@@ -0,0 +1,76 @@
|
||||
+++
|
||||
title = "KVM/QEMU self hosted hypervisor"
|
||||
date = "2020-07-14"
|
||||
description = "Installing home hypervisor with remote control"
|
||||
|
||||
[taxonomies]
|
||||
tags = ["linux", "kvm", "selfhosting"]
|
||||
|
||||
[extra]
|
||||
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
|
||||
+++
|
||||
|
||||
## Requirements
|
||||
* Ubuntu Linux server (tested on 18.04 and 20.04)
|
||||
* CPU with virtualisation enabled
|
||||
---
|
||||
|
||||
## Installing
|
||||
|
||||
Installing VT staff
|
||||
|
||||
```sh
|
||||
sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils
|
||||
```
|
||||
I'd like to assign IPs for my VMs in the same network as server.
|
||||
|
||||
Here is `netplan` config:
|
||||
```yaml
|
||||
# /etc/netplan/00-installer-config.yaml
|
||||
network:
|
||||
ethernets:
|
||||
enp2s0f0:
|
||||
dhcp4: false
|
||||
dhcp6: false
|
||||
bridges:
|
||||
br0:
|
||||
interfaces: [enp2s0f0]
|
||||
dhcp4: true
|
||||
dhcp6: true
|
||||
version: 2
|
||||
```
|
||||
|
||||
Generate and apply network config:
|
||||
```sh
|
||||
sudo netplan generate
|
||||
sudo netplan --debug apply
|
||||
|
||||
# Check bridge
|
||||
sudo networkctl
|
||||
IDX LINK TYPE OPERATIONAL SETUP
|
||||
1 lo loopback carrier unmanaged
|
||||
2 enp2s0f0 ether enslaved configured
|
||||
3 br0 bridge routable configured
|
||||
4 virbr0 bridge no-carrier unmanaged
|
||||
5 virbr0-nic ether off unmanaged
|
||||
|
||||
# Check DHCP lease on new bridge
|
||||
sudo ip a
|
||||
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
|
||||
link/ether xxx brd ff:ff:ff:ff:ff:ff
|
||||
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
|
||||
link/ether xxx brd ff:ff:ff:ff:ff:ff
|
||||
inet 192.168.88.28/24 brd 192.168.88.255 scope global dynamic br0
|
||||
valid_lft 535sec preferred_lft 535sec
|
||||
```
|
||||
---
|
||||
|
||||
## Managing VMs
|
||||
|
||||
Grant permissions to use virtmanager to your user on server:
|
||||
```sh
|
||||
sudo adduser $USER libvirt-qemu
|
||||
sudo adduser $USER libvirt
|
||||
```
|
||||
|
||||
Use virt-manager GUI utility on client or virsh CLI tool for managing VMs and data pools.
|
Reference in New Issue
Block a user