Гид по технологиям

Как сделать домашний веб‑сервер на Linux

10 min read DevOps Обновлено 19 Apr 2026
Как сделать домашний веб‑сервер на Linux
Как сделать домашний веб‑сервер на Linux

Краткий план и что вам понадобится

  • Старый компьютер или Raspberry Pi.
  • Установочный ISO/USB с Linux (тут — Lubuntu 19.04 в исходной статье; используйте актуальную стабильную версию дистрибутива).
  • Подключение к домашней сети и доступ к панели управления маршрутизатором.
  • Базовые навыки работы в терминале.

В этой статье вы найдёте пошаговое руководство по сборке домашнего веб‑сервера, проверке его работы, выводу в интернет и базовой защите. В конце — контрольные списки, шаблоны команд, варианты отказа и сценарии восстановления.


Введение

Интересно запустить собственный веб‑сервер дома? Это можно сделать, установив Linux на запасной компьютер. Linux прост в настройке, даёт недорогой путь для хостинга сайта, блога или тестовой среды. Ниже — расширённые инструкции, рекомендации по безопасности и варианты, если что‑то пойдёт не так.

Четыре шага для домашнего веб‑сервера

  1. Найти старый или ненужный компьютер.
  2. Установить Linux.
  3. Настроить веб‑стек (Apache/Nginx, PHP, MySQL/MariaDB и т.д.).
  4. Открыть доступ извне (порт‑форвардинг, DNS).

Дальше — подробное руководство по каждому шагу.

1. Поиск компьютера для Linux веб‑сервера

Сравнение Ubuntu Server и Ubuntu Desktop

Для домашнего сервера достаточно старого ПК с невысокими характеристиками. В исходной инструкции предлагался 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 для веб‑сервера

Установка Lubuntu описана в исходной инструкции: достаточно скачать ISO и записать его на USB или DVD. При установке обычно выбирают 64‑битную сборку, если аппарат поддерживает этот режим.

Ключевые шаги установки:

  1. Подготовьте загрузочную флешку (Rufus, balenaEtcher или команда dd в Linux).
  2. Перезагрузите компьютер и загрузитесь с USB/DVD (возможно, понадобится изменить настройки BIOS/UEFI или выбрать загрузочное меню).
  3. В мастере установки выберите “Install Lubuntu”.
  4. Отметьте “Download updates while installing” и “Install 3rd party software” по необходимости.
  5. При выборе разметки диска можно выбрать “Erase and use entire disk” — это удалит все данные.
  6. Не используйте шифрование домашней папки, если собираетесь отдавать файлы в общий доступ или планируете удалённое автоматическое восстановление.

После завершения установки выполните обновления:

  • Через графический интерфейс: 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.

Варианты:

  1. DHCP‑резервация в вашем маршрутизаторе (рекомендуется). Это назначение IP по MAC‑адресу — надёжно и удобно.
  2. Статический 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 --apache

certbot автоматически проверит сайт и установит сертификат. Не забудьте настроить автоматическое продление:

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):

  1. Открыть http://127.0.0.1/ — получить 200 OK и ожидаемую страницу.
  2. Открыть файл info.php — увидеть страницу с информацией о PHP.
  3. С внешней сети (мобильная сеть или другоё подключение) зайти на ваш публичный адрес и проверить доступность.
  4. Провести базовый тест безопасности: nmap снаружи (open ports) и проверить HTTPS.

Управление и операционная методика (мини‑SOP)

Короткая последовательность действий при деплое новой версии сайта:

  1. Тестируйте локально или на staging‑сервере.
  2. Заблокируйте доступ к сайту (maintenance page).
  3. Скопируйте файлы: rsync –delete -avz ./build/ user@server:/var/www/html/
  4. Проверьте права и владельца файлов.
  5. Перезапустите веб‑сервер: sudo systemctl reload apache2 (или nginx).
  6. Быстро проверьте ключевые страницы и логи.
  7. Снимите maintenance mode.

Шаблон команды rsync:

rsync -avz --delete ./dist/ user@192.168.1.250:/var/www/html/

Руководство на случай инцидента: сервер недоступен

Краткое пошаговое руководство:

  1. Проверьте питание и подключение сети на сервере.
  2. Попробуйте зайти по локальному IP из другой машины в сети.
  3. Проверьте статус сервиса: sudo systemctl status apache2 mysql
  4. Посмотрите последние строки в логах: sudo tail -n 200 /var/log/apache2/error.log
  5. Убедитесь, что маршрут/порт‑форвардинг на роутере не изменился.
  6. Если внешне не доступен, проверьте внешний IP провайдера и сопоставление DNS.
  7. Если нужна откатная версия — восстановите данные из последней резервной копии.

Модель мышления: порты = двери; сервисы = комнаты

Представляйте сервер как дом:

  • Порты — двери в разные комнаты (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.


Экран теста Apache

Завершая: вы теперь знаете, как подготовить железо, установить Linux, настроить веб‑стек, открыть доступ из интернета и минимально обезопасить сервер. Этот набор шагов подходит для хобби‑проектов, тестовых окружений и изучения администрирования. Для продакшна рассмотрите дополнительные меры безопасности, резервирования и мониторинга.

Краткое резюме

  • Выберите подходящее железо (ПК или Raspberry Pi).
  • Установите лёгкий Linux и актуальные пакеты.
  • Настройте LAMP/Nginx и рабочую папку /var/www.
  • Назначьте статический локальный IP или сделайте резервацию в роутере.
  • Настройте порт‑форвардинг и динамический DNS.
  • Включите HTTPS и брандмауэр.

Важно: если вы планируете публичный, коммерческий или критичный проект, подумайте о хостинге в дата‑центре — это избавит вас от проблем с сетью и SLA.


Полезные ссылки и ресурсы

  • Lubuntu — официальный сайт (ищите актуальную стабильную версию).
  • Certbot — руководство по автоматическому получению сертификатов Let’s Encrypt.
  • Документация вашего роутера — раздел Port Forwarding.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Gmail и настольные клиенты: выбор и настройка
Почта

Gmail и настольные клиенты: выбор и настройка

SketchUp бесплатно: как начать 3D‑моделирование
3D моделирование

SketchUp бесплатно: как начать 3D‑моделирование

Как создать аккаунт PlayStation Network (PSN)
Руководство

Как создать аккаунт PlayStation Network (PSN)

Почему iPhone и iPad нагреваются и как это исправить
Мобильные устройства

Почему iPhone и iPad нагреваются и как это исправить

Как искать жильё на Airbnb для отпуска
Путешествия

Как искать жильё на Airbnb для отпуска

Arduino Pong: ретро-игра на TV
Arduino

Arduino Pong: ретро-игра на TV