Руководство по настройке сервера на Raspberry Pi 3 Model B

1. Подготовка Raspberry Pi

1.1 Установка ОС

Скачайте Raspberry Pi Imager с официального сайта.

Выберите ОС: Raspberry Pi OS Lite (без графического интерфейса для экономии ресурсов).

Запишите образ на microSD-карту, вставьте её в Raspberry Pi, подключите питание и Ethernet (или Wi-Fi).

1.2 Настройка сети и SSH

При первом запуске выполните базовую настройку через sudo raspi-config:

sudo raspi-config

Измените пароль пользователя pi (в разделе System OptionsPassword).

Настройте Wi-Fi (если используете) в System OptionsWireless LAN.

Включите SSH: Interfacing OptionsSSHYes.

Обновите систему:

sudo apt update && sudo apt upgrade -y

2. Установка Nginx

Установите веб-сервер:

sudo apt install nginx -y

Проверьте статус службы:

sudo systemctl status nginx

Откройте порты 80 и 443 в брандмауэре (если включен ufw):


sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
                

Проверьте работу Nginx, открыв браузер и перейдя по IP вашего Raspberry (найти IP можно через hostname -I).

3. Настройка статического сайта

3.1 Создание директории для сайта

Создайте папку для файлов сайта:


sudo mkdir -p /var/www/mysite/public_html

Назначьте права:


sudo chown -R www-data:www-data /var/www/mysite
sudo chmod -R 755 /var/www/mysite
3.2 Конфигурация Nginx

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

sudo nano /etc/nginx/sites-available/mysite

Вставьте конфиг (замените your_domain.com на свой домен):


server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    root /var/www/mysite/public_html;
    index index.html;

    location / {
    try_files $uri $uri/ =404;
    }
}
                

Активируйте конфиг:

sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/

Проверьте синтаксис и перезапустите Nginx:


sudo nginx -t
sudo systemctl reload nginx
                

4. Настройка домена и SSL

4.1 Регистрация домена

Купите домен на любом регистраторе (например, GoDaddy, Namecheap). Настройте A-запись, указав IP вашего Raspberry Pi.

4.2 Установка Let's Encrypt (Certbot)

Установите Certbot:

sudo apt install certbot python3-certbot-nginx -y

Получите сертификат:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot автоматически обновит конфиг Nginx для HTTPS.

4.3 Автоматическое продление сертификата

Добавьте задание в cron:

sudo crontab -e

Добавьте строку:

0 12 * * * /usr/bin/certbot renew --quiet

5. Оптимизация Nginx для статического контента

Добавьте в конфиг сайта (/etc/nginx/sites-available/mysite) после index index.html;:


gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|glb|gltf)$ {
    expires 365d;
    add_header Cache-Control "public, no-transform";
}
                

Проверьте и перезагрузите Nginx:

sudo nginx -t && sudo systemctl reload nginx

6. Размещение файлов сайта

Загрузите файлы (HTML, CSS, изображения, 3D-модели) в /var/www/mysite/public_html.

Используйте scp для копирования с локального ПК:

scp -r /путь/к/файлам pi@ваш_IP:/var/www/mysite/public_html

7. Дополнительные рекомендации

Мониторинг ресурсов: Установите htop для отслеживания нагрузки:

sudo apt install htop

Резервное копирование: Настройте регулярный бэкап папки /var/www/mysite.

Отключите ненужные службы через sudo raspi-config.

Установите fail2ban для защиты от атак:

sudo apt install fail2ban

Готово! Ваш сайт доступен по адресу https://your_domain.com. Если возникнут ошибки, проверьте логи Nginx:

sudo tail -f /var/log/nginx/error.log