# Instalação do Servidor Standalone via DOCKER - Linux Mint 22.1 "Xia" / Ubuntu 24.04 LTS "noble"

# Configuração Inicial do Servidor

Esta etapa prepara o sistema operacional antes de instalar qualquer programa. Siga os passos na ordem indicada.

---

## 1. Abrindo o Terminal como Administrador

Para executar os comandos abaixo, você precisa ter permissão de administrador (também chamado de *root*). Digite o comando abaixo e pressione **Enter**. Quando o sistema pedir a senha, digite-a e pressione **Enter** novamente (os caracteres não aparecem na tela — isso é normal).

```bash
sudo su
```

> **O que esse comando faz:** Eleva seus privilégios para administrador do sistema, permitindo fazer alterações importantes.

---

## 2. Atualizando o Sistema e Instalando Ferramentas Básicas

### 2.1 – Atualizar os programas instalados e remover o PHP

Execute o bloco de comandos abaixo. Ele vai atualizar todos os programas do sistema, remover o PHP (que não será usado) e instalar o agendador de tarefas `cron`.

```bash
apt update && apt upgrade && \
apt remove php* && \
apt install cron
```

> **Quando aparecer uma pergunta de confirmação**, digite `S` e pressione **Enter** para continuar.

### 2.2 – Instalar ferramentas de monitoramento e utilitários

O comando abaixo instala um conjunto de ferramentas úteis para gerenciar o servidor:

```bash
apt install ntp ntpdate crudini htop software-properties-common iperf logrotate bmon netcat-traditional mtr -y
```

**Para que serve cada ferramenta:**

<table id="bkmrk-ferramenta-o-que-faz"><thead><tr><th>Ferramenta</th><th>O que faz</th></tr></thead><tbody><tr><td>`ntp` / `ntpdate`</td><td>Mantém o horário do servidor sempre sincronizado com a internet</td></tr><tr><td>`crudini`</td><td>Facilita a edição de arquivos de configuração</td></tr><tr><td>`htop`</td><td>Mostra em tempo real o uso de CPU e memória do servidor</td></tr><tr><td>`software-properties-common`</td><td>Permite adicionar novas fontes de instalação de programas</td></tr><tr><td>`iperf`</td><td>Testa a velocidade da rede</td></tr><tr><td>`logrotate`</td><td>Gerencia e rotaciona os arquivos de log automaticamente</td></tr><tr><td>`bmon`</td><td>Monitora o tráfego de rede em tempo real</td></tr><tr><td>`netcat-traditional`</td><td>Ferramenta para testar conexões de rede</td></tr><tr><td>`mtr`</td><td>Diagnostica problemas de rota na rede</td></tr></tbody></table>

---

## 3. Configurando o Horário do Servidor

O servidor precisa ter o horário correto para funcionar bem. Os comandos abaixo definem o fuso horário como **Brasília (America/Sao\_Paulo)** e sincronizam o relógio com servidores de tempo oficiais do Brasil.

```bash
echo "America/Sao_Paulo" > /etc/timezone && \
dpkg-reconfigure --frontend noninteractive tzdata
```

```bash
service ntp stop && \
ntpdate a.ntp.br
```

```bash
service ntp start
```

> **O que acontece aqui:**
> 
> 1. O fuso horário é definido para Brasília
> 2. O serviço de tempo é parado temporariamente
> 3. O relógio é sincronizado com o servidor `a.ntp.br` (servidor oficial do NIC.br)
> 4. O serviço de tempo é reiniciado para manter a sincronização contínua

---

## 4. Configurando o Idioma do Sistema

Os comandos abaixo definem o idioma do sistema como **Português do Brasil (pt\_BR.UTF-8)**:

```bash
echo "LANG=\"pt_BR.UTF-8\"" >> /etc/environment && \
echo "LANGUAGE=\"pt_BR.UTF-8:en\"" >> /etc/environment && \
echo "" > /etc/default/locale
```

```bash
echo "LANG=\"pt_BR.UTF-8\"" >> /etc/default/locale && \
echo "LANGUAGE=\"pt_BR.UTF-8:en\"" >> /etc/default/locale && \
echo "pt_BR.UTF-8 pt_BR.UTF-8" >> /etc/locale.alias && \
dpkg-reconfigure --frontend noninteractive locales && \
locale-gen --no-purge --lang pt_BR
```

> **O que esse bloco faz:** Configura o sistema para exibir mensagens, datas, formatos numéricos e outros textos em português do Brasil. O inglês (`en`) fica como idioma secundário caso alguma tradução não esteja disponível.

---

## 5. Configurando a Segurança

Nesta etapa, dois recursos de segurança padrão do Linux são desativados: o **AppArmor** e o **UFW (firewall)**. Isso é necessário porque o ambiente Docker que será instalado posteriormente possui seu próprio sistema de controle de acesso, e manter esses dois ativos pode causar conflitos.

```bash
systemctl stop apparmor && \
systemctl disable apparmor
```

```bash
/usr/sbin/update-rc.d -f apparmor remove && \
ufw disable && \
reboot
```

> ⚠️ **Atenção:** O servidor será **reiniciado automaticamente** ao final deste passo (`reboot`). Após a reinicialização, você poderá continuar para a próxima etapa da instalação.

> **O que é cada recurso desativado:**
> 
> - **AppArmor:** Sistema de controle de acesso que restringe o que cada programa pode fazer. Será substituído pelo controle do Docker.
> - **UFW (Uncomplicated Firewall):** Gerenciador de firewall padrão do Ubuntu/Linux Mint. Também será gerenciado pelo Docker.

---

## Próximo Passo

Após a reinicialização do servidor, continue para: **[Instalação do DWService](https://kb.illimitar.pro/books/instalacao-do-servidor-standalone-via-docker-linux-mint-221-xia-ubuntu-2404-lts-noble/page/instalacao-do-dwservice)**

# Instalação do DWService

O **DWService** é uma ferramenta de acesso remoto que permite controlar o servidor a distância pelo navegador, sem precisar estar fisicamente na máquina. Pense nele como um "TeamViewer" para servidores Linux.

> **Pré-requisito:** Você precisará de um **código de instalação**, disponível na sua licença do DWService. Tenha-o em mãos antes de começar.

---

## 1. Baixar e Iniciar o Instalador

O comando abaixo faz três coisas em sequência: baixa o instalador, dá permissão para executá-lo e o inicia.

```bash
wget https://www.dwservice.net/download/dwagent_x86.sh && \
chmod +x dwagent_x86.sh && \
./dwagent_x86.sh
```

> **O que cada parte faz:**
> 
> - `wget ...` — Faz o download do instalador direto do site oficial do DWService
> - `chmod +x ...` — Dá permissão de execução ao arquivo baixado
> - `./dwagent_x86.sh` — Inicia o instalador

---

## 2. Respondendo ao Instalador (Passo a Passo)

Após rodar o comando acima, o instalador fará uma série de perguntas no terminal. Siga as respostas indicadas abaixo:

---

### Pergunta 1 — Aceitar os termos de uso

```
1. Instalar / 2. Executar / 3. Eu não aceito
Opção (3):
```

✅ **Digite** `1` **e pressione Enter** para aceitar e instalar.

---

### Pergunta 2 — Escolher o local de instalação

```
Caminho (/usr/share/dwagent):
```

✅ **Apenas pressione Enter** para usar o caminho padrão sugerido (`/usr/share/dwagent`).

> O caminho padrão é o local recomendado. Não é necessário alterar.

---

### Pergunta 3 — Confirmar o local de instalação

```
Você deseja instalar o DWAgent em '/usr/share/dwagent'?
1. Sim / 2. Não
Opção (2):
```

✅ **Digite** `1` **e pressione Enter** para confirmar.

---

### Pergunta 4 — Forma de configuração do agente

```
Configurar o agente?
1. Insira o código de instalação / 2. Criar um novo agente
Opção (1):
```

✅ **Digite** `1` **e pressione Enter** para usar o código da sua licença.

---

### Pergunta 5 — Inserir o código de instalação

```
Inserir o código de instalação
Código:
```

✅ **Digite o código de instalação** que está disponível na sua licença e pressione **Enter**.

> ⚠️ **Atenção:** O código é único para cada licença. Não compartilhe esse código com outras pessoas.

---

## ✅ Instalação Concluída

Após inserir o código corretamente, o DWService será configurado e iniciado automaticamente. O servidor estará disponível para acesso remoto pelo painel do DWService.

---

## Próximo Passo

Continue para: **[Instalação do Percona MySQL](https://kb.illimitar.pro/books/instalacao-do-servidor-standalone-via-docker-linux-mint-221-xia-ubuntu-2404-lts-noble/page/instalacao-do-percona-mysql)**

# Instalação do Percona MySQL

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Percona MySQL</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> é um banco de dados — o programa responsável por armazenar e organizar todos os dados do sistema (cadastros, configurações, registros, etc.). É uma versão aprimorada do MySQL tradicional, com melhor desempenho e confiabilidade.</span></span>

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Pré-requisito:</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> Você deve estar logado como administrador ( </span></span>`sudo su`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">). Se ainda não fez isso, execute </span></span>`sudo su`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">antes de continuar.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">1. Abrindo o Terminal como Administrador</span></span>

```bash
sudo su
```

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">2. Preparando o Sistema para a Instalação</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O Percona MySQL exige uma dependência de chamada </span></span>`percona-telemetry-agent`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">. Como ela não está disponível diretamente nos repositórios do Ubuntu/Linux Mint, vamos criar um "pacote fictício" para esse requisito sem instalar o agente de telemetria real.</span></span>

### <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">2.1 – Instalar o utilitário</span></span>`equivs`

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O </span></span>`equivs`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">é uma ferramenta que permite criar pacotes fictícios para resolver dependências.</span></span>

```bash
apt install -y equivs && \
equivs-control percona-telemetry-agent
```

### <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">2.2 – Criar o pacote fictício</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O bloco cria abaixo um arquivo de configuração que descreve o pacote fictício:</span></span>

```bash
cat << 'EOF' > percona-telemetry-agent
Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: percona-telemetry-agent
Version: 1.0
Maintainer: local <root@localhost>
Description: Dummy package to satisfy Percona dependency
EOF
```

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Por que fazer isso?</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> O instalador do Percona exige esse componente de telemetria, mas ele não é necessário para o funcionamento do banco de dados. Criando um pacote fictício, enganamos o instalador de forma segura e evitamos instalar software desnecessário.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">3. Instale o Percona MySQL e configure a segurança</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O comando abaixo faz tudo em sequência: construir o pacote fictício, o instalar, adicionar o repositório oficial do Percona, atualizar a lista de pacotes, instalar o banco de dados e iniciar o assistente de segurança.</span></span>

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Atenção:</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> Antes de solicitar o assistente de segurança, o instalador mostrará uma tela solicitando uma senha padrão para o MySQL. Digite a senha desejada e confirme quando solicitada.</span></span>

```bash
equivs-build percona-telemetry-agent && \
dpkg -i percona-telemetry-agent_1.0_all.deb && \
mkdir -p /etc/apt/keyrings && \
curl -fsSL https://github.com/percona/percona-repositories/raw/main/deb/percona-keyring.gpg | gpg --dearmor -o /etc/apt/keyrings/percona.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/percona.gpg] http://repo.percona.com/ps-84-lts/apt noble main" | tee /etc/apt/sources.list.d/percona-ps-84-lts.list && \
apt update && apt install -y percona-server-server && \
mysql_secure_installation
```

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O que esse bloco faz, passo a passo:</span></span>**
> 
> 1. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Monta e instala o pacote detalhado criado anteriormente</span></span>
> 2. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Crie uma pasta para salvar a chave de segurança do repositório Percona</span></span>
> 3. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Baixe e registre a chave oficial do Percona (garante que os pacotes são autênticos)</span></span>
> 4. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Adicionado o repositório oficial do Percona ao sistema</span></span>
> 5. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Atualizar a lista de pacotes disponíveis</span></span>
> 6. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Instale o Percona MySQL</span></span>
> 7. <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Abra o assistente de segurança</span></span>`mysql_secure_installation`

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">4. Respondendo ao Assistente de Segurança ( </span></span>`mysql_secure_installation`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">)</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Após a instalação, o terminal exibirá uma série de perguntas para proteger o banco de dados. Siga as respostas indicadas abaixo:</span></span>

- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Digite a senha do usuário root: </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">digite a senha temporária gerada durante a instalação</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Pressione Y para Sim, qualquer outra tecla para Não: </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Existem três níveis de política de validação de senha: </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">0</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Alterar a senha de root? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Nova senha: </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">digite uma nova senha</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Digite novamente a nova senha: </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">repita a nova senha</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Deseja continuar com a senha fornecida? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Remover usuários anônimos? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Desativar login remoto do usuário root? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Não</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Remover o banco de dados de teste e o acesso a ele? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**
- <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Recarregar as tabelas de privilégios agora? (Pressione y|Y para Sim, qualquer outra tecla para Não): </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Y</span></span>**

> <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">⚠️ </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Importante:</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> Escolha uma senha forte para o root e guarde-a em local seguro. Você precisará dela nas próximas etapas.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">5. Instalar o </span></span>`crudini`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">(se ainda não estiver instalado)</span></span>

```bash
apt install crudini
```

> <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O </span></span>`crudini`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">é uma ferramenta para editar arquivos de configuração de forma simples e segura, sem precisar abrir o arquivo manualmente.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">6. Ajustar as configurações do MySQL</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Os comandos abaixo ajustam o comportamento do MySQL para funcionar corretamente com o sistema. Essas configurações controlam coisas como o tamanho máximo de dados que podem ser enviados de uma vez, cujos endereços o banco aceita conexões e como os backups são feitos.</span></span>

```bash
crudini --set /etc/mysql/mysql.conf.d/mysqld.cnf mysqld sql_mode STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION && \
crudini --set /etc/mysql/mysql.conf.d/mysqld.cnf mysqld max_allowed_packet 64M && \
crudini --set /etc/mysql/mysql.conf.d/mysqld.cnf mysqld bind-address 0.0.0.0 && \
crudini --set /etc/mysql/mysql.conf.d/mysqld.cnf mysqld skip-external-locking 1 && \
crudini --set /etc/mysql/mysql.conf.d/mysqld.cnf mysqld performance_schema 1 && \
crudini --set /etc/mysql/mysql.conf.d/mysqldump.cnf mysqldump quick 1 && \
crudini --set /etc/mysql/mysql.conf.d/mysqldump.cnf mysqldump quote-names 1 && \
crudini --set /etc/mysql/mysql.conf.d/mysqldump.cnf mysqldump max-allowed-packet 128M
```

**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O que cada configuração faz:</span></span>**

<table id="bkmrk-configura%C3%A7%C3%A3o-o-que-d"><thead><tr><th><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Configuração</span></span></th><th><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O que define</span></span></th></tr></thead><tbody><tr><td>`sql_mode`</td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Regras de validação de dados — impede que dados inválidos (como dados zerados) sejam salvos</span></span></td></tr><tr><td>`max_allowed_packet 64M`</td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Tamanho de uma requisição máxima ao banco (64 MB)</span></span></td></tr><tr><td>`bind-address 0.0.0.0`</td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Permite conexões de qualquer endereço de rede (necessário para o Docker)</span></span></td></tr><tr><td>`skip-external-locking`</td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Desativa bloqueio externo de arquivos (melhor desempenho)</span></span></td></tr><tr><td>`performance_schema`</td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Ativa o monitoramento interno de desempenho do MySQL</span></span></td></tr><tr><td>`quick`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">(jogar fora)</span></span></td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Exporta os dados linha a linha, economizando memória em backups</span></span></td></tr><tr><td>`quote-names`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">(jogar fora)</span></span></td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Coloca aspas nos nomes de tabelas e colunas nos backups, evitando erros</span></span></td></tr><tr><td>`max-allowed-packet 128M`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">(jogar fora)</span></span></td><td><span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Tamanho máximo de dados em backups (128 MB)</span></span></td></tr></tbody></table>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">7. Corrigir Formatação das Configurações</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Este comando garante que as configurações inseridas fiquem no formato correto dentro dos arquivos:</span></span>

```bash
sed -i -e "s/.*skip-external-locking.*/skip-external-locking/" /etc/mysql/mysql.conf.d/mysqld.cnf && \
sed -i -e "s/.*performance_schema.*/performance_schema/" /etc/mysql/mysql.conf.d/mysqld.cnf && \
sed -i -e "s/.*quick.*/quick/" /etc/mysql/mysql.conf.d/mysqldump.cnf && \
sed -i -e "s/.*quote-names.*/quote-names/" /etc/mysql/mysql.conf.d/mysqldump.cnf
```

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">8. Permitir Acesso Remoto ao Usuário Root</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Por padrão, o usuário </span></span>`root`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">do MySQL só pode se conectar localmente. Os passos abaixo alteraram essa configuração para permitir conexões de qualquer lugar — necessário para que o Docker acesse o banco.</span></span>

### <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">8.1 – Ativar o método de autenticação nativa</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Abra o arquivo de configuração do MySQL:</span></span>

```bash
nano /etc/mysql/mysql.conf.d/mysqld.cnf
```

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Localize a seção </span></span>`[mysqld]`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">e adicione a linha abaixo ao final dela:</span></span>

```
mysql_native_password=ON
```

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Salve o arquivo pressionado </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Ctrl + O</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> , depois </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Enter</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> , e saia com </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Ctrl + X</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> .</span></span>

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Por que isso é necessário?</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> O Percona MySQL 8.4 usa por padrão um método de autenticação mais novo ( </span></span>`caching_sha2_password`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">) que pode ser incompatível com alguns clientes. Ativar o método nativo garante compatibilidade com o sistema.</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Reinicie o serviço para aplicar as alterações abaixo:</span></span>

```bash
service mysql restart
```

### <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">8.2 – Liberar o acesso remoto do root via linha de comando</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Execute o comando abaixo. Quando solicitado, </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">digite a senha do MySQL</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> (a senha nova que você definiu no passo 4):</span></span>

```bash
mysql -h localhost -u root -p mysql -e "UPDATE user SET Host = '%' WHERE user.Host = 'localhost' AND user.User = 'root' LIMIT 1;"
```

### <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">8.3 – Atualizar o método de autenticação do root dentro do banco</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Acesse o MySQL interativamente:</span></span>

```bash
mysql -u root -p
```

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Quando solicitado, </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">digite a senha do MySQL</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> e execute os comandos abaixo, alterando </span></span>`SENHA`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">a senha que você definiu para o banco:</span></span>

```sql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'SENHA';
FLUSH PRIVILEGES;
```

> **<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O que esses comandos:</span></span>**
> 
> - `ALTER USER`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">— altera o usuário root para usar o método de autenticação nativo com a senha definida</span></span>
> - `FLUSH PRIVILEGES`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">— aplique alterações de permissão imediatamente, sem precisar reiniciar o serviço</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Digite </span></span>`exit`<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">e pressione </span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Enter</span></span>**<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;"> para sair do MySQL.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">9. Reinicie o MySQL para aplicar as configurações</span></span>

```bash
service mysql restart
```

> <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Após a reinicialização, todas as configurações entram em vigor e o banco de dados estará pronto para uso.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">✅ Instalação Concluída</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">O Percona MySQL está instalado, configurado e em execução.</span></span>

---

## <span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Próximo Passo</span></span>

<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Continue para: </span></span>**[<span dir="auto" style="vertical-align:inherit;"><span dir="auto" style="vertical-align:inherit;">Instalação do Docker</span></span>](https://kb.illimitar.pro/books/instalacao-do-servidor-standalone-via-docker-linux-mint-221-xia-ubuntu-2404-lts-noble/page/instalacao-do-docker)**

# Instalação do Docker

O **Docker** é uma plataforma que permite rodar aplicações dentro de "contêineres" — ambientes isolados e padronizados que funcionam de forma independente do sistema operacional. É através dele que o sistema será executado no servidor.

> **Pré-requisito:** Você deve estar logado como administrador (`sudo su`). Se ainda não fez isso, execute `sudo su` antes de continuar.

---

## 1. Abrindo o Terminal como Administrador

```bash
sudo su
```

---

## 2. Instalar o Docker e o Docker Compose

O comando abaixo instala dois componentes:

```bash
apt install docker.io -y && \
apt install docker-compose
```

> **O que cada um faz:**
> 
> - **docker.io** — o Docker em si, responsável por criar e executar os contêineres
> - **docker-compose** — ferramenta que permite iniciar e gerenciar vários contêineres de uma só vez usando um arquivo de configuração

---

## 3. Clonar o Repositório de Instalação

Agora vamos baixar os arquivos necessários para configurar o ambiente. Acesse a pasta `/opt` e faça o clone do repositório:

```bash
cd /opt && \
git clone https://git.pdv.moda/desenvolvimento/docker.git -b illi-prod illi-prod
```

Quando solicitado, **digite seu usuário e senha** de acesso ao `git.pdv.moda` e pressione **Enter** após cada um.

[![Tela de autenticação do git.pdv.moda](https://kb.illimitar.pro/uploads/images/gallery/2026-05/scaled-1680-/captura-de-tela-2026-05-15-as-11-44-54.png)](https://kb.illimitar.pro/uploads/images/gallery/2026-05/captura-de-tela-2026-05-15-as-11-44-54.png)

> **O que esse comando faz:** Baixa os arquivos de configuração do ambiente Docker a partir do repositório oficial da Illimitar, salvando-os na pasta `illi-prod` dentro de `/opt`.

---

## 4. Acessar a Pasta Clonada

Após o clone ser concluído, entre na pasta que foi baixada:

```bash
cd illi-prod
```

> Dentro dessa pasta estará o arquivo `illi.sh`, que é o script responsável por instalar e configurar o ambiente.

---

## 5. Executar o Script de Instalação

Execute o script com o comando abaixo:

```bash
bash illi.sh
```

O script fará algumas perguntas para configurar a instância. Responda conforme indicado:

- **Nome da instância:** `illi`
- **Porta do host \[8088\]:** pressione **Enter** para manter a porta padrão `8088`

> **O que é uma instância?** É o nome que identifica esta instalação do sistema no servidor. O nome `illi` é o padrão recomendado.

> **O que é a porta 8088?** É o número pelo qual o sistema será acessado no navegador. Por exemplo: `http://IP-do-servidor:8088`. Mantenha o padrão a menos que essa porta já esteja em uso.

---

## 6. Confirmar a Inicialização do Contêiner

Após configurar a instância, o script fará o clone do repositório standalone automaticamente. Ao final, ele perguntará se deseja subir o contêiner:

**Responda `S` e pressione Enter** para iniciar o contêiner.

[![Confirmação para subir o contêiner](https://kb.illimitar.pro/uploads/images/gallery/2026-05/scaled-1680-/captura-de-tela-2026-05-15-as-11-49-52.png)](https://kb.illimitar.pro/uploads/images/gallery/2026-05/captura-de-tela-2026-05-15-as-11-49-52.png)

> O Docker irá baixar as imagens necessárias e iniciar todos os serviços. Esse processo pode levar alguns minutos dependendo da velocidade da conexão.

Digite 0 para sair do utilitário:

[![Captura de Tela 2026-05-15 às 11.53.42.png](https://kb.illimitar.pro/uploads/images/gallery/2026-05/scaled-1680-/captura-de-tela-2026-05-15-as-11-53-42.png)](https://kb.illimitar.pro/uploads/images/gallery/2026-05/captura-de-tela-2026-05-15-as-11-53-42.png)

---

## ✅ Instalação Concluída

O Docker está instalado e o contêiner do sistema está em execução. O ambiente estará acessível pelo navegador no endereço `http://IP-do-servidor:8088`.

---

## Próximo Passo

Continue para: **[Configuração da Interface](https://kb.illimitar.pro/books/instalacao-do-servidor-standalone-via-docker-linux-mint-221-xia-ubuntu-2404-lts-noble/page/configuracao-da-interface)**

# Configuração da Interface

Com o Docker em execução, a próxima etapa é acessar a interface do sistema pelo navegador e informar os dados de conexão com o banco de dados. É nessa tela que o sistema "aprende" onde está o MySQL e como se conectar a ele.

---

## 1. Acessar a Interface no Navegador

Abra o navegador e acesse o endereço abaixo, substituindo `IP-DO-SERVIDOR` pelo IP da máquina onde o Docker foi instalado:

```
http://IP-DO-SERVIDOR:8088
```

> Se estiver acessando direto na máquina do servidor, use `http://localhost:8088`.

Você verá uma tela de configuração inicial como esta:

[![Tela de configuração inicial da interface](https://kb.illimitar.pro/uploads/images/gallery/2026-05/scaled-1680-/captura-de-tela-2026-05-15-as-11-59-26.png)](https://kb.illimitar.pro/uploads/images/gallery/2026-05/captura-de-tela-2026-05-15-as-11-59-26.png)

---

## 2. Preencher os Campos de Configuração

Preencha cada campo conforme indicado abaixo:

<table id="bkmrk-campo-o-que-preenche"><thead><tr><th>Campo</th><th>O que preencher</th></tr></thead><tbody><tr><td>**Múltiplos domínios**</td><td>Deixar **desmarcado**</td></tr><tr><td>**Domínio**</td><td>O nome da instância criada no Docker (ex: `illi`) ou `localhost:8088`</td></tr><tr><td>**Servidor MySQL**</td><td>`host.docker.internal`</td></tr><tr><td>**Porta**</td><td>`3306`</td></tr><tr><td>**Usuário**</td><td>`root`</td></tr><tr><td>**Senha**</td><td>A senha do usuário root definida durante a instalação do Percona MySQL</td></tr><tr><td>**Nome da base de dados**</td><td>`illi`</td></tr><tr><td>**Binário**</td><td>`/usr/bin`</td></tr><tr><td>**Certificado SSL**</td><td>Deixar **em branco**</td></tr></tbody></table>

> **O que é o `host.docker.internal`?** É um endereço especial que o Docker usa para se comunicar com o sistema operacional da máquina onde ele está rodando. Ao informar esse endereço como servidor MySQL, o contêiner Docker consegue se conectar ao Percona MySQL instalado diretamente no servidor.

---

## 3. Configurar a Execução Automática de Tarefas (Cron)

O sistema precisa executar tarefas programadas automaticamente em segundo plano (como processar filas, enviar notificações, etc.). Isso é feito através do **cron**, um agendador de tarefas do Linux.

Abra o editor do cron com o comando:

```bash
crontab -e
```

> Se for a primeira vez que você abre o `crontab -e`, o sistema perguntará qual editor de texto usar. Escolha a opção **nano** (geralmente a opção `1`) e pressione **Enter** — é o mais simples de usar.

Cole a linha abaixo **no final do arquivo**:

```bash
* * * * * docker exec -u apache illi /usr/bin/php /var/www/illi/index.php cron executar
```

> **O que essa linha faz?** Os cinco asteriscos (`* * * * *`) significam "executar a cada minuto". O restante do comando acessa o contêiner Docker chamado `illi` e roda o processo de tarefas agendadas do sistema.

Após colar, salve e feche o arquivo:

- **CTRL + O** → salva o arquivo
- **Enter** → confirma o nome do arquivo
- **CTRL + X** → fecha o editor

---

## ✅ Configuração Concluída

A interface está configurada e as tarefas automáticas estão ativas. O sistema está pronto para uso.

<div id="bkmrk--6"></div><div id="bkmrk--7"></div>