Zola init

This commit is contained in:
2023-08-25 11:47:55 +03:00
commit bfe5a8b037
96 changed files with 6639 additions and 0 deletions

6
content/posts/_index.md Normal file
View File

@@ -0,0 +1,6 @@
+++
path = "posts"
template = "posts.html"
transparent = true
sort_by = "date"
+++

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