]> Sergey Matveev's repositories - sgblog.git/blobdiff - README.texi
More compact Base64 ETag
[sgblog.git] / README.texi
index adc60739a1a2e92c91f45883214eb0e599381c4a..20e3726ea2fa47b2014a304e269829300e3a8699 100644 (file)
@@ -3,21 +3,24 @@
 @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}
@@ -27,15 +30,16 @@ Its main competitive features:
     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:
 
@@ -44,8 +48,8 @@ But SGBlog also is able to:
 @item Convert SHA1-like hashes to blog links itself
 @item Include relative @code{<link rel>} links for ease of navigation in
     some browsers
-@item @url{https://en.wikipedia.org/wiki/Gzip, gzip} compress both HTML
-    pages and Atom feeds
+@item @url{https://facebook.github.io/zstd/, Zstandard}
+    compress both HTML pages and Atom feeds
 @item Respect @url{https://en.wikipedia.org/wiki/HTTP_ETag, ETag}
     caching for both of them above
 @end itemize
@@ -112,6 +116,19 @@ To reset incorrectly added topic:
 $ 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
 
@@ -183,6 +200,15 @@ 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:
@@ -246,6 +272,10 @@ optional fields:
   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