Skip to content

Noises 2.0.0

Choose a tag to compare

@teopost teopost released this 07 Nov 16:47
· 58 commits to main since this release

Novità

Database PostgreSQL

Utenti, sessioni, inviti e registro di accessi e attività passano da SQLite a PostgreSQL.

  • Nuovo servizio db (postgres:17-alpine) nel compose.yaml, con un suo volume (noises-pg) e nessuna porta pubblicata: il database è raggiungibile solo da Noises. Noises parte quando il database è pronto.
  • Migrazione automatica: al primo avvio, se PostgreSQL è vuoto e c'è ancora il vecchio noises.db, il suo contenuto (utenti, sessioni, token, inviti, registro) viene importato e il file rinominato in noises.db.migrated, che resta come copia di sicurezza. Gli utenti restano collegati.
  • Più robusto con più utenti insieme: due registrazioni contemporanee non possono diventare entrambe "il primo utente" (amministratore), e un link di conferma o di reset si può usare una volta sola anche con richieste simultanee.

Richieste d'invito

Con la registrazione chiusa, nella pagina di accesso può comparire il link Richiedi un invito (ALLOW_INVITE_REQUESTS=true).

  • Chi non ha un account lascia nome, email e un messaggio facoltativo.
  • Tutti gli amministratori ricevono un'email con un link che apre Amministrazione → Richieste dopo l'accesso.
  • Approva crea l'invito (7 giorni) e lo manda a chi l'ha chiesto, nella sua lingua; Rifiuta non manda nulla.
  • Il numero di richieste in attesa compare sulla scheda, nel menu dell'account e con un pallino sull'avatar.
  • Protezioni contro gli abusi: la risposta non rivela se l'indirizzo è già registrato, una sola richiesta in attesa per indirizzo, al massimo 3 richieste all'ora per IP (20 in totale), richieste ignorate per 30 giorni dopo un rifiuto.

Interfaccia

  • Favicon con il logo di Noises (anche icona per la schermata Home di iPhone e nelle pagine dei link pubblici).
  • Lingua: si usa la prima tra italiano e inglese nell'elenco delle lingue preferite del browser, non solo la lingua dell'interfaccia del browser.
  • Amministrazione più leggibile: caratteri più grandi, sulla stessa scala delle schermate di accesso e registrazione (che diventano un po' più compatte). Su telefoni e tablet i campi restano a 16 px per evitare lo zoom automatico di iOS.
  • Versione in fondo al menu dell'account (visibile solo dopo l'accesso).

Correzioni

  • Email: nomi e messaggi inseriti dagli utenti vengono inseriti nell'HTML delle email come testo, senza essere interpretati.

Aggiornamento ⚠️

Questa versione richiede il nuovo servizio db: aggiorna anche il compose.yaml (è nel repository) e aggiungi la password del database al .env.

git pull
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" >> .env   # solo lettere e cifre
make up          # compilazione locale
# oppure, con l'immagine della CI:
make pull

Al primo avvio i dati di noises.db vengono importati da soli: nel log compare importato noises.db in PostgreSQL: …. Brani, progetti, scalette e link pubblici restano dove sono (volume noises-data).

Nuove variabili nel .env:

  • POSTGRES_PASSWORD (obbligatoria): password del database.
  • ALLOW_INVITE_REQUESTS (facoltativa, predefinita false): link Richiedi un invito nella pagina di accesso.

Se usi un docker-compose tuo invece di quello del repository, aggiungi un PostgreSQL e passa a Noises DATABASE_URL=postgres://utente:password@host:5432/database.

Per i backup ora serve anche il dump del database, ad esempio docker exec noises-db pg_dump -U noises noises > noises.sql.


What's new (English)

  • PostgreSQL replaces SQLite for accounts, sessions, invites and the activity log. New db service in compose.yaml (no published port). On first start an existing noises.db is imported automatically and renamed to noises.db.migrated.
  • Invite requests (ALLOW_INVITE_REQUESTS=true): with sign-up closed, a Request an invite link on the sign-in page; admins get an email and approve or reject in Administration → Requests; approving sends the invite. Rate-limited, no account enumeration, 30-day cooldown after a rejection.
  • Favicon from the Noises logo; language picked from the browser's preferred languages; larger text in the administration panel (same scale as the sign-in screens); version shown at the bottom of the account menu.
  • Fix: user-provided names and messages are HTML-escaped in emails.

Upgrading ⚠️ — update compose.yaml (git pull), add POSTGRES_PASSWORD=$(openssl rand -hex 24) to .env, then make up or make pull. Data is migrated on first start. Back up the database too (pg_dump).

🤖 Generated with Claude Code