Compare commits
17 Commits
5174e06ce5
...
gitea-draf
| Author | SHA1 | Date | |
|---|---|---|---|
| 08a4112420 | |||
| a420980165 | |||
| c4ce5155fe | |||
| e34afe876c | |||
| b24d95ac83 | |||
| 0891a4dcc1 | |||
| c8d7f83fcc | |||
| abd5f2c97a | |||
| 868dec5ab3 | |||
| 4ef1bedad7 | |||
| 0f7e022a5f | |||
| 25cc09b930 | |||
| 7f0d996c00 | |||
| 69653d9883 | |||
| 49fc40b1f7 | |||
| 534f950565 | |||
| 7f7bdfa749 |
28
docs/assets/logo.svg
Normal file
28
docs/assets/logo.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 175.000000 198.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,198.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#ffffff" stroke="none">
|
||||||
|
<path d="M202 1689 l-92 -231 250 -620 c137 -342 262 -639 277 -661 31 -45 98
|
||||||
|
-92 153 -107 47 -13 155 -13 205 1 58 16 123 65 155 116 32 49 100 214 100
|
||||||
|
240 0 28 -153 434 -160 426 -4 -4 -42 -102 -85 -218 -42 -115 -86 -219 -96
|
||||||
|
-230 -19 -19 -19 -19 -38 0 -10 11 -40 78 -66 150 -26 72 -89 243 -140 380
|
||||||
|
-51 138 -152 412 -225 610 -73 198 -135 363 -139 367 -3 4 -48 -97 -99 -223z"/>
|
||||||
|
<path d="M783 1906 c-60 -19 -107 -51 -139 -93 -27 -36 -114 -232 -114 -259 0
|
||||||
|
-12 59 -178 130 -366 12 -32 25 -58 29 -58 4 0 43 96 86 213 43 116 85 220 95
|
||||||
|
230 16 17 17 17 37 0 14 -12 111 -262 289 -743 147 -399 271 -736 276 -750 9
|
||||||
|
-22 22 5 104 209 l93 234 -229 573 c-126 315 -241 598 -255 629 -35 79 -75
|
||||||
|
126 -137 160 -45 24 -66 29 -138 32 -52 2 -101 -2 -127 -11z"/>
|
||||||
|
<path d="M1412 1737 c-34 -94 -62 -178 -62 -185 0 -20 173 -443 179 -437 2 3
|
||||||
|
35 80 73 171 l67 165 -91 230 c-51 126 -94 229 -97 229 -3 0 -34 -78 -69 -173z"/>
|
||||||
|
<path d="M834 1116 c-35 -16 -72 -58 -80 -93 -17 -67 30 -145 99 -164 83 -22
|
||||||
|
159 29 172 116 15 101 -97 184 -191 141z"/>
|
||||||
|
<path d="M242 850 c-5 -14 -36 -90 -68 -169 -31 -79 -57 -150 -57 -156 0 -17
|
||||||
|
176 -455 183 -455 7 0 130 333 130 353 0 15 -151 402 -170 437 -7 12 -10 10
|
||||||
|
-18 -10z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -1,6 +1,4 @@
|
|||||||
---
|
# git-filter-repo
|
||||||
title: git-filter-repo
|
|
||||||
---
|
|
||||||
|
|
||||||
С помощью [git-filter-repo](https://github.com/newren/git-filter-repo/) можно переписать историю репозитория.
|
С помощью [git-filter-repo](https://github.com/newren/git-filter-repo/) можно переписать историю репозитория.
|
||||||
|
|
||||||
|
|||||||
86
docs/misc/gitea.md
Normal file
86
docs/misc/gitea.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Кастомизация Gitea
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo su - git
|
||||||
|
cd /var/lib/gitea/custom
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p /var/lib/gitea/custom/public/css
|
||||||
|
mkdir -p /var/lib/gitea/custom/templates/custom
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nano /var/lib/gitea/custom/templates/custom
|
||||||
|
```
|
||||||
|
|
||||||
|
```html
|
||||||
|
<link rel="stylesheet" href="/custom/css/custom.css">
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo -u git mkdir css
|
||||||
|
sudo -u git nano css/custom.css
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nano /etc/gitea/app.ini
|
||||||
|
```
|
||||||
|
https://docs.gitea.com/administration/customizing-gitea
|
||||||
|
https://docs.gitea.com/administration/config-cheat-sheet
|
||||||
|
|
||||||
|
```ini title="app.ini"
|
||||||
|
[server]
|
||||||
|
LANDING_PAGE = explore
|
||||||
|
|
||||||
|
[other]
|
||||||
|
SHOW_FOOTER_VERSION = false
|
||||||
|
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false
|
||||||
|
SHOW_FOOTER_POWERED_BY = false
|
||||||
|
ENABLE_FEED = false
|
||||||
|
|
||||||
|
[i18n]
|
||||||
|
LANGS = en-US,ru-RU
|
||||||
|
NAMES = English,Русский
|
||||||
|
|
||||||
|
[repository]
|
||||||
|
DISABLE_STARS = true
|
||||||
|
|
||||||
|
[ui.meta]
|
||||||
|
AUTHOR = Artem Tishenko: Personal Git Repository Hub
|
||||||
|
DESCRIPTION = A personal hub for managing Git repositories by Artem Tishenko.
|
||||||
|
KEYWORDS = Artem Tishenko, Artyom Tishchenko, Git, self-hosted, personal projects, repositories, Gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p /var/lib/gitea/custom/templates/base
|
||||||
|
cd /var/lib/gitea/custom/templates/base
|
||||||
|
# перейти туда
|
||||||
|
wget https://raw.githubusercontent.com/go-gitea/gitea/refs/tags/v1.22.3/templates/base/footer_content.tmpl
|
||||||
|
|
||||||
|
# remove help - https://docs.gitea.com
|
||||||
|
# remove explore - explore.repos
|
||||||
|
# remove sign_in (just visit /user/login)
|
||||||
|
wget https://github.com/go-gitea/gitea/raw/refs/tags/v1.22.3/templates/base/head_navbar.tmpl
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p /var/lib/gitea/custom/templates/repo
|
||||||
|
cd /var/lib/gitea/custom/templates/repo
|
||||||
|
# remove packages
|
||||||
|
# remove wiki
|
||||||
|
# remove repo.activity
|
||||||
|
# remove repo.issues
|
||||||
|
# remove repo.pulls
|
||||||
|
# remove watch, fork
|
||||||
|
wget https://raw.githubusercontent.com/go-gitea/gitea/refs/tags/v1.22.3/templates/repo/header.tmpl
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# <a class="item" href="https://kb.tishenko.dev/" target="_blank">Knowledge base</a>
|
||||||
|
/var/lib/gitea/custom/templates/custom/extra_links.tmpl
|
||||||
|
```
|
||||||
261
docs/servers/index.md
Normal file
261
docs/servers/index.md
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
# Начальная настройка сервера
|
||||||
|
|
||||||
|
## Первое подключение
|
||||||
|
Подключаемся к серверу к `root` по паролю, который должен выдаваться вместе с VDS.
|
||||||
|
```sh
|
||||||
|
ssh root@<IPv4>
|
||||||
|
```
|
||||||
|
|
||||||
|
Уже в терминале сервера выполняем.
|
||||||
|
```sh { .code-wrap }
|
||||||
|
# Создаём пользователя и наделяем правом использовать `sudo`.
|
||||||
|
adduser <user>
|
||||||
|
adduser <username> sudo
|
||||||
|
|
||||||
|
# Переключаемся на нового пользователя
|
||||||
|
su - <user>
|
||||||
|
|
||||||
|
# Все файлы, созданные пользователем, по умолчанию будут иметь права 600, а директории - 700.
|
||||||
|
echo 'umask 0077' >> .bashrc
|
||||||
|
source ~/.bashrc
|
||||||
|
|
||||||
|
# Добавляем свой публичный SSH ключ (cat ~/.ssh/id_rsa.pub), чтобы подключаться к пользователю по SSH напрямую.
|
||||||
|
mkdir .ssh
|
||||||
|
echo "<your-id-rsa.pub>" >> .ssh/authorized_keys
|
||||||
|
# Актуально, только если настройку umask не добавлять в .bashrc
|
||||||
|
# chmod 700 ~/.ssh
|
||||||
|
# chmod 600 ~/.ssh/authorized_keys
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь можно попробовать подключиться к серверу по SSH-ключу.
|
||||||
|
```sh
|
||||||
|
ssh <user>@<IPv4>
|
||||||
|
```
|
||||||
|
|
||||||
|
Желательно обновить все пакеты и перезагрузить сервер.
|
||||||
|
```sh
|
||||||
|
sudo apt update
|
||||||
|
sudo apt upgrade
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
Можно придумать серверу имя, оно будет отображаться в терминале после `<user>@`.
|
||||||
|
```sh
|
||||||
|
sudo nano /etc/hostname
|
||||||
|
sudo nano /etc/hosts
|
||||||
|
sudo systemctl restart systemd-hostnamed
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Настройка конфига SSH
|
||||||
|
Открываем конфиг SSH.
|
||||||
|
```sh
|
||||||
|
sudo nano /etc/ssh/sshd_config
|
||||||
|
```
|
||||||
|
|
||||||
|
- `Port <ssh-port>` - можно поменять со стандартного 22 на какой-нибудь другой. Лучше больше 10000, чтобы уменьшить вероятность конфликтов с другим ПО.
|
||||||
|
- `PermitRootLogin no` - запрещаем авторизацию по SSH под `root`.
|
||||||
|
- `PasswordAuthentication no` - запрещаем авторизацию по SSH по паролю.
|
||||||
|
|
||||||
|
После внесения изменений в конфиг, необходимо перезагрузить `sshd`.
|
||||||
|
```sh
|
||||||
|
# На некоторых системах ssh вместо sshd
|
||||||
|
sudo systemctl reload sshd
|
||||||
|
```
|
||||||
|
|
||||||
|
??? question "А что будет, если потерять SSH-ключ?"
|
||||||
|
|
||||||
|
Хостинг предоставляет доступ к `VNC` или другие методы подключения к серверу, которые не требуют подключения по SSH. Однако в таком случае будет необходим доступ к личному кабинету хостинга.
|
||||||
|
|
||||||
|
|
||||||
|
На своей машине добавляем сервер в конфиг SSH.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# На Windows надо будет нажать на Tab, чтобы раскрыть `~`.
|
||||||
|
# code - VS Code
|
||||||
|
code ~/.ssh/config
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Host <host>
|
||||||
|
HostName <IPv4>
|
||||||
|
User <user>
|
||||||
|
Port <ssh-port>
|
||||||
|
```
|
||||||
|
|
||||||
|
Можно проверить, что подключение проходит без ошибок.
|
||||||
|
```sh
|
||||||
|
# Если конфиг настроен
|
||||||
|
ssh <host>
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
# Без конфига
|
||||||
|
ssh <user>@<IPv4> -p <ssh-port>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Настройка фаерволла c UFW
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Установка UFW
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install ufw -y
|
||||||
|
|
||||||
|
# Открываем порт, используемый для SSH (по умолчанию 22)
|
||||||
|
sudo ufw allow <ssh-port>/tcp
|
||||||
|
|
||||||
|
# Закрываем все входные
|
||||||
|
sudo ufw default deny incoming
|
||||||
|
sudo ufw default allow outgoing
|
||||||
|
|
||||||
|
# Включаем фаерволл
|
||||||
|
sudo ufw enable
|
||||||
|
|
||||||
|
# Показать состояние ufw и активные правила
|
||||||
|
sudo ufw status verbose
|
||||||
|
```
|
||||||
|
|
||||||
|
??? tip "Дополнительные команды `ufw`"
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Отключить фаерволл
|
||||||
|
sudo ufw disable
|
||||||
|
|
||||||
|
# Удалить правило (будут применены настройки по умолчанию)
|
||||||
|
sudo ufw delete allow <port>/<protocol> # удалить разрешение
|
||||||
|
sudo ufw delete deny <port>/<protocol> # удалить запрет
|
||||||
|
|
||||||
|
# Сброс всех правил
|
||||||
|
sudo ufw reset
|
||||||
|
|
||||||
|
# Вывести логи ufw
|
||||||
|
sudo tail -f -n 100 /var/log/ufw.log
|
||||||
|
|
||||||
|
# Изменить уровень логирования
|
||||||
|
sudo ufw logging <low/medium/high>
|
||||||
|
|
||||||
|
# Разрешить доступ ко всем портам с определённого IP-адреса
|
||||||
|
sudo ufw allow from <IPv4>
|
||||||
|
|
||||||
|
# Разрешить доступ к порту с определённого IP-адреса
|
||||||
|
sudo ufw allow from <IPv4> to any port <port>
|
||||||
|
```
|
||||||
|
|
||||||
|
Некоторые приложения, например `OpenSSH` или `Nginx`, добавляют пресеты с правилами для `ufw`, которые точно так же можно разрешать и запрещать.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Вывести список пресетов
|
||||||
|
sudo ufw app list
|
||||||
|
|
||||||
|
# Открыть все соединения, которые нужны Nginx
|
||||||
|
sudo ufw allow "Nginx Full"
|
||||||
|
|
||||||
|
# Удалить правило для пресета
|
||||||
|
sudo ufw delete allow "Nginx Full"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Настройка Fail2Ban
|
||||||
|
|
||||||
|
[Fail2Ban](https://github.com/fail2ban/fail2ban) - базовая защита сервера от brute-force аттак.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install fail2ban -y
|
||||||
|
sudo systemctl enable fail2ban
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь нужно [правильно настроить Fail2Ban](https://github.com/fail2ban/fail2ban/wiki/Proper-fail2ban-configuration).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Создаём файл с пользовательскими настройками
|
||||||
|
sudo nano /etc/fail2ban/jail.local
|
||||||
|
```
|
||||||
|
|
||||||
|
Настройка защиты SSH сервера.
|
||||||
|
```ini
|
||||||
|
[sshd]
|
||||||
|
# Единственный обязательный параметр
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# Можно не указывать, если используется стандартный порт
|
||||||
|
port = <ssh-port>
|
||||||
|
|
||||||
|
# Пример настроек. Эти параметры можно не указывать, тогда будут использованы
|
||||||
|
# значения по умолчанию.
|
||||||
|
# Если в течении 24 часов
|
||||||
|
findtime = 86400
|
||||||
|
# произведено 3 неудачных попытки логина,
|
||||||
|
maxretry = 3
|
||||||
|
# то банить IP навсегда.
|
||||||
|
bantime = -1
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! tip "Более строгий конфиг для `fail2ban`"
|
||||||
|
|
||||||
|
Если на сервере настроена авторизация по ключу, можно смело использовать такой конфиг.
|
||||||
|
|
||||||
|
При авторизации по ключу, бан возможен только в случае указания неправильного имени пользователя, что исключено при использовании корректно настроенного SSH-конфига. В случае случайного бана всегда можно зайти на сервер через личный кабинет хостинга.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
port = <ssh-port>
|
||||||
|
# Если произведена хотя бы одна неудачная попытка логина,
|
||||||
|
maxretry = 1
|
||||||
|
# то банить IP навсегда.
|
||||||
|
bantime = -1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Применяем настройки
|
||||||
|
sudo fail2ban-client reload
|
||||||
|
```
|
||||||
|
|
||||||
|
После установки и первоначальной настройки `fail2ban` лучше перезагрузить сервер, иначе `fail2ban` может не заработать.
|
||||||
|
```sh
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
??? tip "Дополнительные команды `fail2ban`"
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Вывести список активных jail's
|
||||||
|
sudo fail2ban-client status
|
||||||
|
|
||||||
|
# Вывести информацию по конкретному jail, в т. ч. список заблокированных IP
|
||||||
|
sudo fail2ban-client status <jail-name>
|
||||||
|
|
||||||
|
# Разблокировать IP
|
||||||
|
sudo fail2ban-client set <jail-name> unbanip <IP>
|
||||||
|
|
||||||
|
# Вывести логи fail2ban
|
||||||
|
sudo tail -f -n 100 /var/log/fail2ban.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## Дополнительно
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Вывести записи о неудачных попытках входа в систему
|
||||||
|
sudo lastb | head -n 20
|
||||||
|
|
||||||
|
# Очистить записи о неудачных попытках входа в систему
|
||||||
|
sudo truncate -s 0 /var/log/btmp
|
||||||
|
|
||||||
|
# Показывает, кто в системе прямо сейчас
|
||||||
|
sudo w
|
||||||
|
|
||||||
|
# Логи попыток входа
|
||||||
|
sudo grep "Accepted password" /var/log/auth.log | tail -n 20
|
||||||
|
sudo grep "Failed password" /var/log/auth.log | tail -n 20
|
||||||
|
sudo grep "Invalid user" /var/log/auth.log | tail -n 20
|
||||||
|
|
||||||
|
# Очистить логи с попытками входа
|
||||||
|
sudo truncate -s 0 /var/log/auth.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## Полезные ссылки
|
||||||
|
- [Initial Server Setup with Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04)
|
||||||
|
- [UFW Essentials: Common Firewall Rules and Commands](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands)
|
||||||
|
- [VPS cheatsheet](https://habr.com/ru/articles/756804/)
|
||||||
|
- [Fail2Ban](https://github.com/fail2ban/fail2ban)
|
||||||
50
docs/servers/nginx.md
Normal file
50
docs/servers/nginx.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
|
||||||
|
## SSL-сертификат с certbot
|
||||||
|
|
||||||
|
!!! tip "Актуальная версия Python"
|
||||||
|
|
||||||
|
Обычно системый `Python` достаточно старый. Для установки `certbot` может потребоваться более новая версия. Минимальные требования можно узнать на [pypi](https://pypi.org/project/certbot/).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update
|
||||||
|
sudo add-apt-repository ppa:deadsnakes/ppa
|
||||||
|
|
||||||
|
# Вместо 3.1x нужно указать актуальную версию Python
|
||||||
|
sudo apt install python3.1x python3.1x-venv
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь вместо `python3` можно использовать `python3.1x`.
|
||||||
|
|
||||||
|
SSL-сертификат получается и устанавливается с помощью [certbot](https://github.com/certbot/certbot). На их сайте есть подробная пошаговая [инструкция](https://certbot.eff.org/instructions?ws=nginx&os=pip) о том, как правильно его установить, получить сертификаты и включить их автообновление.
|
||||||
|
|
||||||
|
??? note "Установка вкратце"
|
||||||
|
|
||||||
|
```sh { .code-wrap }
|
||||||
|
# Установили certbot в venv
|
||||||
|
# Вместо 3.1x нужно указать актуальную версию Python
|
||||||
|
sudo python3.x -m venv /opt/certbot/
|
||||||
|
sudo /opt/certbot/bin/pip install --upgrade pip
|
||||||
|
sudo /opt/certbot/bin/pip install certbot certbot-nginx
|
||||||
|
|
||||||
|
# Добавили в PATH
|
||||||
|
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
|
||||||
|
|
||||||
|
# Автообновление сертификатов
|
||||||
|
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Несколько полезных команд.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Получить сертификат для определённого домена. Предварительно нужно
|
||||||
|
# настроить конфиг nginx для этого домена.
|
||||||
|
sudo certbot --nginx -d example.com -d www.example.com
|
||||||
|
|
||||||
|
# Список сертификатов со сроками их жизни
|
||||||
|
sudo certbot certificates
|
||||||
|
|
||||||
|
# Удалить сертификат (команда предложит выбор)
|
||||||
|
sudo certbot delete
|
||||||
|
```
|
||||||
@@ -4,4 +4,18 @@
|
|||||||
|
|
||||||
.md-footer {
|
.md-footer {
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Достаточно добавить { .code-wrap } к блоку кода, чтобы включить автоперенос строк.
|
||||||
|
attr_list, очевидно, должен быть подключен в markdown_extensions.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```sh { .code-wrap }
|
||||||
|
*very long line of code here*
|
||||||
|
```
|
||||||
|
*/
|
||||||
|
.code-wrap code {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ edit_uri: edit/main/docs/
|
|||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
language: ru
|
language: ru
|
||||||
|
logo: assets/logo.svg
|
||||||
favicon: assets/favicon.ico
|
favicon: assets/favicon.ico
|
||||||
|
|
||||||
icon:
|
icon:
|
||||||
repo: fontawesome/brands/github
|
repo: fontawesome/brands/github
|
||||||
|
|
||||||
features:
|
features:
|
||||||
|
- navigation.indexes
|
||||||
- navigation.instant
|
- navigation.instant
|
||||||
- navigation.tabs
|
- navigation.tabs
|
||||||
- content.code.copy
|
- content.code.copy
|
||||||
|
|||||||
Reference in New Issue
Block a user