blog

osTicket Nginx With API Works

Segue a configurção do nginx para osTicket rodando com nginx.

Obs. Importante, confirme a versão do php-fpm e diretório onde encontra-se o .sock, pode ser necessário atualizar da acordo com a sua instalação.

server {
    server_name suporte.xyz.com.br;
    root /var/www/html/osticket;
    index index.php index.html index.htm;

    access_log /var/log/nginx/osticket_access.log;
    error_log /var/log/nginx/osticket_error.log;

    client_max_body_size 2000M;
    client_body_buffer_size 100M;
    client_header_buffer_size 10M;
    large_client_header_buffers 2 10M;
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;
    gzip on;
    gzip_comp_level 2;
    gzip_min_length 1000;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain application/x-javascript text/xml text/css application/xml;

    set $path_info "";

    location ~ /include {
        deny all;
        return 403;
    }

    if ($request_uri ~ "^/api(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/api/(?:tickets|tasks).*$ {
        try_files $uri $uri/ /api/http.php?$query_string;
    }

    if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/scp/ajax.php/.*$ {
        try_files $uri $uri/ /scp/ajax.php?$query_string;
    }

    location / {
        try_files $uri $uri/ index.php;
    }

    location ~ \.php$ {
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param  PATH_INFO    $path_info;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/suporte.xyz.com.br/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/suporte.xyz.com.br/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}


server {
    if ($host = suporte.zyz.com.br) {
    return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name suporte.zyz.com.br;
        listen 80;
    return 404; # managed by Certbot
}

 

Proxmox – Como anexar um disco físico dentro da VM convidada

Nessa dica rápida iremos aprender como anexar um disco físico do seu servidor proxmox dentro de um maquina virtual.

Essa dica também é conhecida Como fazer Passthrough de HD.

 

1ª Passo – Listar os HD’s fisicamente para isso utilize os comando lsblk

proxmox01:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 447,1G  0 disk
├─sda1   8:1    0 446,2G  0 part /
├─sda2   8:2    0     1K  0 part
└─sda5   8:5    0   976M  0 part [SWAP]
sdb      8:16   0 931,5G  0 disk
├─sdb1   8:17   0   300M  0 part
├─sdb2   8:18   0   100M  0 part
├─sdb3   8:19   0   128M  0 part
├─sdb4   8:20   0   146G  0 part
└─sdb5   8:21   0   785G  0 part
sdc      8:32   0 931,5G  0 disk
├─sdc1   8:33   0   300M  0 part
├─sdc2   8:34   0   100M  0 part
├─sdc3   8:35   0   128M  0 part
├─sdc4   8:36   0   146G  0 part
└─sdc5   8:37   0   785G  0 part
sdd      8:48   0   1,8T  0 disk
├─sdd1   8:49   0   128M  0 part
└─sdd2   8:50   0   1,8T  0 part
sr0     11:0    1  1024M  0 rom

2ª Passo – Identificar os HD’s fisicamente para isso utilize os comando ls -lha /dev/disk/by-id

ls -lha /dev/disk/by-id/
total 0
drwxr-xr-x 2 root root 820 out 14 13:18 .
drwxr-xr-x 9 root root 180 out 14 13:18 ..
lrwxrwxrwx 1 root root   9 out 11 09:48 ata-hp_DVDRAM_GUB0N_KMGF58F2532 -> ../../sr0
lrwxrwxrwx 1 root root   9 out 11 09:48 ata-KINGSTON_SEDC600M480G_50026B7686B8050C -> ../../sda
lrwxrwxrwx 1 root root  10 out 11 09:48 ata-KINGSTON_SEDC600M480G_50026B7686B8050C-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 out 11 09:48 ata-KINGSTON_SEDC600M480G_50026B7686B8050C-part2 -> ../../sda2
lrwxrwxrwx 1 root root  10 out 11 09:48 ata-KINGSTON_SEDC600M480G_50026B7686B8050C-part5 -> ../../sda5
lrwxrwxrwx 1 root root   9 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX -> ../../sdb
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX-part2 -> ../../sdb2
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX-part3 -> ../../sdb3
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX-part4 -> ../../sdb4
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4EGFX-part5 -> ../../sdb5
lrwxrwxrwx 1 root root   9 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E -> ../../sdc
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E-part2 -> ../../sdc2
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E-part3 -> ../../sdc3
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E-part4 -> ../../sdc4
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB1000GCWCV_Z1W4SP1E-part5 -> ../../sdc5
lrwxrwxrwx 1 root root   9 out 14 13:18 ata-MB2000GDUNV_26CBK12XF1BA -> ../../sdd
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB2000GDUNV_26CBK12XF1BA-part1 -> ../../sdd1
lrwxrwxrwx 1 root root  10 out 14 13:18 ata-MB2000GDUNV_26CBK12XF1BA-part2 -> ../../sdd2
lrwxrwxrwx 1 root root   9 out 14 13:18 wwn-0x50000396dbc008fa -> ../../sdd
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x50000396dbc008fa-part1 -> ../../sdd1
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x50000396dbc008fa-part2 -> ../../sdd2
lrwxrwxrwx 1 root root   9 out 14 13:18 wwn-0x5000c50086fee3f7 -> ../../sdb
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c50086fee3f7-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c50086fee3f7-part2 -> ../../sdb2
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c50086fee3f7-part3 -> ../../sdb3
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c50086fee3f7-part4 -> ../../sdb4
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c50086fee3f7-part5 -> ../../sdb5
lrwxrwxrwx 1 root root   9 out 14 13:18 wwn-0x5000c5008798a3d3 -> ../../sdc
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c5008798a3d3-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c5008798a3d3-part2 -> ../../sdc2
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c5008798a3d3-part3 -> ../../sdc3
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c5008798a3d3-part4 -> ../../sdc4
lrwxrwxrwx 1 root root  10 out 14 13:18 wwn-0x5000c5008798a3d3-part5 -> ../../sdc5
lrwxrwxrwx 1 root root   9 out 11 09:48 wwn-0x50026b7686b8050c -> ../../sda
lrwxrwxrwx 1 root root  10 out 11 09:48 wwn-0x50026b7686b8050c-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 out 11 09:48 wwn-0x50026b7686b8050c-part2 -> ../../sda2
lrwxrwxrwx 1 root root  10 out 11 09:48 wwn-0x50026b7686b8050c-part5 -> ../../sda5

3ª Passo – Agora iremos anexar os discos a vm com o seguinte comando, para isso efeteu login como administrador no shell do seu servidor linux.

qm set 100 -sata3 /dev/disk/by-id/wwn-0x5000c5008798a3d3

Onde:

  • qm set  =  Comando do proxmox para configurar um Host Guest
  • 100 = ID do Host ( no meu caso um servidor Windows)
  • -sataX = -Tipo de controladora que vai ser utilizada, pode ser sata ou scsi o X representa o número
  • /dev/disk/by-id/wwn-0x5000c5008798a3d3 = E por fim o identifacador do disco, pode ser o wwn- ou ata- ( /dev/disk/by-id/wwn-0x5000c5008798a3d3 ou ata-MB2000GDUNV_26CBK12XF1BA) tanto faz.

 

 

[Solved] Linux: High swap space usage (less than 50% free)

Esse aviso no cliente do zabbix informa que o espaçõ pra swap está com mais de 50% ocupado.

Para resolver esse problema você pode adicionar um swapfile

  • Crie um arquivo Swapfile na raiz do linux
fallocate -l 1GB /swapfile
  • Preencha esse arquivo com 0 bits
dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc
  • Formate para tipo swapfile
mkswap /swapfile
  • Ajuste as permissões
chmod 600 /swapfile
  • Ative o arquivo de swap
swapon /swapfile

 

Deploy de Aplicação em Django com uWSGI e Nginx

Nesse tutorial iremos realizar o deploy de uma aplicação em Django com uWSGI e Nginx

1 – Realizar o update do apt

apt-get update
apt-get upgrade

2 – Instalar dependências

apt install git gcc nginx certbot python3-dev python3.11-venv

3 – Criar diretório do projeto

mkdir /videoaula
cd /videoaula

4 – Criar e ativar o ambiente virtual

python3 -m venv venv
source venv/bin/activate

5 – Instalar os  pacotes

pip install django uwsgi

6 – Iniciar o projeto

python3 -m django --version
django-admin startproject videoaula .
python3 manage.py runserver 0.0.0.0:8000
  • Acesse o host no porta 8000 verifique se aplicação django esta presente.

7 – Ajustar o setting.py

  • Configurar o allowed hosts e a static url
  • Aproveite para checar a aplicação
  • python3 manage.py runserver 0.0.0.0:8000
vim videoaula/settings.py
import os

ALLOWED_HOSTS = ['*']

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

8 – Testando manualmente o uWSGI

  • Crie um arquivo teste.py com o seguinte conteúdo.
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World!"]
  • uwsgi –http :8000 –wsgi-file teste.py

Acesse o host na porta 8000 e confirme se o Hello World foi redenrizado.

9 – Testando o projeto vídeo aula com uWSGI usando o IP Socket

  1. Acesse a aplicação via uWSGI para simples conferência.
uwsgi --http :8000 --module videoaula.wsgi

10 – Configurando o Nginx para acessar aplicação via Unix Socket

  • Crie o arquivo .conf dentro de vim /etc/nginx/sites-available/videoaula.conf
  • Preencha com seguinte conteúdo.
# Configuração do Servidor

upstream django {
    server unix:///videoaula/videoaula.sock;
    }


server {
    listen      80;
    server_name videoaula.cuidadodigital.com.br;
    charset     utf-8;
    
    # max upload size
    client_max_body_size 75M;
    
    # Django media and static files
    location /media  {
        alias /videoaula/media;
    }
    #Django static
    location /static {
        alias /videoaula/static;
    }
    # Send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /videoaula/uwsgi_params;
    }
}
  • Crei o uwsgi_params dentro de /video/aula
  • vim /videoaula/uwsgi_params
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;
uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;
uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;
  • Crie um Link Simbólico do videoaula.conf de sites-availabe para sites-enable
ln -s /etc/nginx/sites-available/videoaula.conf /etc/nginx/sites-enabled/
  • Cheque as configurações do ngnix: # ngnix -t
  • Habilite o nginx: # systemct enable nginx
  • Reinicie o nginx: # systemct restart nginx

11 –  Testando aplicação via Unix Socket

uwsgi --socket videoaula.sock --module videoaula.wsgi --chmod-socket=666 --uid www-data
  • Nessa etapa a aplicação ja deve estar funcionando, poém como aplicação e não como serviço

12 – Crei o arquivo de configuração que o demom irá utilizar para chamar uWSGI com serviço

  • vim /videoaula/videoaula_uwsgi.ini
[uwsgi]
# full path to Django project's root directory
chdir = /videoaula
# Django's wsgi file
module = videoaula.wsgi
# full path to python virtual env
home = /videoaula/venv
# enable uwsgi master process
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /videoaula/videoaula.sock
# socket permissions
chmod-socket = 666
# User ID
uid = www-data
# Group ID
gid = www-data
# clear environment on exit
vacuum = true
# daemonize uwsgi and write messages into given log
daemonize = /videoaula/uwsgi-emperor.log

13 – Testando a aplicação com paramentros de inicialização

uwsgi --ini videoaula_uwsgi.ini

15 – Configurando o vassals

mkdir -p /videoaula/venv/vassals
ln -s /videoaula/videoaula_uwsgi.ini /videoaula/venv/vassals/

16 – Teste final. Realizado teste em modo Emperador do uWSGI emperor mode

uwsgi --emperor /videoaula/venv/vassals --uid www-data --gid www-data

17 – Criando serviço no linux Daemon

  • Crie o arquivo videoaula-uwsgi-emperor.service
  • vim /etc/systemd/system/videoaula-uwsgi-emperor.service
  • Preencha com as seguintes configurações
[Unit]
Description=App Django - Video Aula
After=network.target

[Service]
User=admin
Restart=always
ExecStart=/videoaula/venv/bin/uwsgi --emperor /videoaula/venv/vassals --uid www-data --gid www-data

[Install]
WantedBy=multi-user.target
  • Para habilitar o serviço : systemctl enable videoaula-uwsgi-emperor.service
  • Para iniciar o serviço: systemctl start videoaula-uwsgi-emperor.service

Inpirado em: https://tonyteaches.tech/django-nginx-uwsgi-tutorial/

Como converter Windows 10 Home para Windows 10 Pro

Abra o prompt de comando como Administrador

Execute os seguintes comandos para remover a chave da versão Home

slmgr.vbs /upk 
slmgr.vbs /cpky 
slmgr.vbs /ckms

Para instalar o chave do Windows pro Execute

 

sc config LicenseManager start= auto & net start LicenseManager
sc config wuauserv start= auto & net start wuauserv
changepk.exe /productkey VK7JG-NPHTM-C97JM-9MPGT-3V66T
exit

 

Após reiniciar o computador o mesmo ja iniciará como Windows Pro

swaks – Testando Servidor SMTP via Linha de Commando

Para testar um servidor SMTP via linha de comando instale o SWAKS que em simpes trudução quer dizer.

Canivete Suíço para SMTP

apt install swaks

Substitua as inforçãoes a seguir pelos dados do seu provedor.

swaks \
--server smtp.meuprovedor.email:587 -tls \
--from nao-responda@meudominio.com \
--to minha@caixapostal.com.br \
--h-Subject: "Hello" \
--body 'Testing awesomness!' \
-au nao-responda@meudominio.com \
-ap 'MinhaSenhaSuperSecreta'

Explicando – O óbvio também tem que ser explicado.

— Server = Endereço SMTP fornecido pelo seu provedor.
— From = Conta de e-mail existente, ja criada pelo seu provedor.
— TO = Enderço de Destino.
–h-Subcjet = Assunto do e-mail.
–body = Corpo do E-mail
-au = Usuário que vai autenticar no SMTP Server
ap = Senha de Autenticação.

 

Maiores informações.

Vá na Fonte

https://github.com/jetmore/swaks

 

 

 

Script para automatizar atualização do Debian

Olá, segue o script simples para agendar mensálmente atualização de sistemas operacionais baseado em Debian, serve para Ubuntu também.

  • Criar diretório de scripts ( boa prática )
mkdir -p /etc/scripts
cd /etc/scripts
  • Criar script e testar. 
vim autoupdate.sh

#!/bin/bash
apt clean
apt --fix-broken install
apt autoremove
apt install -f
apt update && apt upgrade -y
apt dist-upgrade -y

Ps. Não esquecer de colocar o arquivo como modo de execução: chmod +x autoupdate.sh

  • Agendar Script no Cron
crontab -e
* * 1 * * /etc/scripts/autoupdate.sh

 

Senha Roteador LinQ Telecom

Segue as senhas padrão para os roteador da LinQ Telecom

 

admin / admin

admin / admin123

admin / LinQ@12345

Como instalar Urbackp cliente no Windows Server 2008 r2

Para instalar o Urbackup Client no Windows Server 2008 r2 e proceda com os seguintes passos.

  • Faça o download da versão 2.4.11 no seguinte endereço
https://hndl.urbackup.org/Client/2.5.25/UrBackup%20Client%202.5.25.exe
  •  Execute a instalção e a configuração do seguintes campos.
Na aba cliente preencha o nome do computador.
Na aba :
* Ativar backup via Internet
* Nome / IP do servidor de Internet
* Porta do Servidor 55415
* Senha do Servidor ( Pegar senha no painel administrativo )
* Ativar fazer backup completo através da internet
  • Aguarde até 5 minutos para que o cliente conecte-se com o servidor

Configurando Bridge no Proxmox

Caso você tenha instalado o Proxmox via Debian será necessário configurar uma bridge manual para suas PVE

Segue o exemplo de como deverá estar configurado seu /etc/network/interfaces

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.0.114/24
        gateway 192.168.0.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0