fix
ci/woodpecker/push/woodpecker Pipeline was successful Details

main
TheSt1tch 4 weeks ago
parent 0eeedfad7d
commit 57745bc0b1

@ -0,0 +1,8 @@
# ImageMaid - очистка канртинок для библиотеки
[![](https://img.shields.io/github/stars/Kometa-Team/ImageMaid?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Kometa-Team/ImageMaid)
[![](https://img.shields.io/github/v/release/Kometa-Team/ImageMaid?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Kometa-Team/ImageMaidreleases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/kometateam/imagemaid.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/kometateam/imagemaid/)
![](https://github.com/Kometa-Team/ImageMaid/raw/master/cleanup.png)

@ -0,0 +1,51 @@
# Vaultwarden - Неофициальный сервер, совместимый с Bitwarden
```yaml
services:
## Bitwarden - Password Vault
bitwarden:
container_name: bitwarden
image: vaultwarden/server:latest
restart: always
ports:
- "80:80"
- "3012:3012"
security_opt:
- no-new-privileges:true
volumes:
- ./vaultwarden:/data
- /var/log/docker:/var/log/docker
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
#- SIGNUPS_ALLOWED=true # Change to false after first login
- INVITATIONS_ALLOWED=true # Send invitation using admin page
- WEBSOCKET_ENABLED=true
- LOG_FILE=/var/log/docker/bitwarden.log
- ADMIN_TOKEN=${BW_ADMIN_TOKEN}
- DATABASE_URL=$DATABASE_URL
#- DISABLE_ADMIN_TOKEN=false
postgres:
container_name: postgres
image: docker.io/library/postgres:14-alpine
restart: always
ports:
- "5432:5432"
environment:
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
- POSTGRES_PASSWORD=$PG_ROOT_PASSWORD
security_opt:
- no-new-privileges:true
volumes:
- $DOCKER_APP/postgres:/bitnami/postgresql
- $DOCKER_APP/db-backup:/dbbackup
- /etc/localtime:/etc/localtime:ro
#healthcheck:
# test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
# interval: 1s
# timeout: 5s
# retries: 10
```

@ -0,0 +1,47 @@
# Woodpecker - простой, но мощный движок CI/CD
Woodpecker — простой, но мощный движок CI/CD с большими возможностями расширения.
Woodpecker использует Docker-контейнеры для выполнения этапов конвейера.
![](../../images/docker/woodpecker.png)
[![](https://img.shields.io/github/stars/woodpecker-ci/woodpecker?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/woodpecker-ci/woodpecker)
[![](https://img.shields.io/github/v/release/woodpecker-ci/woodpecker?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/woodpecker-ci/woodpecker/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/woodpeckerci/woodpecker-server.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/woodpeckerci/woodpecker-server)
## Что такое CI/CD или конвейеры?
CI/CD означает **Continuous Integration and Continuous Deployment** (непрерывная интеграция и непрерывное развертывание). По сути, это конвейерная лента, которая перемещает ваш код из разработки в производство, выполняя всевозможные проверки, тесты и процедуры по пути. Типичный конвейер может включать следующие шаги:
1. Проведение тестов
2. Создание вашего приложения
3. Развертывание вашего приложения
[Более глубокое изучение самое идеи CI/CD](https://blog.skillfactory.ru/glossary/ci-cd/)
## Развертывание Woodpecker
Развертывание Woodpecker состоит из 2 частей:
- Сервер, являющийся сердцем системы и предоставлюящий веб интерфейс
- Агенты, которык запускают конвееры
Каждый агнет может обрабатывать 1 рабочий процесс. То есть 6 агентов могут обрабатывать 6 рабочих процессов параллельно.
### Системный требования
Минимальные требования:
- Сервер: CPU 1 ядро, RAM 200 Mb
- Агент: CPU 1 ядро, RAM 32 Mb
Так же потребуется база данных, которой тоже нужны будут ресурсы.
### Docker Compose
Устанавливать будем через Docker Compose, используя базу данных SQLite, которая не требует установки или настройки. Посмотреть настройки для других баз данных можно на [странице](https://woodpecker-ci.org/docs/administration/database)
https://woodpecker-ci.org/docs/intro
https://woodpecker-ci.org/docs/administration/getting-started
https://woodpecker-ci.org/docs/administration/deployment-methods/docker-compose

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

@ -0,0 +1,112 @@
# Mushroom Cards
## Выпадающий список к карточке
Объединение нескольких карточек, для управления подсветкой ТВ и медиаплеером
![](https://community-assets.home-assistant.io/original/4X/6/0/0/6002f8a3af520e53d3f95f8bb5e061c1bd4d1554.gif)
??? example title="Пример"
```yaml
type: custom:stack-in-card
cards:
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: auto 20px
margin: '-4px -4px -8px -4px'
cards:
- type: custom:mushroom-media-player-card
entity: media_player.shield_universal
name: Shield TV
icon: mdi:play
use_media_info: true
use_media_artwork: false
show_volume_level: true
media_controls:
- on_off
- play_pause_stop
- previous
- next
volume_controls:
- volume_set
- volume_mute
fill_container: true
card_mod:
style: |
mushroom-shape-icon {
{% set media_type = state_attr(config.entity, 'media_content_type') %}
--card-mod-icon:
{% if media_type == 'tvshow' %}
mdi:television-classic
{% elif media_type == 'movie' %}
mdi:movie-open
{% elif media_type == 'music' %}
mdi:music
{% elif media_type == 'playlist' %}
mdi:music
{% else %}
mdi:play
{% endif %};
}
:host {
{% if not is_state(config.entity, 'off') %}
background: url( '{{ state_attr(config.entity, "entity_picture") }}' ), linear-gradient(to left, transparent, rgb(var(--rgb-card-background-color)) 50%);
{% endif %}
background-size: 50%, 100%;
background-position: right;
background-repeat: no-repeat;
background-blend-mode: lighten;
}
:host([dark-mode]) {
background-blend-mode: darken;
}
ha-card {
background: none;
--ha-card-box-shadow: 0px;
}
- type: custom:mushroom-template-card
entity: input_boolean.ambilight_dropdown
primary: ''
secondary: ''
icon: >-
{{ 'mdi:chevron-down' if is_state(entity, 'off') else 'mdi:chevron-up'
}}
icon_color: disabled
hold_action:
action: none
card_mod:
style: |
ha-card {
align-items: flex-end;
background: none;
--ha-card-box-shadow: 0px;
}
mushroom-shape-icon {
--shape-color: none !important;
}
- type: conditional
conditions:
- entity: input_boolean.ambilight_dropdown
state: 'on'
card:
type: custom:stack-in-card
cards:
- type: custom:mushroom-light-card
entity: light.ambilight_wled
icon: mdi:television-ambient-light
name: Ambilight
layout: horizontal
show_brightness_control: true
show_color_temp_control: true
show_color_control: true
use_light_color: true
card_mod:
style: |
ha-card {
background: none;
--ha-card-box-shadow: 0px;
}
```

@ -0,0 +1,32 @@
# Ansible
Ставим на Debian 12
Хотя Ansible доступен в [основном репозитории Debian](https://packages.debian.org/stable/ansible) , он может быть устаревшим.
Чтобы получить более новую версию, пользователи Debian могут использовать Ubuntu PPA в соответствии со следующей таблицей:
| **Debian** | | **Ubuntu** | **UBUNTU_CODENAME** |
|----|----|----|----|
| Debian 12 (Bookworm) | -> | Ubuntu 22.04 (Jammy) | jammy |
| Debian 11 (Bullseye) | -> | Ubuntu 20.04 (Focal) | focal |
| Debian 10 (Buster) | -> | Ubuntu 18.04 (Bionic) | bionic |
В следующем примере мы предполагаем, что у вас уже установлены wget и gpg `sudo apt install wget gpg`
Выполните следующие команды, чтобы добавить репозиторий и установить Ansible. Установите `UBUNTU_CODENAME=...` на основе таблицы выше (мы используем `jammy` в этом примере).
```bash
$ UBUNTU_CODENAME=jammy
$ wget -O- "https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" | sudo gpg --dearmour -o /usr/share/keyrings/ansible-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/ansible-archive-keyring.gpg] http://ppa.launchpad.net/ansible/ansible/ubuntu $UBUNTU_CODENAME main" | sudo tee /etc/apt/sources.list.d/ansible.list
$ sudo apt update && sudo apt install ansible
```
!!! Note
" " вокруг URL-адреса сервера ключей важны. Вокруг "echo deb" важно использовать " ", а не ' '.
Эти команды загружают ключ подписи и добавляют запись в источники apt, указывающую на PPA.
Ранее вы могли использовать `apt-key add` . Теперь это [устарело](https://manpages.debian.org/testing/apt/apt-key.8.en.html) по соображениям безопасности (в Debian, Ubuntu и других местах). Для получения более подробной информации см. [этот пост AskUbuntu](https://askubuntu.com/a/1307181) . Также обратите внимание, что по соображениям безопасности мы НЕ добавляем ключ в `/etc/apt/trusted.gpg.d/`, или туда `/etc/apt/trusted.gpg`, где было бы разрешено подписывать релизы из ЛЮБОГО репозитория.

@ -0,0 +1,102 @@
# Semaphore
!!! note
Ansible Semaphore — это веб-интерфейс для запуска Ansible-плейбуков с расширенными возможностями:
- объединение Ansible-плейбуков в проекты;
- запуск задач по расписанию;
- хранение и просмотр логов выполнения задач;
- управление правами доступа;
- уведомления на электронную почту и в Telegram.
Ansible Semaphore написан на Go и распространяется с исходным кодом под свободной лицензией.
## Подготовка
Для установки, нужен хост, где уже стоит и одна из СУБД: MariaDB, BoltDB либо PostgreSQL.
### Установка MariaDB
Добавляем репозиторий MariaDB
```
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
sudo bash mariadb_repo_setup
```
Устанавливаем СУБД
```
sudo apt -y install MariaDB-server MariaDB-client MariaDB-backup
```
Запускаем сервис
```
sudo systemctl enable --now mariadb
systemctl status mariadb
```
Запускаем скрипт инициализации и настройки
```
sudo mariadb-secure-installation
```
Создаем пользователя и базу
```
mysql -u root -p
CREATE DATABASE semaphoredb;
GRANT ALL PRIVILEGES ON semaphore.* TO 'semaphore'@'localhost' IDENTIFIED BY 'semaphorepass';
exit
```
### Установка PostgreSQL 15
Добавляем репозиторий PostgreSQL
```
sudo apt -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo apt update -y
```
Отключаем модуль postgresql, что не не устанавливался PostgreSQL из дефолтных репозиториев
```
sudo apt -qy module disable postgresql
```
Устанавливаем PostgreSQL 15
```
sudo apt install -y postgresql15-server
```
Инициализируем БД
```
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
```
Правим конфиг pg_hba.conf
```
sudo nano /var/lib/pgsql/15/data/pg_hba.conf
...
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
...
```
Запускаем PostgreSQL
```
sudo systemctl enable postgresql-15 --now
sudo systemctl status postgresql-15
```
Устанавливаем пароль пользователя postgres
```
sudo -u postgres psql
=# ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';
```
Создаем пользователя и базу для Ansible Semaphore
```
=# CREATE USER semaphore WITH ENCRYPTED PASSWORD 'semaphorepass';
=# CREATE DATABASE semaphoredb OWNER semaphore;
=# GRANT ALL PRIVILEGES ON DATABASE semaphoredb TO semaphore;
=# \l
=# \q
```
### Установка Git
Устанавливаем git, смотрим версию
```
sudo apt -y install git
git --version
```

@ -0,0 +1,111 @@
# Fail2ban для SSH
ЛЮбой сервер переодически становится целью для попытки взлома. Чаще всего, это происходит ботом и носит случайный характер. Бот ищет в сети доступные для подключения по SSH сервера и пробует подключиться к ним методом перебора логина и пароля.
Для защиты от атак можно использовать программу **Fail2ban**. Она отслеживает логи подключения к серверу и в случае превышения определенного количества попыток, блокирует IP.
Далее будет инструкция, как установить, настроить и запустить **Fail2ban** на своем сервере.
Устонавливать будем на Debian 12
## Установка
Для начала обновим список пакетов apt:
```
sudo apt update
sudo apt upgrade
```
После устанавливаем **Fail2ban**:
```
sudo apt install fail2ban
```
Теперь активируем Fail2ban, для добавления в автозапуск при запуске ОС:
```
sudo systemctl enable fail2ban
```
Осталось проверить и настроить параметры фильтрации, согласно которым будет происходить блокировка IP.
## Настройка
По умолчанию Fail2ban использует правила блокировки, указанные в файле `jail.conf`. Это системный файл, который обновляется вместе с программой, поэтому использовать его в качестве основного файла с параметрами блокировки не рекомендуется.
Мы создадим собственный конфигурационный файл `jail.local`. Система приоритетов в Fail2ban настроена таким образом, что в качестве основных применяются правила, указанные в `jail.local`.
## Структура конфигурационного файла
Конфигурационный файл Fail2ban состоит из так называемых jail-ов — отдельных блоков правил для разных служб. В одном файле `jail.local` можно не только указать все правила для всех сетевых служб сервера, но и управлять их включением и выключением.
Структура всех jail-ов одинакова:
В первой строке в квадратных скобках указывают название службы, к которой будет применяться следующий ниже набор правил. В нашем случае это [sshd].
Далее определяют параметр enabled, отвечающий за включение или отключение данного jail-а. Мы установим его true, чтобы наш jail был активен.
После этого указывают условия блокировки: максимальное количество попыток подключения (maxretry), время, за которое эти попытки были произведены (findtime), и время, на которое нужно запретить доступ с этого IP (bantime).
В последней части jail-а указывают IP-адреса, которые считаются надёжными (ignoreip), например, IP-адрес вашего домашнего компьютера.
Мы рекомендуем добавить в строку ignoreip домашний адрес вашего компьютера, чтобы в случае особо жёстких настроек фильтрации программа не заблокировала вам доступ к серверу — например, после нескольких неудачных попыток ввода пароля.
Создадим конфигурационный файл:
```
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 6
findtime = 1h
bantime = 1d
ignoreip = 127.0.0.1/8 23.34.45.56
```
Этот набор условий означает, что IP-адрес, с которого было произведено 6 неудачных попыток SSH-подключения за последний час (3600 секунд), будет заблокирован на одни сутки (86400 секунд). Не будут блокироваться IP-адреса в диапазоне от 127.0.0.1 до 127.0.0.8 и адрес 23.34.45.56.
Время для параметров findtime и bantime можно указывать не только в секундах, но и в минутах, часах, днях и даже неделях. Для этого необходимо сразу после численного значения параметра указать соответствующую букву (m, h, d, w).
## Получение уведомлений
После строки с указанием надёжных IP можно добавить параметр, отвечающий за отправку на e-mail уведомлений о заблокированных IP.
Добавьте в конфигурационный файл строку:
destemail=admin@example.com
Теперь на указанную здесь почту будут приходить уведомления о каждом заблокированном программой IP-адресе.
Чтобы получать более детальную информацию о заблокированных IP, на сервер можно установить службу whois:
sudo apt install whois
В этом случае в письма о блокировке будут добавлены более подробные сведения, получаемые службой whois.
Будьте внимательны при настройке уведомлений!
Fail2ban отправляет отдельным письмом сведения о каждом заблокированном IP, а в случае брутфорс-атаки количество IP, с которых проводится подключение, может достигать нескольких сотен.
## Начало работы
После создания конфигурационного файла, содержащего все необходимые правила, можно запускать Fail2ban и наблюдать за его работой.
Команда для запуска программы:
sudo systemctl start fail2ban
Команда для вывода на экран сведений о работе jail-а, отвечающего за службу sshd:
sudo fail2ban-client status sshd
Если в данный момент сервер не подвергается атаке, сразу после установки и запуска программы на экране будет следующая информация:
```
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
```
Здесь приведены сведения о попытках подключения к серверу и о заблокированных IP-адресах.
Если вы решите изменить настройки, указанные в конфигурационном файле `jail.local`,` не забудьте перезапустить Fail2ban, чтобы изменения вступили в силу:
```
sudo systemctl restart fail2ban
```
!!! warning title="Обрати внимание"
Некоторые современные программы для брутфорса могут «обходить» заданные по умолчанию значения fail2ban. Например, делать 4 попытки подключения в течение 1 часа, ждать оставшееся время и пробовать подключиться заново. Поэтому мы рекомендуем установить собственные значения для всех условий.

@ -172,6 +172,8 @@ nav:
- Package: - Package:
- smart-home/hass/package/index.md - smart-home/hass/package/index.md
- Будильник: smart-home/hass/package/budilnik.md - Будильник: smart-home/hass/package/budilnik.md
- Dashboards:
- Mushroom Cards: smart-home/hass/dashboard/mushroom-cards.md
- Device: - Device:
- Xiaomi Airpurifier: smart-home/hass/device/xiaomi-airpurifier.md - Xiaomi Airpurifier: smart-home/hass/device/xiaomi-airpurifier.md
- Автоматизации: - Автоматизации:

Loading…
Cancel
Save