CGI (Common Gateway Interface). It is a way to communicate between browser and server. Simple scripts used to do simple tasks. ## Docs and References You'll want to consult the [httpd](https://man.openbsd.org/httpd) and [[httpd.conf](/https://man.openbsd.org/httpd.conf) man pages to know about httpd config blocks. You'll want to consult the [httpd](https://man.openbsd.org/httpd) and [[httpd.conf](/https://man.openbsd.org/httpd.conf) man pages to know about httpd config blocks. ## Writing the script We will use C language to create the script. Create the script at your home directory `/home/username/hello.c` #include int main(void) { puts("Status: 200 OK\r"); puts("Content-Type: text/html\r"); puts("\r"); puts("Hello, world!\n"); return 0; } Your script is ready, but you still need to compile it. $ cd /home/username $ cc hello.c -o hello.cgi $ doas mv hello.cgi /var/www/htdocs/yoursite/cgi-bin/ Make the script executable $ doas chmod +x /var/www/htdocs/yoursite/cgi-bin/hello.cgi ## Configuring httpd.conf Add the cgi block to your /etc/httpd.conf block for your website. It should look like this: server "example.com" { listen on * port 80 root "/htdocs/yoursite" connection max request body 104857600 location "/cgi-bin/*"{ root "/htdocs/yoursite/" fastcgi } location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } } **NOTE**: You must replace example.com with your own domain Now any scripts that you add in ##STARTCODEBLOCK## /var/www/htdocs/yoursite/cgi-bin ##ENDCODEBLOCK## directory will be accessible by ##STARTCODEBLOCK## http://example.com/cgi-bin/scriptname ##ENDCODEBLOCK## Make sure you edit the block accordingly if you are using [TLS](/https://wiki.ircnow.org/index.php?n=Openhttpd.Tls ). enable the server to run the script, we will use [ Slowcgi ](/https://man.openbsd.org/slowcgi.8). Enable and start slowcgi $ doas rcctl enable slowcgi $ doas rcctl start slowcgi Enable and start httpd if you haven't already $ doas rcctl enable httpd $ doas rcctl start httpd Go to `http://example.com/cgi-bin/hello.cgi` and you will see "Hello world" printed on your screen!