Compare commits
7 Commits
5174e06ce5
...
0f7e022a5f
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f7e022a5f | |||
| 25cc09b930 | |||
| 7f0d996c00 | |||
| 69653d9883 | |||
| 49fc40b1f7 | |||
| 534f950565 | |||
| 7f7bdfa749 |
@@ -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
81
docs/servers/index.md
Normal 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
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
|
||||
```
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ theme:
|
||||
repo: fontawesome/brands/github
|
||||
|
||||
features:
|
||||
- navigation.indexes
|
||||
- navigation.instant
|
||||
- navigation.tabs
|
||||
- content.code.copy
|
||||
|
||||
Reference in New Issue
Block a user