Найти в Дзене
@postnikovstas

🚀 Пошаговая инструкция: превращаем домашний Ubuntu-ноутбук в полноценный Laravel-сервер с доменом

Эта статья — подробное руководство по превращению обычного домашнего ноутбука с Ubuntu 22.04 в веб-сервер для Laravel-проекта с возможностью доступа по домену. В статье подробно объясняется, зачем выполняется каждый шаг, как это работает и на что обратить внимание. Я давно работаю с Laravel, хорошо знаю экосистему и инструменты, и настал момент, когда мне понадобилось создать веб-приложение для отладки конкретной бизнес-идеи. Раскрывать суть этой идеи я не хочу, но было важно, чтобы среда для разработки и тестирования была максимально приближена к боевой. Облачные серверы с подходящими характеристиками стоили бы неоправданно дорого, особенно на старте. Поэтому я решил поднять собственный сервер на домашнем ноутбуке с Ubuntu — быстро, гибко и бесплатно. Цель: развернуть Laravel-проект на этом ноутбуке, настроить домен и безопасный удалённый доступ к нему через интернет. Зачем? Если у вас два устройства — модем Huawei и роутер Keenetic — и вы хотите, чтобы именно Keenetic получал вне
Оглавление

Эта статья — подробное руководство по превращению обычного домашнего ноутбука с Ubuntu 22.04 в веб-сервер для Laravel-проекта с возможностью доступа по домену. В статье подробно объясняется, зачем выполняется каждый шаг, как это работает и на что обратить внимание.

💡 Введение

Я давно работаю с Laravel, хорошо знаю экосистему и инструменты, и настал момент, когда мне понадобилось создать веб-приложение для отладки конкретной бизнес-идеи. Раскрывать суть этой идеи я не хочу, но было важно, чтобы среда для разработки и тестирования была максимально приближена к боевой. Облачные серверы с подходящими характеристиками стоили бы неоправданно дорого, особенно на старте. Поэтому я решил поднять собственный сервер на домашнем ноутбуке с Ubuntu — быстро, гибко и бесплатно.

🧾 Что у нас есть:

  • Ubuntu 22.04 на ноутбуке
  • Интернет по Wi-Fi через Keeneti, подключённому к GPON-модему Huawei с белым IP от провайдера
  • Laravel-проект с использованием Laradock (Docker)
  • Доменное имя и доступ к DNS-записям

Цель: развернуть Laravel-проект на этом ноутбуке, настроить домен и безопасный удалённый доступ к нему через интернет.

📡 Шаг 1. Настройка модема Huawei HG8245H в режим моста (bridge)

Зачем? Если у вас два устройства — модем Huawei и роутер Keenetic — и вы хотите, чтобы именно Keenetic получал внешний белый IP и сам управлял NAT, пробросом портов и соединением PPPoE, модем нужно перевести в режим моста (bridge).

Что нужно сделать:

Шаг 1. Перевести Huawei HG8245H в режим "Bridge".

Два способа:

  • Простой:

Позвонить в техподдержку провайдера и попросить перевести модем в режим моста (Bridge).

  • Вручную:

1. Перейдите в браузере по адресу http://192.168.100.1

2. Введите логин/пароль: telecomadmin / admintelecom

3. Зайдите в раздел WAN

4. Найдите строку подключения 4_INTERNET_R_VID_10 или похожую

5. В поле WAN Mode смените значение Route WAN на Bridge WAN

6. Нажмите Apply

  • Шаг 2. Соедините модем и роутер.

- Вставьте сетевой кабель в порт 1 на Huawei и в порт «Интернет» (WAN) на Keenetic

Шаг 3. Настройка PPPoE на Keenetic

- На Keenetic создайте новое подключение PPPoE через интерфейс, нужно будет ввести логи и пароль на интернет от провайдера.

После этого ваш Keenetic будет получать внешний белый IP и управлять всей маршрутизацией — как полноценный интернет-шлюз.

---

Шаг 2. Настройка SSH-доступа

Зачем? Чтобы управлять сервером удалённо из любого места, безопасно и без графического интерфейса.

Установка SSH-сервера:

выполняем команды на ноутбуке - сервере:

sudo apt update

sudo apt install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

Проверка статуса:

sudo systemctl status ssh

Настройка фаервола:

sudo ufw allow 22/tcp

Увеличиваем безопасность — меняем порт и отключаем парольный вход:

sudo nano /etc/ssh/sshd_config

так мы откроем волшебный редактор файла nano

Добавляем порт, например 2025:

Port 2025

обязательно жмем ctrl+o(сохраним), затем enter(подтвердим), ctrl+x(выйдем)

далее открываем порт:

sudo ufw allow 2025/tcp

sudo systemctl restart ssh

Теперь SSH-доступ открыт по нестандартному порту, и никто не сможет подключиться без ключа.

🌐 Шаг 3. Проброс портов на Keenetic

📌 Закрепляем IP для Ubuntu-сервера в Keenetic

Зачем? Чтобы внутренний IP-адрес Ubuntu-ноутбука всегда оставался одинаковым (например, 192.168.1.70), иначе при перезагрузке роутера может измениться IP и проброс портов перестанет работать.

Как это сделать:

  1. Перейдите в веб-интерфейс Keenetic: http://192.168.1.1 или my.keenetic.net
  2. Войдите в панель управления
  3. Перейдите в раздел Список устройств
  4. Найдите ваш ноутбук (по имени или MAC-адресу)
  5. Нажмите "Ещё" → Закрепить IP-адрес
  6. Установите, например, 192.168.1.70

Теперь этот адрес всегда будет назначаться именно этому ноутбуку

📌 Проброс портов в Keenetic на наш сервер

Зачем? Чтобы можно было подключаться к серверу из интернета — ведь по умолчанию роутер блокирует входящие подключения.

| Назначение | Внешний порт | Внутренний порт | IP Ubuntu |

|-------------------|--------------|------------------|---------------------|

| SSH | 2025 | 2025 | 192.168.1.70 |

| HTTP | 80 | 80 | 192.168.1.70 |

| HTTPS | 443 | 443 | 192.168.1.70 |

В Keenetic: "Интернет" → "Переадресация портов" → добавить правило для каждого нужного порта.

🔐 Шаг 3. Подключение по SSH через ключ

Зачем? Ключи надёжнее паролей и не уязвимы к брутфорсу. Обязательно для прод-серверов.

На своем компьютере, откуда планируется управление сервером создадим RSA ключ

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2025 имя_пользователя@белый_внешний_IP

Теперь можно подключаться без пароля:

ssh -p 2025 имя_пользователя@белый_внешний_IP

---

🐳 Шаг 4. Развёртывание проекта через Laradock

Зачем? Laradock создаёт изолированные контейнеры для PHP, Nginx, MySQL и других сервисов, упрощая деплой.
Здесь показана примерная команда для создания и потроения контейнеров, в частности, в docker-compose.custom.yml у меня прописано настройки для создания и построении контенеров. Как настроить laradock посмотрите в документации. Если нужна инструкция, пишите комментарии, я сделаю понятную инструкцию.

sudo docker-compose -f docker-compose.custom.yml up -d

🌍 Шаг 5. Настройка Nginx для доступа по домену

Зачем? Nginx обрабатывает входящие HTTP-запросы и передаёт их Laravel.

например у вас есть поддомен example.autoinostranec.ru:

- Настрой A-запись у регистратора на IP сервера

- Добавь такой блок конфиге laradock (laradock/nginx/sites/):

server {

listen 80;

server_name example.autoinostranec.ru;

root /var/www/путь_до проекта_в папке_laradock/public;

index index.php index.html;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

try_files $uri =404;

fastcgi_pass php-upstream;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

}

Перезапуск nginx после настройки:

sudo docker-compose -f docker-compose.custom.yml restart nginx

🔒 Шаг 6. Права доступа Laravel (на проде)

Зачем? Laravel должен иметь доступ к `storage/` и `bootstrap/cache`, но без избыточных прав.
для этого нужно провалиться в контенр worspace (основной контейнер laradock)
sudo docker ps
далее откроется список созданных контейнеров, ищем глазами worspace и копируем его ID
далее:
sudo docker exec -it ID_контейнера bash
мы провалимся в контейнер worspace, передем в наш проект
cd путь_к нашему_проекту

Настроим права:

chown -R www-data:www-data .

find . -type d -exec chmod 755 {} \;

find . -type f -exec chmod 644 {} \;

chmod -R ug+rwx storage bootstrap/cache

chmod -R o-rwx storage bootstrap/cache

📦 Шаг 7. Развернем Laravel на сервер

Зачем? Чтобы применить миграции и подготовить кэш.

php artisan migrate --force

php artisan config:cache

php artisan route:cache

🚨 Важные замечания по безопасности

  • Не делай chmod -R guo+w storage — это открывает доступ для всех, включая злоумышленников
  • 🔒 Убедись, что только нужные порты проброшены наружу, и что твой SSH закрыт для входа по паролю

Эта инструкция поможет тебе быстро и безопасно развернуть Laravel на домашнем Ubuntu-сервере и использовать его так же, как полноценный прод. Подходит для всех случаев, где есть белый IP и желание делать красиво 😎. Оставлись вопросы? Что-то не получилось? Задай вопрос в комментарии.