Bismillah,

Crontab untuk memperpanjang sertifikat gratis dari Let’s Enscript. Langkah-langkahnya adalah sebagai berikut:

  1. Non Aktfikan Apache2
  2. Aktifkan OpenBSD Htppd
  3. Jalankan acme-client untuk memperbaharui sertifikat
  4. Non Aktifkan OpenBSD Httpd
  5. Aktikan Apache2

Semoga Bermanfaat.

muhammad$ doas crontab -l
#
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour    mday    month   wday    command
#
# rotate log files every hour, if necessary
0       *       *       *       *       /usr/bin/newsyslog
# send log file notifications, if necessary
#1-59   *       *       *       *       /usr/bin/newsyslog -m
#
# do daily/weekly/monthly maintenance
30      1       *       *       *       /bin/sh /etc/daily
30      3       *       *       6       /bin/sh /etc/weekly
30      5       1       *       *       /bin/sh /etc/monthly
#0      *       *       *       *       sleep $((RANDOM \% 2048)) && /usr/libexec/spamd-setup


#stop apache2
0       0       *       *       *       rcctl stop apache2
1       0       *       *       *       rcctl stop apache2

# SSL certificate
5       0       *       *       *       rcctl -f restart httpd
7       0       *       *       *       acme-client muhammad.muntaza.id && rcctl reload -f httpd
10      0       *       *       *       rcctl stop httpd

#start apache2
40      0       *       *       *       rcctl restart apache2
muhammad$
muhammad$



muhammad$ cat /etc/httpd.conf
# $OpenBSD: httpd.conf,v 1.20 2018/06/13 15:08:24 reyk Exp $

server "muhammad.muntaza.id" {
        listen on * port 80
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
        location * {
                block return 302 "https://$HTTP_HOST$REQUEST_URI"
        }
}

server "muhammad.muntaza.id" {
        listen on * tls port 443
        tls {
                certificate "/etc/ssl/muhammad.muntaza.id.fullchain.pem"
                key "/etc/ssl/private/muhammad.muntaza.id.key"
        }
        location "/pub/*" {
                directory auto index
        }
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
}
muhammad$ cat /etc/rc.conf.local
pkg_scripts=postgresql apache2
muhammad$

Contoh lain, file crontab untuk backup database, di sini sudah saya beri komentar pada file tersebut, sehingga bisa di lihat, contoh backup harian, mingguan dan bulanan:

# muhammad@muntaza.id
# backup bulanan dan harian database postgresql

# minute hour day-of-month month day-of-week command



# Harian
10      0       *       *       *       /var/postgresql/back_up_kabupaten/back_up_kabupaten.sh

# Bulanan, tiap tanggal 1
11      0       1       *       *       /var/postgresql/back_up_kabupaten_b/back_up_kabupaten_b.sh

# Bulanan, tiap tanggal 2
15      0       2       *       *       /var/postgresql/back_up_global/back_up_global.sh

# Bulanan, tiap tanggal 3
16      0       3       *       *       /var/postgresql/back_up_persediaan/back_up_persediaan.sh

# Mingguan, tiap hari Ahad
20      0       *       *       0       /var/postgresql/back_up_persediaan_2019/back_up_persediaan_2019.sh

# Harian
22      0       *       *       *       /var/postgresql/back_up_persediaan_2020/back_up_persediaan_2020.sh

Pada contoh di atas, backup dilakukan pada tengah malam jam 0, pada menit yang bervariasi, yaitu pada menit ke-10, menit ke-11 dan seterusnya, namun ada yang harian, mingguan dan bulanan. Terlihat sekali manfaat crontab ini, yang mana untuk database yang lama, tidak perlu backup harian, maka bisa backup bulanan. Bahkan, crontab bisa di setting untuk backup tahunan he…he… yaitu dengan mensetting bulan dan tanggal, misalnya bulan tanggal 1 bulan 1 (Januari).

Semoga contoh yang sedikit ini bermanfaat. Aamiin.

Alhamdulillah