• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Linkwarden, nuestro gestor del enlaces web
#1
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:
   



   

El código a escribir en la ventana es el siguiente:
Code:
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.
   

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.
   

Si vamos al apartado de containers, veremos que hay dos nuevos de linkwarden
   

Si vamos a un navegador web y escribimos http://ip_de_nuestra_nas:3000 veremos la pantalla de inicio de LinkWarden
   

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
   

Veremos aquellos que ya tenemos definidos, en el caso de la imagen hay dos
   

Pulsamos sobre el botón de "+ Add Stack· de la parte superior derecha y se nos abre la pantalla del docker compose
     
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):
Code:
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"
   

Esperamos y veremos que ya nos aparece en la lista y que está en verde
   

Si vamos a la lista de contenedores, veremos que hay dos relativos a Linkwarden
   

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
   

Escribimos su nombre y notas relativas
   

En la lengüeta de definición escribimos la contraseña "clave_en_linkwarden"
   

Luego definimos los permisos de ese usuario en la lengüeta de privilegios
   

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.
   

Una vez creado, lo veremos en la lista del lateral izquierdo.
   

Luego creamos la BBDD con un asistente similar al anterior
   

Escribimos el nombre de la BBDD "linkwarden_db" y elegimos del desplegable al usuario "usuario_en_linkwarden"
     

Si vamos a la lengüeta de SQL, veremos los comandos de creación
   

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

Ahora crearemos el contenedor de Linkwarden desde la consola de comandos:
Code:
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
   

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:
Code:
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í
   

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
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply




Users browsing this thread: 1 Guest(s)