CouchDB és una base de dades NoSQL com MongoDB. Couch prové de l'acrònim cluster of unreliable commodity hardware (sistema d'emmagatzematge per a una base de dades d'objectes a gran escala). CouchDB fa servir JSON per desar dades, JavaScript per fer consultes i HTTP com a API. Un dels avantatges de CouchDB és la possibilitat de replicar-se en altres dispositius i funcionar sense connexió per tornar-se a sincronitzar després. En aquest article us ensenyarem com instal·lar CouchDB amb Let’s Encrypt a Ubuntu 20.04.
Instal·lar CouchDB
Per instal·lar CouchDB executarem aquestes ordres:
# apt update && sudo apt install -y curl apt-transport-https gnupg
# curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
# source /etc/os-release
# echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" \
| sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null
A continuació l'instal·larem; també ens demanarà que creem l'usuari i que verifiquem des de quina IP hi podrem accedir.
# apt update
# apt install -y couchdb
Quan instal·leu couchdb haureu de triar la primera opció.
Després haurem d'introduir 0.0.0.0 per poder accedir al servidor des de qualsevol ubicació.
Amb aquesta ordre podrem verificar que CouchDB funciona al port 5984. Recordeu obrir els ports 5984 i 6984 TCP al tallafoc del tauler de client, ja que més endavant els necessitarem.
# curl localhost:5984
Un cop connectats al servidor de CouchDB, ja podrem accedir amb el navegador al web http://IP_servidor:5984/_utils/index.html, on podrem crear un usuari i una contrasenya; farem servir els que hem creat durant la instal·lació.
Instal·lar Let’s Encrypt
Instal·lem certbot i lighttpd:
# apt-get install certbot lighttpd
Creem un directori per a l'SSL i generem l'SSL amb el nostre domini:
# mkdir /etc/couchdb/letsencrypt
# certbot certonly --webroot -w /var/www/html --config-dir /etc/couchdb/letsencrypt --logs-dir /var/log/couchdb -d midominio.com
# mkdir /var/lib/couchdb/cert/
# cp /etc/couchdb/letsencrypt/live/midominio.com/privkey.pem /var/lib/couchdb/cert/
# cp /etc/couchdb/letsencrypt/live/midominio.com/cert.pem /var/lib/couchdb/cert/
# chown couchdb.couchdb /var/lib/couchdb/cert* -R
CouchDB + SSL
Ara editarem la configuració local de CouchDB perquè funcioni amb SSL
# nano /opt/couchdb/etc/local.ini
Modificarem les línies següents:
[ssl]
enable = true
cert_file = /var/lib/couchdb/cert/cert.pem
key_file = /var/lib/couchdb/cert/privkey.pem
Ara editarem la configuració per defecte de CouchDB:
# nano /opt/couchdb/etc/default.ini
Modificarem les línies següents:
[ssl]
port = 6984
Reiniciarem CouchDB:
# systemctl restart couchdb.service
Ja podem accedir a CouchDB amb SSL a https://midominio.com:6984/.
Renovar l'SSL automàticament
Crearem un fitxer /root/letsencrypt-renewal.sh amb el contingut següent:
/usr/bin/certbot renew --quiet --renew-hook "/bin/cp -apr /etc/letsencrypt/archive/midominio.com/fullchain.pem /var/lib/couchdb/cert/ && /bin/cp -apr /etc/letsencrypt/archive/midominio.com/privkey.pem /var/lib/couchdb/cert/ && /usr/sbin/service couchdb stop && /usr/sbin/service couchdb start"
L'afegirem al crontab perquè s'executi 1 vegada a la setmana.
# crontab -e
1 0 * * 1 /root/letsencrypt-renewal.sh