Compare commits

..

7 Commits

Author SHA1 Message Date
0f7e022a5f Настройка сервера
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 2s
2025-01-23 22:21:16 +03:00
25cc09b930 index pages for sections enabled 2025-01-23 14:52:50 +03:00
7f0d996c00 заготовка для nginx переезжает в servers 2025-01-23 14:27:40 +03:00
69653d9883 Заготовка заметки по сервакам 2025-01-23 14:27:09 +03:00
49fc40b1f7 Заменил заголовок 2025-01-23 14:17:08 +03:00
534f950565 Nginx. SSL-сертификаты 2025-01-22 12:16:50 +03:00
7f7bdfa749 Перенос строк в блоках кода 2025-01-22 12:16:28 +03:00
5 changed files with 148 additions and 4 deletions

View File

@@ -1,6 +1,4 @@
---
title: git-filter-repo
---
# git-filter-repo
С помощью [git-filter-repo](https://github.com/newren/git-filter-repo/) можно переписать историю репозитория.

81
docs/servers/index.md Normal file
View File

@@ -0,0 +1,81 @@
# Начальная настройка сервера
## Первое подключение
Подключаемся к серверу к `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
```
Можно придумать серверу имя, оно будет отображаться в терминале после `<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 по паролю.
??? 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>
```

50
docs/servers/nginx.md Normal file
View 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
```

View File

@@ -5,3 +5,17 @@
.md-footer {
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;
}

View File

@@ -13,6 +13,7 @@ theme:
repo: fontawesome/brands/github
features:
- navigation.indexes
- navigation.instant
- navigation.tabs
- content.code.copy