Guestbook
Standalone guestbook server meant to be paired up with a static website.
Usage
Configuration
Edit /etc/guestbook.toml
# the idea is to have a single database but different
# tables for each guestbook (if any)
[database]
# Supported - MySQL/MariaDB
username = "guestbook"
password = "guestbookpass"
location = "tcp(127.0.0.1:3306)"
db_name = "guestbook"
params = "charset=utf8mb4&parseTime=True&loc=Local"
# add as many as you like
# avoid having hyphens in the name
[my_guestbook]
port = 2222
path = "/sign"
validation_string = ""
success_redirect = "/success"
error_redirect = "/error"
template = """
{{range .}}
{{print "{{"}}
guestbook_entry(
name=\"{{.Name}}\",
website=\"{{.Website}}\",
message=\"{{.Message}}\",
time=\"{{.Time}}\"
)
{{print "}}"}}
{{end}}"""
Starting with Systemd
Then use this Systemd service:
/etc/systemd/system/my_guestbook-guestbook.service
Replace my_guestbook
with your guestbook's name (as defined in /etc/guestbook.toml
),
create more .service
files for as many guestbooks you want to have.
[Unit]
Description=Guestbook for my_guestbook
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=on-failure
RestartSec=1
ExecStart=guestbook --guestbook my_guestbook
[Install]
WantedBy=multi-user.target
Then, reload the daemon and start the guestbook:
systemctl daemon-reload
systemctl enable --now my_guestbook-guestbook
Nginx configuration
Pass exactly the desired url to the guestbook server. Replace port and the path to match your configuration.
location = /guestbook/sign {
proxy_pass http://localhost:2222/sign;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Reading entries
guestbook dump -g my_guestbook
Licence
Licenced under GNU General Public Licence
GNU GPL License: LICENSE
Copyright (c) 2025 Vidhu Kant Sharma