Веб-виджет для управления устройствами пользователя через Matrix.
- Добавление устройств пользователя
- Просмотр списка устройств
- Удаление устройств
- Шифрованная SQLite база данных
- Поддержка кастомного prefix (URL path)
- Работа как виджет в Matrix
Создайте файл .env:
DEBUG=true
HOST=0.0.0.0
PORT=8080
PREFIX=/bulka
TRUSTED_SERVERS=matrix.test.site
DATABASE_TYPE=mysql
DATABASE_URL=matrix_widget_security:matrix_widget_security@tcp(localhost:3306)/matrix_widget_security?charset=utf8mb4&parseTime=True&loc=Local# Установите зависимости
go mod download
cd frontend && npm install
# Соберите и запустите
make build
make rundocker build -t matrix-devices-widget .
docker run -p 8080:8080 -v $(pwd)/data:/data -e matrix-devices-widgetPREFIX=/myapp ./server
# API: /myapp/api/devices
# UI: /myapp/-
Создайте комнату в Matrix (или используйте существующую)
-
Добавьте виджет через команду:
/addwidget https://YOUR_SERVER:3000/PREFIX?widgetId=$matrix_widget_id&userId=$matrix_user_idПример:
/addwidget https://localhost:3000?widgetId=$matrix_widget_id&userId=$matrix_user_id
Для работы виджета нужен HTTPS. Запустите:
# Терминал 1: Сгенерировать сертификаты и запустить с HTTPS
make dev-https
# Или отдельно:
make certs # Создаст key.pem и cert.pem
make dev # Запустит dev сервер с HTTPS если есть сертификатыБэкенд и фронтенд автоматически используют HTTPS если найдут key.pem и cert.pem в корне проекта.
ngrok http 3000
# Получите HTTPS URL и используйте его в /addwidget| Метод | Путь | Описание |
|---|---|---|
| GET | /prefix/api/devices |
Список устройств |
| POST | /prefix/api/devices |
Добавить устройство |
| DELETE | /prefix/api/devices/:id |
Удалить устройство |
| GET | /prefix/health |
Health check |
Все API запросы требуют заголовок X-Matrix-User-ID с ID пользователя Matrix (например @user:example.com)
.
├── main.go # Точка входа
├── config/ # Конфигурация
├── handlers/ # HTTP обработчики
├── storage/ # Слой данных (encrypted SQLite)
├── frontend/ # React приложение
│ └── src/
│ ├── backendApi.js # API клиент
│ └── components/
├── static/ # Собранный фронтенд
└── data/ # База данных
- Go 1.25+
- Node.js 18+
- CGO (для SQLite)
- OpenSSL (для генерации сертификатов)
MIT