Подготовка сервера
Один скрипт превращает новый Linux VPS в сервер для вашей витрины. Он устанавливает Node.js, nginx и certbot, добавляет ваши домены с бесплатными сертификатами Let's Encrypt и запускает витрину на Nuxt, React или SvelteKit как системную службу.
Как это работает
Скрипт устанавливается как команда orionplace. Витрина работает на сервере как служба на локальном порту; nginx отвечает на вашем домене по HTTPS и передаёт ей каждый запрос, а витрина отправляет запросы API в ваш персональный бэкенд. Сертификаты продлеваются автоматически.
1 Что нужно
Перед началом проверьте сервер:
- VPS с публичным IP-адресом и одним из поддерживаемых дистрибутивов Linux (список внизу страницы).
- Доступ root через
sudo. - Не меньше 2 ГБ памяти для сборки витрины; на сервере поменьше добавьте файл подкачки.
- Открытые порты 80 и 443, в том числе в брандмауэре хостинг-провайдера.
shop.example.com, и www.shop.example.com, если он нужен) на IP-адрес сервера. Добавьте домен и в панели управления, в разделе «Домены», чтобы бэкенд его принимал.2 Скачайте и запустите скрипт
Подключитесь к серверу по SSH и выполните:
curl -fsSLo orionplace.sh https://orionmarket.place/downloads/orionplace.sh
sudo sh orionplace.sh setupЕсли на сервере нет curl, используйте wget:
wget -qO orionplace.sh https://orionmarket.place/downloads/orionplace.sh
sudo sh orionplace.sh setup3 Что делает setup
Setup определяет дистрибутив и делает остальное сам:
- устанавливает nginx, certbot и Node.js 24 LTS (официальную сборку, проверенную по контрольной сумме), если Node.js 22.12 или новее ещё не установлен;
- создаёт служебного пользователя
orionplaceи папку/srv/orionplaceдля витрин; - подключает к nginx папку управляемых сайтов;
- открывает порты 80 и 443 в ufw или firewalld, если один из них включён;
- настраивает автоматическое продление сертификатов;
- спрашивает адрес e-mail для уведомлений Let's Encrypt о сертификатах; нажмите Enter, чтобы пропустить.
4 Сервер, на котором уже работает nginx
Setup работает и на сервере, где nginx уже обслуживает другие сайты:
- использует установленный nginx и не меняет его сайты, настройки и сертификаты;
- добавляет только один файл, который подключает сайты витрин: в папку, которую
nginx.confуже подключает, а еслиnginx.confне подключает ни одной папки — рядом с ним, с одной строкой include вnginx.conf(копияnginx.confсохраняется); - останавливается, ничего не меняя, если
nginx -tуже сообщает об ошибках или если порт 80 или 443 занят другой программой, например Apache; - восстанавливает ваши файлы, если nginx не принимает результат.
При добавлении домена:
- команда отказывается брать имя, которое уже обслуживает другой сайт, и называет файл, где оно указано;
- шаблонное имя другого сайта, например
*.example.com, отдаёт только добавляемое имя, и команда сначала спрашивает; - сайты витрин слушают также все адреса, которые слушают ваши сайты;
- сертификат другого сайта никогда не используется повторно: если сертификат с именем домена уже есть, витрина получает свой сертификат с
-orionplaceв конце имени; cert renewиdomain removeтрогают только сертификаты витрин.
6 Следующий шаг
Установите витрину из npm одной командой, например sudo orionplace app install nuxt, или создайте проект сами и запустите его команду install. В обоих случаях витрина собирается, запускается как служба и получает домены по HTTPS.
7 Поддерживаемые дистрибутивы
Проверено на 64-битных серверах x86:
- Ubuntu22.04 · 24.04
- Debian12 · 13
- Rocky Linux9
- AlmaLinux8 · 10
- CentOS Stream9
- Oracle Linux9
- Amazon Linux2023
- Fedora42
- openSUSELeap 15.6 · Tumbleweed
- Arch Linuxпоследняя версия
- Alpine Linux3.22
Что проверялось:
- На каждом дистрибутиве: подготовка сервера, добавление домена с сертификатом, продление сертификата и удаление домена.
- Debian 12 и Alpine: витрины Nuxt, React и Svelte установлены как службы.
- Debian 12, Rocky Linux 9, Arch Linux и Alpine: setup рядом с уже работающим nginx с другими сайтами и сертификатами, которые остались без изменений.
- Debian 12: три витрины установлены из npm командой
orionplace app install.