Skip to content

simone98dm/raspberry-remote-control

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Pi Remote Control

Un'applicazione web moderna per il controllo remoto della Raspberry Pi, costruita con Nuxt 3 e TypeScript.

๐Ÿš€ Caratteristiche

  • Interfaccia moderna: UI responsive costruita con @nuxt/ui
  • Autenticazione sicura: Sistema di login con JWT e sessioni di 7 giorni
  • Controlli sistema: Riavvio e spegnimento della Raspberry Pi
  • Gestione Docker: Avvio e arresto di container Docker
  • Monitoraggio real-time: Dashboard con stato sistema, temperatura, memoria, disco
  • Logging avanzato: Log strutturati con Pino per debugging e audit
  • Deploy nativo: Installazione come servizio systemd (senza Docker)

๐Ÿ“ฆ Stack Tecnologico

  • Framework: Nuxt 3 con TypeScript
  • UI: @nuxt/ui (Tailwind CSS + Headless UI)
  • Autenticazione: JWT con bcrypt
  • Logging: Pino con output su console e file
  • Deploy: Systemd service su Raspberry Pi

๐Ÿ› ๏ธ Installazione Rapida

1. Clona il repository

git clone https://github.com/simone98dm/raspberry-remote-control.git
cd pi-remote-control

2. Esegui lo script di setup

chmod +x setup.sh
./setup.sh

Lo script automaticamente:

  • Installa le dipendenze
  • Builda l'applicazione
  • Copia i file in /opt/pi-remote-control
  • Configura il servizio systemd
  • Abilita l'avvio automatico

3. Configura le variabili d'ambiente

Modifica il file del servizio per cambiare password e JWT secret:

sudo nano /etc/systemd/system/pi-remote-control.service

โš ๏ธ IMPORTANTE: Cambia JWT_SECRET e AUTH_PASSWORD prima dell'uso in produzione!

4. Avvia il servizio

sudo systemctl start pi-remote-control
sudo systemctl status pi-remote-control

L'applicazione sarร  disponibile su: http://[IP-RASPBERRY]:3000

๐Ÿ“‹ Gestione del Servizio

Comandi Systemd

# Avvia/arresta/riavvia
sudo systemctl start pi-remote-control
sudo systemctl stop pi-remote-control
sudo systemctl restart pi-remote-control

# Stato e log
sudo systemctl status pi-remote-control
sudo journalctl -u pi-remote-control -f

# Abilitare/disabilitare avvio automatico
sudo systemctl enable pi-remote-control
sudo systemctl disable pi-remote-control

File di Log

  • Systemd: sudo journalctl -u pi-remote-control
  • File log: /var/log/pi-remote-control.log

๐ŸŽฎ Utilizzo

1. Login

  • Vai a http://[IP-RASPBERRY]:3000
  • Inserisci la password configurata (default: admin123)
  • La sessione rimane attiva per 7 giorni

2. Dashboard

La dashboard mostra:

  • Stato sistema: Uptime, temperatura CPU, memoria, disco
  • Container Docker: Lista container attivi/inattivi
  • Controlli sistema: Pulsanti per riavvio/spegnimento
  • Controlli Docker: Gestione container con nomi personalizzabili

3. Controlli Disponibili

Sistema

  • Riavvia: sudo reboot
  • Spegni: sudo shutdown now

Docker

  • Avvia container: docker start [nome-container]
  • Arresta container: docker stop [nome-container]

Tutte le azioni richiedono conferma tramite popup modale.

โš™๏ธ Configurazione Avanzata

Variabili d'Ambiente

Modifica /etc/systemd/system/pi-remote-control.service:

Environment=JWT_SECRET=your-very-long-and-random-secret-key
Environment=AUTH_PASSWORD=your-secure-password
Environment=HOST=0.0.0.0
Environment=PORT=3000
Environment=NODE_ENV=production

Permessi Sudo

Per consentire l'esecuzione di comandi di sistema senza password, aggiungi al sudoers:

sudo visudo

Aggiungi la riga:

simone ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/shutdown, /usr/bin/docker

Sicurezza di Rete

Firewall (UFW)

sudo ufw allow 3000/tcp
sudo ufw enable

HTTPS con Nginx (Opzionale)

sudo apt install nginx
sudo nano /etc/nginx/sites-available/pi-remote-control

Configurazione Nginx:

server {
    listen 80;
    server_name your-pi.local;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

๐Ÿ”ง Sviluppo

Installazione dev

npm install

Avvio in modalitร  sviluppo

npm run dev

Build per produzione

npm run build
npm start

Struttura del Progetto

pi-remote-control/
โ”œโ”€โ”€ app/
โ”‚   โ””โ”€โ”€ app.vue                 # App principale
โ”œโ”€โ”€ assets/
โ”‚   โ””โ”€โ”€ css/main.css           # Stili custom
โ”œโ”€โ”€ composables/
โ”‚   โ”œโ”€โ”€ useAuth.ts             # Gestione autenticazione
โ”‚   โ””โ”€โ”€ useSystem.ts           # Gestione sistema
โ”œโ”€โ”€ middleware/
โ”‚   โ””โ”€โ”€ auth.ts                # Middleware autenticazione
โ”œโ”€โ”€ pages/
โ”‚   โ”œโ”€โ”€ index.vue              # Homepage
โ”‚   โ”œโ”€โ”€ login.vue              # Pagina login
โ”‚   โ””โ”€โ”€ dashboard.vue          # Dashboard principale
โ”œโ”€โ”€ server/api/
โ”‚   โ”œโ”€โ”€ auth/
โ”‚   โ”‚   โ”œโ”€โ”€ login.post.ts      # Endpoint login
โ”‚   โ”‚   โ””โ”€โ”€ verify.post.ts     # Verifica token
โ”‚   โ””โ”€โ”€ system/
โ”‚       โ”œโ”€โ”€ control.post.ts    # Controlli sistema
โ”‚       โ””โ”€โ”€ status.get.ts      # Stato sistema
โ”œโ”€โ”€ systemd/
โ”‚   โ””โ”€โ”€ pi-remote-control.service # File servizio
โ”œโ”€โ”€ types/
โ”‚   โ””โ”€โ”€ index.ts               # Definizioni TypeScript
โ””โ”€โ”€ setup.sh                  # Script installazione

๐Ÿ› Troubleshooting

Il servizio non si avvia

# Controlla i log
sudo journalctl -u pi-remote-control --no-pager

# Verifica la configurazione
sudo systemctl status pi-remote-control

# Testa manualmente
cd /opt/pi-remote-control
node .output/server/index.mjs

Errori di permessi

# Ripristina permessi
sudo chown -R simone:simone /opt/pi-remote-control
sudo chown simone:simone /var/log/pi-remote-control.log

Comandi sudo non funzionano

# Verifica configurazione sudoers
sudo visudo -c

# Testa manualmente
sudo -u simone sudo reboot --help

Problemi di connessione

# Verifica porta in ascolto
sudo netstat -tulpn | grep :3000

# Controlla firewall
sudo ufw status

๐Ÿ“ Note di Sicurezza

  1. Cambia sempre JWT_SECRET e AUTH_PASSWORD in produzione
  2. Limita l'accesso alla porta 3000 tramite firewall
  3. Usa HTTPS in produzione con certificati SSL
  4. Monitora i log per tentativi di accesso non autorizzati
  5. Aggiorna regolarmente le dipendenze Node.js

๐Ÿค Contributi

I contributi sono benvenuti! Per favore:

  1. Fai fork del progetto
  2. Crea un branch per la feature (git checkout -b feature/AmazingFeature)
  3. Commit delle modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri una Pull Request

๐Ÿ“„ Licenza

Questo progetto รจ distribuito sotto licenza MIT. Vedi il file LICENSE per maggiori dettagli.

๐Ÿ‘จโ€๐Ÿ’ป Autore

Simone - @simone98dm


โš ๏ธ Disclaimer: Questo software consente l'esecuzione di comandi di sistema critici. Utilizzare con cautela e solo in ambienti sicuri.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published