qvib.pro
EN

Свой проект на сервере с нуля

Для чего: поднять проект на VPS и открыть его по ссылке (домен + HTTPS) — даже если ты никогда этого не делал. 7 шагов, любой хостинг, любой ИИ-наставник.

бесплатно любой

Канонический контент гайда «Поднять сервер через ИИ». Принцип: универсально. ИИ здесь — любой (ChatGPT, Claude, Gemini, DeepSeek, Qwen, локальный Ollama). Не привязываемся к одному инструменту. Уровень: проходит и школьник/бабушка по шагам, и сеньор найдёт заметки для себя (блоки 🧠). Хостинг в примере — Timeweb Cloud (можно заменить любым: Hetzner, Selectel, Reg.ru, DigitalOcean — шаги те же).

🧭 Сначала — картина целиком (чтобы не бояться)

Сервер — это просто чужой компьютер, который всегда включён и в интернете. Ты его «арендуешь», подключаешься к нему по сети и ставишь туда свой проект, чтобы он работал 24/7 и был доступен другим по ссылке.

Весь путь — это 7 шагов:

  1. Завести хостинг и создать сервер (VPS).
  2. Подключиться к нему (SSH).
  3. Подготовить сервер (обновить, создать пользователя, включить firewall).
  4. Поставить Docker (чтобы запускать проекты одинаково и без боли).
  5. Завести Git и ветки (чтобы хранить код и не терять версии).
  6. Принести проект на сервер: либо создать новый, либо выгрузить из локалки.
  7. Запустить и открыть по ссылке (домен + HTTPS).

🤖 Золотое правило новичка. Если на ЛЮБОМ шаге не понимаешь — не гадай. Скопируй ошибку и спроси ИИ по шаблону из конца гайда (раздел «Промт-спасалка»). Это и есть навык. Сеньор отличается не тем, что всё знает, а тем, что умеет быстро выяснить.


Шаг 1. Завести хостинг и создать сервер (VPS)

Что делаем: регистрируемся и создаём виртуальный сервер.

  1. Зайди на сайт Timeweb Cloud → зарегистрируйся (почта/телефон) → пополни баланс (старт стоит копейки в день).
  2. В панели нажми «Создать» → Серверы (Облачные серверы / VPS).
  3. Регион: ближе к твоим пользователям (Москва/СПб/Новосибирск/Казахстан/Польша/Нидерланды).
  4. Операционная система: выбери Ubuntu 24.04 LTS (почему — ниже).
  5. Конфигурация для старта: 2 CPU · 2 ГБ RAM · 40 ГБ SSD — этого хватает для обучения, сайта, бота, небольшого приложения. Мощность потом можно добавить в пару кликов.
  6. Доступ: выбери SSH-ключ (безопаснее) — как сделать ключ, в Шаге 2. Если пока сложно — можно «по паролю» (root-пароль появится на Дашборде сервера).
  7. Нажми «Создать» и подожди ~минуту. Сервер готов: на Дашборде будет его IP-адрес (например 185.12.34.56).

Какую ОС выбрать и почему

Бери Ubuntu LTS (сейчас 24.04). LTS = Long-Term Support, обновления безопасности на годы. Под Ubuntu больше всего инструкций и ответов в интернете и у ИИ → меньше тупиков для новичка. Альтернативы: Debian (ещё стабильнее, чуть аскетичнее), AlmaLinux/Rocky (если нужен RHEL-мир). Windows-сервер новичку для веба/кода не нужен.

🧠 Для сеньора: для одноразовых сервисов смотри managed/Apps; для прод — фиксируй версию образа, включай бэкап-снапшоты по расписанию, держи infrastructure-as-code (хотя бы cloud-init / Terraform-провайдер Timeweb).

🤖 Спроси у ИИ (если завис на выборе): «Я новичок, хочу арендовать VPS под <свой проект: сайт/бот/приложение на ___>. Какую конфигурацию (CPU/RAM/диск) и какую ОС взять для старта и почему? Объясни простыми словами.»


Шаг 2. Подключиться к серверу (SSH)

Что такое SSH: защищённый способ «зайти в терминал» сервера со своего компьютера.

Вариант А — по паролю (самый простой)

  • Windows: открой PowerShell. macOS/Linux: открой Терминал.
  • Введи (IP возьми с Дашборда):
    ssh root@185.12.34.56
    
  • Введи пароль root (с Дашборда). Ты внутри сервера. 🎉

Вариант Б — по SSH-ключу (правильный, без пароля, безопаснее)

На своём компьютере:

ssh-keygen -t ed25519 -C "моя почта"      # Enter на все вопросы — создастся пара ключей
cat ~/.ssh/id_ed25519.pub                 # это ПУБЛИЧНЫЙ ключ — его можно показывать

Скопируй вывод (строка вида ssh-ed25519 AAAA...) и в панели Timeweb при создании сервера нажми «Загрузить новый ключ» → вставь → Добавить. Теперь подключение — без пароля:

ssh root@185.12.34.56

⚠️ Безопасность: приватный ключ (id_ed25519 без .pub) — НИКОМУ и НИКУДА не вставляй и не отправляй. Это как ключ от квартиры.

Если ключ не цепляется — можно открыть веб-консоль прямо в панели Timeweb и вставить публичный ключ в ~/.ssh/authorized_keys вручную (через nano).

🤖 Спроси у ИИ: «Я на <Windows/Mac>. Объясни по шагам, как сгенерировать SSH-ключ и подключиться к моему серверу Ubuntu по адресу . После каждой команды скажи, что должно появиться на экране.»


Шаг 3. Подготовить сервер (5 минут, делается один раз)

Ты внутри сервера. Сделай базовую гигиену:

apt update && apt upgrade -y                 # обновить систему
adduser anton                                # создать своего пользователя (не работать под root)
usermod -aG sudo anton                       # дать ему права админа

Включи firewall (пускаем только нужное):

ufw allow OpenSSH                            # чтобы не потерять доступ по SSH!
ufw allow 80                                 # сайт (HTTP)
ufw allow 443                                # сайт (HTTPS)
ufw enable                                    # включить

⚠️ Сначала ufw allow OpenSSH, потом ufw enable — иначе закроешь сам себе вход.

🧠 Для сеньора: отключи парольный вход (PasswordAuthentication no в /etc/ssh/sshd_config), оставь только ключи; поставь fail2ban; делай unattended-upgrades; снапшоты Timeweb по расписанию; не держи секреты в истории shell.

🤖 Спроси у ИИ: «Объясни простыми словами, что делает каждая из этих команд, и безопасно ли их выполнять на моём новом сервере Ubuntu 24.04: <вставь команды>.»


Шаг 4. Поставить Docker (чтобы запускать проекты без боли)

Зачем Docker: он упаковывает проект вместе со всем окружением в «коробку» (контейнер). На твоём компе и на сервере всё запускается одинаково — конец фразе «у меня работало». Для новичка это меньше ошибок, для сеньора — повторяемость.

Установка официальным способом (Ubuntu, репозиторий apt):

# базовые пакеты
sudo apt update
sudo apt install -y ca-certificates curl
# ключ репозитория Docker (актуальный формат — файл .asc)
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# подключить репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# установка
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# проверка
sudo docker run hello-world
docker compose version

⚠️ В интернете часто советуют curl ... | sh — это удобно, но запускать скрипт «вслепую из трубы» — плохая привычка (так распространяют вредонос). Способ выше — официальный и прозрачный.

🧠 Для сеньора: добавь пользователя в группу docker (usermod -aG docker anton), помни про риск root-эквивалента; для прод — ограничения ресурсов, healthchecks, отдельная сеть, не светить порты наружу (только через reverse-proxy).

🤖 Спроси у ИИ: «Объясни простыми словами, что такое Docker и зачем он мне для проекта на <язык/фреймворк>. Дай Dockerfile и docker-compose.yml под мой проект и объясни каждую строку.»


Шаг 5. Git и ветки (хранилище кода + защита от потерь)

Git — это «машина времени» для кода: фиксирует версии, позволяет откатиться, вести параллельные направления (ветки) и переносить код между компом и сервером.

Завести репозиторий (на своём компьютере, в папке проекта)

git init
git add .
git commit -m "Первый коммит: старт проекта"

Создай пустой репозиторий на GitHub/GitLab → подключи и отправь:

git remote add origin https://github.com/ТВОЙ_ЛОГИН/мой-проект.git
git branch -M main
git push -u origin main

Ветки — универсальная схема (подходит и соло, и команде)

  • main — стабильное, то что «в проде». Не пишем сюда напрямую.
  • dev — куда собираем готовые куски.
  • feature/<что-делаешь> — отдельная ветка под каждую задачу.
git checkout -b feature/login        # создать ветку под фичу и перейти в неё
# ...пишешь код...
git add .
git commit -m "Добавил вход по почте"
git push -u origin feature/login     # отправить ветку
# готово и проверено → влить в dev:
git checkout dev
git merge feature/login

Минимальный набор на каждый день

git status                 # что изменилось
git add .                  # подготовить изменения
git commit -m "понятное описание"
git push                   # отправить в облако
git pull                   # забрать чужие/свои изменения с другого устройства

.gitignore — что НЕ коммитить (важно!)

Создай файл .gitignore:

node_modules/
.venv/
.env            # секреты/пароли — НИКОГДА в git!
*.log
dist/

⚠️ Секреты (пароли, ключи, токены) — НИКОГДА в git. Храни в .env (он в .gitignore). Утёкший в публичный репозиторий ключ = взлом.

🧠 Для сеньора: trunk-based vs git-flow по контексту; защити main (PR + ревью + CI), conventional commits, подписанные коммиты, секреты — в Vault/Secrets, а не в .env на проде.

🤖 Спроси у ИИ (если запутался): «Я сделал что-то не так в git: <опиши/вставь вывод git status>. Объясни простыми словами, что произошло, и дай точные команды, чтобы вернуть как было, ничего не потеряв.»


Шаг 6. Принести проект на сервер

Путь А — выгрузить существующий проект из локалки (рекомендую)

На сервере (под своим пользователем):

ssh anton@185.12.34.56
git clone https://github.com/ТВОЙ_ЛОГИН/мой-проект.git
cd мой-проект

Дальше создаёшь .env прямо на сервере (секреты вводишь руками, не из git) и запускаешь.

Путь Б — создать новый проект с нуля сразу на сервере

Просто опиши задачу ИИ и собирай по шагам:

🤖 «Помоги создать новый проект <что хочу: лендинг / телеграм-бот / API на ___>. Я на чистом Ubuntu-сервере с Docker. Дай по шагам: структуру файлов, код минимальной рабочей версии, Dockerfile, docker-compose.yml и команду запуска. После каждого шага — как проверить, что работает.»


Шаг 7. Запустить и открыть по ссылке

Запуск через Docker

docker compose up -d        # поднять проект в фоне
docker compose logs -f      # смотреть логи (Ctrl+C — выйти из просмотра)
docker compose ps           # что запущено

Проверь, что приложение отвечает на сервере (например, на порту 3000):

curl http://localhost:3000

Домен + HTTPS (чтобы был красивый адрес и замочек 🔒)

  1. Купи домен (или возьми бесплатный поддомен), в DNS пропиши A-запись на IP сервера.
  2. Поставь Caddy — он сам получает HTTPS-сертификат (проще всего для новичка). Минимальный Caddyfile:
    мойдомен.ru {
        reverse_proxy localhost:3000
    }
    
    Запусти Caddy (через Docker или пакет) — он автоматически выдаст HTTPS. Готово: проект открывается по https://мойдомен.ru.

🧠 Для сеньора: альтернативы — Nginx + certbot, Traefik (лейблы на контейнерах). Добавь healthcheck, авто-рестарт (restart: unless-stopped), отдельную docker-сеть, логирование/мониторинг (Sentry/Grafana), бэкап БД по cron + снапшоты.

🤖 Спроси у ИИ: «Мой проект слушает порт <3000> на Ubuntu-сервере. Помоги настроить домен <мойдомен.ru> с HTTPS через Caddy по шагам, дай Caddyfile и команды запуска, объясни DNS A-запись простыми словами.»


🆘 Промт-спасалка (работает с любым ИИ)

Сохрани этот шаблон. Когда застрял — заполни и вставь в любой ИИ (ChatGPT, Claude, Gemini, DeepSeek, Qwen, локальный Ollama — без разницы):

Я новичок, объясняй простыми словами и по шагам.
МОЯ ЦЕЛЬ: <что хочу получить в итоге>
ГДЕ Я: VPS на Timeweb, Ubuntu 24.04, есть Docker и Git. <что уже сделал>
Я ЗАСТРЯЛ НА: <какой шаг / что пытаюсь сделать>
ВОТ ЧТО ВИЖУ (ошибка/вывод):
<вставь точный текст ошибки или опиши что на экране>

Что делать:
1) Объясни простыми словами, что это значит и почему так.
2) Дай точные команды по шагам ПОД МОЮ СИСТЕМУ (Ubuntu 24.04).
3) После каждой команды скажи, что должно произойти и как понять, что всё ок.
4) Если шаг необратимый (удаление, перезапись, деплой) — предупреди и предложи бэкап.
5) В конце — как проверить, что цель достигнута.

Мини-промты под каждый шаг (на случай тупика):

  • Выбор сервера → «Какой VPS и ОС под мой проект и почему?»
  • Подключение → «Как зайти на сервер по SSH с <Windows/Mac>, по шагам?»
  • Подготовка → «Что делают эти команды и безопасны ли они? <вставь>»
  • Docker → «Дай Dockerfile и docker-compose.yml под мой проект на <стек>, объясни строки.»
  • Git → «Я запутался в git: . Как вернуть как было, ничего не потеряв?»
  • Деплой → «Настрой домен + HTTPS через Caddy для порта , по шагам.»

💎 Глубина и ценность (зачем всё это)

  • Ты перестаёшь зависеть от «специально обученных людей». Связка «дешёвый сервер + Git + Docker + любой ИИ как наставник» = ты сам доводишь идею до живого продукта в интернете.
  • Принцип важнее кнопок. Интерфейсы хостингов и версии команд меняются — но модель «арендовал → подключился → подготовил → запустил в контейнере → выложил через Git → открыл по домену» не меняется. Понял модель — справишься на любом хостинге.
  • ИИ — это наставник, а не костыль. Не «сделай за меня вслепую», а «объясни и проведи по шагам, чтобы я понял». Тогда растёшь: от «бабушка по инструкции» до «сам себе DevOps».
  • Безопасность — часть мастерства. Ключи не светить, секреты не в git, firewall включён, перед необратимым — бэкап. Это отличает уверенного человека от того, кто однажды потеряет данные.

Когда базовый путь освоен и хочется автономности следующего уровня (команда ИИ-агентов: владелец продукта + архитектор + инженер + ревью + безопасность, доведение задачи до конца с авто-тестом) — смотри вкладку Laskoff OS в сервисе. Это уже продвинутый трек поверх этих же принципов.