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