Components

The full third-party inventory shipped or installed by Jabali on a Debian 13 host. Every component listed here is fetched, configured, and started by install.sh; nothing requires manual operator install.

Version pins shown are the values in install.sh at the time of writing. Run jabali --version plus dpkg-query -l for the live values on a deployed host.

Runtime services

ComponentVersionRoleUpstream license
jabali-panelthis repoGo + Gin HTTP panel API; serves the React SPA; the only writer to the panel DBAGPL-3.0
jabali-agentthis repoRoot-privileged process; performs every privileged host operation over /run/jabali-agent.sockAGPL-3.0
Stalwart Mail0.16.0SMTP + IMAP + JMAP + mailbox store (single binary)AGPL-3.0
Bulwark1.4.14Node + Next.js standalone — SPA fallback, autoconfig / autodiscover, magic-link bridgeown
Ory Kratos26.2.0Identity (login, 2FA, recovery); Unix sockets onlyApache-2.0
nginxDebian nativeReverse-proxy + per-vhost server. Sury-nginx purged defensivelyBSD-2
PHP-FPM (Sury)8.1–8.5One systemd unit per version; per-user poolsPHP License
MariaDB11.x (pinned in CI)Panel DB + tenant DBs; skip-networking (M25.1)GPL-2
PostgreSQLDebian 17Tenant DBs only; opt-inPostgreSQL
RedisDebianNotification dispatcher stream + panel cacheBSD-3
PowerDNS AuthoritativeDebianAuthoritative :53 for hosted zones, MariaDB backendGPL-2
pdns-recursorDebianLoopback recursor 127.0.0.1:53 (split-port, ADR-0047)GPL-2
CrowdSecpackagecloudIP-trust source + AppSec WAF + bouncersMIT
certbotDebianLet’s Encrypt issuance and renewalApache-2.0

Security stack

ComponentSourceRole
crowdsec + crowdsec-nginx-bouncer + cs-firewall-bouncer + AppSecpackagecloud + hubIP bans, scenarios, WAF
CrowdSec community blocklistscscli hubPushed blocklists synced via console
SnuffleupagusrepoPHP runtime hardening (Zend extension)
AppArmor + apparmor-profiles-extra + apparmor-utilsDebianPer-process MAC; profiles shipped for every Jabali service
AIDE + aide-commonDebianDaily host-integrity scan
auditd + audispd-pluginsDebianLinux audit subsystem
bubblewrapDebianPer-user PHP sandbox + SSH chroot for migrations
UFWDebianPort baseline only (IP decisions live in CrowdSec — M43, ADR-0089)
nftablesDebianPer-user egress (cgroup v2 vmap, M34, ADR-0084)
Linux Malware Detect (LMD)2.0.1-rc4 (GitHub)On-demand malware scanner — native HEX + YARA
YARA-X (yr binary)1.15.0 (GitHub)Pattern matching for LMD + the M33.2 async mail scanner

Apps / tooling

ComponentVersionRole
phpMyAdmin5.2.3MariaDB web UI with single-use SSO (sso.php)
Adminer4.8.1Lighter DB web UI + jabali-sso-plugin.php
WP-CLI2.12.0WordPress automation
GoAccessDebiannginx log analyzer
RoundcubeDebian + install snippetWebmail (served by Bulwark vhost)
resticDebianBackup engine (deduplicated, encrypted, multi-destination)
Go toolchain1.25.1Build agent + panel-api
Node.jsNodeSource current LTSBulwark runtime + UI build

OS plumbing

systemd, systemd-container, systemd-resolved (gated under JABALI_DNS_FORWARDER), auditd, OpenSSH (Match Group jabali-sftp), tar, curl, wget, gnupg, ca-certificates, git, build-essential, libpcre2-dev, acl, jq, socat.

Frontend (panel-ui)

LibraryVersionPurpose
React18.3.1SPA
Ant Design6.3.6Component library
@ant-design/icons6.1.1Icons
TanStack Query (@tanstack/react-query)5.99API state
react-router7.1.1Routing
axios1.7.9HTTP client
Monaco Editor (@monaco-editor/react)4.7In-browser code editor (File Manager)
xterm.js + addon-fit6.0 / 0.11Web terminal
@dnd-kit/core + sortable + utilities6.3 / 10 / 3.2Drag-and-drop
lucide-react + react-icons1.9 / 5.6Extra icons
micro-key-producer0.8.5Browser-side key generation
@fontsource/inter5.2.8Self-hosted font
Vite 6 / TypeScript 5.7 / Vitest 3.2 / Playwright 1.59 / Testing LibraryBuild + test toolchain

Go libraries (direct dependencies in go.mod)

gin-gonic/gin (HTTP), gorm.io/gorm + gorm.io/driver/mysql (ORM), golang-migrate/migrate/v4 (migrations), redis/go-redis/v9 (Redis), gorilla/websocket (WebSocket), spf13/cobra (CLI), robfig/cron/v3 (schedules), oklog/ulid/v2 (IDs), fxamacker/cbor/v2 (encoding), SherClockHolmes/webpush-go (VAPID Web Push), BurntSushi/toml, google/shlex, golang.org/x/crypto|net|sync|sys|term|time.

Test-only: DATA-DOG/go-sqlmock, alicebob/miniredis/v2, stretchr/testify.

In-house patterns shipped under install/

  • jabali-sso-<43-char-nonce>.php — self-deleting magic SSO file (M22, ADR-0040; Installatron / Softaculous style). Used by Roundcube webmail and every application install for one-click admin sign-in. 60 s TTL; 256-bit nonce filename; flock + unlink on first hit.
  • phpMyAdmin sso.php and Adminer jabali-sso-plugin.php — adapt the magic-file pattern to the two DB web UIs.
  • install/snuffleupagus/rules/ — server-wide Snuffleupagus baseline rules.
  • install/wp-cli.sha256 / install/phpmyadmin.sha256 — checksum-pinned upstream tarballs.

Removed

Components that previously shipped but are not present in the current build. See Removed Features for the rationale per item.

ComponentRemoved inReplacement
Hydra (OIDC provider)M16 rollbackMagic-file SSO (M22) for app sign-in
ModSecurity + libmodsecurity + nginx-modsecurity-connector + OWASP CRSM27CrowdSec AppSec WAF
filebrowserM11In-panel AntD File Manager
Tetragon + jabali-tetragon-relayM39 (2026-04-30)(none — eBPF tripwires retired)
ClamAV daemon + freshclam timerM33On-demand clamscan, now itself superseded by LMD-native + YARA-X
@refinedev/*M21TanStack Query + AntD + react-router

The installer’s cleanup_* functions actively purge leftover packages and config from these components on every install, so a host that previously ran an older Jabali generation does not carry a footprint forward.

Source-of-truth pointers

If you need the live, currently-installed version of any component on a deployed host:

dpkg-query -W -f='${Package} ${Version}\n' | grep -E 'mariadb|postgresql|redis|nginx|pdns|certbot|crowdsec|stalwart|kratos|auditd|aide|apparmor|nftables|ufw|restic|bubblewrap'
stalwart-mail --version
kratos version
jabali --version

To see exactly which versions are pinned for the next install:

grep -E 'VERSION="|version="|local .+_version=' install.sh | grep -v '^[[:space:]]*#'