No description
  • JavaScript 53.7%
  • CSS 26%
  • HTML 19.8%
  • Dockerfile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
carmine 3078555b47
All checks were successful
docker / build (push) Successful in 41s
first commit
2026-10-30 16:19:36 +01:00
.forgejo/workflows first commit 2026-10-30 16:19:36 +01:00
assets first commit 2026-10-30 16:19:36 +01:00
public first commit 2026-10-30 16:19:36 +01:00
scripts first commit 2026-10-30 16:19:36 +01:00
views first commit 2026-10-30 16:19:36 +01:00
wallpapers first commit 2026-10-30 16:19:36 +01:00
.env.example first commit 2026-10-30 16:19:36 +01:00
.gitignore first commit 2026-10-30 16:19:36 +01:00
docker-compose.yml first commit 2026-10-30 16:19:36 +01:00
Dockerfile first commit 2026-10-30 16:19:36 +01:00
package.json first commit 2026-10-30 16:19:36 +01:00
README.md first commit 2026-10-30 16:19:36 +01:00
server.mjs first commit 2026-10-30 16:19:36 +01:00

devmin.it

Portale di www.devmin.it: ricerca (Google, per ora) e launcher delle app in alto a destra, popolato con le applicazioni Authentik a cui l'utente loggato ha accesso.

Server Node senza dipendenze (server.mjs) + pagina statica (public/).

Configurazione Authentik

  1. Applications → Providers → Create → OAuth2/OpenID Provider
    • Client type: Confidential
    • Redirect URI (strict): https://www.devmin.it/auth/callback
    • Scopes: aggiungi ai default anche authentik default OAuth Mapping: authentik API access (scope goauthentik.io/api) e offline_access: servono per leggere la lista app con il token dell'utente e rinnovarlo.
  2. Applications → Create: nome devmin, slug devmin, provider appena creato, launch URL https://www.devmin.it.
  3. Copia Client ID e Client Secret nel file .env.

Il portale chiama GET /api/v3/core/applications/ con il token dell'utente: Authentik restituisce solo le app che le sue policy/binding consentono. L'app devmin stessa e quelle senza launch URL vengono escluse.

Avvio

cp .env.example .env   # compila i valori
docker compose up -d --build

oppure senza Docker (Node ≥ 20): node server.mjs (legge .env da solo).

Immagine su Forgejo

.forgejo/workflows/docker.yml compila e pubblica l'immagine nel registry di Forgejo a ogni push su main (tag latest, sha-…) e su ogni tag v* (es. v1.2.0 → 1.2.0, 1.2). Serve il segreto REGISTRY_TOKEN: un token Forgejo con permesso write:package. Per usare l'immagine al posto della build locale, in docker-compose.yml sostituisci build: . con image: <host forgejo>/<owner>/devmin:latest.

Il container ascolta su 127.0.0.1:3000: mettilo dietro il reverse proxy che già usi, con TLS su www.devmin.it.

Icone

Ogni app mostra sempre l'icona impostata in Authentik; se non ne ha una compare un esagono con l'iniziale.

Gli amministratori di Authentik (is_superuser) trovano nel menu utente Libreria icone (/admin/icone), dove possono:

  • caricare un glifo bianco su sfondo trasparente (SVG, PNG o WEBP, max 512 KB): devmin aggiunge sotto l'esagono del logo (crimson, ruby o slate) e salva /icons/<nome>.svg;
  • eliminare le icone;
  • assegnare un'icona a un'app: devmin chiama set_icon_url di Authentik con l'URL pubblico dell'icona (PUBLIC_URL/icons/<nome>.svg).

La libreria è in data/icons (volume Docker). Al primo avvio viene popolata con le icone di base in assets/icons, rigenerabili con npm run icons.

Note

  • Le sessioni sono in memoria: un riavvio del container richiede un nuovo login (silenzioso se la sessione Authentik è ancora attiva).
  • I font arrivano da Google Fonts; per non dipendere da terzi si possono scaricare in public/fonts/ e aggiornare index.html e la CSP in server.mjs.