O Linux homologado para o sistema é o Debian 11.
Baixe o ISO do Debian 11 clicando aqui, e proceda com a instalação conforme as orientações desse artigo.
Demonstração:
Particionamento:
/swap ( dobro da memória )
/ ( 20% do restante disponível)
/var ( 80% do restante disponível)
apt install sudo
sudo apt update && sudo apt install nano && sudo apt-get install mlocate && sudo apt install htop && sudo updatedb
Obtenha o nome da rede com o comando abaixo:
ip addr show
Abra o arquivo interfaces:
sudo nano /etc/network/interfaces
Configure conforme o exemplo abaixo, onde o nome da rede é eth0 e o IP fixo é 192.168.0.250:
auto eth0
iface eth0 inet static
address 192.168.0.250
gateway 192.168.0.1
netmask 255.255.255.0
sudo apt update && sudo apt install ufw && sudo ufw enable
sudo ufw status
sudo apt update && sudo apt install openssh-server && sudo systemctl enable ssh
sudo systemctl status ssh
Configure o acesso via ssh somente a sub rede do cliente:
sudo ufw default deny incoming
sudo ufw default allow outgoingsudo ufw allow from [Sub rede]/24 to any port 7410 proto tcp
( Exemplo: sudo ufw allow from 192.168.2.0/24 to any port 7410 proto tcp)
Confira a situação
sudo ufw status
nano /etc/ssh/sshd_config
Ache a configuração "PermitRootLogin", remova o "#" e coloque "yes". Resultado:
PermitRootLogin yes
Altere a porta da conexão via SSH
Port 7410
A configuração deve ficar confirme a imagem abaixo:
Reinicie o serviço
sudo systemctl restart ssh
Em um novo terminal, acesse o servidor via SSH utilizando a porta 7410.
Liste todas as permissões do UFW:
ufw status
Remova todas as permissões para a porta 22, conforme exemplos abaixo:
sudo ufw delete allow 22
sudo ufw delete allow from 192.168.2.0/24 to any port 22 proto tcp (Nota: troque 192.168.2.0 pelo IP que aparece na lista)
Liste todas as permissões do UFW e confira se todas as permissões para a porta 22 foram removidas:
ufw status
Copie e execute o seguinte comandos:
echo "==> Instalando o Fail2Ban..."
sudo apt update -y
sudo apt install fail2ban -y
sudo mkdir -p /etc/fail2ban/jail.d
sudo bash -c 'cat > /etc/fail2ban/jail.d/ssh-custom.conf <<EOF
[sshd]
enabled = true
port = 7410
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 900
ignoreip = 127.0.0.1/8
backend = systemd
EOF'
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
sudo fail2ban-client status sshd
echo "Fail2Ban configurado com sucesso para SSH na porta 7410!"
Para acessar a situação atual do Fail2Ban, execute o seguinte comando:
sudo fail2ban-client status sshd
Execute esse comando para limitar o acesso ao cron
echo "root" | sudo tee /etc/cron.allow
Execute esse comando para listar os usuários com permissão de executar comandos como sudo:
sudo grep -r "ALL" /etc/sudoers /etc/sudoers.d/ 2>/dev/null
Deve retornar somente esses dois usuários:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
A versão homologada para o sistema é a do PostgreSQL 13:
2.1 - Instalação:
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-13
sudo apt-get -y install postgresql-contrib-13sudo apt-get install postgresql-13-postgis-3
sudo systemctl start postgresql@13-main.service
sudo systemctl enable postgresql@13-main.service
Instalação concluída. Confira a situação do serviço do PG:
sudo systemctl status postgresql@13-main.service
2.2 - Dando permissão para o acesso a porta do PG pela subrede que o sistema estará utilizando:
sudo ufw allow from [Sub rede]/24 to any port 5432
(Exemplo: sudo ufw allow from 192.168.2.0/24 to any port 5432)
postgresql.conf
Acesse o arquivo de configuração:
nano /etc/postgresql/13/main/postgresql.conf
Altere as seguintes configurações:
listen_addresses='*'
max_locks_per_transaction=1000
datestyle = 'iso, mdy'
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log' # directory where log files are written
log_filename = 'postgresql-%Y_%H.log'
log_file_mode = 0640
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 64MB
client_min_messages = log
log_min_messages = notice
log_min_error_statement = warning
log_min_duration_statement = 40000
log_checkpoints = on
log_connections = off
log_disconnections = off
log_duration = off
log_error_verbosity = default
log_hostname = off
log_line_prefix = '%t [%p]: [%l] user=%u,db=%d,app=%a,host=%h'
log_lock_waits = on
log_statement = 'ddl'
log_temp_files = -1
log_timezone = 'America/Sao_Paulo'
Alterando a senha do usuário postgres
sudo -u postgres psql
postgres=# \password postgres Enter new password: <new-password> postgres=# \q
Execute os comandos abaixo para alterar o arquivo pg_hba.conf:
sed -i '/^local/s/peer/md5/' /etc/postgresql/13/main/pg_hba.conf
sed -i '/^host/s/ident/md5/' /etc/postgresql/13/main/pg_hba.conf
Acesse o arquivo pg_hba.conf para adicionar a configuração que dá acesso aos bancos das outras máquinas:
nano /etc/postgresql/13/main/pg_hba.conf
Informe as faixas de IPs que terão acesso:
Adicione a faixa de IP para o docker:
host all all 172.19.0.0/16 md5
Adicione a faixa de IP da rede local do cliente:
host all all [Sub rede]/24 md5
(Exemplo: host all all 192.168.1.0/24 md5)
Exemplo:
3.2.1 - Acesse o site PGTune clicando aqui, informe as configurações da máquina do cliente a configuração necessária para o PostgreSQL.
Por exemplo, caso a máquina tiver 16GB de memória e 4 CPUs, ao informar esses dados e clicar em "Generate" temos as configurações apresentadas abaixo:
NOTA: Para confirmar como o campo Data Storage deve ser preenchido use o seguinte comando: cat /sys/block/sda/queue/rotational (Se a saída for 1 , o disco é HDD. Se a saída for 0 (zero), o disco é SDD)
NOTA 2 IMPORTANTE: Para saber quantos de memória tem o linux basta executar o comando free -h e para saber quantos de CPU tem basta executar o comando nproc ou lscpu.
3.2.2 - Abra o arquivo de configurações do Postgres, com o comando abaixo, e altere as configurações sugeridas acima.
nano /etc/postgresql/13/main/postgresql.conf
3.2.3 - Reinicie o PG:
sudo systemctl restart postgresql@13-main.service
Como garantia, clique aqui para remover pacotes antigos que possam estar instalados.
Configure o repositório do docker e instale a última versão utilizando os comandos listados aqui.
Teste para ver se deu tudo certo, execute o seguinte comando:
sudo docker run hello-world
Se aparecer Hello World está tudo funcionando corretamente.
Para mais informações consulte o site oficial.
Dê permissão para o docker acessar a porta do PG:
sudo ufw allow from 172.19.0.0/16 to any port 5432
Clique aqui para saber sobre como instalar os serviços da Market
Execute o comando abaixo para atualizar e reiniciar o linux:
sudo apt full-upgrade -y
sudo reboot
Como restaurar uma base de dados em um novo servidor linux do cliente?
Crie o script:
sudo nano /usr/local/sbin/stop_pg.sh
Conteúdo:
#!/bin/bash
NOW=$(date '+%Y-%m-%d %H:%M:%S')
echo "[Shutdown Hook - $NOW] Stopping PostgreSQL 13..." >> /var/log/postgresql_shutdown_hook.log
if /usr/bin/systemctl stop postgresql@13-main.service; then
echo "[Shutdown Hook - $NOW] PostgreSQL stopped successfully." >> /var/log/postgresql_shutdown_hook.log
else
echo "[Shutdown Hook - $NOW] Failed to stop PostgreSQL!" >> /var/log/postgresql_shutdown_hook.log
fi
Dê permissão:
sudo chmod +x /usr/local/sbin/stop_pg.sh
Crie um serviço:
sudo nano /etc/systemd/system/postgresql-shutdown-hook.service
Conteúdo:
[Unit]
Description=Shutdown hook para parar PostgreSQL 13
DefaultDependencies=no
Before=poweroff.target reboot.target halt.target shutdown.target[Service]
Type=oneshot
ExecStart=/usr/local/sbin/stop_pg.sh
RemainAfterExit=yes[Install]
WantedBy=halt.target reboot.target shutdown.target
Habilite o serviço:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable postgresql-shutdown-hook.service
Caso queira testar desligue e ligue a máquina novamente e consulte os logs:
cat /var/log/postgresql_shutdown_hook.log
Verificar o espaço em disco, selecione o diretório e execute o comando abaixo:
echo; pwd; echo; ls -AlhF; echo; du -h --max-depth=1; echo; du -sh
Listar informações sobre os discos
fdisk -l
Sistema operacional \ Linux
Escrito por Josué Diniz Lourenço e revisado por Matheus Leandro Ferreira em 09/05/2025.
Link público: www.conhecimento.market.com.br/artigo/629