Context
For my portfolio backend services, I decided to run a self-managed VPS using IONOS and Plesk instead of relying on platform-as-a-service providers.
While this offers more control, it also means dealing directly with process management, networking and mail configuration.
Decisions
- Plesk Node.js integration
Plesk provides a convenient way to manage Node.js apps, but it abstracts away some important details that are worth understanding. - System mail stack instead of external SMTP provider
Using the built-in mail services seemed reasonable for low-volume contact form traffic.
Implementation notes
- Node.js apps can accidentally be started multiple times if old processes are not stopped correctly.
- Logs from
console.log()do not always end up where you expect when running behind Plesk. - SMTP ports may be blocked by default at the provider level, even if the firewall appears inactive.
- TLS certificates for mail subdomains must explicitly include the correct DNS names, otherwise mobile mail clients may refuse connections.
Lessons learned
- Always verify which ports are actually reachable from the outside — provider-level firewalls matter.
- Desktop mail clients are often more forgiving than mobile ones; testing on iOS uncovered several issues early.
- Deployment tooling that “just works” is great, until you need to debug something — then understanding the underlying system becomes essential.
Links
- IONOS VPS documentation
- Plesk Node.js documentation