Как сделать домашний веб‑сервер на Linux
Краткий план и что вам понадобится
- Старый компьютер или Raspberry Pi.
- Установочный ISO/USB с Linux (тут — Lubuntu 19.04 в исходной статье; используйте актуальную стабильную версию дистрибутива).
- Подключение к домашней сети и доступ к панели управления маршрутизатором.
- Базовые навыки работы в терминале.
В этой статье вы найдёте пошаговое руководство по сборке домашнего веб‑сервера, проверке его работы, выводу в интернет и базовой защите. В конце — контрольные списки, шаблоны команд, варианты отказа и сценарии восстановления.
Введение
Интересно запустить собственный веб‑сервер дома? Это можно сделать, установив Linux на запасной компьютер. Linux прост в настройке, даёт недорогой путь для хостинга сайта, блога или тестовой среды. Ниже — расширённые инструкции, рекомендации по безопасности и варианты, если что‑то пойдёт не так.
Четыре шага для домашнего веб‑сервера
- Найти старый или ненужный компьютер.
- Установить Linux.
- Настроить веб‑стек (Apache/Nginx, PHP, MySQL/MariaDB и т.д.).
- Открыть доступ извне (порт‑форвардинг, DNS).
Дальше — подробное руководство по каждому шагу.
1. Поиск компьютера для Linux веб‑сервера

Для домашнего сервера достаточно старого ПК с невысокими характеристиками. В исходной инструкции предлагался Lubuntu 19.04 как лёгкая альтернатива Ubuntu. Это логично: лёгкая среда снизит нагрузку на старое железо.
Минимальные требования (ориентировочно):
- Процессор 512 MHz, лучше — двухъядерный (1 GHz рекомендуется).
- Около 4 ГБ оперативной памяти для комфортной работы с веб‑приложениями.
- 25 ГБ свободного места на диске.
- Возможность выбирать 32‑ или 64‑битную сборку в зависимости от процессора.
Альтернативы и замечания:
- Raspberry Pi — популярная опция: компактная, энергоэффективная и недорогая (обычно менее $30 для базовой модели). Подойдёт для лёгких сайтов и тестовых сред.
- Не ограничивайтесь Windows‑ПК: старые Mac с PowerPC тоже могут запускать Linux при соответствующих сборках.
- Если сервер будет работать 24/7, убедитесь в хорошей вентиляции и стабильном электропитании.
Важно: всегда проверяйте совместимость железа с выбранным дистрибутивом через Live‑режим или тестовую загрузку.
2. Установка операционной системы Linux

Установка Lubuntu описана в исходной инструкции: достаточно скачать ISO и записать его на USB или DVD. При установке обычно выбирают 64‑битную сборку, если аппарат поддерживает этот режим.
Ключевые шаги установки:
- Подготовьте загрузочную флешку (Rufus, balenaEtcher или команда dd в Linux).
- Перезагрузите компьютер и загрузитесь с USB/DVD (возможно, понадобится изменить настройки BIOS/UEFI или выбрать загрузочное меню).
- В мастере установки выберите “Install Lubuntu”.
- Отметьте “Download updates while installing” и “Install 3rd party software” по необходимости.
- При выборе разметки диска можно выбрать “Erase and use entire disk” — это удалит все данные.
- Не используйте шифрование домашней папки, если собираетесь отдавать файлы в общий доступ или планируете удалённое автоматическое восстановление.
После завершения установки выполните обновления:
- Через графический интерфейс: System > Administration > Update Manager > Install Updates.
- Или в терминале:
sudo apt update
sudo apt upgrade -yСовет: лучше установить актуальную LTS‑версию дистрибутива для безопасности и поддержки.
3. Установка программ веб‑сервера
Большинство веб‑сайтов используют LAMP: Linux, Apache, MySQL (или MariaDB), PHP. В исходной статье предлагаются пакеты apache2, php5 и mysql-server. В современных дистрибутивах PHP 7/8 и MariaDB чаще используются — учитывайте это при выборе пакетов.
Установка через графический пакетный менеджер (Synaptic) или через терминал:
sudo apt install apache2 php mysql-server php-mysql -yАльтернативы:
- Nginx вместо Apache для лёгких и высоконагруженных сайтов.
- MariaDB вместо MySQL (совместима в большинстве сценариев).
- Для простых сайтов можно использовать SQLite и статические генераторы (Hugo, Jekyll).
Быстрая проверка работы сервера:
- Откройте браузер на сервере и перейдите на http://127.0.0.1/ или http://localhost/.
- Должно появиться сообщение «It works!» или страница Apache.
Папка для файлов сайта обычно /var/www/html (или /var/www). Чтобы вносить изменения безопасно:
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/wwwДля разработки можно добавить своего пользователя в группу www‑data:
sudo usermod -a -G www-data $USERНе используйте chmod 777 на рабочих серверах — это открывает запись для всех и представляет риск безопасности.
Тестирование PHP:
Создайте файл /var/www/html/info.php со следующим содержимым:
Зайдите на http://localhost/info.php — должна отобразиться информация о PHP.
Добавочные шаги безопасности/управления:
- Настройте автоматический запуск Apache и базы данных на старте (обычно система делает это автоматически).
- Установите резервное копирование данных и регулярные обновления пакетов.
Поиск и назначение локального IP адреса
Чтобы сервер был доступен в вашей локальной сети, ему нужен постоянный локальный IP.
Варианты:
- DHCP‑резервация в вашем маршрутизаторе (рекомендуется). Это назначение IP по MAC‑адресу — надёжно и удобно.
- Статический IP на самой машине (если вы не можете изменить настройки роутера).
Найдите текущий IP через GUI: нажмите на сетевое подключение и выберите “Connection Information” (Информация о подключении). В CLI используйте:
ip addr show
# или (если установлено)
ifconfigПример настройки статического IP (NetworkManager GUI):
- Правый клик по подключению > Edit Connections > вкладка IPv4 > Method: Manual > Add.
- Укажите адрес, маску (например, 192.168.1.250/24), шлюз (192.168.1.1) и DNS.
Пример netplan (Ubuntu с netplan):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.250/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]Сохраните файл и примените:
sudo netplan applyВажно: при ручной установке IP выбирайте адрес вне диапазона DHCP вашего роутера или используйте высокие адреса (например, .250), чтобы избежать конфликтов.
Совместный доступ к папке веб‑сайта и права доступа
В исходной статье предлагается временно ослабить права с помощью:
sudo chmod 777 /var/wwwВажно: это очень небезопасно на публичных или даже домашних сетях. Вместо этого используйте следующие безопасные практики:
- Назначьте владельца и группу www‑data:
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www- Если нужно редактировать файлы без sudo, добавьте пользователя в группу www‑data и задайте права 775:
sudo usermod -a -G www-data deployuser
sudo chmod -R 775 /var/www- Для безопасной передачи файлов используйте SFTP (через SSH), rsync или Samba c паролем. Guest‑доступ следует отключать для публичных интерфейсов.
Путь к папке в сетевом окружении: //localhost/www или \192.168.1.250\www при корректной настройке общего доступа.
Открытие доступа из интернета: порт‑форвардинг

Чтобы посетители могли зайти на ваш сайт извне, нужно пробросить (forward) порты маршрутизатора на ваш локальный сервер.
- Войдите в панель администратора маршрутизатора (обычно http://192.168.1.1 или адрес, указан на корпусе устройства).
- Найдите раздел Port Forwarding или Applications.
- Перенаправьте внешний TCP‑порт 80 на локальный IP вашего сервера порт 80.
- Для HTTPS перенаправьте TCP‑порт 443 на локальный порт 443.
Если провайдер блокирует порт 80, используйте внешний порт 8080 (или другой) и делайте перенаправление 8080→80. Тогда доступ будет по http://вашдомен:8080.
Проверить открытые внешние порты можно с помощью онлайн‑сервисов (поиск “port checker”).
Безопасность:
- Открытые порты — это поверхность атаки. Закрывайте все неиспользуемые порты и применяйте брандмауэр на сервере.
- Контролируйте логи доступа и настройте автоматические оповещения при аномальной активности.
Статическое имя хоста и динамический DNS
Большинство домашних провайдеров используют динамические внешние IP, которые меняются. Решения:
- Сервис DynDNS (упомянут в исходной статье), No‑IP, DuckDNS и т.д. Эти сервисы дают поддомен и клиент обновляет запись при смене IP.
- Альтернатива — использовать DNS‑провайдера (Cloudflare) и клиент, который обновляет A‑запись.
Пример простого клиента для DuckDNS (ежедневное обновление через cron):
# Пример curl-запроса для duckdns
curl "https://www.duckdns.org/update?domains=yourdomain&token=YOUR_TOKEN&ip="Для ddclient (поддерживает No‑IP, DynDNS и др.) конфигурация в /etc/ddclient.conf может выглядеть так:
protocol=dyndns2
use=web, web=checkip.dyndns.com
server=members.dyndns.org
login=yourlogin
password='yourpassword'
yourhostname.dyndns.orgЗапустите ddclient как сервис или через cron и проверьте обновление записи.
HTTPS: получить и установить сертификат
Для публичного сервера используйте бесплатные сертификаты от Let’s Encrypt и инструмент certbot.
Пример для Apache:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apachecertbot автоматически проверит сайт и установит сертификат. Не забудьте настроить автоматическое продление:
sudo systemctl enable certbot.timerЕсли вы пробрасываете нестандартный внешний порт, проверка HTTP‑01 может не пройти; в таких случаях используйте DNS‑challenge или проксирование.
Безопасность и жёсткая настройка сервера
Короткий чек‑лист безопасности:
- Обновления пакетов и ядра: sudo apt update && sudo apt upgrade -y.
- Firewall (UFW):
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full' # открывает 80 и 443
sudo ufw enable- Отключите ненужные сервисы и удалите неиспользуемые пакеты.
- Настройте SSH: запретите вход root, используйте ключи, отключите аутентификацию по паролю, поменяйте порт при желании.
- Настройте лимиты ресурса и мониторинг (процессы, загрузка, диск).
- Регулярные резервные копии данных и конфигураций.
Резюме: порт‑форвардинг + открытый веб = тщательно настроенный сервер + регулярный мониторинг.
Тесты и приёмка сервера
Критерии приёмки (что должно быть проверено перед выпуском):
- Сервер отвечает на локальные HTTP/HTTPS‑запросы.
- Веб‑страница доступна по статическому локальному IP.
- Маршрутизатор перенаправляет внешний порт на сервер.
- Домен/динамический DNS указывают на внешний IP.
- HTTPS установлен и автоматически продлевается.
- Резервные копии работают, есть план восстановления.
Минимальные тесты (acceptance):
- Открыть http://127.0.0.1/ — получить 200 OK и ожидаемую страницу.
- Открыть файл info.php — увидеть страницу с информацией о PHP.
- С внешней сети (мобильная сеть или другоё подключение) зайти на ваш публичный адрес и проверить доступность.
- Провести базовый тест безопасности: nmap снаружи (open ports) и проверить HTTPS.
Управление и операционная методика (мини‑SOP)
Короткая последовательность действий при деплое новой версии сайта:
- Тестируйте локально или на staging‑сервере.
- Заблокируйте доступ к сайту (maintenance page).
- Скопируйте файлы: rsync –delete -avz ./build/ user@server:/var/www/html/
- Проверьте права и владельца файлов.
- Перезапустите веб‑сервер: sudo systemctl reload apache2 (или nginx).
- Быстро проверьте ключевые страницы и логи.
- Снимите maintenance mode.
Шаблон команды rsync:
rsync -avz --delete ./dist/ user@192.168.1.250:/var/www/html/Руководство на случай инцидента: сервер недоступен
Краткое пошаговое руководство:
- Проверьте питание и подключение сети на сервере.
- Попробуйте зайти по локальному IP из другой машины в сети.
- Проверьте статус сервиса: sudo systemctl status apache2 mysql
- Посмотрите последние строки в логах: sudo tail -n 200 /var/log/apache2/error.log
- Убедитесь, что маршрут/порт‑форвардинг на роутере не изменился.
- Если внешне не доступен, проверьте внешний IP провайдера и сопоставление DNS.
- Если нужна откатная версия — восстановите данные из последней резервной копии.
Модель мышления: порты = двери; сервисы = комнаты
Представляйте сервер как дом:
- Порты — двери в разные комнаты (80/443 — гостиная с сайтом, 22 — комната администрирования).
- Брандмауэр — замок на двери. Откройте только те двери, которые нужны.
- Логи — видеонаблюдение. Смотрите их регулярно.
Это помогает быстро оценивать риск и приоритеты защиты.
Роли и чек‑лист (администратор / разработчик)
Администратор:
- Настроить резервное копирование.
- Обновления и мониторинг.
- Настроить брандмауэр и SSH.
Разработчик:
- Подготовить сборку сайта.
- Проверить зависимости и конфигурации в staging.
- Тестировать миграции БД и rollbacks.
Оба:
- Согласовать окно развертывания.
- Тестировать после деплоя.
Частые ошибки и когда это не сработает
- Провайдер блокирует входящий трафик на порт 80 и 443 — решается пробросом нестандартных портов или использованием VPS/облачного хостинга.
- Домашняя сеть нестабильна — для стабильной работы лучше использовать дата‑центр.
- Старое железо может быть медленным и непригодным для высокой нагрузки.
Если вы хотите публичный сайт с надёжностью, масштабируемостью и SLA — рассмотрите облачный хостинг.
Быстрый справочник команд (cheat sheet)
Установка LAMP:
sudo apt update
sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql -yПроверка статуса:
sudo systemctl status apache2
sudo systemctl status mariadbБазовая настройка UFW:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enableПолучение сертификата (certbot):
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apacheГлоссарий — одно предложение на термин
- DHCP: протокол, который автоматически раздаёт IP‑адреса в локальной сети.
- DHCP‑резервация: привязка конкретного MAC‑адреса к определённому IP в роутере.
- DNS: система, которая переводит доменные имена в IP‑адреса.
- LAMP: набор программ Apache, MySQL/MariaDB и PHP.
- Port forwarding: перенаправление входящего трафика с внешнего интерфейса роутера на внутреннюю машину.
Часто задаваемые вопросы
Q: Можно ли использовать Raspberry Pi вместо старого ПК?
A: Да. Raspberry Pi отлично подходит для лёгких сайтов и тестовых проектов. Для высоконагруженных сервисов стоит выбирать более мощное железо.
Q: Нужно ли покупать платный DynDNS?
A: Нет, есть бесплатные варианты (DuckDNS, No‑IP с ограничениями). Платные сервисы дают дополнительные возможности и гарантии.
Q: Как получить HTTPS бесплатно?
A: Let’s Encrypt предоставляет бесплатные сертификаты, а certbot автоматизирует установку и продление.
Q: Что делать, если провайдер блокирует порт 80?
A: Использовать внешний нестандартный порт (например, 8080) или проксировать трафик через внешний сервер/VPS.

Завершая: вы теперь знаете, как подготовить железо, установить Linux, настроить веб‑стек, открыть доступ из интернета и минимально обезопасить сервер. Этот набор шагов подходит для хобби‑проектов, тестовых окружений и изучения администрирования. Для продакшна рассмотрите дополнительные меры безопасности, резервирования и мониторинга.
Краткое резюме
- Выберите подходящее железо (ПК или Raspberry Pi).
- Установите лёгкий Linux и актуальные пакеты.
- Настройте LAMP/Nginx и рабочую папку /var/www.
- Назначьте статический локальный IP или сделайте резервацию в роутере.
- Настройте порт‑форвардинг и динамический DNS.
- Включите HTTPS и брандмауэр.
Важно: если вы планируете публичный, коммерческий или критичный проект, подумайте о хостинге в дата‑центре — это избавит вас от проблем с сетью и SLA.
Полезные ссылки и ресурсы
- Lubuntu — официальный сайт (ищите актуальную стабильную версию).
- Certbot — руководство по автоматическому получению сертификатов Let’s Encrypt.
- Документация вашего роутера — раздел Port Forwarding.
Похожие материалы
Gmail и настольные клиенты: выбор и настройка
SketchUp бесплатно: как начать 3D‑моделирование
Как создать аккаунт PlayStation Network (PSN)
Почему iPhone и iPad нагреваются и как это исправить
Как искать жильё на Airbnb для отпуска