Публикация базы 1С:Предприятие
Доступно только по подписке.
Обзор
Команда tuna 1c публикует базу 1С:Предприятие и открывает к ней доступ из интернета: через веб-клиент
в браузере или тонкий клиент 1С. Ставить и настраивать веб-сервер, пробрасывать порты и получать «белый» IP не нужно.
У 1С нет собственного HTTP-сервера: веб-клиент и тонкий клиент по HTTP обслуживает модуль расширения
веб-сервера, который загружается в Apache или IIS. tuna 1c делает всю эту работу сама:
- находит установленную платформу 1С и её модуль расширения веб-сервера;
- при первом запуске скачивает Apache httpd с
releases.tuna.amв кэш (%LocalAppData%\tuna); - запускает его на
127.0.0.1и публикует в нём базу; - открывает HTTP-туннель к этому веб-серверу.
База доступна по адресу <адрес туннеля>/1c/, корень адреса перенаправляет туда же.
Требования
- Подписка tuna. На бесплатном тарифе команда не запустится: сервер ответит
1C unavailable for free plan. - Windows x64. Команда есть только в сборке tuna для Windows x64. Платформа 1С при этом может быть и 32-, и 64-битной. В сборках для Linux, macOS и Windows ARM64 команды нет.
- Компонент «Модули расширения веб-сервера» в установке 1С. Без него tuna сообщит, что модуль не найден. Как его установить.
- Лицензия 1С, допускающая подключение через веб-сервер. Учебная версия не подходит.
При первом запуске tuna также установит Microsoft Visual C++ Redistributable, если его нет в системе: без него Apache не запускается. Windows может запросить подтверждение (UAC).
Установка модулей расширения веб-сервера
Компонент входит в дистрибутив платформы, но по умолчанию может быть не отмечен. Добавить его в уже установленную 1С:
-
Откройте «Параметры» → «Приложения» → «Установленные приложения», найдите «1С:Предприятие 8» и в меню «…» нажмите «Изменить». В Windows 10 и старше то же самое делается через «Панель управления» → «Программы и компоненты».
-
В установщике выберите режим «Изменить» и нажмите «Далее».
-
В списке компонентов нажмите на значок у «Модулей расширения веб-сервера» и выберите «Данный компонент будет установлен на локальный жесткий диск».
-
Нажмите «Далее» и дождитесь окончания установки.
Проверить результат можно командой tuna 1c discover: рядом с установкой появится путь к wsap24.dll.
Быстрый старт
Один раз выберите установку 1С и базу в мастере:
tuna 1c setup
Мастер спросит установку 1С, базу, локальный порт и место сохранения. Шаг с единственным вариантом он пропускает.
Опубликуйте базу и сразу закройте её паролем:
tuna 1c --basic-auth="login:password"
В шапке интерфейса в терминале будут:
| Строка | Что в ней |
|---|---|
Forwarding | Публичный адрес туннеля |
Local | Локальный адрес публикации, по нему базу можно открыть с этого же компьютера |
1C client | Готовый параметр /WS"…" для запуска тонкого клиента |
Platform | Каталог и разрядность используемой платформы 1С |
Warning | Предупреждения: база открыта без защиты, используется учебная версия |
Откройте адрес из строки Forwarding в браузере или подключите тонкий клиент.
Если мастер не нашёл 1С или базу, загляните в раздел Диагностика.
Примеры
Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:
tuna 1c --help
Почти для всех флагов есть аналогичные переменные окружения.
Какую базу публиковать
Базу можно указать тремя способами:
tuna 1c "Моя база"
tuna 1c "C:\Bases\MyBase"
tuna 1c "Srvr=localhost;Ref=MyBase"
- Имя базы из списка стартера 1С — того же, что вы видите в окне запуска 1С.
- Каталог файловой базы.
- Строка подключения к серверной базе.
Без аргумента tuna берёт базу из сохранённых настроек. Если их нет и в списке стартера одна база — публикует её, если несколько — предложит выбрать.
Публикация серверных баз (Srvr=…;Ref=…) поддерживается, но на рабочем кластере 1С мы её пока не проверяли.
Если столкнётесь с проблемой, напишите нам.
Сохранённые настройки
tuna 1c setup записывает выбор в секцию 1c конфигурационного файла — общего tuna.yml
или .tuna.yml в текущем каталоге:
1c:
home: 'C:\Program Files (x86)\1cv8'
platform: 'x86'
name: 'Моя база'
infobase: 'File="C:\Bases\MyBase";'
port: 8314
Аргумент и флаги командной строки важнее настроек из файла, а .tuna.yml в текущем каталоге перекрывает общий tuna.yml.
Чтобы изменить настройки, запустите мастер ещё раз или поправьте файл вручную.
Установка 1С в нестандартном каталоге
tuna ищет платформу в C:\Program Files\1cv8 и C:\Program Files (x86)\1cv8. Если 1С установлена в другое
место или нужно выбрать одну из нескольких установок, укажите каталог и разрядность:
tuna 1c "C:\Bases\MyBase" --1c-home="D:\1cv8" --1c-platform=x86
Локальный порт
По умолчанию веб-сервер занимает случайный свободный порт на 127.0.0.1. Зафиксировать порт:
tuna 1c "C:\Bases\MyBase" --1c-port=8314
Постоянный адрес
Адрес туннеля задаётся так же, как у HTTP-туннеля: поддоменом или своим доменом.
С постоянным адресом пользователям не придётся менять ссылку и параметр /WS после перезапуска.
tuna 1c "Моя база" --subdomain=my-1c
tuna 1c "Моя база" --domain=1c.example.com
С указанием токена
Можно указать специфичный токен через флаг --token или переменную окружения TUNA_TOKEN. Переопределение происходит в соответствии с политикой очерёдности конфигурации.
tuna 1c "Моя база" --token=tt_***
С указанием региона для подключения
Можно указать специфичный регион через флаг --location/-l или переменную окружения TUNA_LOCATION. Переопределение происходит в соответствии с политикой очерёдности конфигурации.
tuna 1c "Моя база" --location=ru
Подключение клиентов
Веб-клиент
Откройте адрес туннеля в браузере, tuna перенаправит на /1c/:
https://<адрес туннеля>/1c/
Тонкий клиент
Скопируйте параметр из строки 1C client в шапке и запустите тонкий клиент:
1cv8c.exe ENTERPRISE /WS"https://<адрес туннеля>/1c"
Тот же адрес можно добавить в список баз стартера: «Добавить» → «Добавление в список существующей информационной базы» → «На веб-сервере».
Безопасность
tuna 1c открывает базу всему интернету: адрес туннеля может подобрать или найти кто угодно.
Между посторонним и вашими данными остаётся только окно входа 1С.
Если запустить команду без --basic-auth и --key-auth, tuna покажет предупреждение. Что стоит сделать:
-
Закрыть публикацию паролем — tuna спросит его раньше, чем запрос дойдёт до 1С:
tuna 1c "Моя база" --basic-auth="login:password" -
Задать надёжные пароли всем пользователям базы. Пользователь без пароля или с простым паролем — это открытая дверь в базу. Особенно проверьте учётные записи с правами администратора.
-
Ограничить доступ по IP, если адреса пользователей известны:
tuna 1c "Моя база" --cidr-allow="203.0.113.0/24"
Работают и остальные способы защиты доступа HTTP-туннеля:
--key-auth, --cidr-deny, --rate-limit. Запросы к базе видны в инспекторе,
отключить его можно флагом --inspect=false.
Лицензии 1С
tuna публикует базу, но не меняет правила лицензирования 1С: сколько пользователей могут работать через веб-сервер одновременно, определяет ваша лицензия.
Учебная версия не подходит
Учебная версия платформы (каталог 1cv8t) допускает одно подключение к базе, и его занимает сама публикация.
Войти в базу не получится ни веб-клиентом, ни тонким. tuna предупредит об этом в шапке и в выводе tuna 1c discover.
Лицензия для разработчиков
Для пробы не обязательно покупать лицензию 1С: подойдёт бесплатная лицензия для разработчиков, её выдаёт developer.1c.ru. С ней мы и проверяли команду. Это лицензия 1С, она не заменяет подписку tuna. Условия и ограничения лицензии смотрите на сайте 1С. В нашей проверке одновременно работал один веб-клиент: пока вкладка с базой не закрыта или сеанс не завершился по тайм-ауту, войти из другого браузера не получится.
Файлы публикации
Для каждой базы tuna создаёт каталог публикации в %LocalAppData%\tuna\1c\. В нём лежат:
| Файл | Назначение |
|---|---|
default.vrd | Описание публикации 1С |
httpd.conf | Конфигурация Apache, создаётся заново при каждом запуске |
access.log, error.log | Журналы веб-сервера |
Существующий default.vrd tuna не перезаписывает, поэтому его можно править вручную — например, включить
OData или HTTP-сервисы. Вернуть исходный файл:
tuna 1c "Моя база" --reset-vrd
Свой каталог публикации задаётся флагом --1c-publish-dir:
tuna 1c "Моя база" --1c-publish-dir="C:\tuna-1c\my-base"
Диагностика
Команда tuna 1c discover показывает, что tuna нашла на компьютере: установки 1С, путь к модулю расширения
веб-сервера в каждой из них и базы из списка стартера.
tuna 1c discover
| Что в выводе | Что делать |
|---|---|
У установки написано web server extension module is not installed | Установите компонент |
У модуля пометка training edition, single connection | Это учебная версия, войти в базу через неё не получится |
| Установок нет | Укажите каталог флагом --1c-home |
| Баз нет | Передайте каталог базы или строку подключения аргументом |
Если база опубликовалась, но не открывается, посмотрите error.log в каталоге публикации.
Справочник флагов
| Флаг | Переменная окружения | Описание |
|---|---|---|
--1c-home | TUNA_1C_HOME | Каталог установки 1С:Предприятие |
--1c-platform | TUNA_1C_PLATFORM | Разрядность платформы: x64 или x86 |
--1c-port | TUNA_1C_PORT | Локальный порт веб-сервера, по умолчанию случайный свободный |
--1c-publish-dir | TUNA_1C_PUBLISH_DIR | Каталог с файлами публикации |
--reset-vrd | Создать default.vrd заново, даже если он есть | |
--basic-auth | TUNA_BASIC_AUTH | Логин и пароль для доступа к публикации |
--key-auth | TUNA_KEY_AUTH | Ключ в заголовке X-Token |
--cidr-allow, --cidr-deny | TUNA_CIDR_ALLOW, TUNA_CIDR_DENY | Доступ по подсетям IP |
--rate-limit | TUNA_RATE_LIMIT | Ограничение частоты запросов |
--subdomain, -s | TUNA_SUBDOMAIN | Поддомен |
--domain, -d | TUNA_DOMAIN | Собственный домен |
--location, -l | TUNA_LOCATION | Регион подключения |
--inspect | TUNA_INSPECT | Включить или отключить инспектор запросов |
--qr | TUNA_QR_CODE | Показать QR-код с адресом |
--token | TUNA_TOKEN | Токен |
Ограничения
Команда новая. Мы проверяли её на Windows 11 с 32-битной платформой 1С 8.3.27 и файловой базой: вход веб-клиентом
и тонким клиентом по публичному адресу, запуск по имени базы и без аргументов после tuna 1c setup, --1c-port,
--basic-auth в браузере. Пока не проверены:
- тонкий клиент вместе с
--basic-auth; - 64-битная платформа 1С и 1С 8.5;
- серверные базы на рабочем кластере 1С;
- каталоги баз с кириллицей и пробелами в пути;
- отчёты и печатные формы в веб-клиенте;
- запуск сервисом.
Если что-то из этого не работает у вас, напишите нам — поможем разобраться.