Pannello web per gestire VirtualHost Apache con reverse proxy http, https, ws, wss e ajp, esportazione configurazioni Apache e richiesta certificati Let's Encrypt tramite challenge DNS OVH.
Il progetto e' pensato come alternativa leggera a Nginx Proxy Manager quando l'infrastruttura deve rimanere su Apache HTTPD e mod_proxy_ajp.
- Backend Node.js senza framework esterni.
- Frontend statico servito dalla stessa app.
- Persistenza su database JSON locale.
- Immagine Docker con Node.js, Apache, certbot e plugin
certbot-dns-ovh. - Stack Portainer supportato tramite
compose.portainer.yaml.
- Setup iniziale del primo amministratore.
- Login con password e 2FA TOTP opzionale.
- Gestione utenti con ruoli
admineoperator. - CRUD VirtualHost Apache.
- Regole
ProxyPasseProxyPassReverse. - Redirect per path.
- Preview live della configurazione Apache.
- Export locale in
generated/. - Deploy diretto in
/etc/apache2/sites-availablequando configurato. - Dashboard con stato host, CPU, RAM e disco.
- Lettura log generali e log VirtualHost.
- Certificati Let's Encrypt con OVH DNS.
- Node.js 20 o superiore per esecuzione locale.
- Docker e Docker Compose per esecuzione containerizzata.
- Apache 2.4,
certbotepython3-certbot-dns-ovhper deploy bare metal.
node server.mjsApri:
http://localhost:4321
Alla prima apertura l'app richiede la creazione dell'amministratore iniziale.
Build e avvio:
docker compose up -d --buildApri:
http://localhost:4321
Volumi persistenti:
app-dataper/app/dataapp-generatedper/app/generatedletsencryptper/etc/letsencryptapache-logsper/var/log/apache2
Per Portainer usa compose.portainer.yaml dopo aver reso disponibile sull'endpoint Docker l'immagine:
apache-proxy-manager:dev
Lo stack espone:
4321per il pannello web80per Apache HTTP443per Apache HTTPS
Le variabili principali sono documentate in .env.example.
PORT=4321
DB_PATH=./data/db.json
GENERATED_DIR=./generated
SECRETS_DIR=./data/secrets
CERTBOT_BIN=certbot
APACHE_SITES_AVAILABLE=/etc/apache2/sites-available
APACHE_SITES_ENABLED=/etc/apache2/sites-enabled
APACHE_TEST_COMMAND="apachectl configtest"
APACHE_RELOAD_COMMAND="systemctl reload apache2"In Docker questi percorsi sono gia' configurati per lavorare dentro il container.
Verifica del renderer Apache:
node scripts/render-sample.mjsHealth check applicativo:
curl http://localhost:4321/api/healthNon versionare dati runtime, credenziali OVH, database JSON, sessioni o certificati. Il repository esclude data/, generated/, .env, file di log e formati comuni di chiavi/certificati.