An open API service indexing awesome lists of open source software.

https://github.com/kamlendras/mvbot

System UUID Matrix Anti-Spam Tool
https://github.com/kamlendras/mvbot

spam-prevention synapse

Last synced: about 1 month ago
JSON representation

System UUID Matrix Anti-Spam Tool

Awesome Lists containing this project

README

          

# System UUID Matrix Anti-Spam Tool

A hardware-based identity verification system that links Matrix usernames to system UUIDs, preventing spam and multi-account abuse. Each device can only register one Matrix account, making it harder for bad actors to create multiple accounts or circumvent bans.

## Features

- **Secure API**: Protected endpoints with API key authentication
- **Web Interface**: Built-in web dashboard for viewing records
- **SQLite Database**: Lightweight, embedded database storage
- **UUID Validation**: Prevents duplicate registrations and username changes
- **Embedded HTML**: Standalone binary with built-in web interface

## Quick Start
### 1. Installation
```bash
paru -S mvbot or yay -S mvbot
```
or if install directly from [binary](https://github.com/kamlendras/mvbot/releases/download/stable/mvbot)
```bash
chmod +x mvbot
./mvbot
```
```bash
[ks@hello ~]$ mvbot
System UUID Client
==================
Detecting system UUID... [sudo] password for ks:
✓ Found: 034659ec-abb6-446d-a0f6-745d228b03e2
Enter your Matrix username (e.g., @username:matrix.org): @ks:legolinux.org

Data to upload:
UUID: 034659ec-abb6-446d-a0f6-745d228b03e2
Matrix User: @ks:legolinux.org
Timestamp: 2025-07-03 11:26:15.572569416 UTC

Uploading to server... ✓ Upload successful!
Server response: {"success":true,"message":"System UUID already registered with the same Matrix username","id":1}
```
Web Interface at: https://verify.legolinux.org
## Self-hosting

### 1. Generate API Key

```bash
cargo run --bin setup_api_key
```

This will generate a secure API key and display it.

### 2. Configure Domain

If deploying to a custom domain, update the server URL in `src/client.rs`:

```rust
// Replace with your actual domain
const SERVER_URL: &str = "https://verify.example.com/api/upload";
```

### 3. Build Applications

```bash
# Build server binary
cargo build --release --bin server

# Build client binary
cargo build --release --bin client
```

### 4. Run Server
```bash
# Start the server (runs on localhost:3030)
chmod +x server
./server
```
Note: The server will stop if you exit the terminal. To keep it running in the background, use:
```bash
nohup ./server &
```
Web Interface at: http://localhost:3030
### 3. Configure Nginx Reverse Proxy

Create `./nginx.conf`:

```
server {
listen 80;
server_name verify.example.com;

# Allow Let's Encrypt validation
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

# Redirect all other HTTP traffic to HTTPS
location / {
return 301 https://$server_name$request_uri;
}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name verify.example.com;

# SSL certificates
ssl_certificate /etc/nginx/certs/live/verify.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/live/verify.example.com/privkey.pem;

location / {
proxy_pass http://172.18.0.1:3030; // Replace it with your Host IP
}

}
```