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.
  • IONOS VPS documentation
  • Plesk Node.js documentation