about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2025-06-19 09:02:11 +0900
committerNguyễn Gia Phong <cnx@loang.net>2025-06-19 09:02:11 +0900
commit8a6154ff22609d7044f16c56cdac8d065332d6bc (patch)
tree8067bb02207aa502bd11f7c5d0f6d54ff0db3142
parentdd0ae4f55b191f66a9a159abe8af2baa95ed6635 (diff)
downloadscadere-8a6154ff22609d7044f16c56cdac8d065332d6bc.tar.gz
Elaborate on installation and usage
-rw-r--r--README.md30
-rw-r--r--REUSE.toml1
-rw-r--r--contrib/scadere-check.service7
-rw-r--r--contrib/scadere-check.timer11
-rw-r--r--contrib/scadere-listen.service11
5 files changed, 59 insertions, 1 deletions
diff --git a/README.md b/README.md
index 9c6fa29..3c0b0fe 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,28 @@
 Scadere is a TLS certificate renewal reminder.  It checks for certificates
 that are about to expire and provides an Atom feed for notification.
 
+## Installation
+
+The recommended installtion method is through your distribution.
+Installing from source should only be considered as a last resort;
+if you are capable of doing so, please also package scadere
+for your distribution.
+
+Scadere requires Python 3.11 or above, and uses [flit]
+as the PEP 517 build backend.  Installation can be done
+with `flit install` or `pip install .`.
+
+With `scadere-check` and `scadere-listen` under `$prefix/bin`,
+the manual pages can be built and installed using `make(1p)`,
+GNU [help2man] and `install(1)`:
+
+    cd doc
+    make PREFIX=$prefix
+    make install PREFIX=$prefix
+
+(FYI, GNU make has an extension that allows specifying `--directory=doc`,
+which can save you from having to change the directory.)
+
 ## Usage
 
 ### Expiration checking
@@ -21,7 +43,8 @@ Options:
                         output file (default to stdout)
 ```
 
-It is recommended to run `scadere-check` as a cron job.
+It is recommended to schedule `scadere-check` chronically.
+See `contrib/scadere-check.*` for an example systemd timer configuration.
 
 ### Expiration notification
 
@@ -47,6 +70,9 @@ Options:
                         title of Atom feeds
 ```
 
+A sample `scadere-listen.service` for systemd
+is also availble under the `contrib` directory.
+
 ## Hacking
 
 Unit testing is done with [pytest], [pytest-asyncio],
@@ -82,6 +108,8 @@ Scadere is free software: you can redistribute and/or modify it
 under the terms of the GNU [Affero General Public License][agpl]
 version 3 or later.
 
+[flit]: https://flit.pypa.io
+[help2man]: https://www.gnu.org/software/help2man
 [pytest]: https://docs.pytest.org
 [pytest-asyncio]: https://pytest-asyncio.rtfd.io
 [Hypothesis]: https://hypothesis.rtfd.io
diff --git a/REUSE.toml b/REUSE.toml
index 9113eab..0e14a80 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -3,6 +3,7 @@ version = 1
 [[annotations]]
 path = [ '.gitignore',
          'README.md',
+         'contrib/*',
          'doc/*.h2m',
          'pyproject.toml' ]
 SPDX-FileCopyrightText = 'None'
diff --git a/contrib/scadere-check.service b/contrib/scadere-check.service
new file mode 100644
index 0000000..ad57246
--- /dev/null
+++ b/contrib/scadere-check.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Run scadere-check
+After=network.target
+
+[Service]
+ExecStart=scadere-check --output=/var/lib/scadere/certificates \
+	example.com example.net
diff --git a/contrib/scadere-check.timer b/contrib/scadere-check.timer
new file mode 100644
index 0000000..235e4c3
--- /dev/null
+++ b/contrib/scadere-check.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run scadere-check everyday
+
+[Timer]
+OnCalendar=daily
+Persistent=true
+RandomizedDelaySec=86400
+FixedRandomDelay=true
+
+[Install]
+WantedBy=timers.timer
diff --git a/contrib/scadere-listen.service b/contrib/scadere-listen.service
new file mode 100644
index 0000000..15c97a8
--- /dev/null
+++ b/contrib/scadere-listen.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Run scadere-listen
+After=network.target
+
+[Service]
+ExecStart=scadere-listen --title='TLS cert renewal' \
+	/var/lib/scadere/certificates https://scadere.example :4433
+Restart=on-failure
+
+[Install]
+WantedBy=default.target