Foro QNAP en español

Versión completa: Linkwarden, nuestro gestor del enlaces web
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola

En este post voy a tratar de explicar como instalar de dos formas distintas a LinkWarden que es un gestor de páginas web.

Evidentemente la idea es tener un LinkWarden ubicado en nuestra nas de QNAP.

Linkwarden necesita de una base de datos PostGreSQL para gestionar los usuarios y enlaces de las páginas web.

Voy a tratar de describir su instalacion de tres formas distintas
  1. Stack de dos contenedores, uno con LinkWarden y otro con la BBDD desde Container Station
  2. Stack de dos contenedores, uno con LinkWarden y otro con la BBDD desde el contenedor Portainer
  3. Con dos contenedores, uno con LinkWarden y otro para PostgreSQL


1- Stack de dos contenedores, uno con LinkWarden y otro con la BBDD desde Container Station

Lo podemos hacer haciendo los siguientes pasos:
[attachment=3058]



[attachment=3057]

El código a escribir en la ventana es el siguiente:
Código:
version: "3.5"
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: linkwarden_db
      POSTGRES_USER: usuario_en_linkwarden
      POSTGRES_PASSWORD: clave_en_linkwarden
    restart: always
    volumes:
      - /share/DockerData/linkwarden/db:/var/lib/postgresql/data
  linkwarden:
    environment:
      - DATABASE_URL=postgresql://usuario_en_linkwarden:clave_en_linkwarden@postgres:5432/linkwarden_db
      - NEXTAUTH_SECRET=superclavesecreta
      - POSTGRES_PASSWORD=clave_en_linkwarden
      - NEXTAUTH_URL=http://ip_local_nuestra_nas:3000
      - NEXT_PUBLIC_DISABLE_REGISTRATION=false
    restart: always
    image: ghcr.io/linkwarden/linkwarden:latest
    ports:
      - 3000:3000
    volumes:
      - /share/DockerData/linkwarden:/data/data
    depends_on:
      - postgres

Evidentemente cambiaremos los valores de las claves, usuarios, base de datos y la ip de la nas a nuestras necesidades.
En la primera parte de la definición detallamos datos de la BBDD postgreSQL y la ubicación de la bbdd en un carpeta de datos persistente "/share/DockerData/linkwarden/db".

En la segunda parte, definimos el contenedor de LinkWarden y su relación con la base de datos del contenedor anterior. Es por ello que tenemos que tener en cuenta las claves y usuarios empleados en el contenedor anterior. Los datos persistentes quedan en la ruta "/share/DockerData/linkwarden"

Tras pulsar el botón de crear, veremos una ventana mostrando el progreso.
[attachment=3062]

Esperamos unos instantes para dar tiempo a la nas a que los cree y los inicie. El primer inicio es mas lento ya que debe crear la BBDD
Pero veremos que el stack ha sido creado y está en funcionamiento.
[attachment=3061]

Si vamos al apartado de containers, veremos que hay dos nuevos de linkwarden
[attachment=3060]

Si vamos a un navegador web y escribimos http://ip_de_nuestra_nas:3000 veremos la pantalla de inicio de LinkWarden
[attachment=3059]

Ahora sólo hemos de crearnos como usuario nuevo pulsando en "Sing up" donde pondremos nuestro usuario y clave de nuestra elección.

2- Stack de dos contenedores, uno con LinkWarden y otro con la BBDD desde el contendor Portainer

Partimos de que tenemos ya instalado y funcionando el contenedor de Portainer

Nos identificamos y vamos al apartado de Stacks
[attachment=3066]

Veremos aquellos que ya tenemos definidos, en el caso de la imagen hay dos
[attachment=3065]

Pulsamos sobre el botón de "+ Add Stack· de la parte superior derecha y se nos abre la pantalla del docker compose
[attachment=3064
Escribimos el nombre en minúsculas de como lo llamaremos. 

Según el ejemplo "linkwarden" y en la ventana del Web Editor escribimos las líneas siguientes (idénticas a las de Container Station):
Código:
version: "3.5"
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: linkwarden_db
      POSTGRES_USER: usuario_en_linkwarden
      POSTGRES_PASSWORD: clave_en_linkwarden
    restart: always
    volumes:
      - /share/DockerData/linkwarden/db:/var/lib/postgresql/data
  linkwarden:
    environment:
      - DATABASE_URL=postgresql://usuario_en_linkwarden:clave_en_linkwarden@postgres:5432/linkwarden_db
      - NEXTAUTH_SECRET=superclavesecreta
      - POSTGRES_PASSWORD=clave_en_linkwarden
      - NEXTAUTH_URL=http://ip_local_nuestra_nas:3000
      - NEXT_PUBLIC_DISABLE_REGISTRATION=false
    restart: always
    image: ghcr.io/linkwarden/linkwarden:latest
    ports:
      - 3000:3000
    volumes:
      - /share/DockerData/linkwarden:/data/data
    depends_on:
      - postgres

En la parte inferior pulsamos sobre el botón de "Deploy the stack"
[attachment=3063]

Esperamos y veremos que ya nos aparece en la lista y que está en verde
[attachment=3068]

Si vamos a la lista de contenedores, veremos que hay dos relativos a Linkwarden
[attachment=3067]

Ahora sólo hemos de ir a un navegador web y escribir en la barra de direcciones "http://ip_local_nas:3000" y deberíamos ver la web de inicio de Linkwarden.

3-Con dos contenedores, uno con LinkWarden y otro para PostgreSQL 

En este caso lo que haremos es tener un container de PostgreSQL que podremos usar para otros contenedores y uno de Linkwarden.

La diferencia de este sistema es que centralizamos en la PostgreSQL las BBDDs de mas contenedores.
Podemos aprovechar mejor los recursos de nuestra nas ya que será mejor tener una PostgreSQL con varias BBDDs, que no tantas PostgreSQL con una única BBDD como stacks tengamos.

En mi caso ya tenía un contenedor de PostgreSQL funcionando y me he apoyado en el contenedor PGAdmin para la creación de una BBDD y del usuario exclusivos para el uso de Linkwarden.

Es importante que los dockers de PostgreSQL y de Linkwarden estén en la misma red ya que linkwarden ha de "ver" a la base de datos.

Partimos de que ya tenemos a PostgreSQL y a PGAdmin funcionando.

Crearemos un usuario llamado "usuario_en_linkwarden" desde PGAdmin
[attachment=3069]

Escribimos su nombre y notas relativas
[attachment=3075]

En la lengüeta de definición escribimos la contraseña "clave_en_linkwarden"
[attachment=3074]

Luego definimos los permisos de ese usuario en la lengüeta de privilegios
[attachment=3073]

Em la última lengüeta vemos las cadenas de texto de los comandos para crear el usuarios tal como hemos definido anteriormente.
Se pueden escribir esos mismos comandos en la consola de postgresql para crear al usuario.
[attachment=3072]

Una vez creado, lo veremos en la lista del lateral izquierdo.
[attachment=3071]

Luego creamos la BBDD con un asistente similar al anterior
[attachment=3070]

Escribimos el nombre de la BBDD "linkwarden_db" y elegimos del desplegable al usuario "usuario_en_linkwarden"
[attachment=3077

Si vamos a la lengüeta de SQL, veremos los comandos de creación
[attachment=3076]

Una vez pulsemos al botón de "Salvar" ya veremos en el menú del lateral al nuevo usuario.
[attachment=3078]

Ahora crearemos el contenedor de Linkwarden desde la consola de comandos:
Código:
docker run --name linkwarden -d --restart always -v /share/DockerData/linkwarden:/data/data -p 3000:3000 -e DATABASE_URL=postgresql://usuario_en_linkwarden:clave_linkwarden@postgresql:5432/linkwarden_db -e NEXTAUTH_SECRET=superclavesecreta -e POSTGRES_PASSWORD=clave_linkwarden -e NEXTAUTH_URL=http://ip_local_nas:3000 -e NEXT_PUBLIC_DISABLE_REGISTRATION=false ghcr.io/linkwarden/linkwarden:latest
Si el contenedor de postgresql estuviese en un red de dockers llamada "Dockers" hemos de agregar a la cadena anterior "--network=Dockers".

Tras unos instantes, veremos que si vamos al navegador a la direccion "http://ip_de_la_nas:3000" veremos la pantalla de inicio de Linkwarden
[attachment=3079]

Esta web permite a cualquiera que acceda a ella el crearse como usuario. 
Si queremos evitarlo, debemos primero crear los usuarios que nos interesen, detener y eliminar el docker y volver a crearlo cambiando en la cadena "-e NEXT_PUBLIC_DISABLE_REGISTRATION=false" por "-e NEXT_PUBLIC_DISABLE_REGISTRATION=true"

Desde consola sería:
Código:
docker stop linkwarden

docker rm linkwarden

docker run --name linkwarden -d --restart always -v /share/DockerData/linkwarden:/data/data -p 3000:3000 -e DATABASE_URL=postgresql://usuario_en_linkwarden:clave_linkwarden@postgresql:5432/linkwarden_db -e NEXTAUTH_SECRET=superclavesecreta -e POSTGRES_PASSWORD=clave_linkwarden -e NEXTAUTH_URL=http://ip_local_nas:3000 -e NEXT_PUBLIC_DISABLE_REGISTRATION=true ghcr.io/linkwarden/linkwarden:latest

Y al acceder a la web la veríamos así
[attachment=3080]

El funcionamiento de la web es muy sencillo permitiendo crear grupos de páginas web y etiquetas de las mismas.
Podéis echar una ojeada mas a fondo en el siguiente enlace https://linkwarden.app/#features