Pular para o conteúdo principal

Lab 5.7 - Instalar Wiki.js no Ubuntu 24.04 LTS

Objetivos​

Ao final deste lab, você será capaz de:

  • Instalar Git e Node.js no Ubuntu 24.04
  • Instalar e configurar MariaDB
  • Baixar e configurar o Wiki.js
  • Criar um serviço systemd para o Wiki.js
  • Resolver problemas comuns de instalação
  • Configurar HTTPS com Certbot

Pré-requisitos​

  • Ubuntu 24.04 LTS instalado
  • Acesso a um terminal com privilégios sudo
  • Conexão com a Internet
  • Pelo menos 2 GB de RAM disponível
  • Pelo menos 5 GB de espaço livre em disco

Introdução​

Este guia acompanha você na instalação do Wiki.js, um motor Wiki moderno e poderoso baseado em Node.js, Git e Markdown. O Wiki.js é distribuído sob a licença Affero GNU General Public License e suporta vários sistemas de gerenciamento de banco de dados.


Parte 1: Instalação do Git​

O Wiki.js requer o Git. Para instalá-lo no Ubuntu 24.04, siga estes passos:

# Entrar no modo superusuário
sudo -s
# ou
su

# Atualizar os pacotes
sudo apt update

# Instalar o Git
sudo apt install git -y

Verificação da instalação​

git --version
# Deve exibir: git version 2.x.x ou superior

Parte 2: Instalação do Node.js​

O Wiki.js funciona com Node.js. Instale a versão LTS do Node.js usando o script do NodeSource:

# Baixar e executar o script de instalação do NodeSource
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

# Instalar o Node.js
sudo apt-get install -y nodejs

Verificação das versões instaladas​

# Verificar a versão do Node.js
node -v
# Deve exibir: v20.x.x ou superior (versão LTS)

# Verificar a versão do npm
npm -v
# Deve exibir: 10.x.x ou superior

Parte 3: Instalação e Configuração do MariaDB​

Instalação do MariaDB​

Instale o MariaDB para gerenciar os dados do Wiki.js:

# Instalar o MariaDB
sudo apt install mariadb-server mariadb-client -y

# Iniciar o serviço
sudo systemctl start mariadb

# Ativar o serviço na inicialização
sudo systemctl enable mariadb

# Verificar o status
sudo systemctl status mariadb

Teste de conexão​

# Testar a conexão com mariadb
mariadb
# Digite exit; para sair

# Testar a conexão com mysql
mysql
# Digite exit; para sair

Protegendo o MariaDB​

Reforce a instância usando o comando:

sudo mariadb-secure-installation

Respostas recomendadas:

Enter current password for root: [Pressione Enter]
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Configuração do banco de dados​

Conecte-se ao MariaDB e configure o banco de dados:

sudo mysql -u root -p

No shell do MariaDB, execute os seguintes comandos:

CREATE DATABASE wikidb;
CREATE USER 'wikidb_user'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON wikidb.* TO 'wikidb_user'@'localhost';
FLUSH PRIVILEGES;
SHOW DATABASES;
USE wikidb;
SHOW TABLES;
EXIT;

Nota: Substitua PASSWORD por uma senha segura de sua escolha.


Parte 4: Download e Instalação do Wiki.js​

Criar um usuário e uma pasta para o Wiki.js​

# Criar um usuário de sistema para o Wiki.js
sudo adduser --system --group wikijs

# Criar o diretório de instalação
sudo mkdir -p /var/www/wikijs

# Verificar a criação
ls -la /var/www/

# Definir o proprietário
sudo chown -R wikijs:wikijs /var/www/wikijs

# Verificar as permissões
ls -la /var/www/
ls -la /var/www/wikijs

Alterar o shell do usuário wikijs​

# Permitir o login com shell bash
sudo usermod -s /bin/bash wikijs

Baixar e instalar o Wiki.js​

# Conectar como usuário wikijs
sudo su - wikijs

# Verificar o diretório atual
pwd
# Deve exibir: /var/www/wikijs

# Verificar o usuário
whoami
# Deve exibir: wikijs

# Ir para o diretório de instalação
cd /var/www/wikijs

# Baixar o Wiki.js
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

# Extrair o arquivo
tar xzf wiki-js.tar.gz

# Verificar o conteúdo
ls -la

# Remover o arquivo compactado
rm wiki-js.tar.gz

# Copiar o arquivo de configuração de exemplo
cp config.sample.yml config.yml

# Editar o arquivo de configuração
nano config.yml

Configuração do arquivo config.yml​

Configure o arquivo config.yml para usar o MariaDB. Modifique a seção db:

db:
type: mariadb
host: localhost
port: 3306
user: wikidb_user
pass: PASSWORD
db: wikidb
ssl: false

bindIP: 127.0.0.1
port: 3000

Importante:

  • Substitua PASSWORD pela senha que você definiu para wikidb_user
  • bindIP: 127.0.0.1 significa que o Wiki.js escutará apenas no localhost
  • Para acesso externo, use bindIP: 0.0.0.0 (veja a seção Troubleshooting #4)

Comentar as seções não utilizadas:

No arquivo config.yml, comente as seções para PostgreSQL e SQLite que não são utilizadas:

# Comente estas linhas (adicione # no início):
# sslOptions:
# auto: true
# # rejectUnauthorized: false

# # Optional - PostgreSQL only:
# schema: public

# # SQLite only:
# storage: path/to/database.sqlite

Salve e saia com Ctrl + X, depois Y, depois Enter.


Parte 5: Criação de um Serviço systemd​

Voltar para o usuário root​

Antes de criar o serviço, volte para o usuário principal:

# Sair da sessão wikijs
exit

# Verificar se você é root
whoami
# Deve exibir: root

Troubleshooting #1: Permissões para criar o serviço​

Se você encontrar um erro de permissões ao criar o serviço:

# Se você ainda for wikijs
whoami
# Deve exibir: wikijs

# Sair
exit
# ou
sudo -s
# ou
su

# Verificar
whoami
# Deve exibir: root

# Alterar a senha do wikijs
sudo passwd wikijs

# Adicionar wikijs ao grupo sudo
sudo usermod -aG sudo wikijs

# Reconectar como wikijs
su - wikijs

# Agora você pode usar sudo
sudo nano /etc/systemd/system/wikijs.service

Criar o serviço systemd​

# Criar o arquivo de serviço
sudo nano /etc/systemd/system/wikijs.service

Adicione o seguinte conteúdo:

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=wikijs
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs

[Install]
WantedBy=multi-user.target

Salve e saia.

Ativar e iniciar o serviço​

# Recarregar a configuração do systemd
sudo systemctl daemon-reload

# Iniciar o serviço
sudo systemctl start wikijs

# Ativar o serviço na inicialização
sudo systemctl enable wikijs

# Verificar o status
sudo systemctl status wikijs

Parte 6: Resolução de Problemas (Troubleshooting)​

Troubleshooting #2: Verificar os logs​

Se o serviço não iniciar corretamente, consulte os logs:

# Ver as últimas 50 linhas dos logs
sudo journalctl -u wikijs.service --no-pager --lines=50

# Acompanhar os logs em tempo real
sudo journalctl -u wikijs.service -f

Problema 1: Erro de indentação YAML - sslOptions​

Erro:

bad indentation of a mapping entry at line 37, column 3:
sslOptions:
^

Solução:

# Ir para o diretório do Wiki.js
cd /var/www/wikijs

# Editar o arquivo de configuração
nano config.yml

# Comentar as seguintes linhas (adicione # no início):
# sslOptions:
# auto: true
# # rejectUnauthorized: false

# Salvar e sair

# Recarregar e reiniciar o serviço
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs

Problema 2: Erro de indentação YAML - schema (PostgreSQL)​

Erro:

bad indentation of a mapping entry at line 47, column 3:
schema: public
^

Solução:

cd /var/www/wikijs
nano config.yml

# Comentar as seguintes linhas:
# Optional - PostgreSQL only:
# schema: public

# Salvar e sair

# Recarregar e reiniciar
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs

Problema 3: Erro de indentação YAML - storage (SQLite)​

Erro:

bad indentation of a mapping entry at line 50, column 3:
storage: path/to/database.sqlite
^

Solução:

cd /var/www/wikijs
nano config.yml

# Comentar as seguintes linhas:
# SQLite only:
# storage: path/to/database.sqlite

# Salvar e sair

# Recarregar e reiniciar
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs

Problema 4: Acesso externo (Azure/Cloud)​

Se você deseja acessar o Wiki.js de fora (por exemplo, via Azure):

  1. Adicionar uma regra de entrada no seu firewall cloud (porta 3000)

  2. Modificar o bindIP no config.yml:

# Conectar como wikijs
sudo su - wikijs

# Ir para o diretório
cd /var/www/wikijs

# Editar a configuração
nano config.yml

Altere:

bindIP: 127.0.0.1

Para:

bindIP: 0.0.0.0

Salve e saia.

  1. Recarregar e reiniciar o serviço:
# Voltar para root
exit

# Recarregar a configuração
sudo systemctl daemon-reload

# Reiniciar o serviço (importante!)
sudo systemctl restart wikijs

# Verificar o status
sudo systemctl status wikijs
  1. Acessar o Wiki.js:

Acesse o Wiki.js pelo seu navegador usando a URL: http://<endereco_IP>:3000


Parte 7: Acesso ao Wiki.js​

Acesso local​

Acesse o Wiki.js pelo seu navegador usando a URL: http://127.0.0.1:3000 ou http://localhost:3000

Acesso externo​

Se você configurou bindIP: 0.0.0.0, acesse via: http://<endereco_IP>:3000

Configuração inicial​

  1. Siga as instruções para criar uma conta de administrador
  2. Finalize a instalação pela interface web
  3. Faça login com suas credenciais de administrador

Parte 8: Configuração de HTTPS com Certbot​

Instalação do Certbot​

# Conectar via SSH (se estiver em Azure/Cloud)
# ssh -i key1.pem azureuser@<endereco_ip_publico_da_sua_vm>

# Tornar-se root
sudo -i

# Atualizar os pacotes
sudo apt update

# Instalar o Certbot e o plugin Apache
sudo apt install certbot python3-certbot-apache -y

Configuração do firewall​

# Permitir Apache (HTTP e HTTPS)
sudo ufw allow 'Apache Full'

# Verificar o status
sudo ufw status

Obter um certificado SSL​

# Obter um certificado SSL com Certbot
sudo certbot --apache

Durante a execução:

  • Insira seu endereço de e-mail
  • Aceite os termos e condições
  • Insira seu nome de domínio (ex: haythemrehouma.eastus.cloudapp.azure.com)
  • Escolha redirecionar HTTP para HTTPS

Verificação da renovação automática​

# Verificar o status do timer do Certbot
sudo systemctl status certbot.timer

# Testar a renovação (simulação)
sudo certbot renew --dry-run

O Certbot renovará automaticamente os certificados antes do vencimento.


Resumo dos Comandos Importantes​

ComandoDescrição
git --versionVerificar a versão do Git
node -v && npm -vVerificar as versões do Node.js e npm
sudo systemctl status mariadbVerificar o status do MariaDB
sudo mysql -u root -pConectar ao MariaDB
sudo systemctl status wikijsVerificar o status do serviço Wiki.js
sudo journalctl -u wikijs.service -fAcompanhar os logs em tempo real
sudo systemctl restart wikijsReiniciar o serviço Wiki.js
sudo certbot renew --dry-runTestar a renovação do SSL

Verificação Final​

Verifique se você conseguiu:

  • Instalar Git e Node.js
  • Instalar e configurar MariaDB
  • Criar o banco de dados e o usuário para o Wiki.js
  • Baixar e extrair o Wiki.js
  • Configurar corretamente o arquivo config.yml
  • Criar e ativar o serviço systemd
  • Acessar o Wiki.js via navegador
  • Resolver erros YAML, se houver
  • Configurar HTTPS com Certbot (opcional)

Perguntas de Reflexão​

  1. Por que é importante criar um usuário de sistema dedicado (wikijs) para o Wiki.js?

    • Explique as vantagens de segurança
  2. Qual a diferença entre bindIP: 127.0.0.1 e bindIP: 0.0.0.0?

    • Em quais casos você usaria cada uma dessas configurações?
  3. Por que é necessário comentar as seções PostgreSQL e SQLite no config.yml se você está usando MariaDB?

    • Explique os erros YAML e como evitá-los
  4. Qual é o papel do serviço systemd nesta instalação?

    • Explique as vantagens em relação à inicialização manual
  5. Por que usar o Certbot para HTTPS em vez de um certificado autoassinado?

    • Quais são as vantagens para um ambiente de produção?

Próximos Passos​

  • Módulo 8: Serviços e daemons (para aprofundar em systemd)
  • Módulo 9: Segurança de Sistema (para reforçar ainda mais a instalação)
  • TP 2: Reverse Proxy NGINX (para expor o Wiki.js via reverse proxy)

Recursos Complementares​


Lab criado em: Dezembro 2024