Найти тему
Руки не для скуки

Домашний сервер - это просто. Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.

Как вы помните, при установке Debian мы отметили Apache2 среди компонентов для установки.

Если по каким-то причинам Apache2 не установлен, установим его:

sudo apt install apache2 -y

Добавляем Apache в автозагрузку:

sudo systemctl enable apache2

Запускаем службу Apache:

sudo systemctl start apache2

Добавляем в исключения UFW порты 80/tcp и 445/tcp необходимые для работы web-сервера:

ufw allow 80/tcp
ufw allow 443/tcp


Проверим работоспособность Apache2

http://192.168.2.11/index.html

Должна появиться стартовая страница

-2

4.1. Установка пакетов для работы с HTTPS репозиториями:

apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2

Подключаем репозиторий:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list

Загружаем специальный ключ безопасности:

wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -


4.2.
Установка PHP 8.3

sudo apt update && apt upgrade -y

sudo apt -y install php8.3


Устанавливаем необходимые модули:

apt install -y libapache2-mod-php php-gd php-fpm php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip php-bz2


Даем разрешения Apache:

a2enmod proxy_fcgi setenvif
a2enconf php8.3-fpm
a2enmod ssl rewrite headers env dir mime
a2enmod ssl
a2ensite default-ssl
a2enmod proxy
a2enmod proxy_http


Перезапускаем Apache и php-fpm:

systemctl restart apache2 php8.3-fpm

4.3. Создание файла конфигурации виртуального хоста

/etc/apache2/sites-available – каталог файлов конфигураций виртуальных хостов

Напоминаю, что домен 475cloud.ru - это мой тестовый домен. Везде где в именах файлов вы его видите - меняйте на свое доменное имя.

Создаем папку для 475cloud.ru и делаем ее владельцем web-сервер :

mkdir /var/www/475cloud
chown -R www-data:www-data /var/www/475cloud


Создаем конфигурационный файл
475cloud.conf

nano /etc/apache2/sites-available/475cloud.conf


Вставляем в него следующий текст:

<VirtualHost *:80>
ServerName 475cloud.ru
ServerAlias www.475cloud.ru
DocumentRoot /var/www/475cloud
</VirtualHost>

<VirtualHost *:443>
ServerName 475cloud.ru
ServerAlias www.475cloud.ru
DocumentRoot /var/www/475cloud
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>
<Directory /var/www/475cloud>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Меняем ServerName и ServerAlias в четырех строках на свой и сохраняем (Ctrl +O).

Включаем сайт (в /etc/apache2/sites-enabled создается ссылка на файл конфигурации виртуального хоста):

a2ensite 475cloud.conf

Перезапускаем Apache:

systemctl restart apache2

Если после перезапуска Apache выводится сообщение об ошибке:

-3

Это значит, что либо при копировании текста конфига отсюда в терминал
потерялась часть текста (так бывает при невнимательном выделении копируемой области) либо вы ошиблись при изменении названия сайта на свой. Внимательно проверьте первую и последнюю строку файла /etc/apache2/sites-available/475cloud.conf и внесенные правки.

4.4. Тестирование работоспособности

Создаем тестовую страницу:

nano /var/www/475cloud/index.html

Вставляем в нее следующий текст:

<html>
<head>
<title>Welcome to 475cloud.ru!</title>
</head>
<body>
<h1>Success! 475cloud.ru virtual host is working!</h1>
</body>
</html>

И сохраняем (Ctrl +O).

Теперь проверим работоспособность:

http://475cloud.ru

В случае, если все сделано правильно по любому из указанных адресов мы увидим текст:

-4

Возможно сообщение о небезопасном соединении блокировка доступа браузером. В этом случае не заморачивайтесь и переходите к следующему шагу - после него все точно заработает.

4.5. Установка Сertbot

Certbot необходим для генерации SSL-сертификатов с помошью бесплатного сервиса Let’s Encrypt. Let’s Encrypt — центр сертификации, предоставляющий бесплатные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован.

Устанавливаем пакет для certbot:

apt install certbot python3-certbot-apache -y

Устанавливаем SSL-сертификаты от Let’s Encrypt

Если утилита запускается впервые, появится сообщение с просьбой указать адрес эл. почты и принять условия обслуживания. Адрес почты лучше указать действующий, так как Let’s Encrypt будет отправлять туда письма о проблемах и другие уведомления.

certbot --apache -d 475cloud.ru -d www.475cloud.ru

После установки сертификатов все страницы будут открываться исключительно по протоколу HTTPS.

Проверяем:

https://475cloud.ru

-5

Проверка возможности обновления:

sudo certbot renew --dry-run

Запускаем редактирование задач cron

crontab -e

Добавляем в конец:

30 2 * * * /usr/bin/certbot renew –quiet

ВНИМАНИЕ! Обязательно перевести каретку на новую строку после ввода этой инструкции (нажать Enter)

И сохраняем (Ctrl +O).

Cron будет ежедневно в 2:30 проверять, подлежат ли обновлению какие-либо сертификаты, и обновлять их по мере необходимости.
Это гарантирует, что наш сервер Apache всегда использует действительные SSL-сертификаты, поддерживая безопасное подключение.

Обновить сертификаты вручную можно введя команду:

certbot renew --force-renewal

4.6. Создание файла конфигурации виртуального хоста для Webmin

В третьей главе, когда мы установили Webmin, я оговорился, что после настройки Web-сервера мы настроим доступ к Webmin из интернета через доменное имя.

Создаем файл конфигурации:

Напоминаю, что домен 475cloud.ru - это мой тестовый домен. Везде где в именах файлов вы его видите - меняйте на свое доменное имя.

nano /etc/apache2/sites-available/wm.475cloud.conf

Добавляем в него:

<VirtualHost *:80>
ServerName wm.475cloud.ru
ServerAlias www.wm.475cloud.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
ServerName wm.475cloud.ru
ServerAlias www.wm.475cloud.ru
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>

ProxyRequests On
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:10000/
ProxyPassReverse / http://127.0.0.1:10000/
</VirtualHost>

Меняем ServerName и ServerAlias в четырех строках на свой и сохраняем (Ctrl +O).

Включаем сайт (в /etc/apache2/sites-enabled создается ссылка на файл конфигурации виртуального хоста):

a2ensite wm.475cloud.conf


Перезапускаем Apache:

systemctl restart apache2

Если после перезапуска Apache выводится сообщение об ошибке 4.3 этой главы.

4.7. Установка сертификата Let’s Encrypt

Устанавливаем SSL-сертификат:

certbot --apache -d wm.475cloud.ru -d www.wm.475cloud.ru

Перезапускаем Apache:

systemctl restart apache2

Открываем конфигурацию Webmin

sudo nano /etc/webmin/miniserv.conf

Изменяем параметр

ssl=1

на

ssl=0

и сохраняем.

Перезапускаем webmin:

systemctl restart webmin

После перезапуска можно получить доступ к Webmin, используя web-адрес:

https://wm.475cloud.ru

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.