Многие разработчики рано или поздно сталкиваются с необходимостью обеспечить круглосуточную работу своей «нетленки» (самописной конфигурации). Это может быть торговый робот, система мониторинга или личный кабинет. Часто возникает соблазн перенести решение с домашнего компьютера в облако, особенно на время отпуска. Разберем подробно, как это реализовать, с какими трудностями придется столкнуться и какие технические хитрости помогут сэкономить.
Первое, с чем мы сталкиваемся при попытке развернуть 1С на виртуальной машине (VPS/VDS), — это механизм привязки программных лицензий. Проанализируем ситуацию: программная лицензия 1С формирует уникальный ключ на основе характеристик оборудования (процессор, объем оперативной памяти, сетевая карта, параметры диска). В облаке эти параметры могут динамически меняться в зависимости от нагрузки на физический сервер провайдера или при миграции виртуальной машины.
Рассмотрим последствия: если параметры виртуального железа изменятся, ваша лицензия мгновенно «превратится в тыкву». При активации программного ключа на виртуальной машине следует выбирать провайдеров, гарантирующих фиксированные ресурсы (Dedicated CPU/RAM), либо быть готовым к использованию резервных пин-кодов. Если вы используете «Версию для обучения программированию» или комплект разработчика, помните, что количество активаций ограничено.
Если задача стоит в размещении решения всего на пару недель, выясним, как сделать это бесплатно. Крупные облачные провайдеры (Yandex Cloud, Selectel, Cloud.ru) предоставляют новым пользователям приветственные гранты. Суммы в 3000–4000 рублей вполне достаточно, чтобы арендовать мощную виртуальную машину с ОС Windows Server или Linux на месяц.
Для реализации этого сценария выполним следующие шаги:
Разберем интересный технический нюанс: потребление лицензий при работе через веб-сервисы. Если ваш торговый робот или иное приложение взаимодействует с внешним миром (например, через Tinkoff API или Telegram Bot API), использование HTTP-сервисов может быть очень выгодным. Рассмотрим, почему это важно.
Сеансы, инициированные через веб-сервисы, в определенных сценариях не расходуют клиентские лицензии так, как это делает обычное подключение через тонкий или толстый клиент. Однако серверная лицензия все равно требуется. Здесь на помощь приходит 1С:Предприятие Community Edition. Это бесплатная версия платформы для разработчиков, которая позволяет легально использовать серверные возможности в режиме тестирования и личной разработки.
Проанализируем ситуацию с масштабированием и отказоустойчивостью. Продвинутые разработчики используют Docker-контейнеры для запуска 1С. Это позволяет инкапсулировать все окружение (библиотеки, настройки веб-сервера) в один образ. Посмотрим на преимущества этого подхода:
Для работы торгового робота на Linux через Docker можно использовать базовый образ Ubuntu. Пример структуры скрипта для запуска процесса в режиме «одного процесса» (что иногда позволяет работать без полноценной серверной лицензии в целях разработки):
# Пример запуска сервера 1С в контейнере
/opt/1cv8/x86_64/8.3.22.1750/ragent -port 1540 -regport 1541 -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8
Выясним причину, по которой многие опасаются облаков — безопасность. Если в вашей «нетленке» жестко зашит API-токен (например, от биржи), при передаче базы в облако риск компрометации возрастает. Правильным подходом будет вынос всех чувствительных данных из кода конфигурации.
Рассмотрим, как это реализовать в коде 1С. Вместо хранения токена в константе или коде, будем использовать чтение из файла настроек, который не включается в выгрузку базы, или через параметры запуска:
Функция ПолучитьТокенДоступа()
ФайлНастроек = Новый Файл("C:\Secrets\tinkoff_token.txt");
Если ФайлНастроек.Существует() Тогда
ЧтениеТекста = Новый ЧтениеТекста("C:\Secrets\tinkoff_token.txt");
Возврат ЧтениеТекста.Прочитать();
КонецЕсли;
Возврат Неопределено;
КонецФункции
Если бюджет равен нулю, а возиться с облачными лицензиями нет желания, разберем вариант «домашнего облака». Для этого нам понадобится «белый» IP-адрес от провайдера и настройка проброса портов (Port Forwarding) на роутере.
Настроим доступ по шагам:
192.168.1.1).3389 (для RDP) или 80/443 (если база опубликована на веб-сервере IIS/Apache).Важно: При использовании RDP обязательно смените стандартный порт на другой (например, 45678) и установите сложный пароль, так как боты постоянно сканируют стандартные порты на предмет уязвимостей.
Мы рассмотрели различные варианты размещения 1С для работы в режиме 24/7. Для краткосрочного отпуска оптимальным решением станет либо использование **триального периода** крупного облачного провайдера с установкой **Community Edition**, либо настройка **удаленного доступа** к домашнему ПК. Выбор зависит от ваших требований к пингу (latency) и готовности возиться с настройками Linux и Docker.