Compare commits

...

92 Commits

Author SHA1 Message Date
370f54e777 Update tor-website.md 2025-06-27 13:16:20 +02:00
b4f5bae528 Update i2p-website.md 2025-06-27 13:15:46 +02:00
efdcf3f7e9 Update dnssec-coredns.md 2025-06-26 14:27:24 +02:00
5b3c07daf2 Update i2p-website.md 2025-06-26 14:26:31 +02:00
e9058cf463 Update tor-website.md 2025-06-25 14:34:27 +02:00
89872c6db8 Update i2p-website.md 2025-06-25 14:32:02 +02:00
62d3c4c8f9 Update i2p-website.md 2025-06-25 14:31:08 +02:00
5a560e49f1 Update tor-website.md 2025-06-25 14:30:49 +02:00
75286baade Create i2p-website.md 2025-06-25 14:27:46 +02:00
5dc75e981e Create tor-website.md 2025-06-25 14:09:57 +02:00
db099bde71 Update dnssec-coredns.md 2025-06-25 13:41:25 +02:00
4c18587000 Update dnssec-coredns.md 2025-06-25 13:41:17 +02:00
e12e35070c Update dnssec-coredns.md 2025-06-25 13:41:08 +02:00
f93bd04659 Create dnssec-coredns.md 2025-06-25 13:40:54 +02:00
2839b56ed4 Update config.toml 2025-06-23 21:55:30 +02:00
8055a8e019 Update config.toml 2025-06-23 10:16:28 +02:00
afbbb240ef Update rhel-setup.md 2025-06-21 18:50:46 +02:00
01cb4bba16 Update cephfs.md 2025-05-30 15:50:54 +02:00
843a9df5ac Update cephfs.md 2025-05-30 15:50:23 +02:00
30562fd47a Create cephfs.md 2025-05-30 15:46:47 +02:00
679383ab46 Update pve-update.md 2025-03-20 15:20:28 +01:00
c3fd5815a5 update action 2025-02-27 23:21:10 +01:00
8cbbeedd2b Create rhel-setup.md 2025-02-27 23:14:00 +01:00
a2ad64266a Update config.toml 2025-02-20 02:18:36 +01:00
1917099f70 fix proto 2025-02-19 19:43:15 +01:00
69fe73f4e2 uhh 2025-02-19 19:42:01 +01:00
044e95c4f4 v4? idk 2025-02-19 19:38:04 +01:00
1a813268c0 Update config.toml 2025-02-19 19:36:05 +01:00
566646b9e7 update version of upload-pages-artifact 2025-02-19 19:35:37 +01:00
ffae9f59e4 Update pgp-commands.md 2025-01-19 15:27:09 +01:00
14ab9aaca8 Update autohotkey.md 2025-01-14 11:41:58 +01:00
a0779bf03b Create autohotkey.md 2025-01-14 11:37:58 +01:00
dcef7fcb06 Update pgp-commands.md 2025-01-12 22:11:39 +01:00
7308b88594 Create swap-create.md 2025-01-12 22:10:47 +01:00
976135d17e Create pgp-commands.md 2025-01-12 22:01:41 +01:00
52a2785251 Add files via upload 2025-01-12 15:56:33 +01:00
ebdd2bbed7 Delete static/fruworg.jpg 2025-01-12 15:56:23 +01:00
ccbe7d251f Merge pull request #55 from fruworg/dependabot/submodules/themes/themu-257284d
Bump themes/themu from `74716e2` to `257284d`
2025-01-12 15:10:42 +01:00
77548ad0a3 Bump themes/themu from 74716e2 to 257284d
Bumps [themes/themu](https://github.com/fruworg/themu) from `74716e2` to `257284d`.
- [Commits](74716e29b8...257284dd68)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-12 14:10:05 +00:00
4c7d8fa703 Create pve-update.md 2024-12-10 14:07:47 +01:00
59e403ff61 Update linux-disk-resize.md 2024-12-10 14:02:59 +01:00
065c517ba4 Update linux-disk-resize.md 2024-12-10 14:02:37 +01:00
fded74c558 Create linux-disk-resize.md 2024-12-10 14:01:09 +01:00
2b22134d1f Merge pull request #54 from fruworg/dependabot/submodules/themes/themu-74716e2
Bump themes/themu from `7eb486c` to `74716e2`
2024-11-10 11:31:40 +01:00
1a4cfe4b23 Bump themes/themu from 7eb486c to 74716e2
Bumps [themes/themu](https://github.com/fruworg/themu) from `7eb486c` to `74716e2`.
- [Commits](7eb486c888...74716e29b8)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-10 10:31:05 +00:00
d016387976 temporary fix for config code blocks 2024-11-03 13:11:52 +01:00
059c24ef6f Update typing-emulate.md 2024-11-02 22:41:54 +01:00
751d0edc3f Update typing-emulate.md 2024-11-02 22:16:52 +01:00
f82e30c1ff Update hugo.yml 2024-11-02 22:13:36 +01:00
44c7c2a210 Update config.toml 2024-11-02 22:10:44 +01:00
d2c595f724 Update typing-emulate.md 2024-10-24 20:50:45 +02:00
cae767240c Update typing-emulate.md 2024-10-24 17:24:58 +02:00
dfbf0fd7bd Update typing-emulate.md 2024-10-24 17:17:30 +02:00
be08d99f96 Create typing-emulate.md 2024-10-24 17:12:38 +02:00
d0c48765cd Update ubuntu-apparmor-disable.md 2024-10-24 17:07:04 +02:00
60acdc72cc Create ubuntu-apparmor-disable.md 2024-10-09 10:53:35 +02:00
5429fe9431 Create sshfs-fstab.md 2024-09-19 13:29:15 +02:00
53c9288161 Update psql-to-csv.md 2024-09-13 12:34:35 +02:00
45ecaf391b Update psql-to-csv.md 2024-09-11 17:26:37 +02:00
2791a8cfb8 Create psql-to-csv.md 2024-09-11 17:24:44 +02:00
913fc2a56f Update montenegro-dn.md 2024-09-06 10:44:45 +02:00
ebdb2897b7 Update config.toml 2024-08-06 15:17:59 +02:00
e8585672a3 Update montenegro-dn.md 2024-07-31 10:11:37 +02:00
8367f715b8 Create montenegro-dn.md 2024-07-31 10:08:30 +02:00
e9fe3fc3bf Merge pull request #53 from fruworg/dependabot/submodules/themes/themu-7eb486c
Bump themes/themu from `2bc71bd` to `7eb486c`
2024-07-26 23:23:18 +02:00
6e025c5240 Bump themes/themu from 2bc71bd to 7eb486c
Bumps [themes/themu](https://github.com/fruworg/themu) from `2bc71bd` to `7eb486c`.
- [Commits](2bc71bdb71...7eb486c888)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 21:21:08 +00:00
6e0d304e50 Update subtitle.html 2024-07-26 22:46:34 +02:00
9f65ed9b57 Merge pull request #52 from fruworg/dependabot/submodules/themes/themu-2bc71bd
Bump themes/themu from `7ec1e19` to `2bc71bd`
2024-07-26 22:34:47 +02:00
f5825d9638 Update wg.md 2024-07-26 22:34:22 +02:00
1f831378e8 Bump themes/themu from 7ec1e19 to 2bc71bd
Bumps [themes/themu](https://github.com/fruworg/themu) from `7ec1e19` to `2bc71bd`.
- [Commits](7ec1e1972c...2bc71bdb71)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 20:33:17 +00:00
dafed111a8 Update hugo.yml 2024-07-26 22:30:46 +02:00
9c390ae557 Update hugo.yml 2024-07-26 22:25:28 +02:00
d5cf1769fc Update hugo.yml 2024-07-26 22:23:48 +02:00
89f4a06df9 Merge pull request #51 from fruworg/dependabot/submodules/themes/themu-7ec1e19
Bump themes/themu from `bb042ae` to `7ec1e19`
2024-07-26 22:10:50 +02:00
8e8fedb304 Bump themes/themu from bb042ae to 7ec1e19
Bumps [themes/themu](https://github.com/fruworg/themu) from `bb042ae` to `7ec1e19`.
- [Commits](bb042ae868...7ec1e1972c)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 20:10:31 +00:00
6d0d990509 Add files via upload 2024-07-26 21:35:24 +02:00
71eb8a2e15 Add files via upload 2024-07-26 21:21:32 +02:00
6ab2476eb7 Delete static/fruworg.jpg 2024-07-26 21:21:13 +02:00
67b6cfc1bb Delete static/favicon.ico 2024-07-26 21:21:03 +02:00
2741f3b225 Merge pull request #50 from fruworg/dependabot/submodules/themes/themu-bb042ae
Bump themes/themu from `5c0d447` to `bb042ae`
2024-07-26 21:15:55 +02:00
a1d76ba75d Bump themes/themu from 5c0d447 to bb042ae
Bumps [themes/themu](https://github.com/fruworg/themu) from `5c0d447` to `bb042ae`.
- [Commits](5c0d4477da...bb042ae868)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 01:14:08 +00:00
7cd6089b04 Merge pull request #49 from fruworg/dependabot/submodules/themes/themu-5c0d447
Bump themes/themu from `943ea8a` to `5c0d447`
2024-06-16 00:42:34 +06:00
18553cbd59 Bump themes/themu from 943ea8a to 5c0d447
Bumps [themes/themu](https://github.com/fruworg/themu) from `943ea8a` to `5c0d447`.
- [Commits](943ea8aaa9...5c0d4477da)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-06 01:34:52 +00:00
bf7914c051 Create wg.md 2024-06-05 17:52:05 +06:00
dd3b2934f1 Update postgres-tls.md 2024-03-13 16:20:06 +06:00
1d497ca9ce Update hugo.yml 2024-02-20 18:44:56 +06:00
536dbcb1e1 Create id_rsa.pub 2024-02-12 17:22:48 +06:00
6dc3b193b2 Update config.toml 2024-02-07 19:05:33 +06:00
fc0211a679 Create mariadb-installation.md 2024-01-26 16:33:05 +06:00
e88edce852 Update selfsigned-to-trusted.md 2024-01-22 19:49:28 +06:00
a0da1db19d Merge pull request #48 from fruworg/dependabot/submodules/themes/themu-943ea8a
Bump themes/themu from `e0440e9` to `943ea8a`
2023-12-31 22:12:30 +06:00
2f269081ed Bump themes/themu from e0440e9 to 943ea8a
Bumps [themes/themu](https://github.com/fruworg/themu) from `e0440e9` to `943ea8a`.
- [Commits](e0440e9f6d...943ea8aaa9)

---
updated-dependencies:
- dependency-name: themes/themu
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-31 16:11:53 +00:00
46 changed files with 785 additions and 63 deletions

View File

@ -1,10 +1,11 @@
# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages & Neocities
name: Deploy Hugo site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
branches:
- main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
@ -31,7 +32,7 @@ jobs:
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.119.0
HUGO_VERSION: 0.141.0
steps:
- name: Install Hugo CLI
run: |
@ -40,26 +41,31 @@ jobs:
- name: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
uses: actions/configure-pages@v5
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
HUGO_ENV: production
TZ: America/Los_Angeles
run: |
hugo \
--gc \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Change color
run: sed -i 's/peachpuff/rebeccapurple/g' public/css/main.*.css
run: sed -i 's/peachpuff/rebeccapurple/g' public/css/main.*.css
- name: Change URI
run: find public -type f -exec sed -i 's/\/\/fruw.org/\/\/fruworg.github.io/g' {} +
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
uses: actions/upload-pages-artifact@v3
with:
path: ./public
@ -73,7 +79,7 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
uses: actions/deploy-pages@v4
deploy-neocities:
environment:
@ -82,7 +88,7 @@ jobs:
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
path: .
- name: Create directory
@ -94,7 +100,9 @@ jobs:
- name: Rename 404 page
run: mv public/404.html public/not_found.html
- name: Change color
run: sed -i 's/rebeccapurple/mediumseagreen/g' public/css/main.*.css
run: sed -i 's/rebeccapurple/mediumseagreen/g' public/css/main.*.css
- name: Delete id_rsa.pub
run: rm public/id_rsa.pub
- name: Deploy to Neocities
uses: bcomnes/deploy-to-neocities@v1
with:

View File

@ -2,13 +2,13 @@ baseURL = "https://fruw.org/"
languageCode = "ru-RU"
languageName = "Russian"
defaultContentLanguage = 'ru'
title = "фруворг"
title = "fruworg"
theme = "themu"
pygmentsstyle = "fruity"
pygmentscodefences = true
pygmentscodefencesguesssyntax = true
paginate = 4
pagination.pagerSize = 4
[params]
description = "всем привет!"
@ -32,7 +32,7 @@ name = "pgp"
url = "//keys.openpgp.org/pks/lookup?op=get&options=mr&search=im@fruw.org"
[[params.social]]
name = "keyoxide"
name = "id"
url = "//keyoxide.org/86a5f8191783e6f1"
[[params.social]]
@ -43,6 +43,14 @@ url = "//up.fruw.org"
name = "git"
url = "//github.com/fruworg"
[[params.social]]
name = "steam"
url = "//steamcommunity.com/id/fruworg"
[[params.social]]
name = "x"
url = "//x.com/fruworg"
[[menu.main]]
name = "посты"
url = "/posts"
@ -59,6 +67,16 @@ url = "/index.xml"
weight = 3
[[menu.main]]
name = "webring"
url = "/webring.html"
name = "dn42"
url = "https://f.dn42"
weight = 4
[[menu.main]]
name = "i2p"
url = "http://f.i2p"
weight = 5
[[menu.main]]
name = "tor"
url = "http://fruworgtuaajxcxdcygjybaeon7oid4ibkaugotfavucjs4i7zbrrnad.onion"
weight = 6

View File

@ -8,7 +8,7 @@ tags: [linux, astra, krb5]
В файл `/etc/hosts` необходимо добавить ip и fqdn DC:
```config
```python
<dc-ip> <dc-name>.<domain> <dc-name>
```
@ -21,7 +21,7 @@ hostnamectl set-hostname <dc-name>.<domain>
В файл `/etc/apt/sources.list.d/aldpro.list` необходимо добавить репозиторий ALD Pro:
```config
```python
deb https://download.astralinux.ru/aldpro/stable/repository-main/ 1.0.0 main
deb https://download.astralinux.ru/aldpro/stable/repository-extended/ generic main
```
@ -30,7 +30,7 @@ deb https://download.astralinux.ru/aldpro/stable/repository-extended/ generic ma
В файле `/etc/apt/preferences.d/aldpro` необходимо выставить приоритет репозиториев:
```config
```python
Package: *
Pin: release n=generic
Pin-Priority: 900

View File

@ -9,7 +9,7 @@ tags: [linux, astra, krb5, freeipa]
### Создания сетевой видимости
На клиенте и DC необходимо в файл `/etc/hosts` добавить оба ip и fqdn:
```config
```python
<server-ip> <server-name>.<domain> <server-name>
<client-ip> <client-name>.<domain> <client-name>
```

View File

@ -0,0 +1,46 @@
---
title: Полезные бинды клавиш в Windows
description: AutoHotkey v2
date: 2025-01-14T11:36:00+01:00
tags: [windows]
---
## Вступление
Для бинда клавиш я использую [AutoHotkey](https://www.autohotkey.com/download/ahk-v2.exe). Для автозапуска нужно перенести `.ahk` файлы в `shell:startup`.
## CapLang.ahk
Смена раскладки по нажатию на `CapsLock`. Сам `CapsLock` переключается через `Shift+CapsLock`.
```python
SendMode("Input")
SetWorkingDir A_ScriptDir
+CapsLock::SetCapsLockState !GetKeyState("CapsLock", "T")
CapsLock::Send "{Alt Down}{Shift Down}{Shift Up}{Alt Up}"
```
## Kitty.ahk
Запуск Kitty по нажатию на кнопку `Copilot`.
```python
SendMode("Input")
SetWorkingDir A_ScriptDir
+#f23:: Run "C:\Program Files\Kitty\kitty.exe -load <your-profile-name>"
```
## WSL.ahk
Запуск WSL по нажатию на `Ctrl+Alt+T`
```python
SendMode("Input")
SetWorkingDir A_ScriptDir
<^<!t::Run 'powershell.exe -noexit -command "cd <wsl-home-dir>; wsl"'
```
## PrintScreen.ahk
Скриншот нажатием на правый альт.
```python
SendMode("Input")
SetWorkingDir A_ScriptDir
RAlt::PrintScreen
```

View File

@ -37,7 +37,7 @@ exit
### Бэкап определённой папки
В файл `/etc/bareos/bareos-dir.d/fileset/<name>.conf` необходимо добавить настройку бэкапа определённой папки:
```config
```python
FileSet {
Name = "<name>"
Description = "<description>"

68
content/posts/cephfs.md Normal file
View File

@ -0,0 +1,68 @@
---
title: Создание CephFS
description: Конфигурация и автомонтирование
date: 2025-05-30T15:35:00+02:00
tags: [linux, ceph]
---
## Создание FS / Сервер
### Создание пула данных и меты
```bash
ceph osd pool create <fs-name>_data
ceph osd pool create <fs-name>_meta
ceph osd pool set <fs-name>_data bulk true
```
### Создание FS
```bash
ceph fs new <fs-name> <fs-name>_meta <fs-name>_data
```
### Создание пользователя
`r` - чтение\
`w` - запсись\
`s` - снапшоты\
`p` - аттрибуты
```bash
ceph fs authorize <fs-name> client.<user> / rwsp
```
## Подключение FS / Клиент
### Установка необходимых пакетов
```shell
apt install ceph-common attr
```
### Создание директории для монтирования FS
```bash
mkdir /mnt/cephfs-<fs-name>
```
### Конфиг файлы
Файл `/etc/ceph/ceph.conf` необходимо скопировать с сервера на клиент.\
В файл `/etc/ceph/ceph.client.<user>.keyring` необходимо вставить вывод команды создания клиента.\
В файл `/etc/fstab` необходимо вставить следующее:
```python
<ceph-cluster.doma.in>:6789:/ /mnt/cephfs-<fs-name> ceph name=<user>,fs=<fs-name>,noatime,_netdev
```
### Монтирование
```shell
mount -a
```
### Указание размера директории
```shell
setfattr -n ceph.quota.max_bytes -v <size-in-gb>G /mnt/cephfs-<fs-name>
```

View File

@ -12,7 +12,7 @@ apt install cifs-utils -y
## Создание файла с данными УЗ
В файл `/root/.smbuser` необходимо добавить данные УЗ для подключения к шаре:
```config
```python
username=<username>
password=<password>
domain=<domain>
@ -25,7 +25,7 @@ sudo chmod 0400 /root/.smbuser
## Развёртывание
В `/etc/fstab` необходимо добавить строку подключения к шаре:
```config
```python
//<address> /<folder> cifs credentials=/root/.smbuser,uid=<uid>,gid=<gid> 0 0
```

View File

@ -8,7 +8,7 @@ tags: [linux]
Неприятно, когда конфиг не даёт поменять себя ручками, да?
В `/etc/dhcp/dhclient.conf` необходимо добавить строки перезаписи:
```config
```python
supersede domain-name-servers <dns-1>, <dns-n>;
supersede domain-name "<domain.local>";
```

View File

@ -0,0 +1,36 @@
---
title: Конфигурация DNSSEC
description: CoreDNS
date: 2025-06-25T13:36:00+02:00
tags: [linux, coredns]
---
## Генерация ключа
```bash
dnssec-keygen -a ECDSAP256SHA256 <doma.in>
```
## Конфигурация CoreDNS
В `Corefile` доменной зоны необходимо вставить следующее:
```python
dnssec {
key file /etc/coredns/dnssec/<filename-without-extension>
}
```
И перезапустить `CoreDNS` командой:
```shell
systemctl restart coredns
```
## DS-запись
Далее необходимо добавить `DS-запись` в консоль регистратора.\
Запись можно получить выполнив следующую команду:
```bash
dnssec-dsfromkey <filename-without-extension>
```

View File

@ -14,7 +14,7 @@ tags: [linux, caddy]
### Caddy
В Caddyfile необходимо добавить секцию с поддоменом для обновления whitelist (необходимо заменить [строку basic auth](//caddyserver.com/docs/caddyfile/directives/basicauth)):
```config
```python
wh.<your.domain> {
@block {
not client_ip {$WHITE_LIST}
@ -32,7 +32,7 @@ wh.<your.domain> {
```
Пример поддомена, доступ до которого разрешён только с IP из whitelist:
```config
```python
sub.<your.domain> {
@block {
not client_ip {$WHITE_LIST}
@ -45,7 +45,7 @@ sub.<your.domain> {
```
В `caddy.service` необходимо добавить следующую строку в секцию `[Service]`:
```config
```python
Environment="WHITE_LIST=127.0.0.1/8"
```

View File

@ -0,0 +1,71 @@
---
title: Поднятие сайта в i2p
description: Caddy + i2pd
date: 2025-06-25T14:10:00+02:00
tags: [linux, i2p, caddy]
---
## Установка i2pd
```shell
apt -y install -y apt-transport-https
wget -qO - https://repo.i2pd.xyz/.help/add_repo | bash -s -
apt update
apt -y install i2pd
```
## Конфигурация i2pd
В `/etc/i2pd/tunnels.conf.d/website.conf` необходимо добавить следующее:
```python
[website]
type = http
host = 127.0.0.1
port = 80
keys = website.dat
```
И перезагрузите i2pd:
```shell
systemctl restart i2pd
```
## Регистрация адреса
В `reg.i2p` необходимо проверить незанятость желаемого `fqdn`.\
Если `fqdn` занят, но не используется, то его тоже можно занять.\
Для регистрации необходимо сгенерировать подпись:
```shell
git clone --recursive https://github.com/purplei2p/i2pd-tools
cd i2pd-tools
./dependencies.sh
make
```
```shell
./regaddr /var/lib/i2pd/website.dat <domain>.i2p
```
Полученный вывод необходимо вписать в страницу желаемого домена на `reg.i2p`.
## Конфигурация Caddy
Полный `b32` домен можно посмотреть командой:
```shell
ls /var/lib/i2pd/destinations
```
В `Caddyfile` необходимо добавить следующее:
```python
http://<domain>.i2p {
respond "i2p"
}
http://<b32-domain-before-dots>.b32.i2p {
redir http://<domain>.i2p{uri}
}
```

View File

@ -0,0 +1,29 @@
---
title: Ресайз диска
description: ext4
date: 2024-12-10T13:57:00+01:00
tags: [linux]
---
## Расширение раздела
`<disk>` - sda \
`<partition>` - 1
```shell
growpart /dev/<disk> <partition>
```
## Увеличение ФС
`<partition>` - sda1
```shell
resize2fs /dev/<partition>
```
## Очистка логов
Если совсем нет места для выполнения команд
```shell
journalctl --vacuum-time=1d
```

View File

@ -33,7 +33,7 @@ hostnamectl set-hostname <hostname>
### Правка файла hosts
Вместо правки файла `/etc/hosts` можно поднять DNS-сервер и сделать записи там.
```config
```python
<server-ip> <server-name.domain.name> <server-name>
<client-ip> <client-name.domain.name> <client-name>
```
@ -41,7 +41,7 @@ hostnamectl set-hostname <hostname>
### Редактирование конфига Kerberos
В `/etc/krb5.conf` необходимо добавить данные а реалме и kdc:
```config
```python
[libdefaults]
default_realm = <DOMAIN.NAME>
@ -77,7 +77,7 @@ quit
### Разрешение административных прав
Добавляем администратора в `/etc/krb5kdc/kadm5.acl`:
```config
```python
<admin-name>/admin
```

View File

@ -23,7 +23,7 @@ chmod 777 /nfs
В файл `/etc/exports` необходимо добавить следующую строку:
```config
```python
/nfs <client-ip>(rw,sync,no_root_squash,no_subtree_check)
```

View File

@ -0,0 +1,26 @@
---
title: Установка и конфигурация MariaDB
description: На debian-based дистрибутивы
date: 2024-01-26T16:30:00+06:00
tags: [linux, mysql]
---
## Установка MariaDB
```shell
apt install mariadb-server
```
## Security конфигурация
```shell
mysql_secure_installation
```
## Создание БД и пользователя
Для того, чтобы можно было подключиться удалённо, необходимо заменить `localhost` на `*`.
```mysql
mysql
create database <database>;
grant all privileges on <database>.* TO '<username>'@'localhost' identified by '<password>';
flush privileges;
exit
```

View File

@ -0,0 +1,32 @@
---
title: Виза цифрового кочевника Черногории
description: Општина Бар
date: 2024-07-31T09:50:00+02:00
tags: [digital nomad]
---
## Введение
В первый день приезда надо оплатить туристический налог в [туристичке](https://maps.app.goo.gl/D1nwbWVTNkySauZR6),
купить местные симки в [mtel](https://maps.app.goo.gl/MsnfLeB6FtW3CBr99) или [tcom](https://maps.app.goo.gl/i1CjHNiAa3kqbbhm8).
Все документы должны быть оригиналами с мокрой печатью. Документы из РФ апостилирования не требуют. Иноязычные документы должны быть с переводом судебного переводчика,
я рекомендую [Майю Джонович](https://wa.me/38268521593) (доставляет курьером из Подгорицы, переводит с английского и русского).
Подача документов происходит в [МУП'е](https://maps.app.goo.gl/cmf2YCaiJ9vyjHrT7) - туда нельзя в шлёпках, шортах и майке. Документы для подачи действительны 6 месяцев.
## Документы
1. Скан первой страницы паспорта;
2. Справка о несудимости (из МВД/Консульства страны гражданства);
3. Нотариальный договор аренды квартиры на 2 года;
4. Лист непокретности;
5. Квитки из туристички и об оплате пошлины (60+5+2). Пошлину платить на почте в здании МУП'а;
6. Местная медицинская страхова на 2 года (например, [Sava](https://maps.app.goo.gl/PcMrE9E3oDLkPqxj9));
7. Контракт с указанием места работы Бар, Черногория и сроком 2+ года (допники не принимают!);
8. Выписка о существовании компании. В России - это выписка из ЕГРЮЛ (без апостиля), а на Кипре - Сertificate of incorporation (с апостилем);
9. Выписка из банка об остатке на счёте в эквиваленте в евро (нужно больше 16200 евро);
10. Справка с работы, где указаны место работы Черногория, Бар, паспортные данные, должность, срок окончания контракта (2+ года) и выплаты зарплаты по месяцам.
## Очереди
По поводу очередей: в первый раз я управился с пошлинами на почте и очередью в самом МУП'е за ~30 минут, во второй раз это заняло более 3 часов.
## Важно
Информация актуальна на 31 июля 2024 года и для города Бар. В других општинах немного другие требования - вы можете посмотреть кейсы [здесь](https://t.me/DN_Montenegro).

View File

@ -0,0 +1,28 @@
---
title: Памятка по PGP/GPG
description: gnupg - export, import and renew
date: 2025-01-12T22:00:00+01:00
tags: [linux, pgp]
---
## Экспорт
```bash
gpg -a --export-secret-keys > private.asc
gpg --export-ownertrust > trust.txt
```
## Импорт
```bash
gpg --import private.asc
gpg --import public.asc
gpg --import-ownertrust trust.txt
```
## Продление
```bash
gpg --list-keys
gpg --quick-set-expire <fingerprint> 1y '*'
gpg --export <your@ema.il> | curl -T - https://keys.openpgp.org
```

View File

@ -47,7 +47,7 @@ q
### Изменение конфигруационного файла Postgres Pro
В файл `/var/lib/pgpro/std-*/data/postgresql.conf` необходимо добавить следующие строки:
```config
```python
krb_server_keyfile = 'postgres.keytab'
listen_addresses = 'localhost, <pg-ip>'
```
@ -55,7 +55,7 @@ listen_addresses = 'localhost, <pg-ip>'
### Разрешение подключения
В файл `/var/lib/pgpro/std-*/data/pg_hba.conf` необходимо добавить следующие строки:
```config
```python
hostgssenc all postgres localhost/32 gss include_realm=0
hostgssenc <database> <username> <client-ip>/32 gss include_realm=0
```

View File

@ -24,7 +24,7 @@ apt install ldap-utils -y
В файл `/etc/ldap/ldap.conf` необходимо добавить следующие строки:
```config
```python
TLS_CACERT /etc/ldap/<ad>.pem
BASE dc=<domain>,dc=<local>
URI ldaps://<dc>.<domain>.<local>:636
@ -39,7 +39,7 @@ ldapsearch -x -b "dc=<domain>,dc=<local>" -H ldaps://<dc>.<domain>.<local>:636 -
## Правка pg_hba.conf
С ldapprefix/ldapsuffix в файле `/var/lib/pgpro/std-14/data/pg_hba.conf`, возможно, придётся поколдовать. Стоит попробовать их оставить пустыми (="").
```config
```python
host <database> <user> <ip>/<mask> ldap ldapserver=<dc>.<domain>.<local> ldapscheme=ldaps ldapprefix="cn=" ldapsuffix=",cn=users,dc=<domain>,dc=<local>"
```

View File

@ -24,7 +24,7 @@ psql -c "CREATE ROLE repuser WITH REPLICATION LOGIN ENCRYPTED PASSWORD '<passwor
Дописываем в конец файла `/var/lib/pgpro/std-*/data/pg_hba.conf`:
```config
```python
host replication repuser <slave-ip>/32 md5
```
@ -32,7 +32,7 @@ host replication repuser <slave-ip>/32 md5
В файл `/var/lib/pgpro/std-*/data/postgresql.conf` необходимо добавить следующие строки:
```config
```python
listen_addresses = 'localhost, <master-ip>'
wal_level = hot_standby
archive_mode = on
@ -67,7 +67,7 @@ WAL-архивы будут складываться на NFS. Как сконф
В файл `/var/lib/pgpro/std-*/data/postgresql.conf` необходимо добавить следующие строки:
```config
```python
archive_command = 'test ! -f /nfs/%f && cp %p /nfs/%f'
archive_cleanup_command = 'pg_archivecleanup -d /nfs %r 2>>cleanup.log'
```
@ -78,7 +78,7 @@ archive_cleanup_command = 'pg_archivecleanup -d /nfs %r 2>>cleanup.log'
По умолчанию репликация работает в асинхронном режиме.
Для того, чтобы она работала в синхронном режиме, необходимо изменить две строки в конфигурационном файле Postgres Pro `/var/lib/pgpro/std-*/data/postgresql.conf`:
```config
```python
synchronous_commit = on
synchronous_standby_names = 'pgsql_0_node_0'
```

View File

@ -7,7 +7,7 @@ tags: [linux, postgres]
## Скрипт для бэкапа БД и глобальных объектов
В файл `/home/<username>/pg-backup.sh` необходимо добавить следующие строки:
```config
```python
#!/usr/bin/env bash
pg_dump -U <username> -h <pg-hostname> -Fc <db> --file=<db>-$(date '+%Y-%m-%d').dump
@ -17,7 +17,7 @@ pg_dumpall -U <username> -h <pg-hostname> --globals --file=gb-$(date '+%Y-%m-%d'
## Файл cron с запуском скрипта (каждый день в 2:00)
Необходимо дописать в конец `crontab -e -u <username>` следующие строки:
```config
```python
0 2 * * * /usr/bin/env bash /home/<username>/pg-backup.sh
```

View File

@ -9,13 +9,13 @@ tags: [linux, postgres, tls]
В этом посте я буду использовать самоподписанный сертификат, но сертификат от Let's Encrypt тоже подойдёт.
Сертификат и ключ желательно держать в той же папке, где лежат конфиги Postgres Pro.
```bash
openssl req -x509 -newkey rsa:4096 -keyout <key>.pem -out <cert>.pem -sha256 -days 365
openssl req -x509 -newkey rsa:4096 -nodes -keyout <key>.key -out <cert>.pem -sha256 -days 365
```
## Включение TLS
В файл `/var/lib/pgpro/std-*/data/postgresql.conf` необходимо добавить следующие строки:
```config
```python
ssl = on
ssl_cert_file = '<cert>.pem'
ssl_key_file = '<key>.pem'
@ -25,7 +25,7 @@ listen_addresses = 'localhost, <master-ip>'
## Разрешение доступа через TLS
В файл `/var/lib/pgpro/std-*/data/pg_hba.conf` необходимо добавить следующие строки:
```config
```python
hostssl <user> <database> <client-ip> scram-sha-256
```

View File

@ -0,0 +1,20 @@
---
title: Конвертация PostgreSQL в CSV
description: pSQL to CSV
date: 2024-09-11T17:24:00+02:00
tags: [linux, postgres]
---
## Конвертация
```bash
psql -d <database>
```
```psql
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT table_name FROM information_schema.tables WHERE table_schema = 'public') LOOP
EXECUTE format('COPY %I TO %L WITH (FORMAT CSV, HEADER)', r.table_name, '/<path-to-csv>/' || r.table_name || '.csv');
END LOOP;
END $$;
```

View File

@ -0,0 +1,52 @@
---
title: Обновление Proxmox 7 -> Proxmox 8
description: И дошлифовка
date: 2024-12-10T14:05:00+01:00
tags: [linux]
---
## Актуализация ОС
```shell
apt -y update
apt -y dist-upgrade
```
## Проверка готовности обновления
```shell
pve7to8 --full
```
## Актуализация репозиториев
```shell
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list
```
## Обновление ОС и PVE
```shell
apt -y update
apt -y dist-upgrade
init 6
```
## Дошлифовка
```shell
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/post-pve-install.sh)"
```
## Ограничение потребление RAM zfs'ом
В `/etc/modprobe.d/zfs.conf` добавить следующую строку (2GB на 1TB):
```python
options zfs zfs_arc_max=4294967296
```
Применение и перезагрузка
```shell
update-initramfs -u -k all
init 6
```

View File

@ -0,0 +1,35 @@
---
title: Активация и автоматические обновления в RHEL 9
description: Небольшая памятка
date: 2025-02-27T23:10:00+01:00
tags: [linux, rhel]
---
## Активация
```shell
subscription-manager register --auto-attach
insights-client --register
```
## Автоматическая установка обновлений
```shell
yum -y install dnf-automatic
systemctl enable --now dnf-automatic-install.timer
```
## Установка расширенного репозитория
```shell
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
```
## Отключение дампов ядра
```shell
systemctl disable --now kdump
grubby --update-kernel=ALL --remove-args="crashkernel"
init 6
```

View File

@ -65,7 +65,7 @@ chmod +x /usr/local/bin/rubyc
## Правка запускаемого файла собираемой утилиты
В запускаемый файл `exe/<ruby-util>` (обычно лежит в exe или bin) необходимо добавить в самое начало следующие строки:
```config
```python
#!/usr/bin/env ruby
require 'rubygems'

View File

@ -7,7 +7,7 @@ tags: [linux, astra, alt, tls]
## Получение корневого сертификата
```bash
echo quit | openssl s_client -showcerts -servername <websi.te> -connect <websi.te>:443 > <certificate>.pem
echo quit | openssl s_client -showcerts -servername <websi.te> -connect <websi.te>:443 > <certificate>.crt
```
## Astra Linux
@ -15,7 +15,7 @@ echo quit | openssl s_client -showcerts -servername <websi.te> -connect <websi.t
### Перемещение сертификата
```shell
cp <certificate>.pem /usr/local/share/ca-certificates
cp <certificate>.crt /usr/local/share/ca-certificates
```
### Обновление состава доверенного хранилища
@ -29,7 +29,7 @@ dpkg-reconfigure ca-certificates
### Перемещение сертификата
```shell
cp <certificate>.pem /etc/pki/ca-trust/source/anchors/
cp <certificate>.crt /etc/pki/ca-trust/source/anchors/
```
### Обновление состава доверенного хранилища

View File

@ -13,14 +13,14 @@ apt install -y openssh-server libpam-google-authenticator
## Правка конфига PAM
В файл `/etc/pam.d/common-auth` необходимо добавить следующее:
```config
```python
auth required pam_google_authenticator.so
```
## Правка конфига ssh
В файл `/etc/ssh/sshd_config` необходимо добавить следующее:
```config
```python
ChallengeResponseAuthentication yes
```
@ -34,12 +34,12 @@ google-authenticator
## Управление факторами (необязательно)
Для запроса ключа при аутентификации необходимо в файл `/etc/ssh/sshd_config` добавить следующее:
```config
```python
AuthenticationMethods publickey,password publickey,keyboard-interactive
```
Для отключения запроса пароля при аутентификации необходимо в файле `/etc/pam.d/sshd` закомментировать следующюю строку:
```config
```python
# @include common-auth
```

View File

@ -11,7 +11,7 @@ apt -y install fail2ban
## Правило для ssh
В файл `/etc/fail2ban/jail.d/sshd.conf` необходимо добавить следующее:
```config
```python
[sshd]
enabled = true
port = <ssh-port>

View File

@ -0,0 +1,24 @@
---
title: Автомонтирование SSHFS
description: SSHFS + fstab
date: 2024-09-19T13:28:00+02:00
tags: [linux, ssh]
---
## Установка пакета на клиенте
```shell
apt -y install sshfs
```
## Добавление строки в /etc/fstab
```python
<user>@<server-fqdn>:<remote-dir> <local-dir> sshfs allow_other,reconnect 0
```
## Проверка монтирования
```shell
mount -a
```

View File

@ -0,0 +1,31 @@
---
title: Создание SWAP-файла
description: Файл подкачки в GNU/Linux
date: 2025-01-12T22:10:00+01:00
tags: [linux]
---
## Создания
Размер файла подкачки
RAM `<= 2GB`, SWAP `x2`\
RAM `2GB - 8GB`, SWAP `x1`\
RAM `>= 8GB`, SWAP `>= 4GB`
```shell
fallocate -l <size-in-gb>G /swap
chmod 600 /swap
mkswap /swap
swapon /swap
```
## Автомонтирование
В конец `/etc/fstab` необходимо добавить следующую строку
```python
/swap none swap sw 0 0
```
И проверим корректность записи
```shell
mount -a
```

View File

@ -0,0 +1,63 @@
---
title: Поднятие сайта в TOR
description: Caddy + torrc
date: 2025-06-25T14:02:00+02:00
tags: [linux, tor, caddy]
---
## Генерация vanity адреса
```bash
docker run -it nwtgck/mkp224o
mkp224o <domain-start-with> -s
```
Формула для вычисления ожидаемого времени генерации:
```python
32^<number-of-characters>/<calc/sec> = <eta-in-seconds>
```
## Установка и конфигурация TOR
Установка TOR:
```shell
apt -y install tor
```
Следующие строки необходимо добавить в `/etc/tor/torrc`:
```python
HiddenServiceDir /var/lib/tor/website
HiddenServicePort 80 127.0.0.1:80
```
Файлы, сгенерированные `mkp224o`, необходимо добавить в директорию `/var/lib/tor/website`:
```shell
mkdir /var/lib/tor/website
mv <domain>.onion/* /var/lib/tor/website
chown -R debian-tor: /var/lib/tor/website
chmod -R 700 /var/lib/tor/website
```
## Конфигурация Caddy
В `Caddyfile` необходимо добавить следующее:
```python
<cleanet-doma.in> {
header Onion-Location http://<domain>.onion{uri}
respond "cleanet"
}
http://<domain>.onion {
respond "onion"
}
```
## Перезапуск сервисов
```shell
systemctl restart tor
systemctl restart caddy
```

View File

@ -50,7 +50,7 @@ secret-tool store --label "com.quexten.bitwarden-biometrics-handler" account <us
## Правка конфига Firefox
Необходимо создать файл `~/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json` со следующим содержимым:
```config
```python
{
"name": "com.8bit.bitwarden",
"description": "Bitwarden desktop <-> browser bridge",

View File

@ -0,0 +1,32 @@
---
title: Эмуляция ввода текста из буфера обмена
description: Для GNU/Linux
date: 2024-10-24T17:07:00+02:00
tags: [linux]
---
## Установка и удаление пакетов
```shell
dnf install xclip xdotool
rpm --nodeps -e xdg-desktop-portal-gnome
```
## Создание исполняемого файла
В файл `/usr/local/bin/easyclipboard` необходимо добавить следующее:
```json
#!/bin/bash
xclip -selection clipboard -out | tr \\n \\r | xdotool selectwindow windowfocus type --clearmodifiers --delay 25 --window %@ --file -
```
## Выдача прав на исполнение
```shell
chmod +x /usr/local/bin/easyclipboard
```
## ShortCut
Далее необходимо забиндить исполняемый файл на какой-нибудь shortcut (например, `Ctrl+E`) и можно пользоваться.
При нажатии комбинации клавиш текст из буфера обмена вводится по-буквенно (очень помогает с vnc/crd и подобным).

View File

@ -0,0 +1,29 @@
---
title: Отключение AppArmor в Ubuntu 24.04
description: purge apparmor
date: 2024-10-09T10:51:00+02:00
tags: [linux, security]
---
## Выключение сервиса
```shell
systemctl disable --now apparmor
```
## Удаление AppArmor
```shell
apt remove --assume-yes --purge apparmor
```
## Перезагрузка
```shell
init 6
```
## Одной командой
```shell
systemctl disable --now apparmor && apt remove --assume-yes --purge apparmor && init 6
```

View File

@ -9,7 +9,7 @@ tags: [vmware]
В файл `/etc/vmware/config` необходимо добавить следующее:
```config
```python
vmx.fullpath = "/bin/vmx"
isolation.tools.copy.disable="FALSE"
isolation.tools.paste.disable="FALSE"

View File

@ -9,7 +9,7 @@ tags: [vmware]
В файл `/etc/rc.local.d/local.sh` необходимо добавить следующее:
```config
```python
#!/bin/sh ++group=host/vim/vmvisor/boot
esxcli system time set --day=20 --month=3 --year=2022 --hour=10 --min=0 --sec=0

72
content/posts/wg.md Normal file
View File

@ -0,0 +1,72 @@
---
title: WireGuard. Установка и настройка
description: Сервер и клиент
date: 2024-06-05T17:37:00+06:00
tags: [linux, wireguard]
---
## Подготовка
На сервере и клиенте необходимо установить пакет `wireguard` и сгенерировать публичный и приватный ключи:
```shell
apt install wireguard
```
```bash
cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey
```
## Конфигурация сервера
### Форвардинг пакетов
В файл `/etc/sysctl.conf` необходимо добавить следующие строки:
```python
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
```
И подгрузить эти значения командой `sysctl -p`
### Конфигурация WireGuard
В файл `/etc/wireguard/<conn-name>.conf` необходимо дописать следующее:
```python
[Interface]
PrivateKey = <private-key>
Address = 172.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o <interface> -j MASQUERADE
ListenPort = 51820
[Peer]
PublicKey = <public-key>
AllowedIPs = 172.0.0.2/32
```
`<public-key>` - содержимое файла `/etc/wireguard/publickey` клиента\
`<private-key>` - содержимое файла `/etc/wireguard/privatekey` сервера\
`<interface>` - имя сетевого интерфейса
### Включение WireGuard при запуске сервера
```shell
systemctl enable --now wg-quick@<conn-name>.service
```
## Конфигурация клиента
### Конфигурация WireGuard
В файл `/etc/wireguard/<conn-name>.conf` необходимо дописать следующее:
```python
[Interface]
Address = 172.0.0.2/32
PrivateKey = <private-key>
DNS = 1.1.1.1
[Peer]
PublicKey = <public-key>
Endpoint = <server-addr>:51820
AllowedIPs = <allowed-ips>
```
`<public-key>` - содержимое файла `/etc/wireguard/publickey` сервера\
`<private-key>` - содержимое файла `/etc/wireguard/privatekey` клиента\
`<server-addr>` - публичный адрес сервера\
`<allowed-ips>` - IP-адреса, соединения с которыми будут идти через `WireGuard`
### Включение WireGuard при запуске клиента
```shell
systemctl enable --now wg-quick@<conn-name>.service
```
## Примечание
На сервере должен быть открыт порт `51820/udp`. Для добавления новых клиентов `WireGuard` необходимо в конфигурацию сервера добавлять блоки `[Peer]`.

View File

@ -8,7 +8,7 @@ tags: [windows]
## Отключение
В ветке реестра выставить значение value на 1.
```config
```python
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideRestart
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideSleep

View File

@ -1,6 +1,7 @@
<pre><ascii> _._ _,-'""`-._
(,-.`._,'( |\`-/|
`-.-' \ )-`( , o o)
`- \`_`"'-</ascii>
<pre><ascii> ▄ .▄▄▄▄ .▄▄▌ ▄▄▌ there
██▪▐█▀▄.▀·██• ██•
██▀▐█▐▀▀▪▄██▪ ██▪ ▄█▀▄
██▌▐▀▐█▄▄▌▐█▌▐▌▐█▌▐▌▐█▌.▐▌
▀▀▀ · ▀▀▀ .▀▀▀ .▀▀▀ ▀█▄▀▪</ascii>
<a href="//github.com/fruworg/fruworg.github.io">opensource, js&cookie free</a></pre>

BIN
static/background.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 764 KiB

1
static/id_rsa.pub Normal file
View File

@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnVogG3iyXtY4dvLmmAwDAJRzTzfuUeP0LcD0zRrua8YOBKcSXyAh2Z/VSlwZeJOa9vcKDWJ+bWS9mq4WtL1nMTwbzZBp64wuuucq9ANpBzeS3WawY7DBU/qt5GjlBRI+tohZUVUOx35Q7WMjmAoopr6upLDq9zm6imTj6KGhEdeTDmn7dnhSaPAxqFbO4mlzqAZ6PUvjUyk119C4V5hp3wRjP6KXRIsPVpEKFXnJ26WubOg2qyoSr2UYQa3O9L0iaxUwMLg7s9eauGs2PIcqtUmu2UfNihKrBbmgvA/4wg0/odbMnbMXtCIeBWkuTBOfUzmH8FAEIKUTkl7nJvVj+0VNwRbIj8Nb85u0lex9rBZSOzoGd8tylly9t2Db5uT8paGFTlUAwVLns810V0b9tkXG0CpaH7ZNLOkTv7ISYIykED+Kb/ap4DfzauPAdraUmIWunr8l+Rvba16XqKZy7IEVKZsPF6XfK1Lywi65q9E6JDZ4ozAlIV8l73FWGHps=