Hace ya algún tiempo estuve buscando aplicaciones para notas y me encontré con Turtl Notes que actualmente es una aplicación que uso tanto en Android como en mis ordenadores. Esta aplicación me encanta y por eso estoy colaborando con la traducción en catalán y castellano. Aún así, uso el servidor que hay por defecto y hace ya algún tiempo estuve buscando como tener mi propio servidor de Turlt.
Requisitorios Primero necesitamos instalar estos paquetes:
# apt-get install git wget curl libtool subversion gcc make automake
Instalación de libuv
Libuv es una librería que nos permitirá sincronizar los datos. Para instalar esta librería nos posicionamos en la siguiente ruta:
# cd /usr/local/src
Nos descargamos la librería:
# wget http://dist.libuv.org/dist/v1.9.1/libuv-v1.9.1.tar.gz
La descomprimimos:
# tar -xf libuv-v1.9.1.tar.gz
Y ahora compilamos:
# cd libuv-v1.9.1 # sh autogen.sh # ./configure # make # make install
Instalación de RethinkDB Ahora toca instalar
RethinkDB, que es una base de datos a tiempo real para guardar las notas y demás información. Para instalar RethinkDB en Debian añadimos este repositorio:
cd ~ echo "deb http://download.rethinkdb.com/apt `lsb_release -cs` main" | tee /etc/apt/sources.list.d/rethinkdb.list
Nos descargamos la llave pública y la añadimos:
# wget -qO- https://download.rethinkdb.com/apt/pubkey.gpg | apt-key add -
Y actualizamos repositorios:
# apt-get update
Finalmente instalamos
RethinkDB:
#apt-get install rethinkdb
Utilizaremos la configuración por defecto, así que copiaremos la configuración
default:
# cp /etc/rethinkdb/default.conf.sample /etc/rethinkdb/instances.d/default.conf
Y reiniciamos el servicio:
# systemctl restart rethinkdb
Instalación Common Lisp
Common Lisp es un lenguaje, y tiene muchas implementaciones diferentes. Turtl funciona bien en CCL, nos posicionamos:
# cd /usr/local/src
Y descargamos el paquete:
# svn co http://svn.clozure.com/publicsvn/openmcl/release/1.11/linuxx86/ccl
Copiamos los ficheros en la carpeta
/usr/local/bin para poder ejecutar los scripts:
# Para 32 bits # cp /usr/local/src/ccl/scripts/ccl /usr/local/bin # Para 64 bits # cp /usr/local/src/ccl/scripts/ccl64 /usr/local/bin
Iniciamos lisp con el comando:
# Para 32 bits # ccl # Para 64 bits # ccl64
Para salir:
(quit)
Instalación de QuickLisp
QuickLisp es un administrador para la biblioteca de** Common Lisp**. Creamos un usuario no privilegiado para Turlt:
# adduser turtl # su turtl $ cd ~
Descargamos dos paquetes,
QuickLisp y ASDF:
$ wget https://common-lisp.net/project/asdf/asdf.lisp $ curl -O https://beta.quicklisp.org/quicklisp.lisp
Instalamos los paquetes:
# Para 32 bits $ ccl --load quicklisp.lisp # Para 64 bits $ ccl64 --load quicklisp.lisp
Se iniciará una shell especifica para lisp, y desde allí instalaremos los paquetes:
(quicklisp-quickstart:install) (ql:add-to-init-file) (load (compile-file "asdf.lisp"))
Para salir:
(quit)
Eliminamos los paquetes instalados:
$ rm asdf.lisp quicklisp.lisp
Instalar Turtl Server Ahora toca instalar la
API de Turtl, nos lo descargamos de GitHub:
$ git clone https://github.com/turtl/api.git $ cd /home/turtl/api
Creamos un fichero para escribir comandos de lisp:
$ nano launch.lisp
Copia lo siguiente:
(pushnew "./" asdf:*central-registry* :test #'equal) (load "start")
Salimos del usuario no privilegiado y volvemos al usuario root:
$ exit
Ahora instalamos algunas dependencias que faltan el
QuickLisp (puede haber paquetes innecesarios en la lista, pero no lo tengo muy claro). Nos posicionamos:
# cd /home/turtl/quicklisp/local-projects
Descargamos de GitHub:
# git clone git://github.com/orthecreedence/cl-hash-util # git clone git://github.com/orthecreedence/vom # git clone git://github.com/orthecreedence/cl-async # git clone git://github.com/orthecreedence/cffi # git clone git://github.com/orthecreedence/wookie # git clone git://github.com/orthecreedence/cl-rethinkdb # git clone git://github.com/orthecreedence/cl-libuv # git clone git://github.com/orthecreedence/drakma-async # git clone https://github.com/Inaimathi/cl-cwd.git
Modificamos el fichero de inicialización de ccl:
# nano /home/turlt/.ccl.init.lisp
Copiamos lo siguiente al final de todo:
(cwd "/home/turtl/api") (load "/home/turtl/api/launch")
Creamos un fichero de configuración para Turlt:
# cp /home/turtl/api/config/config.default.lisp /home/turtl/api/config/config.lisp
Lo editamos:
# nano /home/turtl/api/config/config.lisp
Configuramos los parámetros *site-url*, *admin-email* y *email-from*, con nuestra URL (o IP), y dos correos electrónicos. Ahora es el momento de iniciar ccl con el usuario turtl, que debería de cargar y construir la API automáticamente:
# su turtl $ cd ~
Ejecutamos:
# Para 32 bits $ ccl # Para 64 bits $ ccl64
Aquí es cuando Turlt creará un esquema para la DB y lo lanzará. A partir de ahora deberías de poder acceder al servidor a través de un cliente con el server que has configurado anteriormente (algo así como http://turtl.tudominio.com:8181). Si lo intentas hacer en el navegador recibirás un error «Authentication failed.» ya que actualmente no hay una interfaz web. Salimos haciendo Ctrl + C y salimos de Lisp. Ahora volvemos al usuario root:
$ exit
Configuramos Turtl para que inicie al cargar:
# nano /etc/rc.local
Añade al final pero por encima del «exit 0» lo siguiente:
# Para 32 bits sudo -u turtl /usr/local/bin/ccl # Para 64 bits sudo -u turtl /usr/local/bin/ccl64
Reiniciamos y comprobamos que nuestro cliente se conecta a nuestro servidor de Turtl:
http://turtl.yourdomain.com:8181
Yo he configurado una IP local, ya que todo esto lo estoy haciendo desde una maquina virtual, y mi configuración es la siguiente:
http://192.168.1.14:8181
Creamos un usuario nuevo y podremos iniciar sesión sin problema:
- Configurando el cliente para utilizar nuestor servidor
- Iniciando sesión con nuevo usuario (que hemos registrado anteriormente)
Actualmente estamos usando HTTP, lo ideal sería utilizar HTTPS, por lo que se debería de configurar el servicio Turtl a través de Apache o Nginx para implementar HTTPS.
Fuentes:
* Running Turtl
* Libuv Documentation
* RethinkDB Documentation
* Common-Lisp
* QuickLisp Documentation
* Guide – How To install Turlt
Comentarios