NetSmartApp is a panel with local services for Developers and small Company
1.8K
Run DNS, DHCP, NTP, LDAP directory, Kerberos, mail, WireGuard, and external monitoring from one web administration panel.
NetSmartApp is an ASP.NET Core network-services appliance backed by MySQL. Individual services can be configured and started or stopped from the browser, and their desired state persists across container restarts.
NetSmartApp page on PWAApps:
https://pwaapps.com/smartnetwork/
Feature article:
Video tutorial:
https://pwaapps.com/blog/netsmartapp-tutorial-2026-dns-dhcp-ldap-mail-wireguard-vpn/
docker pull ssiroos/netsmartapp:1.0.7
The floating tag is also available:
docker pull ssiroos/netsmartapp:latest
Use the versioned tag for predictable production deployments.
Create docker-compose.yml with the following minimal stack. It starts NetSmartApp and MySQL, publishes the web panel and SNMP, and persists database and application security keys.
services:
mysql:
image: mysql:8.4
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: change-this-root-password
MYSQL_DATABASE: netsmart_db
MYSQL_USER: netsmart_user
MYSQL_PASSWORD: change-this-database-password
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u$$MYSQL_USER -p$$MYSQL_PASSWORD"]
interval: 10s
timeout: 5s
retries: 12
netsmart:
image: ssiroos/netsmartapp:1.0.7
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
ASPNETCORE_URLS: http://+:8080
ConnectionStrings__DefaultConnection: Server=mysql;Port=3306;Database=netsmart_db;User ID=netsmart_user;Password=change-this-database-password;AllowUserVariables=true
Monitoring__SnmpCommunity: change-this-community
ports:
- "8080:8080"
- "161:161/udp"
volumes:
- app_logs:/app/logs
- data_protection_keys:/app/data-protection-keys
- wireguard_config:/app/wireguard
volumes:
mysql_data:
app_logs:
data_protection_keys:
wireguard_config:
Change all example passwords and the SNMP community, then start the stack:
docker compose up -d
docker compose ps
Open http://localhost:8080. The Prometheus endpoint uses the same published HTTP port at http://localhost:8080/metrics after it is enabled in the web UI. Add only the network-service ports you plan to use; the full repository Compose files include the host-network configuration required for infrastructure deployment on Linux.
/metrics endpointThe repository Compose deployment uses host networking because DNS, DHCP, NTP, Kerberos, WireGuard, and other infrastructure protocols need direct access to the host network.
cp .env.example .env
docker compose up -d
docker compose ps
Open:
http://localhost:8080
Initial administrator account:
Username: sa
Password: sa123456
Change the administrator password immediately after the first sign-in. Replace the example MySQL passwords in .env before deployment.
Docker Desktop cannot provide the same LAN-facing host-network behavior as a native Linux host. Use the included bridge-network override for local evaluation:
docker compose -f docker-compose.yml -f docker-compose.windows.yml up -d
With NETSMART_HTTP_PORT=8888, open:
http://localhost:8888
Published TCP and UDP ports work for direct requests, but DHCP broadcast delivery, WireGuard routing, and a practical Active Directory Domain Controller should be deployed on a Linux host or VM.
Only allow the services that you enable through the host and cloud firewalls.
| Service | Default port | Protocol |
|---|---|---|
Web panel and /metrics | 8080 | TCP |
| DNS | 53 | UDP |
| DHCP server | 67 | UDP |
| Kerberos KDC | 88 | TCP/UDP |
| POP3 | 110 | TCP |
| NTP | 123 | UDP |
| IMAP | 143 | TCP |
| SNMP agent | 161 | UDP |
| SMTP | 25 | TCP |
| LDAP directory | 389 | TCP |
| SMTPS | 465 | TCP |
| Mail submission | 587 | TCP |
| WireGuard | 51820 | UDP |
| MySQL host access | 3307 | TCP, loopback only |
Administrators can independently enable or disable both monitoring interfaces from Monitoring in the web UI.
When enabled, Prometheus can scrape:
http://HOST:8080/metrics
The endpoint exposes process uptime and memory, request and scrape counters, and managed-service availability in Prometheus text format 0.0.4. It returns HTTP 404 while disabled.
The SNMP v2c agent listens on UDP 161 and exposes the standard SNMPv2-MIB::system scalar group. Set a private community before enabling it:
SNMP_COMMUNITY=replace-with-a-private-community
SNMP_CONTACT=Network Operations
SNMP_LOCATION=Server Room
Restrict both monitoring interfaces to trusted monitoring networks.
ASP.NET Core configuration uses double underscores in environment-variable names. Common settings include:
ConnectionStrings__DefaultConnection
DefaultAdmin__Username
DefaultAdmin__Password
DnsServer__AutoStart
DirectoryService__AutoStart
MailService__AutoStart
DhcpService__AutoStart
NtpService__AutoStart
KerberosService__AutoStart
KerberosService__Realm
Monitoring__MetricsAutoStart
Monitoring__SnmpAutoStart
Monitoring__SnmpPort
Monitoring__SnmpCommunity
WireGuard__Enabled
WireGuard__EndpointHost
Assistant__Provider
Assistant__Endpoint
Assistant__Model
Assistant__ApiKey
Service start/stop choices made in the web UI are stored in MySQL and override the initial AutoStart defaults on subsequent starts.
The supplied Compose stack persists:
./mysql_datanetsmart_app_logsnetsmart_data_protection_keysnetsmart_wireguard_confignetsmart_ollama_data/app/certsBack up the database, data-protection keys, WireGuard configuration, certificates, and any optional Samba AD volumes together. Data-protection keys are required to decrypt protected application secrets after restoration.
The built-in Directory service is a lightweight LDAP v3 server for application authentication and directory searches. It is not a Windows domain controller.
For Windows domain join and a unified identity store across Kerberos, LDAP, DNS, SMB/RPC, and Global Catalog, use the optional Samba AD profile on a Linux host:
docker compose -f docker-compose.yml -f docker-compose.ad.yml --profile ad-domain up -d --build
Set SAMBA_REALM, SAMBA_DOMAIN, SAMBA_HOSTNAME, and a strong SAMBA_ADMIN_PASSWORD in .env first. Stop the built-in DNS, Directory, and Kerberos listeners before starting Samba because they use overlapping ports.
NET_ADMIN, IP forwarding, NAT for full-tunnel clients, and an inbound UDP firewall rule.docker compose pull
docker compose up -d --force-recreate
docker compose ps
Review logs when troubleshooting:
docker compose logs --tail=200 netsmart
docs/DOCKER_DEPLOYMENT.mddocs/AD_DOMAIN_SERVICES.mddocs/EXTERNAL_MONITORING.mdContent type
Image
Digest
sha256:15e4a097a…
Size
136.7 MB
Last updated
29 days ago
docker pull ssiroos/netsmartapp