Instalando a Wiki Outline em Docker com Autenticação via GitLab
Tabela de conteúdos
Neste tutorial, vamos abordar a instalação da Wiki Outline em um ambiente Docker, garantindo a facilidade na configuração. Além disso, vamos configurar a autenticação via GitLab, tornando o acesso à Wiki mais seguro e integrado aos sistemas existentes na empresa.
Ambiente #
Para está implementação, estou utilizando um servidor Linux com a distribuição Ubuntu na versão 22.04.
O servidor que utilizei possui a seguinte configuração: 2 vCPUs, 4GB RAM e um disco SSD de 30GB.
Para que nosso servidor seja acessível pela internet, e para que o nosso Traefik gere o certificado via Let’s Encrypt, precisamos possuir um endereço IP público e precisamos liberar as portas 80 e 443 para a internet.
Também é necessário possuirmos um registro DNS para criarmos as URLs para o Outline e para o MinIO.
Disponibilizei o Docker Compose no seguinte repositório do GitHub:
Imagens utilizadas:
- postgresql - Versão latest (16.1)
- redis - Versão latest (7.2.3)
- minio - Versão latest (RELEASE.2023-12-20T01-00-02Z)
- outline - Versão 0.74.0
- traefik - Versão latest (v2.10.7)
Estrutura:
.
├── .env
└── docker-compose.yml
Não irei abordar a instalação do Docker Engine, caso ainda não saiba realizar a instalação, consulte este outro post:
É necessário possuirmos um servidor GitLab instalado e configurado, no tutorial não irei entrar em detalhes de como realizar a instalação do GitLab, caso não possua uma servidor GitLab, consulte este outro post:
Etapa 01 - Criando os registro DNS #
Antes de tudo, vamos definir e criar as URLs que iremos utilizar para o Outline e para o nosso MinIO.
Irei utilizar o domínio alfredocastro.com.br, defini a URL wiki.alfredocastro.com.br para o Outline e as URLs storage.alfredocastro.com.br e storage-admin.alfredocastro.com.br para o MinIO.
Acesse o seu gerenciador de registros DNS do seu domínio e crie dois registro do tipo A colocando como valor o endereço IP público do seu servidor.
Veja um exemplo:
Para consultar a propagação do registro criado, consulte o site:
WhatsMyDNS
Etapa 02 - Clonando o repositório do Docker Compose #
Após realizar a instalação do Docker Engine, vamos dar seguimento com a nossa implementação.
Execute os seguintes comandos para clonar nosso Docker Compose para dentro do nosso servidor:
cd /opt
git clone https://github.com/alfredotavio/outline-authgitlab-docker.git
NOTA: Utilizei o diretório /opt do Linux, caso queira você pode alterar para outro diretório de sua escolha.
Etapa 03 - Gerando as keys SECRET_KEY e UTILS_SECRET #
Utilize o comando abaixo para gerar as keys SECRET_KEY e UTILS_SECRET, utilize o comando duas vezes. Iremos adicionar as keys geradas no arquivo de variáveis .env.
openssl rand -hex 32
Etapa 04 - Gerando o Token OAuth no GitLab #
Siga as etapas para gerar o Token OAuth para as variáveis OIDC_CLIENT_ID e OIDC_CLIENT_SECRET.
Faça login no GitLab.
Nome: um nome para o token OAuth.
Redirect URI: a URL para a qual o usuário será redirecionado após o Login. Substitua wiki.alfredocastro.com.br pela URL do Outline que você definiu na etapa 01, mantenha /auth/oidc.callback.
Selecione: Confidential, openid, email.
Em seguida, clique em “Save application”.
Etapa 05 - Definindo as variáveis #
Para definirmos as variáveis, devemos editar o arquivo .env na raiz do projeto, utilize o seguinte comando:
vim /opt/outline-authgitlab-docker/.env
Altere as seguintes variáveis (altere de acordo com o seu ambiente, lembre-se das informações geradas nas etapas anteriores):
# URL do seu GitLab
GITLAB_URL=gitlab.alfredocastro.com.br
# Gere uma senha para o usuário PostgreSQL
POSTGRES_PASSWORD=4plDjot8gsBuoUm2t8g
# Gere uma senha para o usuário minioadmin
MINIO_ROOT_PASSWORD=uuD4Tkqn1DLWK8L2NZL
# Gere uma senha para o usuário minio
MINIO_USER_PASSWORD=K8uk1WL4TDqnNZLuL2D
# Key aleatória hex-encoded 32-byte gerada na etapa 03
SECRET_KEY=ac19f89a7208b8b555391ac30df954d23c72cd73334d5464d9191b69db661b60
# Key aleatória hex-encoded 32-byte gerada na etapa 03
UTILS_SECRET=3858016d319b5ccdb0c6d81df8c5084395e3cd88d46a519d84719e59bbddf735
# ID do Token OAuth gerado na etapa 04
OIDC_CLIENT_ID=bee5543039223825096f902a47b3860981c6f4b12ea7be803fcf30343db71f49
# Secret do Token OAuth gerado na etapa 04
OIDC_CLIENT_SECRET=gloas-0748860386fd7ad12bfb6f81a72f389767f3c0f576d4570c4489738e0ce50243
# URL do Outline definida na etapa 01
WIKI_URL_TRAEFIK=wiki.alfredocastro.com.br
# URL do MinIO definida na etapa 01
MINIO_URL_TRAEFIK=storage.alfredocastro.com.br
# URL do MinIO definida na etapa 01
MINIO_ADMIN_URL_TRAEFIK=storage-admin.alfredocastro.com.br
# Endereço de email para geração do certificado Let's Encrypt
ACME_EMAIL_TRAEFIK=alfredotavio@gmail.com
Etapa 06 - Executando o Docker Compose #
Para subirmos nosso ambiente, basta executarmos o seguinte comando dentro do diretório raiz onde está nosso docker-compose.yml:
docker compose up -d
NOTA: O Docker irá fazer o download e o provisionamento de todas as imagens. Aguarde alguns minutos até que as imagens concluam a primeira configuração.
Etapa 07 - Acessando a Wiki Outline #
Acesse a URL da Wiki Outline que definimos na etapa 01, irá exibir uma tela com um botão “Continuar com o GtiLab” clique nele.
Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.