Estrella: создание собственного сервера для термопринтера чеков на Rust
Пошаговое руководство по установке и настройке Estrella - Rust-сервера для управления термопринтером чеков. Оптимизируйте бизнес-процессы с помощью self-hosted решения.
Установка Rust
Установите Rust с помощью rustup, если он не установлен. После установки перезапустите терминал и проверьте версию Rust и Cargo.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustc --version
cargo --versionКлонирование репозитория Estrella
Создайте рабочую директорию и клонируйте репозиторий проекта с GitHub.
git clone https://github.com/example/estrella.git
cd estrellaУстановка зависимостей
Установите необходимые системные зависимости для вашей операционной системы. Для Ubuntu/Debian это build-essential, libudev-dev, libssl-dev и pkg-config.
sudo apt-get update
sudo apt-get install build-essential libudev-dev libssl-dev pkg-configСборка проекта
Соберите проект с помощью Cargo в release-режиме для оптимальной производительности. Бинарный файл будет находиться в target/release/estrella.
cargo build --release
./target/release/estrella --helpСоздание конфигурационного файла
Создайте файл config.toml с настройками сервера, аутентификации, принтера, логирования и очереди печати.
[server]
host = "0.0.0.0"
port = 8080
workers = 4
[printer]
type = "usb"
path = "/dev/usb/lp0"
width = 48
encoding = "cp866"
model = "epson"
autocut = true
[auth]
enabled = true
method = "bearer"
api_key = "your-secret-api-key"Настройка прав доступа к USB-принтеру
Для Linux добавьте пользователя в группы lp и dialout для доступа к USB-устройству принтера.
sudo usermod -a -G lp,dialout $USER
ls -l /dev/usb/lp*Запуск сервера
Запустите сервер с указанием конфигурационного файла. По умолчанию сервер будет доступен на порту 8080.
./target/release/estrella --config config.tomlПроверка работы сервера
Проверьте статус принтера и отправьте тестовый запрос на печать через API.
curl -X GET http://localhost:8080/status
curl -X POST http://localhost:8080/print \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{"text": "Тестовый чек", "cut": true}'Настройка systemd сервиса (опционально)
Для автоматического запуска сервера создайте systemd unit файл и включите сервис.
[Unit]
Description=Estrella Thermal Printer Server
After=network.target
[Service]
Type=simple
User=estrella
WorkingDirectory=/opt/estrella
ExecStart=/opt/estrella/target/release/estrella --config /etc/estrella/config.toml
Restart=always
[Install]
WantedBy=multi-user.targetЗапуск с Docker (опционально)
Альтернативно можно запустить сервер в Docker контейнере с пробросом USB-устройства и конфигурации.
docker run -d \
--name estrella \
-p 8080:8080 \
--device=/dev/usb/lp0 \
-v /path/to/config.toml:/etc/estrella/config.toml \
ghcr.io/example/estrella:latest