Website deployment setup on Selectel

Our company is engaged in the development, support and maintenance of sites of any complexity. From simple one-page sites to large-scale cluster systems built on micro services. Experience of developers is confirmed by certificates from vendors.
Development and maintenance of all types of websites:
Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    815

Configuring Website Deployment on Selectel

Selectel is a Russian cloud provider with data centers in Moscow, St. Petersburg, and Tashkent. The preferred choice for projects requiring data storage in the Russian Federation (Law 152-FZ). Provides Cloud VPS, Managed Kubernetes, S3-compatible storage.

Creating Server via CLI

# Install openstack CLI
pip install python-openstackclient

# Configure credentials (from Selectel panel → 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

# Create server
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 for 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)

# Configure AWS CLI for Selectel S3
aws configure
# AWS Access Key ID: your_key
# AWS Secret Access Key: your_secret
# Default region: ru-1
# Default output format: json

# Create container
aws --endpoint-url https://s3.selcdn.ru s3 mb s3://myapp-assets

# Upload static files
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 via Selectel CDN
# Bind domain 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)

# Create cluster via web panel or API
# Get kubeconfig
selectel mks kubeconfig --cluster-id CLUSTER_ID > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml

# Deploy
kubectl apply -f k8s/

# Testing
kubectl get pods -n myapp
kubectl get svc -n myapp

GitHub Actions for 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

Law 152-FZ and Selectel

Selectel has certification under Law 152-FZ for personal data storage. When deploying applications with Russian users, Selectel ensures direct compliance with data localization requirements.

Implementation Timeline

  • VPS + Nginx + deploy: 1–2 days
  • Object Storage + CDN: 1 day
  • Managed Kubernetes: 3–4 days