How can I run my own instance of this

1 2019-01-21 01:37

Say I want to make a text board using this script How would I go about making more boards in customizing the index to my liking

2 2019-01-22 21:33

A request to /someboard/ will have nginx try to read the cache in /data/html/someboard/index and if doesn't exist, the backend will generate it from scheme code in /data/sexp/someboard/index

So if you want to have board1 and board2 in your textboard, you need to (manually) create those directories


There's no automated index of boards but that's trivial to implement. Neither is there an automated procedure to generate those directories. I had a very short time ahead of me to finish the program and really halted the development as soon as I had something working. (I'm living a weird life right now, with very few opportunities to use an internet connection at all)

The relevant parts of nginx.conf would be:

    upstream http_backend {
        keepalive 20;
    server {
        listen 80;

        location / {
            root   $prefix/data/html;
            default_type text/html;
            index  index;
            try_files $uri $uri/index @schemebbs;

        location @schemebbs {
            proxy_pass http://http_backend;
3 2019-01-23 11:30

Thanks for the auto overflow.

4 2019-01-23 12:01

You're welcome, sorry for the delay.

5 2019-01-23 16:49

Thanks for the tip man I will be working on this as soon as I get back home in April also advertising your board allowed here

6 2019-01-25 21:53

Really nginx does a lot of the job, it serves html pages directly without asking Scheme for instance. A lot of the routing too. That's how things get reasonably optimized.

I did a lot of research for a fast Scheme web server, Guile was the fastest by far but still a bit behind what could be done.

Chez Scheme is disappointing there. There's a nice chinese project with bindings for libuv but it's awfully unstable:

7 2019-01-26 17:55

Did you run a benchmark? What did you find?

8 2019-01-28 14:41

Is it possible to get a self assigned as SSL certificate working with this board Well you can run it using a Web server so I think it's possible Of course she had don't want to use a self assigned you want to find a valid one

9 2019-01-28 14:44

What are those 2 boxes on the bottom there that say do not edit Is there a possibility to remove those

10 2019-01-28 21:09

Those are in a fieldset hidden by css:

<FIELDSET class="comment"><LEGEND>do not edit these</LEGEND>
<P><INPUT type="text" name="name" class="name" size="11"><BR>
<TEXTAREA name="message" class="message" rows="1" cols="11"></TEXTAREA></P></FIELDSET>
fieldset.comment {
  display: none;

If you see them in your viewer it doesn't respect that rule. The input is "name" and the textarea is "message", but their actual function is something the board owner might elucidate.

11 2019-01-30 08:39 *

I did run extensive benchmarks for every web servers in Scheme, old and news. I was planning to publish them but I don't have them right now.
It's a simple honeypot for spambots, better than captchas and other annoyances and good enough for a small textboard. I don't know how you can remove them with emacs, CSS rules do that for web browsers.

12 2019-01-30 17:54

grep and other tools could do it on the webpage so you can probably hide these honeypot fields with emacs. I'd be interested in a solution.

13 2019-04-15 02:34

New anon here. Cool stuff. I've (somewhat) gotten it working on my local server. Sorry for the stupid question, but is nginx all I would need to make this public-facing?

14 2019-04-15 15:04

Nevermind, answered my own question. Pretty much works now. Once I've gotten a more permanent setup I'll post a link.
One of my main confusions as of now is the hash file. The file needs to exist fot posts to be made, and its value is present in the html for the input field.I just made a file called hash and gave it arbitrary contents and things started working, but I'm guessing the value is supposed to be changed dynamically (once per post, maybe)? So, what purpose does the file serve?

15 2019-04-15 22:40

The hash file is read by get-form-hash in bbs.scm. It is called for the value of the ornamentum field by make-post-form and make-thread-form in templates.scm. The ornamentum field is read by validate-form in bbs.scm as the hash of the let. Validate-form then proceeds to do precisely nothing with the hash value. After the size checks it only cares that the message and name fields are empty. Therefore it appears that the hash/ornamentum is intended as another antispam measure that is yet to be implemented, and is currently a no-op.

16 2019-04-23 03:56

Thanks, that explains why arbitrary values worked.
I haven't properly looked into this, but whenever posts are submitted there is an error about an invalid http header. Despite that, the posts are still accepted, so I haven't focused on that. Any idea as to why such an error would always be thrown?

17 2019-04-23 10:33


whenever posts are submitted there is an error about an invalid http header
an error would always be thrown

I'm certain the error is not so secret that you can't paste it into the thread.

18 2019-04-29 06:34




do not edit these