Настройка деплоя сайта на Selectel
Selectel — российский облачный провайдер с дата-центрами в Москве, Санкт-Петербурге и Ташкенте. Предпочтительный выбор для проектов с требованием хранения данных в РФ (152-ФЗ). Предоставляет Cloud VPS, Managed Kubernetes, S3-совместимое хранилище.
Создание сервера через CLI
# Установка openstack CLI
pip install python-openstackclient
# Настройка credentials (из панели Selectel → API Keys)
export OS_AUTH_URL=https://cloud.api.selcloud.ru/identity/v3
export OS_PROJECT_ID=your_project_id
export OS_USERNAME=your_username
export OS_PASSWORD=your_password
export OS_REGION_NAME=ru-1
# Создать сервер
openstack server create \
--flavor 1014 \ # 2 vCPU, 4 GB RAM
--image "Ubuntu 22.04 LTS 64-bit" \
--key-name my-key \
--security-group web-sg \
myapp-prod
Terraform для Selectel
# main.tf
terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "~> 5.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53"
}
}
}
provider "selectel" {
token = var.selectel_token
}
resource "selectel_vpc_project_v2" "myapp" {
name = "myapp-project"
theme = { color = "#4CAF50" }
}
resource "openstack_compute_instance_v2" "app" {
name = "myapp-prod"
flavor_name = "1014"
image_name = "Ubuntu 22.04 LTS 64-bit"
key_pair = openstack_compute_keypair_v2.mykey.name
security_groups = ["web-sg", "ssh-sg"]
region = "ru-1"
network {
name = "public"
}
user_data = file("cloud-init.yaml")
}
Selectel Object Storage (Swift/S3)
# Настройка AWS CLI для Selectel S3
aws configure
# AWS Access Key ID: your_key
# AWS Secret Access Key: your_secret
# Default region: ru-1
# Default output format: json
# Создать контейнер
aws --endpoint-url https://s3.selcdn.ru s3 mb s3://myapp-assets
# Загрузить статику
aws --endpoint-url https://s3.selcdn.ru \
s3 sync ./dist/assets s3://myapp-assets \
--acl public-read \
--cache-control "public, max-age=31536000, immutable"
# CDN через Selectel CDN
# Привязать домен cdn.example.com → myapp-assets.s3.selcdn.ru
Laravel + Selectel S3
// config/filesystems.php
'selectel' => [
'driver' => 's3',
'key' => env('SELECTEL_S3_KEY'),
'secret' => env('SELECTEL_S3_SECRET'),
'region' => 'ru-1',
'bucket' => env('SELECTEL_S3_BUCKET'),
'endpoint' => 'https://s3.selcdn.ru',
'url' => env('SELECTEL_CDN_URL'),
'use_path_style_endpoint' => true,
],
Managed Kubernetes (MKS)
# Создать кластер через веб-панель или API
# Получить kubeconfig
selectel mks kubeconfig --cluster-id CLUSTER_ID > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml
# Деплой
kubectl apply -f k8s/
# Тестирование
kubectl get pods -n myapp
kubectl get svc -n myapp
GitHub Actions для Selectel VPS
jobs:
deploy:
steps:
- name: Deploy
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SELECTEL_SERVER_IP }}
username: deploy
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/myapp
git pull origin main
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan optimize
sudo systemctl reload php8.3-fpm nginx
152-ФЗ и Selectel
Selectel имеет аттестацию по ФЗ-152 для хранения ПДн. При размещении приложений с российскими пользователями Selectel — прямое выполнение требований закона о локализации данных.
Срок реализации
- VPS + Nginx + деплой: 1–2 дня
- Object Storage + CDN: 1 день
- Managed Kubernetes: 3–4 дня







