Criar um servidor de bate-papo usando Matrix Synapse e Riot no CentOS 7

Matrix é um protocolo de comunicação padrão aberto para comunicação descentralizada em tempo real. Matrix é implementado como servidores domésticos distribuídos pela Internet; portanto, não há um ponto único de controle ou falha. O Matrix fornece uma API HTTP RESTful para criar e gerenciar os servidores de bate-papo distribuídos, que inclui enviar e receber mensagens, convidar e gerenciar membros da sala de chat, manter contas de usuário e fornecer recursos avançados de bate-papo, como chamadas de VoIP e vídeo, etc. sincronização segura entre servidores domésticos distribuídos em todo o mundo.

Synapse é a implementação do servidor doméstico Matrix escrito pela equipe Matrix. O ecossistema Matrix consiste na rede de muitos servidores domésticos federados distribuídos em todo o mundo. Um usuário do Matrix usa um cliente de bate-papo para se conectar ao servidor doméstico, que por sua vez se conecta à rede Matrix. O Homeserver armazena o histórico de bate-papo e as informações de login desse usuário específico.

Pré-requisitos

Neste tutorial, usaremos matrix.example.comcomo o nome de domínio usado para o Matrix Synapse. Substitua todas as ocorrências matrix.example.compelo seu nome de domínio real que você deseja usar no servidor inicial Synapse.

Atualize seu sistema básico usando o guia Como atualizar o CentOS 7 . Depois que seu sistema for atualizado, continue com a instalação do Python.

Instalar ferramentas de desenvolvimento

Matrix Synapse precisa do Python 2.7 para funcionar. O Python 2.7 vem pré-instalado em todas as instâncias do servidor CentOS. Você pode verificar a versão instalada do Python.

python -V

Você deve obter uma saída semelhante.

[user@vultr ~]$ python -V
Python 2.7.5

Alterar a versão padrão do Python pode interromper o gerenciador de repositório YUM. No entanto, se você quiser a versão mais recente do Python, poderá fazer uma instalação alternativa, sem substituir o Python padrão.

Instale os pacotes no Development toolsgrupo necessários para compilar os arquivos do instalador.

sudo yum groupinstall -y "Development tools"

Instale mais algumas dependências necessárias.

sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel 

Instale o Python pip. Pip é o gerenciador de dependências dos pacotes Python.

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Instalar Synapse

Crie um ambiente virtual para o seu aplicativo Synapse. O ambiente virtual Python é usado para criar um ambiente virtual isolado para um projeto Python. Um ambiente virtual contém seus próprios diretórios de instalação e não compartilha bibliotecas com ambientes globais e outros ambientes virtuais.

sudo virtualenv -p python2.7 /opt/synapse

Forneça a propriedade do diretório para o usuário atual.

sudo chown -R $USER:$USER /opt/synapse/

Agora ative o ambiente virtual.

source /opt/synapse/bin/activate

Verifique se você possui a versão mais recente de pipe setuptools.

pip install --upgrade pip 
pip install --upgrade setuptools

Instale a versão mais recente do Synapse usando pip.

pip install https://github.com/matrix-org/synapse/tarball/master

O comando acima levará algum tempo para ser executado, pois ele puxa e instala a versão mais recente do Synapse e todas as dependências do repositório do Github.

Instalando e configurando o PostgreSQL

O Synapse usa SQLite como o banco de dados padrão. O SQLite armazena os dados em um banco de dados que é mantido como um arquivo simples no disco. O uso do SQLite é muito simples, mas não recomendado para produção, pois é muito lento em comparação com o PostgreSQL.

O PostgreSQL é um sistema de banco de dados relacional de objetos. Você precisará adicionar o repositório PostgreSQL ao seu sistema, pois o aplicativo não está disponível no repositório YUM padrão.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Instale o servidor de banco de dados PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

Inicialize o banco de dados.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

Edite /var/lib/pgsql/9.6/data/pg_hba.confpara habilitar a autenticação baseada em MD5.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

Encontre as seguintes linhas e altere peerpara truste idnetpara md5.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            idnet
# IPv6 local connections:
host    all             all             ::1/128                 idnet

Uma vez atualizada, a configuração deve ficar assim.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Inicie o servidor PostgreSQL e ative-o automaticamente na inicialização.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Mude a senha do usuário padrão do PostgreSQL.

sudo passwd postgres

Conecte-se.

sudo su - postgres

Crie um novo usuário do PostgreSQL para o Synapse.

createuser synapse

O PostgreSQL fornece o psqlshell para executar consultas no banco de dados. Alterne para o shell do PostgreSQL executando.

psql

Defina uma senha para o usuário recém-criado para o banco de dados Synapse.

ALTER USER synapse WITH ENCRYPTED password 'DBPassword';

Substitua DBPasswordpor uma senha forte e anote-a, pois usaremos a senha posteriormente. Crie um novo banco de dados para o banco de dados PostgreSQL.

CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;

Saia do psqlshell.

\q

Alterne para o sudousuário atual postgres.

exit

Você também precisará instalar os pacotes necessários para que o Synapse se comunique com o servidor de banco de dados PostgreSQL.

sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2

Configurando o Synapse

O Synapse requer um arquivo de configuração antes de poder ser iniciado. O arquivo de configuração armazena as configurações do servidor. Alterne para o ambiente virtual e gere a configuração para o Synapse.

source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes

Substitua matrix.example.compelo seu nome de domínio real e verifique se o nome do servidor pode ser resolvido no endereço IP da sua instância do Vultr. Forneça --report-stats=yesse você deseja que os servidores gerem os relatórios, forneça --report-stats=nopara desativar a geração de relatórios e estatísticas.

Você deve ver uma saída semelhante.

(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates

Por padrão, o homeserver.yamlestá configurado para usar um banco de dados SQLite. Precisamos modificá-lo para usar o banco de dados PostgreSQL que criamos anteriormente.

Edite o recém-criado homeserver.yaml.

nano homeserver.yaml

Encontre a configuração de banco de dados existente que usa SQLite3. Comente as linhas como mostrado abaixo. Adicione também a nova configuração de banco de dados para o PostgreSQL. Certifique-se de usar as credenciais corretas do banco de dados.

# Database configuration
#database:
  # The database engine name
  #name: "sqlite3"
  # Arguments to pass to the engine
  #args:
    # Path to the database
    #database: "/opt/synapse/homeserver.db"


database:
    name: psycopg2
    args:
        user: synapse
        password: DBPassword
        database: synapse
        host: localhost
        cp_min: 5
        cp_max: 10

O registro de um novo usuário a partir de uma interface da Web é desativado por padrão. Para habilitar o registro, você pode definir enable_registrationcomo True. Você também pode definir uma chave de registro secreta, que permite a qualquer pessoa registrar quem possui a chave secreta, mesmo se o registro estiver desativado.

enable_registration: False

registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"

Salve o arquivo e saia do editor. Agora você precisará registrar seu primeiro usuário. Antes de registrar um novo usuário, no entanto, você precisará iniciar o aplicativo primeiro.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl start

Você deve ver as seguintes linhas.

2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')

Registre um novo usuário Matrix.

register_new_matrix_user -c homeserver.yaml https://localhost:8448

Você deve ver o seguinte.

(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.

Por fim, antes de poder usar o Homeserver, você precisará permitir a porta 8448 através do Firewall. Porta 8448é usada como a porta de federação segura. Servidores domésticos usam essa porta para se comunicar com segurança. Você também pode usar o cliente de bate-papo da web incorporado Matrix através desta porta.

sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload

Agora você pode fazer login no cliente de bate-papo da web Matrix, acessando https://matrix.example.com:8448seu navegador favorito. Você verá um aviso sobre o certificado SSL, pois os certificados usados ​​são autoassinados. Não usaremos esse cliente de bate-papo na Web, pois está desatualizado e não é mais mantido. Apenas tente verificar se você pode fazer login usando a conta de usuário que você acabou de criar.

Configurando Vamos criptografar certificados

Em vez de usar um certificado autoassinado para proteger a porta de federação, podemos usar o Let's Encrypt SSL grátis. Let's Encrypt SSL grátis pode ser obtido através do cliente oficial Let's Encrypt chamado Certbot.

Instale o Certbot.

sudo yum -y install certbot

Ajuste sua configuração de firewall para permitir o padrão HTTPe as HTTPSportas através do firewall. O Certbot precisa fazer uma HTTPconexão para verificar a autoridade do domínio.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Para obter certificados da Let's Encrypt CA, você deve garantir que o domínio para o qual você deseja gerar os certificados esteja apontado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do seu domínio e aguarde a propagação do DNS antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.

Agora use o servidor da Web incorporado no Certbot para gerar os certificados para o seu domínio.

sudo certbot certonly --standalone -d matrix.example.com

É provável que os certificados gerados sejam armazenados /etc/letsencrypt/live/matrix.example.com/. O certificado SSL será armazenado como fullchain.peme a chave privada será armazenada como privkey.pem.

Copie os certificados.

sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem

sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

Você precisará alterar o caminho para os certificados e chaves do homeserver.yamlarquivo. Edite a configuração.

nano /opt/synapse/homeserver.yaml

Encontre as seguintes linhas e modifique o caminho.

tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"

# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"

Salve o arquivo e saia do editor. Reinicie o servidor Synapse para que as alterações tenham efeito.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart

Os certificados Let's Encrypt devem expirar em 90 dias, portanto, é recomendável que você configure a renovação automática dos certificados usando tarefas cron. Cron é um serviço do sistema usado para executar tarefas periódicas.

Crie um novo script para renovar certificados e copie os certificados renovados para o diretório Synapse.

sudo nano /opt/renew-letsencypt.sh  

Preencher o arquivo.

#!/bin/sh

/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

Forneça a permissão de execução.

sudo chmod +x /opt/renew-letsencypt.sh

Abra o arquivo de tarefa cron.

sudo crontab -e

Adicione a seguinte linha no final do arquivo.

30 5 * * 1 /opt/renew-letsencypt.sh

O trabalho cron acima será executado toda segunda-feira às 05:30. Se o certificado expirar, ele será renovado automaticamente.

Agora você pode visitar https://matrix.example.com:8448. Você verá que não há aviso SSL antes da conexão.

Configuração do Nginx com Let's Encrypt

Além da porta de federação segura 8448, o Synapse também escuta a porta do cliente não segura 8008. Agora vamos configurar o Nginx como um proxy reverso para o aplicativo Synapse.

sudo yum -y install nginx

Crie um novo arquivo de configuração.

sudo nano /etc/nginx/conf.d/synapse.conf

Preencha o arquivo com o seguinte conteúdo.

server {
    listen 80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name matrix.example.com;

    ssl_certificate           /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/matrix.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/synapse.access.log;

    location /_matrix {

      proxy_pass          http://localhost:8008;
      proxy_set_header X-Forwarded-For $remote_addr;

    }
  }

Reinicie e ative o Nginx para iniciar automaticamente no momento da inicialização.

sudo systemctl restart nginx
sudo systemctl enable nginx

Por fim, você pode verificar se o Synapse pode ser acessado através do proxy reverso.

curl https://matrix.example.com/_matrix/key/v2/server/auto

Você deve obter uma saída semelhante.

[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}

Configurando o Serviço Systemd

É recomendável usar o serviço Systemd para gerenciar o processo do servidor Synapse. O uso do Systemd garantirá que o servidor seja iniciado automaticamente na inicialização e nas falhas do sistema.

Crie um novo arquivo de serviço Systemd.

sudo nano /etc/systemd/system/matrix-synapse.service

Preencher o arquivo.

[Unit]
Description=Matrix Synapse service
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse

[Install]
WantedBy=multi-user.target

Agora você pode iniciar rapidamente o servidor Synapse.

sudo systemctl start matrix-synapse

Para parar ou reiniciar o servidor usando os seguintes comandos.

sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse

Você pode verificar o status do serviço.

sudo systemctl status matrix-synapse

Usando o Riot

O servidor Matrix Synapse está agora instalado e configurado no seu servidor. Como o cliente Web incorporado para Matrix está desatualizado, você pode escolher entre a variedade de aplicativos clientes disponíveis para bate-papo. O Riot é o cliente de bate-papo mais popular, disponível em quase todas as plataformas. Você pode usar a versão hospedada do cliente de bate-papo na Web da Riot ou também pode hospedar uma cópia dela em seu próprio servidor. Além disso, você também pode usar os clientes de bate-papo para desktop e celular da Riot, disponíveis para Windows, Mac, Linux, IOS e Android.

Se você deseja hospedar sua própria cópia do web client do Riot, pode ler mais para obter as instruções para instalar o Riot no seu servidor. Para cliente hospedado, desktop e móvel, você pode usar seu nome de usuário e senha para fazer login diretamente no seu servidor doméstico. Basta escolher my Matrix IDno menu suspenso da Sign Inopção e fornecer o nome de usuário e a senha que você criou durante o registro de um novo usuário. Clique no Custom servere use o nome de domínio da sua instância do Synapse. Como já configuramos o Nginx, podemos apenas usá-lo https://matrix.example.comcomo servidor doméstico e https://matrix.orgcomo URL do servidor de identidade.

Exemplo de login no Riot

Configure o Riot no seu próprio servidor.

O Riot também é de código aberto e gratuito para hospedar em seu próprio servidor. Não requer nenhum banco de dados ou dependências. Como já temos um servidor Nginx em execução, podemos hospedá-lo no mesmo servidor.

O domínio ou subdomínio que você está usando para Synapse e Riot deve ser diferente para evitar scripts entre sites. No entanto, você pode usar dois subdomínios do mesmo domínio. Neste tutorial, usaremos riot.example.comcomo domínio para o aplicativo Riot. Substitua toda a ocorrência de riot.example.compelo seu domínio ou subdomínio real pelo aplicativo Riot.

Baixe o Riot no seu servidor.

cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz

Você sempre pode encontrar o link para a versão mais recente no Github da Riot .

Extraia o arquivo morto.

sudo tar -xzf riot-v*.tar.gz

Renomeie o diretório para lidar com conveniência.

sudo mv riot-v*/ riot/

Como já instalamos o Certbot, podemos gerar os certificados diretamente. Verifique se o domínio ou subdomínio que você está usando está apontado para o servidor.

sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com

Os certificados gerados provavelmente serão armazenados no /etc/letsencrypt/live/riot.example.com/diretório

Crie um host virtual para o aplicativo Riot.

sudo nano /etc/nginx/conf.d/riot.conf

Preencher o arquivo.

server {
    listen 80;
    server_name riot.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name riot.example.com;

    ssl_certificate           /etc/letsencrypt/live/riot.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/riot.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    root /opt/riot;
    index index.html index.htm;

    location / {
            try_files $uri $uri/ =404;
    }

    access_log    /var/log/nginx/riot.access.log;

  }

Copie o arquivo de configuração de amostra.

sudo cp /opt/riot/config.sample.json /opt/riot/config.json

Agora edite o arquivo de configuração para fazer algumas alterações.

sudo nano /opt/riot/config.json

Encontre as seguintes linhas.

"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",

Substitua o valor da URL do servidor doméstico padrão pela URL do seu servidor Matrix. Para a URL do servidor de identidade, você pode usar a opção padrão ou também fornecer seu valor ao servidor de identidade Matrix, que é https://matrix.org.

"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",

Salve o arquivo e saia. Forneça a propriedade dos arquivos para o usuário Nginx.

sudo chown -R nginx:nginx /opt/riot/

Reinicie o Nginx.

sudo systemctl restart nginx

Você pode acessar o Riot https://riot.example.com. Agora você pode fazer login usando o nome de usuário e a senha que você criou anteriormente. Você pode se conectar usando o servidor padrão, pois já alteramos o servidor Matrix padrão para nosso aplicativo.

Agora você tem um servidor doméstico Matrix Synapse instalado e funcionando. Você também tem uma cópia hospedada do Riot, que pode ser usada para enviar uma mensagem a outras pessoas usando seu ID de matriz, email ou número de celular. Comece criando uma sala de bate-papo em seu servidor e convide seus amigos no Matrix para ingressar na sala de bate-papo que você criou.



Leave a Comment

Configure sua própria rede privada com o OpenVPN

Configure sua própria rede privada com o OpenVPN

O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes

Como instalar e configurar o CyberPanel no servidor CentOS 7

Como instalar e configurar o CyberPanel no servidor CentOS 7

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

Instale o eSpeak no CentOS 7

Instale o eSpeak no CentOS 7

Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade

Como usar o Sudo no Debian, CentOS e FreeBSD

Como usar o Sudo no Debian, CentOS e FreeBSD

Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud

Como instalar o RabbitMQ no CentOS 7

Como instalar o RabbitMQ no CentOS 7

Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens

Configurar o Nginx-RTMP no CentOS 7

Configurar o Nginx-RTMP no CentOS 7

Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i

Como instalar o Gradle no CentOS 7

Como instalar o Gradle no CentOS 7

Usando um sistema diferente? Gradle é um conjunto de ferramentas de automação de compilação de código aberto e gratuito baseado nos conceitos do Apache Ant e Apache Maven. Gradle fornece

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.

Instalando o Netdata no CentOS 7

Instalando o Netdata no CentOS 7

Usando um sistema diferente? O Netdata é uma estrela em ascensão no campo do monitoramento de métricas do sistema em tempo real. Comparado com outras ferramentas do mesmo tipo, o Netdata:

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Usando um sistema diferente? O Apache Cassandra é um sistema de gerenciamento de banco de dados NoSQL gratuito e de código aberto, projetado para fornecer escalabilidade, alta

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos

Como instalar o servidor Starbound no CentOS 7

Como instalar o servidor Starbound no CentOS 7

Usando um sistema diferente? Neste tutorial, explicarei como configurar um servidor Starbound no CentOS 7. Pré-requisitos Você precisa ser o proprietário deste jogo

Instalando e configurando o ZNC no CentOS 7

Instalando e configurando o ZNC no CentOS 7

O ZNC é um segurança IRC gratuito e de código aberto que permanece permanentemente conectado a uma rede para que os clientes possam receber mensagens enviadas enquanto estiverem offline. Thi

Como instalar o Django no CentOS 7

Como instalar o Django no CentOS 7

O Django é uma estrutura Python popular para escrever aplicativos da web. Com o Django, você pode criar aplicativos mais rapidamente, sem reinventar a roda. Se você quiser você

Como instalar o CMS de outubro no CentOS 7

Como instalar o CMS de outubro no CentOS 7

Outubro é um sistema de gerenciamento de conteúdo de código aberto baseado no Laravel PHP Framework. Com uma interface elegante e uma arquitetura modular concisa

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Após alterar a porta SSH, configurar a batida na porta e fazer outros ajustes para a segurança SSH, talvez haja mais uma maneira de protegê-lo

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.