@settitle SGBlog
@copying
-Copyright @copyright{} 2020 @email{stargrave@@stargrave.org, Sergey Matveev}
+Copyright @copyright{} 2020-2024 @email{stargrave@@stargrave.org, Sergey Matveev}
@end copying
@node Top
@top SGBlog
-SGBlog is minimalistic and simple Git-backed CGI/inetd
-@url{https://en.wikipedia.org/wiki/Blog, blogging} and
-@url{https://en.wikipedia.org/wiki/Phlog, phlogging} engine
-with email-backed comments support, written on @url{https://golang.org/, Go}.
+SGBlog is minimalistic and simple Git-backed CGI/UCSPI
+@url{https://en.wikipedia.org/wiki/Blog, blogging} (@code{http://}/@code{https://}),
+@url{https://en.wikipedia.org/wiki/Phlog, phlogging} (@code{gopher://}),
+@url{https://twtxt.readthedocs.io/en/latest/index.html, twtxting}, and
+@url{https://en.wikipedia.org/wiki/Gemini_(protocol), gemlogging} (@code{gemini://})
+engine with email-backed comments support,
+written on @url{https://go.dev/, Go}.
Its main competitive features:
@itemize
-@item Single binary, responsible for both blog and phlog
+@item Single binary, responsible for both blog, phlog and gemlog
@item @url{https://git-scm.com/, Git} DVCS as a storage for posts and comments
@item Single small @url{https://hjson.github.io/, Hjson} configuration file
@item Uses @url{https://en.wikipedia.org/wiki/Common_Gateway_Interface, CGI}
interface for working as
@url{https://en.wikipedia.org/wiki/Gopher_(protocol), Gopher} server
@item Topics (tags/categories) support
+@item Images linking support
@item Supports on the fly generation of
@url{https://en.wikipedia.org/wiki/Atom_(feed), Atom} feeds
for posts, comments and per-post comments
@item Single binary for email-backed comments posting
@item If access is granted, then everyone can easily create an offline
- copy of your blog/phlog!
+ copy of your blog/phlog/gemlog!
@end itemize
-All of that, except for comments, topics and phlog, could be achieved
+All of that, except for comments, topics and phlog/gemlog, could be achieved
with some Git viewer like @url{https://git.zx2c4.com/cgit/about/, cgit}.
But SGBlog also is able to:
$ git update-ref refs/notes/topics refs/notes/topics^
@end example
+@node Images
+@unnumbered Images
+
+You can link any number of image files with your post. You need to put
+them in a directory (@code{ImgPath} configuration file's option) which
+path is equal to your post's hash, with two subdirectory levels. For
+example directory for post @code{3e12180dd2b6fb3b44c77c365d355d5a3796a43f}
+will be @code{ImgPath/3e/12/180dd2b6fb3b44c77c365d355d5a3796a43f}.
+Filenames are lexically sorted. Filename without an extension will be
+image's alternative text. Currently only @file{.jxl} and @file{.webp}
+are recognized. @code{ImgDomain} configuration file's option will be
+used to construct URL to @code{//ImgDomain/3e/12/180dd2b6fb3b44c77c365d355d5a3796a43f}.
+
@node Installation
@unnumbered Installation
uid=\`id -u lighttpd\`
gid=\`id -g git\`
addr=2001::123
-exec tcpserver -DRH -u $uid -g $gid -l 0 $addr gopher \
+exec tcpserver -DHR -u $uid -g $gid -l 0 $addr gopher \
sgblog -gopher /path/to/gopher.hjson
EOF
# mv /var/service/.phlog-ipv6 /var/service/phlog-ipv6
@end example
+Gemlog uses Gemini protocol that requires TLS usage, that can be
+achieved with @url{go.cypherpunks.ru/ucspi} tools:
+
+@example
+exec tcpserver -DRH -u $uid -g $gid -l 0 ::0 1965 \
+ tlss -key gemlog.key.pem -cert gemlog.pem \
+ sgblog -gemini /home/sgblog/gemlog.hjson 2>&1
+@end example
+
For comments workability you have to configure your SMTP server to feed
incoming messages to @command{sgblog-comment-add} utility. For example,
Postfix'es @file{/etc/aliases} can contain:
TopicsNotesRef: refs/notes/topics
# Optional file for topics state caching
TopicsCachePath: /path/to/sgblog-topics-cache.gob
+
+ # If set, then images are searched in XX/YY/ZZZ...ZZZ directory
+ ImgPath: /path/to/directory/with/images
+ ImgDomain: img.blog.example.com
@}
@end example