/dev/null sudo apt-get update # To install the latest version, run: $ sudo apt-get install docker-ce docker-ce-cl"> /dev/null sudo apt-get update # To install the latest version, run: $ sudo apt-get install docker-ce docker-ce-cl"> /dev/null sudo apt-get update # To install the latest version, run: $ sudo apt-get install docker-ce docker-ce-cl">
# Como Instalar o MultiPass?
Acesse este Site: <https://multipass.run/docs/install-multipass>
# Criar a Virtual Machine da Aplicação Docker - DNS - HTTPS - SSL
multipass launch --name virtual-docker --cpus 2 --mem 4G --disk 10G
# Instalar Docker e Docker Compose
Acessar este Site: <https://docs.docker.com/engine/install/ubuntu/>
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \\
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] <https://download.docker.com/linux/ubuntu> \\
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \\
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# To install the latest version, run:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Instale o docker-compose:
sudo apt install docker-compose
# Mude as Permissões do Docker:
$ sudo usermod -aG docker ubuntu
# Saia do MulitPass e Entre Novamente para Registrar a Alteração
$ exit
$ multipass shell virtual-docker
# Teste o Docker
$ sudo docker run hello-world
# Clone o repositório do g-prod dentro da Máquina Virtual
$ git clone <https://github.com/lucasgfaj/g-prod.git>
# Entre no diretório
cd /g-prod
# Execute o docker-compose.yml - A flag -d é para rodar em segundo plano
# Build da Aplicação Container
$ docker-compose build --no-cache
# Subir Container
$ docker-compose up -d
# Criar Certificado SSL
# Gerando dhparam.pem:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
# Instalar easy-rsa:
$ sudo apt-get install easy-rsa
# Criar Diretório Certificadora e Certificado em Home
$ mkdir /home/ubuntu/certificadora
$ mkdir /home/ubuntu/certificado
# Copiar a Pasta para Diretórios:
$ cp -R /usr/share/easy-rsa/ /home/ubuntu/certificado
$ cp -R /usr/share/easy-rsa/ /home/ubuntu/certificadora
# Mudar Usuário e Grupo
$ sudo chown ubuntu:ubuntu home/ubunut/certificado/easy-rsa
$ sudo chown ubuntu:ubuntu home/ubunut/certificadora/easy-rsa
# Acessar Certificadora Easy-RSA
$ cd /home/ubuntu/certificadora/easy-rsa
# Mover Vars:
$ sudo mv vars.example vars
# Acessar Vars e Editar e Desconmentar e Atualizar:
$ sudo nano vars
# Editar e Tirar Comentários '#'
set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "San Francisco"
set_var EASYRSA_REQ_ORG "CAMADA SA"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "CAMADA SA"
# Criar Arquivos dentro de easyrsa:
$ ./easyrsa init-pki
# Neste irá pedir um senha, adicione uma senha e repita novamente e também anote ela!
$ ./easyrsa build-ca
# Seguir esse Script de Passos:
Country Name (2 letter code) [US]:
State or Province Name (full name) [California]:
Locality Name (eg, city) [San Francisco]:
Organization Name (eg, company) [CAMADA SA]:
Organizational Unit Name (eg, section) [CAMADA SA]:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:camada.net
Email Address [[email protected]]:
Serial-number (eg, device serial-number) []:
# Copiando CA.CRT para Desktop:
# 1. Primeiro, verifique se você tem uma chave SSH configurada na sua máquina local:
$ ls -l ~/.ssh/id_rsa.pub
# Se não existir, você precisa criar uma:
$ ssh-keygen -t rsa
#2. Envia CMD para MultiPass:
$ multipass exec virtual-docker -- bash -c "mkdir -p ~/.ssh && echo '$(cat ~/.ssh/id_rsa.pub)' >> ~/.ssh/authorized_keys"
#3. Envia o Arquivo para Seu Desktop:
scp -i ~/.ssh/id_rsa [email protected]:/home/ubuntu/certificadora/easy-rsa/pki/ca.crt /home/fajardo/Downloads
#4. Importa Certificado para Navegador - Firefox:
Configuration > Certificates > Import
# Acessar Certificadora Easy-RSA
$ cd /home/ubuntu/certificado/easy-rsa
# Mover Vars:
$ sudo mv vars.example vars
# Acessar Vars e Editar e Desconmentar e Atualizar:
$ sudo nano vars
# Editar e Tirar Comentários '#'
set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "BR"
set_var EASYRSA_REQ_PROVINCE "PR"
set_var EASYRSA_REQ_CITY "Guarapuava"
set_var EASYRSA_REQ_ORG "g-prod"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "g-prod"
# Criar Arquivos dentro de /easyrsa:
$ ./easyrsa init-pki
$ ./easyrsa gen-req g-prod nopass
# Seguir esse Script de Passos:
Country Name (2 letter code) [BR]:
State or Province Name (full name) [PR]:
Locality Name (eg, city) [Guarapuava]:
Organization Name (eg, company) [g-prod]:
Organizational Unit Name (eg, section) [g-prod]:
Common Name (eg: your user, host, or server name) [g-prod]:*.g-prod.com.br
Email Address [[email protected]]:
# Verificar Certificado:
openssl req -in pki/reqs/g-prod.req -text
# Assinando Autoridade Certificadora:
# Mova o Req do G-PROD para a Cetificadora
cp /home/ubuntu/certificado/easy-rsa/pki/reqs/g-prod.req /home/ubuntu/certificadora/easy-rsa/pki/reqs/
# Acesse o easy-rsa de certificora
cd /home/ubuntu/certificadora/easy-rsa
# Gerar Certificado - Aqui você irá usar aquela senha que pedida no ca.crt
./easyrsa sign-req server g-prod
# Mover Certificado .CRT e .KEY para /etc/ssl/certs/ e /etc/ssl/private:
$ sudo cp /home/ubuntu/certificadora/easy-rsa/pki/issued/g-prod.crt /etc/ssl/certs
$ sudo cp /home/ubuntu/certificado/easy-rsa/pki/private/g-prod.key /etc/ssl/private
# Configurando DNS para Acesso www.g-prod.com.br
# Instalar bind9
$ sudo apt-get install bind9
# Verificar Porta Esperando DNS:
$ ss -upanl
# Editar Arquivo named.conf.options:
$ sudo nano /etc/bind/named.conf.options
# Editar Texto
dnssec-validation no;
allow-query { 10.200.215.0/24; 127.0.0.0/8; }; #IP da sua linha de VMS
listen-on-v6 {};
# Reiniciar serviço bind9:
$ sudo systemctl restart bind9
# Testar Comunicação:
$ dig @localhost localhost A
# Adicionar Comunicação Local: Editar Conforme Nome da Sua VM e IP
$ sudo nano /etc/bind/named.conf.local
zone "g-prod.com.br" IN {
type master;
file "db.g-prod.com.br";
};
$ sudo nano /var/cache/bind/db.g-prod.com.br
$ORIGIN g-prod.com.br.
$TTL 300;
@ IN SOA virtual-docker lucasfajardo.alunos.utfpr.edu.br (1 30 30 30 30);
@ IN NS virtual-docker
virtual-docker IN A 10.200.215.129
@ IN A 10.200.215.129
www IN CNAME @
# Restart Bind9:
$ sudo systemctl restart bind9
$ sudo systemctl status bind9
# Editar No Micro-Cliente:
$ sudo nano /etc/resolv.conf
nameserver 10.200.215.129 # IP de Sua VM
# Adicionando NGINX para Requisições HTTP / HTTPS:
# Instalar NGINX:
$ sudo apt install nginx -y
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
# Configurar NGINX para a aplicação:
$ sudo nano /etc/nginx/sites-available/g-prod.com.br
# Adicionar Script para Receber as Requisições já incluso HTTPS
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name g-prod.com.br www.g-prod.com.br;
# SSL Configurações
ssl_certificate /etc/ssl/certs/g-prod.crt;
ssl_certificate_key /etc/ssl/private/g-prod.key;
# ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
# access_log /home/ubuntu/logs/nginx_access.log;
# error_log /home/ubuntu/logs/nginx_error.log;
# root /home/ubuntu/g-prod/public;
# Root da Minha Aplicação
root /var/www/g-prod/public;
# Configurar o proxy para Pruma
location / {
proxy_pass <http://0.0.0.0:3000>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Config NGINX
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
access_log /var/www/logs/nginx_access.log;
error_log /var/www/logs/nginx_error.log;
}
# HTTP para HTTPS
server {
listen 80;
listen [::]:80;
server_name g-prod.com.br www.g-prod.com.br;
return 301 https://g-prod.com.br$request_uri;
}
# Ativando a configuração:
$ sudo ln -s /etc/nginx/sites-available/g-prod.com.br /etc/nginx/sites-enabled/
# Adicionar os Logs do NGINX:
$ sudo mkdir /var/www/logs
$ sudo nano /var/www/logs/nginx_access.log
$ sudo nano /var/www/logs/nginx_error.log
# Testar a Configuração NGINX e Reinciar Service:
$ sudo nginx -t
$ sudo systemctl restart nginx
# Acesso a Aplicação via HTTPS navegador Firefox:
<https://g-prod.com.br>
# Grafana
# Atualize pacotes e instale dependências
sudo apt update
sudo apt install -y gnupg2 curl
# Adicione a chave GPG e o repositório oficial do Grafana
curl <https://packages.grafana.com/gpg.key> | sudo apt-key add -
echo "deb <https://packages.grafana.com/oss/deb> stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# Atualize o cache e instale o Grafana
sudo apt update
sudo apt install -y grafana
# Inicie e habilite o serviço Grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
# Editar Porta 3000 para 3002 e retirar
sudo nano /etc/grafana/grafana.ini
# Retirar ;
;http_port = 3000 para http_port = 3002
# Resetar Grafana
$ sudo systemctl restart grafana-server.service
# Liberar Porta
sudo ufw allow 3002/tcp
sudo ufw reload
# Acessar Grafana e Editar
<http://10.200.215.129:3002/>
User: Admin > Password: Admin
Ir para Connection > Add New Connection
Selecionar MySQL
Paramêtros
#Host Url:
0.0.0.0:3306
#Database Name
g_prod_development
#Username
rails_user
#Password
05092004
# Editar Conforme deseja no Painel do Grafana