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
PASSWORDpela senha que você definiu parawikidb_user bindIP: 127.0.0.1significa 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):
-
Adicionar uma regra de entrada no seu firewall cloud (porta 3000)
-
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.
- 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
- 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
- Siga as instruções para criar uma conta de administrador
- Finalize a instalação pela interface web
- 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
| Comando | Descrição |
|---|---|
git --version | Verificar a versão do Git |
node -v && npm -v | Verificar as versões do Node.js e npm |
sudo systemctl status mariadb | Verificar o status do MariaDB |
sudo mysql -u root -p | Conectar ao MariaDB |
sudo systemctl status wikijs | Verificar o status do serviço Wiki.js |
sudo journalctl -u wikijs.service -f | Acompanhar os logs em tempo real |
sudo systemctl restart wikijs | Reiniciar o serviço Wiki.js |
sudo certbot renew --dry-run | Testar 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
-
Por que é importante criar um usuário de sistema dedicado (
wikijs) para o Wiki.js?- Explique as vantagens de segurança
-
Qual a diferença entre
bindIP: 127.0.0.1ebindIP: 0.0.0.0?- Em quais casos você usaria cada uma dessas configurações?
-
Por que é necessário comentar as seções PostgreSQL e SQLite no
config.ymlse você está usando MariaDB?- Explique os erros YAML e como evitá-los
-
Qual é o papel do serviço systemd nesta instalação?
- Explique as vantagens em relação à inicialização manual
-
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
- Documentação do Wiki.js
- Documentação do Node.js
- Documentação do MariaDB
- Documentação do systemd
- Documentação do Certbot
Lab criado em: Dezembro 2024