GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar la wiki de la base de conocimiento de Outline en Ubuntu usando Docker

Outline es un software de base de conocimientos colaborativo de código abierto. Puede usarlo para alojar la documentación y las páginas de fans o incluso usarlo para compartir notas. Incluye un editor de rebajas y se integra con múltiples servicios como Slack, Figma, Airtable, Google Docs, Trello, Zapier, Codepen, Spotify, Youtube, etc. Tiene características de seguridad como grupos de usuarios con permisos de lectura y escritura separados, permite compartir públicamente y tiene soporte RTL con traducciones en 13 idiomas. Está construido usando React y Node.js. Hay dos formas de usar Esquema. Una es su versión alojada en la nube, o puede alojarla en su servidor.

Este tutorial le enseñará cómo instalar Outline Wiki en un servidor basado en Ubuntu usando Docker.

Requisitos

  • Un servidor con Ubuntu 20.04 con un mínimo de 1 GB de RAM.

  • Un usuario no root con privilegios sudo.

  • Un nombre de dominio que apunta al servidor. Usaremos https://outline.example.com para nuestro tutorial.

  • Pocas aplicaciones esenciales para empezar.

    $ sudo apt install nano curl wget unzip gnupg
    

Paso 1:configurar el cortafuegos

El primer paso es configurar el cortafuegos. Ubuntu viene con ufw (cortafuegos sin complicaciones) de forma predeterminada.

Compruebe si el cortafuegos se está ejecutando.

$ sudo ufw status

Deberías obtener el siguiente resultado.

Status: inactive

Permita el puerto SSH para que el cortafuegos no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permitir puertos HTTP y HTTPS también.

$ sudo ufw allow 80
$ sudo ufw allow 443

Habilite el cortafuegos.

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vuelva a comprobar el estado del cortafuegos.

$ sudo ufw status

Debería ver un resultado similar.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Paso 2:Instalar Docker

Necesitaremos instalar Docker usando su repositorio oficial. Agregue la clave GPG oficial de Docker.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregue el repositorio de Docker al sistema.

$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Actualice la lista de repositorios de APT e instale Docker.

$ sudo apt update
$ sudo apt install docker-ce

Verifique si el motor Docker está instalado correctamente.

$ docker --version
Docker version 20.10.14, build a224086

Ejecute los siguientes comandos para que no necesite usar sudo para ejecutar los comandos de Docker.

$ sudo usermod -aG docker ${USER}
$ su - ${USER}

Paso 3:instalar Docker Compose

Ejecute el siguiente comando para instalar Docker compose. Docker Compose se actualizó a v2.0 recientemente, lo que introdujo muchos cambios importantes. Usaremos la última versión 1.x disponible en su página de versiones de Github.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Aplique el permiso ejecutable al binario de composición de Docker.

$ sudo chmod +x /usr/local/bin/docker-compose

Verifique si Docker Compose está instalado correctamente.

$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

Finalización del comando de instalación para composición de Docker.

$ sudo curl \
	-L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose
$ source ~/.bashrc

Esto completa la sección de instalación de Docker y Docker compose del tutorial.

Paso 4:Crear archivo de entorno para Docker

Configurar autenticación de Slack

Esquema requiere que configure un proveedor de autenticación. Para nuestro tutorial, configuraremos el inicio de sesión basado en Slack.

Inicie sesión con su cuenta de Slack y visite la página de aplicaciones API de Slack.

Haga clic en Crear una aplicación botón para proceder. Haga clic en Desde cero enlace para crear la aplicación.

Seleccione un nombre para su aplicación y elija el espacio de trabajo donde desea que aparezca su aplicación. Si no desea asociar su aplicación con el espacio de trabajo existente, puede crear otro y volver a este paso.

Haga clic en Crear aplicación botón una vez que haya terminado. A continuación, desplácese hacia abajo hasta la parte inferior de la página y proporcione a su aplicación una descripción, un icono y un color de fondo.

Haga clic en Guardar cambios botón una vez que haya terminado. Seleccione OAuth y permisos opción de la barra lateral izquierda.

Agregue la URL de redireccionamiento https://outline.example.com/auth/slack.callback en el cuadro provisto y haga clic en Agregar botón.

Haga clic en Guardar URL botón para proceder. Desplácese hacia abajo hasta Ámbitos de token de usuario de la página y seleccione los siguientes ámbitos del menú desplegable.

  • identity.avatar
  • identity.basic
  • identity.email
  • identity.team

Volver a la Información básica página de la barra lateral izquierda. Copie los valores ID de cliente y Secreto del cliente de sus casillas en Credenciales de la aplicación .

Configurar la integración de Slack

Visita los comandos de barra opción de la barra lateral izquierda.

Haga clic en Nuevo comando botón en la página resultante. Introduce /outline como el comando. Introduce https://outline.example.com/api/hooks.slack como la URL de solicitud . Introduzca una descripción para su comando y una palabra como pista. Haz clic en Guardar botón en la parte inferior cuando haya terminado.

Abra el menú Características>> Interactividad y accesos directos de la barra lateral izquierda. Habilitar interactividad cambiando el botón de alternar y pegando https://outline.example.com/api/hooks.interactive como URL de solicitud. Haga clic en Guardar cambios botón para terminar.

Abra la Configuración>> Instalar aplicación en la barra lateral izquierda y haga clic en Instalar en WorkSpace botón para instalar la aplicación para su espacio de trabajo de Slack.

Visita la Información Básica página de la barra lateral izquierda y copia ID de la aplicación y token de verificación valores para la integración de la aplicación Slack.

Crear credenciales de S3

Cree un depósito de S3 para su instalación de Outline en AWS o cualquier servicio compatible con S3. Después de crear el depósito, agregue la siguiente política JSON para configurar el uso compartido de recursos de origen cruzado (CORS). Reemplace el valor de AllowedOrigins con su URL de esquema.

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "https://docs.mycompany.com"
        ],
        "ExposeHeaders": []
    },
    {
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

Cree un usuario de IAM con la siguiente política. Reemplace my-bucket-name con el nombre real de su depósito de S3 de Outline.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor",
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAcl",
                "s3:DeleteObject",
                "s3:PutObject",
                "s3:GetObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

Ahora que ha creado su usuario de IAM, genere una clave de acceso y un secreto para el usuario de su depósito.

Crear claves secretas

El archivo de entorno requiere una clave secreta y un secreto de utilidad. Ejecute el siguiente comando dos veces para generar ambas claves.

$ openssl rand -hex 32

Copie y guarde estos valores.

Crear y editar el archivo de entorno

Cree un directorio para la configuración de la ventana acoplable para Esquema.

$ mkdir ~/outline

Cambia al directorio.

$ cd ~/outline

Crea el docker.env archivo y ábralo para editarlo. Este archivo almacenará todas las variables de entorno necesarias para la instalación.

$ nano docker.env

Pegue el siguiente código en él. Ingrese la clave secreta y el secreto de utilidad creado anteriormente. Copie las credenciales de Slack creadas anteriormente para la autenticación y la integración de aplicaciones. Ingrese sus credenciales de Amazon S3 como se especifica a continuación.

Si desea utilizar Google Analytics para realizar un seguimiento de las estadísticas de su aplicación de esquema, ingrese su ID de Analytics en el campo a continuación. Por ahora, Outline no admite etiquetas GA4, por lo que deberá ingresar su ID de seguimiento anterior.

Para la WEB_CONCURRENCY variable, divida la RAM de su sistema por 512 e ingrese el valor aproximado. El FORCE_HTTPS la variable se establece en falso ya que estamos usando Nginx como servidor proxy.

# –––––––––––––––– REQUIRED ––––––––––––––––
SECRET_KEY=generate_a_new_key
UTILS_SECRET=generate_a_new_key

POSTGRES_USER=outlinepg
POSTGRES_PASSWORD=yourpassword
POSTGRES_DB=outline
DATABASE_URL=postgres://outlinepg:[email protected]:5432/outline
DATABASE_URL_TEST=postgres://outlinepg:[email protected]:5432/outline-test
PGSSLMODE=disable
REDIS_URL=redis://localhost:6379

URL=https://docs.example.com
PORT=3000

AWS_ACCESS_KEY_ID=get_a_key_from_aws
AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key
AWS_REGION=us-east-2
AWS_S3_UPLOAD_BUCKET_URL=https://my-bucket-name.s3.us-east-2.amazonaws.com
AWS_S3_UPLOAD_BUCKET_NAME=my-bucket-name
AWS_S3_UPLOAD_MAX_SIZE=26214400
AWS_S3_FORCE_PATH_STYLE=true

# –––––––––––––– AUTHENTICATION ––––––––––––––
SLACK_KEY=<slackclientid>
SLACK_SECRET=<slackclientsecret>

# –––––––––––––––– OPTIONAL ––––––––––––––––
GOOGLE_ANALYTICS_ID=UA-XXXXXXX-1

SLACK_VERIFICATION_TOKEN=your_token
SLACK_APP_ID=A0XXXXXXX
SLACK_MESSAGE_ACTIONS=true

FORCE_HTTPS=false
ENABLE_UPDATES=true
WEB_CONCURRENCY=2

El archivo anterior se basa en el archivo de muestra del repositorio Github de Outline. Si necesita configurar ajustes adicionales, puede copiarlos a su archivo.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Paso 5:Crear un archivo Docker Compose para el esquema

Crea el docker-compose.yml archivo y ábralo para editarlo.

$ nano docker-compose.yml

Pegue el siguiente código en él.

version: "3"
services:

  outline:
    image: outlinewiki/outline:latest
    restart: always
    command: sh -c "yarn sequelize:migrate --env=production-ssl-disabled && yarn start --env=production-ssl-disabled"
    env_file: ./docker.env
    ports:
      - "3000:3000"
    depends_on:
      - postgres
      - redis

  redis:
    image: redis
    restart: always
    env_file: ./docker.env
    ports:
      - "6379:6379"
    volumes:
      - ./redis.conf:/redis.conf
    command: ["redis-server", "/redis.conf"]

  postgres:
    image: postgres
    restart: always
    env_file: ./docker.env
    ports:
      - "5432:5432"
    volumes:
      - database-data:/var/lib/postgresql/data

volumes:
  database-data:

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Paso 6:esquema de instalación

Instale Esquema iniciando los contenedores.

$ docker-compose up -d

Consulta el estado de los contenedores.

$ docker ps

Paso 7:instalar SSL

Para instalar un certificado SSL usando Let's Encrypt, necesitamos descargar la herramienta Certbot. Usaremos el instalador del paquete Snapd para eso.

Instale el instalador de Snap.

$ sudo apt install snapd

Asegúrese de que su versión de Snapd esté actualizada.

$ sudo snap install core && sudo snap refresh core

Instale Certbot.

$ sudo snap install --classic certbot

Use el siguiente comando para asegurarse de que el comando Certbot se pueda ejecutar creando un enlace simbólico al /usr/bin directorio.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Genere un certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d outline.example.com

El comando anterior descargará un certificado en /etc/letsencrypt/live/outline.example.com directorio en su servidor.

Generar un grupo Diffie-Hellman certificado.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pegue el siguiente código.

#!/bin/sh
certbot renew --cert-name outline.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Paso 8:instalar Nginx

Ubuntu se envía con una versión anterior de Nginx. Debe descargar el repositorio oficial de Nginx para instalar la última versión.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Agregue el repositorio para la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Actualice los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifique la instalación.

$ nginx -v
nginx version: nginx/1.20.2

Habilite el servicio Nginx.

$ sudo systemctl enable nginx

Paso 9:configurar Nginx

Hasta ahora, Shlink se ha estado ejecutando en el sistema local a través del puerto 8080. Usaremos Nginx para actuar como un proxy inverso para ejecutar en su dominio.

Cree un archivo de configuración para el servidor Shlink en /etc/nginx/conf.d directorio.

$ sudo nano /etc/nginx/conf.d/outline.conf

Pegue el siguiente código en él.

server {
        server_name outline.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/outline.access.log;
        error_log /var/log/nginx/outline.error.log;

        ssl_certificate /etc/letsencrypt/live/outline.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/outline.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/outline.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
        location / {
                proxy_pass http://localhost:3000;
                
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header Host $host;
        
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_redirect off;
        }
}

## HTTPS Redirect
server {
        listen 80; 
        listen [::]:80;
        server_name outline.example.com;
        return 301 https://$host$request_uri;
}

Una vez que haya terminado, guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Abra el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Guarde el archivo presionando Ctrl + X e ingresando Y Cuando se le solicite. Vuelva a validar Nginx.

Verifique la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Inicie el servidor Nginx.

$ sudo systemctl start nginx

Paso 10 - Esquema de acceso

Inicie el dominio https://outline.example.com en su navegador, y será recibido con la siguiente página.

Haz clic en Continuar con Slack. botón para iniciar sesión con Slack y conectar su espacio de trabajo.

Una vez que haya iniciado sesión, se abrirá la página de inicio de Esquema y podrá comenzar a trabajar en ella.

La aplicación Outline para Slack te permite buscar y pegar el enlace a cualquier documento desde tu espacio de trabajo. Para hacerlo, abre tu espacio de trabajo de Slack y escribe /outline <searchterm> en los mensajes y publicarlos.

Ubicará automáticamente el documento relacionado con el término de búsqueda y lo publicará en sus mensajes.

Paso 11 - Actualizar esquema

Para actualizar la wiki de Outline, ejecute los siguientes comandos. El primer comando cierra y elimina los contenedores. El segundo extrae la última versión de las imágenes de Docker para Outline y otras herramientas. Puede ejecutar los mismos comandos si necesita realizar cambios en el archivo de redacción de Docker o en el archivo de entorno.

$ docker-compose down --remove-orphans
$ docker-compose pull 

Ejecute el siguiente comando para actualizar la base de datos.

$ docker-compose run --rm outline yarn db:migrate --env=production-ssl-disabled

Inicie el nuevo contenedor con imágenes nuevas mientras mantiene sus datos intactos.

$ docker-compose up -d

Conclusión

Esto concluye nuestro tutorial sobre la instalación de la wiki de la base de conocimiento de Outline en un servidor Ubuntu 20.04 usando Docker. Si desea obtener más información sobre Outline, puede seguir su documentación oficial. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Ubuntu
  1. Cómo instalar Docker en Ubuntu 18.04

  2. Cómo instalar Kubernetes en Ubuntu 18.04

  3. Cómo instalar Docker Compose en Ubuntu 18.04

  4. Cómo instalar Docker en Ubuntu 16.04

  5. Cómo instalar Docker en Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

Cómo instalar Bitwarden en Ubuntu 20.04

Cómo instalar Browsh en Ubuntu 20.04

Cómo instalar Docker en Ubuntu 20.04, 18.04, 21.04

Cómo instalar Docker en Ubuntu 14.04

Cómo instalar Wiki.js en Ubuntu 20.04 LTS

Cómo instalar Gitea en Ubuntu usando Docker