H2O

the optimized HTTP/1.x, HTTP/2, HTTP/3 server

Powered by Oktavia

Configure > Quick Start

In order to run the H2O standalone HTTP server, you need to write a configuration file. The minimal configuration file looks like as follows.

listen:
  port: 80

hosts:
  "myhost.example.com":
    listen: &listen_ssl
      port: 443
      ssl:
        certificate-file: /path/to/certificate-file
        key-file: /path/to/key-file
    listen:
      <<: *listen_ssl
      type: quic
    paths:
      /:
        file.dir: /path/to/the/public-files

user: nobody
access-log: /path/to/the/access-log
error-log: /path/to/the/error-log
pid-file: /path/to/the/pid-file

The configuration instructs the server to:

  1. listen on TCP port 80 for all hosts
  2. for myhost.example.com, listen on TCP port 443 using given TLS certificate and key pair
  3. listen on UDP port 443 (QUIC), reusing the previous setting named as listen_ssl
  4. serve files under /path/to/the/public-files
  5. under the privileges of nobody
  6. emit access logs to file: /path/to/the/access-log
  7. emit error logs to /path/to/the/error-log
  8. store the process id of the server in /path/to/the/pid-file

Enter the command below to start the server.

% sudo h2o -m daemon -c /path/to/the/configuration-file

The command instructs the server to read the configuration file, and start in daemon mode, which dispatches a pair of master and worker processes that serves the HTTP requests.

To stop the server, send SIGTERM to the server.

% sudo kill -TERM `cat /path/to/the/pid-file`

Next Step

Now that you know how to start and stop the server, the next step is to learn the configuration directives and their structure, or see the configuration examples.