O Wiki.js é um aplicativo wiki gratuito e de código aberto, construído em Node.js , Git e Markdown . O código-fonte do Wiki.js é hospedado publicamente no Github . Este guia mostrará a você como instalar o Wiki.js em uma nova instância do Ubuntu 18.04 LTS Site & Site usando Node.js, MongoDB, PM2, Nginx, Git e Acme.sh.
Requisitos
Os requisitos para executar o Wiki.js e terminar este guia são os seguintes:
- Node.js versão 6.9.0 ou posterior
- Versão 3.2 ou posterior do MongoDB
- Nginx
- Git versão 2.7.4 ou posterior
- Mínimo de 768MB de RAM
- Nome de domínio com
A
/AAAA
registros configurados
Verifique a versão do Ubuntu.
lsb_release -ds
# Ubuntu 18.04.4 LTS
Crie uma nova non-root
conta de usuário com sudo
acesso e mude para ela.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NOTA : Substitua johndoe
pelo seu nome de usuário.
Configure o fuso horário.
sudo dpkg-reconfigure tzdata
Certifique-se de que seu sistema esteja atualizado.
sudo apt update && sudo apt upgrade -y
Instale os pacotes necessários.
sudo apt install -y build-essential apt-transport-https
Instalar o Git
O Git 2.7.4 vem pré-instalado na edição do servidor Ubuntu, então não precisamos instalá-lo. Se você deseja instalar uma versão mais recente, você pode usar PPAs de terceiros ou compilar a versão mais recente do Git a partir da origem.
Você pode verificar a versão atualmente instalada do Git executando:
git --version
# git version 2.7.4
Se você quiser instalar uma nova versão do software Git, você pode usar o seguinte.
# Remove existing git package
sudo apt remove -y git
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:git-core/ppa
sudo apt update && sudo apt upgrade -y
sudo apt install -y git
Verifique a versão do Git.
git --version
# git version 2.17.0
Instalar o Node.js
Instale o Node.js utilizando o repositório do NodeSource APT para o Node.js.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt install -y nodejs
Verifique as versões do Node.js e NPM.
node -v && npm -v
# v8.11.2
# 5.6.0
Instalar o MongoDB
Usaremos os repositórios oficiais do MongoDB , que são mantidos atualizados com os lançamentos principais e secundários mais recentes do MongoDB.
Instale o MongoDB Community Edition.
sudo apt install -y mongodb
Verifique a versão.
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3
Instalar e configurar o Nginx
Instale o Nginx.
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx
Verifique a versão.
sudo nginx -v
# nginx version: nginx/1.15.0
Ativar e iniciar o Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Configure o Nginx como um proxy reverso para o aplicativo Wiki.js.
Executar sudo vim /etc/nginx/conf.d/wiki.js.conf
e preenchê-lo com a configuração do proxy reverso básico abaixo.
server {
listen [::]:80;
listen 80;
server_name wiki.example.com;
root /usr/share/nginx/html;
charset utf-8;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
A única coisa que você precisa mudar na configuração acima é a server_name
diretiva e potencialmente a proxy_pass
diretiva se você decidir configurar qualquer outra porta além 3000
. O Wiki.js usa porta 3000
por padrão.
Verifique a configuração.
sudo nginx -t
Recarregue Nginx.
sudo systemctl reload nginx.service
Instale o cliente Acme.sh e obtenha um certificado Let’s Encrypt (opcional)
Proteger o seu wiki HTTPS
não é necessário, mas irá proteger o tráfego do seu site. O Acme.sh é um software shell unix puro para obter certificados SSL do Let’s Encrypt com dependências nulas.
Baixe e instale Acme.sh .
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
Verifique a versão.
/etc/letsencrypt/acme.sh --version
Obtenha certificados RSA e ECDSA para wiki.example.com
domain / hostname.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d wiki.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d wiki.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength ec-256
Depois de executar os comandos acima, seus certificados e chaves estarão em:
- Para RSA: o
/etc/letsencrypt/wiki.example.com
diretório. - Para ECC / ECDSA: o
/etc/letsencrypt/wiki.example.com_ecc
diretório.
Depois de obter os certificados da Let’s Encrypt, precisamos configurar o Nginx para usá-los.
Execute sudo vim /etc/nginx/conf.d/wiki.js.conf
novamente e configure o Nginx como um HTTPS
proxy reverso.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name wiki.example.com;
root /usr/share/nginx/html;
charset utf-8;
client_max_body_size 50M;
location /.well-known/acme-challenge/ {
allow all;
}
# RSA
ssl_certificate /etc/letsencrypt/wiki.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/wiki.example.com/wiki.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/wiki.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/wiki.example.com_ecc/wiki.example.com.key;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
Verifique a configuração.
sudo nginx -t
Recarregue Nginx.
sudo systemctl reload nginx.service
Instale o Wiki.js
Crie uma pasta raiz de documentos vazia onde o Wiki.js deve ser instalado.
sudo mkdir -p /var/www/wiki.example.com
Navegue até a pasta raiz do documento.
cd /var/www/wiki.example.com
Altere a propriedade da /var/www/wiki.example.com
pasta para o usuário johndoe
.
sudo chown -R johndoe:johndoe /var/www/wiki.example.com
Na /var/www/wiki.example.com
pasta, execute o seguinte comando para baixar e instalar o Wiki.js.
curl -sSo- https://wiki.js.org/install.sh | bash
Para ver a versão atualmente instalada do Wiki.js, você pode executar o seguinte comando.
node wiki --version
# 1.0.78
Quando a instalação estiver concluída, você será solicitado a executar o assistente de configuração.
Inicie o assistente de configuração.
node wiki configure
Isto irá notificá-lo para navegar http://localhost:3000
para configurar o Wiki.js. Se você tiver o Nginx na frente do Wiki.js, poderá abrir seu nome de domínio (por exemplo http://wiki.example.com
) em vez de ir para localhost
.
Usando seu navegador da Web, navegue http://wiki.example.com
e siga as instruções na tela. Todas as configurações inseridas durante o assistente de configuração são salvas no config.yml
arquivo. O assistente de configuração irá iniciar automaticamente o Wiki.js para você.
Instalar PM2
Por padrão, o Wiki.js não será iniciado automaticamente após a reinicialização do sistema. Para que seja iniciado no boot, precisamos configurar o PM2. O PM2 vem junto com o Wiki.js como um módulo NPM local, portanto, não precisamos instalar o PM2 globalmente.
Diga ao PM2 para se configurar como um serviço de inicialização.
/var/www/wiki.example.com/node_modules/pm2/bin/pm2 startup
Finalmente, salve a configuração atual do PM2.
/var/www/wiki.example.com/node_modules/pm2/bin/pm2 save
O Wiki.js é executado como um processo em segundo plano, usando o PM2 como seu gerenciador de processos.