initial commit

This commit is contained in:
postscriptum 2025-09-11 12:43:12 +03:00
commit 259fee630b
127 changed files with 7811 additions and 0 deletions

View file

@ -0,0 +1,56 @@
# htcount: лічильник відвідувань сайту на базі access.log
htcount - системна утиліта, написана мовою Rust, що рахує кількість хостів / хітів на основі даних локального журналу access.log (CLF) і виводить результати у вигляді дампу JSON/API або у форматі кнопки SVG для вставки на сайт.
По суті, вона влаштована так само, як відомий goaccess - інструмент CLI, який дозволяє аналізувати Веб-трафік без підключення сторонніх сервісів типу Google Analytics.
## Встановлення
htcount написано мовою Rust, можливо, вам знадобиться спочатку розгорнути відповідну інфраструктуру для її збірки з початкового коду:
=> install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux
``` bash
git clone https://github.com/YGGverse/htcount.git && cd htcount
cargo build --release
sudo install target/release/htcount /usr/local/bin/htcount
```
* встановлення до `/usr/local/bin/htcount` потрібне в контексті системних дозволів systemd
### systemd
``` /etc/systemd/system/htcount.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/htcount\
# вкажіть актуальний шлях цільового журналу (див. також --ignore-host)
--source /var/log/nginx/access.log\
# вкажіть актуальний шлях для розміщення кнопки
--export-svg /var/www/path/to/public/counter.svg\
# я збирав пакунок від root, де в мене лежать оригінали у якості шаблону
--template-svg /root/htcount/default/counter.svg\
# оновлення кнопки раз на годину (3600 секунд)
--update 3600\
# оновлення відвідувачів раз на добу
--match-time %%d/%%b/%%Y\
# дебаг у файл вимкнено для заощадження терміну служби SSD
--debug n
# дебаг вимкнено опцією --debug n, можна вказати шлях або драйвер
StandardOutput=null
# збираємо усі помилки до стандартного розташування системних журналів
StandardError=file:///var/log/htcount-error.log
[Install]
WantedBy=multi-user.target
```
* перелік доступних опцій залежить від актуальної версії: `htcount --help`
* для інтеграції кнопки на сайт, додайте відповідний код: `<img src="/counter.svg"/>`
## Посилання
=> https://crates.io/crates/htcount
=> https://en.wikipedia.org/wiki/Common_Log_Format
=> https://goaccess.io