Overview / Production Server

Production Server

ssh root@161.35.191.47 — the live droplet running everything except the mobile API.

DigitalOcean Ubuntu 22.04.5 LTS CloudPanel 2.5.3 Uptime ~80 days verified 2026-06-08

System overview

OSUbuntu 22.04.5 LTS (Jammy) · kernel 5.15.0-164
Sizing1 vCPU · 1.9 GB RAM · 2 GB swap (~55% used — memory-constrained) · 49 GB disk (57% used)
Public IP161.35.191.47 · private 10.17.0.6 / 10.108.0.4
Control panelCloudPanel 2.5.3 at https://161.35.191.47:8443 (user clp, SQLite at /home/clp/htdocs/app/data/db.sq3)

Request pipeline

Client → Nginx (80/443) → Varnish (6081) → Nginx (8080) → PHP-FPM
ServiceVersionPortScope
Nginx1.21.4 (CloudPanel) + system 1.2480 / 443 / 8080Public
Varnish7.1.16081Public
Redis6.0.166379Localhost
Memcached1.6.1411211Localhost
MySQL8.0.443306 / 33060listens on 0.0.0.0
Postfix25Outbound SMTP
ProFTPD21cleartext FTP, public

Virtual hosts

DomainTypePHPWebrootDisk
hatch.socialWordPress 6.9.48.3/home/hatch/htdocs/hatch.social7.7 GB
www / www1.hatch.socialRedirect / aliassame
web.hatch.socialWordPress 6.9.18.0/home/hatch-web/htdocs/web.hatch.social2.5 GB
api.hatch.socialLaravel 9 API8.5/home/hatch-api/htdocs/api.hatch.social316 MB
dash.hatch.socialLaravel 9 Dashboard8.4/home/hatch-dash/htdocs/dash.hatch.social1.4 GB

TLS uses custom certificates in /etc/nginx/ssl-certificates/. The hatch.social nginx config blocks two IPs (49.13.130.29, 52.59.43.236).

The two Laravel apps (verified 2026-06-08)

api.hatch.socialdash.hatch.social
APP_ENVlocal should be productionlocal should be production
APP_DEBUGtrue leaks stack tracestrue leaks stack traces
DB_HOSTlocalhost:3306DO Managed MySQL …ondigitalocean.com:25060
DB_DATABASEhatch-social-test test datahatch-social (production)
Note on api.hatch.social

The API vhost on this droplet points at a test database — and the live mobile app doesn't call this host at all (it calls hatch-social.cstmpanel.com). It's unclear whether api.hatch.social is actually used in production or is a leftover staging endpoint.

WordPress detail — hatch.social

  • DB: hatch (MySQL, localhost) · table prefix uDFnVS0xv_
  • Theme: OceanWP + OceanWP child · Builder: Elementor Pro
  • Forms / marketing: FluentForm Pro, Gravity Forms (+ MailerLite, Webhooks), a custom referral-code system, Make/Integromat connector, MailerLite
  • Performance: NitroPack, HTTP/3 cache engine, Cloudflare plugin
  • wp-file-manager plugin present — historically a high-severity CVE target

PHP-FPM versions running

CloudPanel runs every PHP version 7.1 → 8.5 simultaneously. Only 8.0, 8.3, 8.4, 8.5 are assigned to sites; 7.1–7.4 are end-of-life and sitting idle, consuming memory on a 2 GB box.

Backups & cron

CloudPanel manages all cron from /etc/cron.d/clp: daily DB backup (7-day retention, 03:15), daily full app backup (keeps 3, 04:15), Let's Encrypt renewal, Cloudflare IP updates, session cleanup. Backups live under /home/clp/backups (1.1 GB) and per-site backups/ folders.

Security items found on this host

ItemStatus as of 2026-06-08
PHP backdoor data.leuk.php (calls anggerishjxa.pages.dev/gong.php)no longer present — was flagged 2026-02-11; verify how it got there and whether other shells remain
Suspicious hatcg.zip (15 MB, typo of "hatch") in WP rootstill present (dated Feb 6) — verify legitimacy or remove
MySQL on 0.0.0.0:3306 + X-protocol 33060Verify DigitalOcean Cloud Firewall blocks external access
APP_DEBUG=true on both Laravel appsconfirmed live

Full prioritized list on the Findings & Risks page.

Inventory compiled from hatch-vm.md and re-verified with live read-only SSH on 2026-06-08.