This needs to be updated - a current example can be found at https://github.com/kristapsdz/kcgi-framework and more information on
kcgi at https://kristaps.bsd.lv/kcgi/
This will be a quick-and-dirty guide to getting started with the BCHS stack. More information can be found at:
tilde.institute is set up to process all files with the
slowcgi(8). This allows for a multitude of possibilities -
any compiled language can be used to develop web applications on an
OpenBSD server. It's advised to use
C because of the
unveil(2) system calls available, which allow for restricting privileges
and restricted filesystem access, respectively.
Keep in mind that if you don't use the previously listed
kwebapp libraries, you will need to work with HTTP's
eccentricities manually. For an example, here's the Hello World
code from the LearnBCHS
site. And here it is running
as compiled CGI here at tilde.institute.
Once you've written your software to be served via CGI, be sure to statically link the executables. Sure, there's a larger file size, but the benefits outweigh that in this case - there's no relying on libraries I may or may not have available in the httpd chroot on tilde.institute. For example:
$ cc -static -g -W -Wall -o app.cgi app.c
When you've completed compilation, make sure to set permissions properly
(755) and move it to the public folder in your home directory.
is set to use
index.html as the index file, however this can be changed
index.cgi or what-have-you by contacting the admins.
xvetrd has written a more detailed example on
kcgi than is provided on the library's site. It includes an
makefile as well. The KCGI Starter archive is available
curl -O https://tilde.institute/kcgi-starter.tar.gz
it to your home directory here on ~institute,
$ tar xzf kcgi-starter.tar.gz $ cd kcgi-starter $ make $ make install
to test the compilation. It installs to
~/public_html with the proper
ownership and permissions. View the
index.c source and the
to see what goes on under the hood! Feel free to adapt it your own projects!
Note: You may need to add the following to
..and the following to
-lkcgihtml -lkcgi -lz