CouchDB es una base de datos NoSQL como MongoDB, Couch viene del acrónimo cluster of unreliable commodity hardware (sistema de almacenamiento para una base de datos objetal de gran escala). CouchDB emplea JSON para guardar datos, JavaScript para realizar consultas y HTTP como API. Una de las ventajas de CouchDB es la posibilidad de replicarse a otros dispositivos y funcionar offline para luego volver a sincronizarse. En este artículo os vamos a enseñar como instalar CouchDB con Let’s Encrypt en Ubuntu 20.04.
Instalar CouchDB
Para instalar CouchDB ejecutaremos estos comandos:
# 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
Luego instalaremos, también nos pedirá crear el usuario, y verificar desde que IP podremos acceder.
# apt update
# apt install -y couchdb
Al instalar couchdb deberás elegir la primera opción.
Luego tendremos que poner 0.0.0.0 así podremos acceder desde cualquier ubicación al servidor.
Con este comando podremos verificar que está funcionando CouchDB en el puerto 5984. Recordar abrir el puerto 5984 y 6984 TCP en el firewall del panel de cliente, más adelante lo necesitaremos.
# curl localhost:5984
Una vez conectados al servidor de CouchDB ya podremos entrar en nuestro navegador a la web http://IP_servidor:5984/_utils/index.html, ahí nos permitirá crear usuario y contraseña, usaremos los que hemos creado durante el instalador.
Instalar Let’s Encrypt
Instalamos cerboot y lighttpd:
# apt-get install certbot lighttpd
Creamos un directorio para el SSL y generamos el SSL con nuestro dominio:
# 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
Ahora editaremos la configuración local CouchDB para hacer que funcione por SSL
# nano /opt/couchdb/etc/local.ini
Modificaremos las siguientes líneas:
[ssl]
enable = true
cert_file = /var/lib/couchdb/cert/cert.pem
key_file = /var/lib/couchdb/cert/privkey.pem
Ahora editaremos la configuración por defecto CouchDB:
# nano /opt/couchdb/etc/default.ini
Modificaremos las siguientes líneas:
[ssl]
port = 6984
Reiniciaremos CouchDB:
# systemctl restart couchdb.service
Ya podemos entrar a CouchDB con SSL https://midominio.com:6984/.
Renovar SSL automáticamente
Crearemos un fichero /root/letsencrypt-renewal.sh con el siguiente contenido:
/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"
Añadiremos al crontab para que se ejecute 1 vez al mes.
# crontab -e
1 0 * * 1 /root/letsencrypt-renewal.sh