- JavaScript 53.7%
- CSS 26%
- HTML 19.8%
- Dockerfile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| assets | ||
| public | ||
| scripts | ||
| views | ||
| wallpapers | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| server.mjs | ||
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
- 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(scopegoauthentik.io/api) eoffline_access: servono per leggere la lista app con il token dell'utente e rinnovarlo.
- Applications → Create: nome
devmin, slugdevmin, provider appena creato, launch URLhttps://www.devmin.it. - 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_urldi 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 aggiornareindex.htmle la CSP inserver.mjs.