Instalar servidor de Joplin con docker compose

2025–01–26

La aplicacion preferida para tomar notas, en todas mis sistemas que uso, es Joplin. Hasta unos meses, para la syncronizacion de mis notas en la nube, usaba el protocolo WebDav y mi cuenta de Koofr, pero al final decidi a montar me un servidor y haci beneficiarme con algunas extras que explicare mas abajo.

Porque he decidido crear un servidor, y no seguir usando Webdav?

Lo primero, y mas importante es la velocidad. Con el servidor todas mis notas se syncronizan mucho mas rapido, y esto tambien trae menos fallos. Hantes cada dos por tres, tenia notas marcadas como conflicto debido a la syncronizacion, porque la velocidad no era buena. Otras ventajas son la opcion de compartir notas via enlaces, o compartir notas con usuarios del propio servidor, manejar usuarios.

Porque uso Joplin?

He probado varias aplicaciones para la toma de notas, entre ellas son Notesnook, Standard Notes, tambien he usado por mucho tiempo notas desde Emacs. Pero siempre he preferido y he vuelto a usar Joplin por los seguientes motivos.

Instalar Joplin servidor via (docker compose)

Vamos a instalar el servidor, que nos permitirá sincronizar notas desde la aplicación de escritorio y las aplicaciones de teléfono móvil para que pueda ver, editar o añadir notas en cualquier lugar.

Crear el archivo docker-compose.yaml

$ mkdir -p ~/Docker/Joplin
$ cd ~/Docker/Joplin
$ mkdir data

Copiar lo seguiente en docker-compose.yaml:

version: '3'
services:
    db:
        image: postgres:13
        volumes:
            - ./data/postgres:/var/lib/postgresql/data
        ports:
            - "5432:5432"
        restart: unless-stopped
        environment:
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_DB=${POSTGRES_DATABASE}
    app:
        image: joplin/server:latest
        depends_on:
            - db
        ports:
            - "22300:22300"
        restart: unless-stopped
        environment:
            - APP_PORT=22300
            - APP_BASE_URL=${APP_BASE_URL}
            - DB_CLIENT=pg
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_DATABASE=${POSTGRES_DATABASE}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_PORT=${POSTGRES_PORT}
            - POSTGRES_HOST=db

Creamos el archivo .env

Creamos el archivo .env, ahi ponemos:

APP_BASE_URL=https://notas.nombre-de-dominio.com
APP_PORT=22300
DB_CLIENT=pg
POSTGRES_PASSWORD=contraseñaparapostgres
POSTGRES_DATABASE=joplindb
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_HOST=db

Ahi donde POSTGRES_PASSWORD= ponemos una contraseña, usaremos por ejemplo el comando openssl rand -base64 36 para generar la. Reemplezamos APP_BASE_URL= apuntando el subdominio que usaremos para el servidor. El resto de parametros podemos dejar los asi como estan.

Ejecutar el contenedor

$ docker-compose up -d

Listo, ya tenemos el servidor en marcha.

Configurar proxy (Caddy)

Despues configuro un subdominio proxy para poder sincronizar notas de forma remota. Para esto yo uso Caddy, editando /etc/Caddy/Caddyfile asi.

Ejemplo:

notas.dominio.com {
    reverse_proxy IP:22300
}

Reemplezar IP con la IP de su servidor, tambien notas.dominio.com con el subdominio que quieres usar.

$ sudo systemctl restart caddy

Actualizar las credenciales del usuario administrador

Por defecto, el servidor de Joplin se configurará con un usuario admin con email admin@localhost y contraseña admin. Por razones de seguridad, las credenciales del usuario admin deben ser cambiadas. En la página de administración, inicie sesión como usuario administrador. En la parte superior derecha, seleccione el botón Perfil actualizar la contraseña de administrador

Crear usuarios

Navegar hasta la pagina de Usuarios y crear ahi los usuarios que van a tener cuentas. Puedes especificar cuanto almacenamiento va a usar este usuario, contraseñas, correo electronico, si podra compartir notebooks (libretas) .

Conectar dispositivo al servidor Joplin

Para conectar Joplin Desktop o la aplicacion movil al servidor Joplin, busca en “Opciones” => “Sincronización” => Joplin Server (Beta) e introduzca la dirección del servidor, ejemplo notas.dominio.com, el correo electrónico y la contraseña que utilizó al configurar el usuario.

Tienes la opcion, “Comprueba la configuración de sincronización” para ver si la conexión funciona. Si no lo hace, alguna de las opciones anteriores es incorrecta. Si todo es correcto, verá "¡Exito!.

Recomiendo tambien, activar la opcion de encriptacion, de este modo las notas seran encriptadas cuando se suban al servidor.

Para saber mas sobre la instalacion recomiendo dar un paseo por el README.