98 lines
4.1 KiB
Markdown
98 lines
4.1 KiB
Markdown
# Cockpit Installer
|
||
|
||
Скрипт `cockpit-installer.sh` автоматически подготавливает сервер Debian/Ubuntu и устанавливает Cockpit с базовыми настройками безопасности.
|
||
|
||
## Что делает скрипт
|
||
|
||
1. Проверяет, что запуск выполнен от `root` и доступен `apt`.
|
||
2. Валидирует и настраивает порт Cockpit.
|
||
3. Настраивает системный часовой пояс.
|
||
4. Обновляет систему (`apt update && apt upgrade -y`).
|
||
5. Устанавливает и включает `ufw`.
|
||
6. Открывает `22/tcp` (SSH) и выбранный порт Cockpit.
|
||
7. Устанавливает и настраивает `fail2ban` (SSH + Cockpit).
|
||
8. Создает (или обновляет) пользователя с правами `sudo`.
|
||
9. Устанавливает Cockpit и переводит его на указанный порт.
|
||
10. Создает самоподписанный TLS-сертификат.
|
||
11. Добавляет ежедневное обновление сертификата через cron.
|
||
12. Пишет лог установки в `/var/log/setup.log`.
|
||
|
||
## Требования
|
||
|
||
- Debian/Ubuntu (или совместимая система с `apt`).
|
||
- Запуск от `root`.
|
||
- Доступ в интернет для установки пакетов.
|
||
|
||
## Использование
|
||
|
||
```bash
|
||
chmod +x cockpit-installer.sh
|
||
sudo ./cockpit-installer.sh [options]
|
||
```
|
||
|
||
## Наиболее успешный запуск из URL
|
||
|
||
Рекомендуемый вариант для быстрого и стабильного запуска напрямую из репозитория:
|
||
|
||
```bash
|
||
curl -fsSL https://gitea.creative-tg1.ru/CREATIVE_tg1/for-servers/raw/branch/main/cockpit/cockpit-installer.sh | sudo bash
|
||
```
|
||
|
||
С параметрами (важно использовать `-s --` после `bash`):
|
||
|
||
```bash
|
||
curl -fsSL https://gitea.creative-tg1.ru/CREATIVE_tg1/for-servers/raw/branch/main/cockpit/cockpit-installer.sh | sudo bash -s -- --port 12345 --user admin --timezone Europe/Moscow
|
||
```
|
||
|
||
## Опции
|
||
|
||
- `--port <port>`: порт Cockpit (по умолчанию `12345`).
|
||
- `--user <username>`: имя пользователя (по умолчанию `user`).
|
||
- `--password <password>`: пароль пользователя (по умолчанию генерируется автоматически).
|
||
- `--timezone <tz>`: часовой пояс (по умолчанию `UTC`, пример: `Europe/Moscow`).
|
||
- `--help`: показать справку.
|
||
|
||
## Примеры
|
||
|
||
```bash
|
||
sudo ./cockpit-installer.sh
|
||
sudo ./cockpit-installer.sh --port 12345
|
||
sudo ./cockpit-installer.sh --port 12345 --user admin
|
||
sudo ./cockpit-installer.sh --port 12345 --user admin --password MySecret123!
|
||
sudo ./cockpit-installer.sh --port 12345 --timezone Europe/Moscow
|
||
```
|
||
|
||
## Результат после установки
|
||
|
||
- Cockpit доступен по адресу:
|
||
- `https://<SERVER_IP>:<PORT>`
|
||
- Создан/обновлен пользователь с `sudo`.
|
||
- Пароль сохранен во временный файл:
|
||
- `/root/<user>_password.txt`
|
||
- Сертификаты:
|
||
- `/etc/ssl/selfcert/cert.pem`
|
||
- `/etc/ssl/selfcert/key.pem`
|
||
- Логи:
|
||
- `/var/log/setup.log`
|
||
- `/var/log/selfcert-renew.log`
|
||
|
||
## Важно по безопасности
|
||
|
||
- Скрипт использует самоподписанный сертификат, браузер покажет предупреждение.
|
||
- После входа сохраните пароль в надежном месте и удалите файл:
|
||
|
||
```bash
|
||
rm -f /root/<user>_password.txt
|
||
```
|
||
|
||
- Рекомендуется ограничить доступ к порту Cockpit по IP (через firewall/cloud security group).
|
||
|
||
## Обновление сертификата
|
||
|
||
Скрипт создает:
|
||
|
||
- `/usr/local/bin/selfcert-renew.sh`
|
||
- `/etc/cron.d/selfcert-renew`
|
||
|
||
Cron запускает обновление ежедневно в `03:00`.
|