Введение
💪 Автодеплой — это как режим тренировок. Если делаешь всё вручную, быстро устаёшь и пропускаешь подходы. Но если поставить процесс «на поток», сайт будет обновляться сам, а ты занимаешься развитием.
Сегодня покажу готовый «playbook» для Ubuntu-сервера с Nginx, Let’s Encrypt (certbot) и GitHub Actions. Этот сетап подойдёт для сайтов на HTML, CSS, JS, Tailwind и других статических проектов.
1. Что будем настраивать
- 📦 VPS на Ubuntu (например, 22.04)
- 🌐 Nginx как веб-сервер
- 🔒 Certbot для HTTPS
- ⚡ GitHub Actions для автодеплоя
- 🛠 systemd-сервис для фоновых задач
2. Настраиваем сервер
Устанавливаем Nginx и certbot:
sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx git
Настраиваем виртуальный хост:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/my-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
И сразу подключаем HTTPS:
sudo certbot --nginx -d example.com -d www.example.com
3. Подготовка Git-репозитория
На сервере создаём папку для сайта:
mkdir -p /var/www/my-site
chown -R $USER:$USER /var/www/my-site
И проверяем, что Git установлен:
git --version
4. GitHub Actions → деплой на сервер
В .github/workflows/deploy.yml добавляем пайплайн:
name: Deploy to VPS
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy via SSH
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
rsync -az --delete ./ ${DEPLOY_USER}@${DEPLOY_HOST}:/var/www/my-site/
sudo systemctl reload nginx
👉 Теперь при каждом пуше в main твой сайт будет обновляться автоматически.
5. systemd для фоновых задач
Если у сайта есть генерация (например, build Tailwind), можно вынести её в systemd:
sudo nano /etc/systemd/system/mysite.service
[Unit]
Description=Build mysite
[Service]
Type=oneshot
WorkingDirectory=/var/www/my-site
ExecStart=/usr/bin/npm run build
[Install]
WantedBy=multi-user.target
Активируем:
sudo systemctl enable mysite
sudo systemctl start mysite
6. Итог: что мы получили
- Сайт на VPS с Nginx и HTTPS
- Автодеплой через GitHub Actions
- systemd для фоновых задач
- Минимум ручной работы, максимум стабильности 🚀
💡 Это как тренажёрка: один раз настроил программу — и качаешься по ней стабильно.
Если статья была полезной, ставь лайк 👍, подписывайся на Digital Мастерская и делись в комментариях!