Web services | Seenode Docs

Web services

How web services on seenode build, run, route traffic, and scale.

A web service runs any application that listens for and responds to HTTP requests: a web app, a REST or GraphQL API, or a server-rendered site. This page explains what happens when you deploy one.

The lifecycle of a deploy

When you create or redeploy a web service, seenode:

  1. Pulls your code from the connected Git branch (or a specific commit).
  2. Builds it by running your build command on the language runtime you selected, producing a container image.
  3. Starts it by running your start command, which must launch a server that listens on host 0.0.0.0 and the port you configured.
  4. Routes traffic to it and marks the deploy live.

You watch each stage stream in the Logs tab, and the service goes live at a *.seenode.app URL.

Routing and ports

Public traffic reaches seenode’s load balancer on ports 80 (HTTP) and 443 (HTTPS). The load balancer terminates TLS and forwards each request to your container on the port you set in the service’s Port field.

This is why your app must listen on 0.0.0.0 (all interfaces) and on exactly that port: if it listens somewhere else, the load balancer has nothing to forward to and you get a 502. seenode provisions and renews a free Let’s Encrypt certificate automatically, and you can attach your own custom domain. See Port configuration for the details.

Scaling

A web service scales in two independent ways:

  • Vertically: move to a larger instance (more RAM and CPU) from the service’s Settings.
  • Horizontally: run several identical replicas. Traffic is load-balanced across them for availability and throughput. Replicas are set manually (there is no traffic-based autoscaling), and each is billed at the instance price.

See Scaling.

Filesystem and networking

A web service’s filesystem is ephemeral: anything written to it is lost on the next restart or redeploy. For files that must survive, attach a persistent volume. Beyond its public URL, each service also has an internal address on a private network, so your services can call each other without going through the internet.

Deploys

You deploy manually (deploy the latest or a specific commit, or restart) from the Deploy menu, or automatically on every push by enabling Auto-deploy in Settings. See Managing a service.