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
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.
Neste tutorial, usaremos matrix.example.com
como o nome de domínio usado para o Matrix Synapse. Substitua todas as ocorrências matrix.example.com
pelo 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.
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 tools
grupo 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
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 pip
e 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.
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.conf
para habilitar a autenticação baseada em MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Encontre as seguintes linhas e altere peer
para trust
e idnet
para 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 psql
shell 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 DBPassword
por 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 psql
shell.
\q
Alterne para o sudo
usuá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
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.com
pelo 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=yes
se você deseja que os servidores gerem os relatórios, forneça --report-stats=no
para 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.yaml
está 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_registration
como 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:8448
seu 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.
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 HTTP
e as HTTPS
portas através do firewall. O Certbot precisa fazer uma HTTP
conexã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.pem
e 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.yaml
arquivo. 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.
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"}}}
É 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
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 ID
no menu suspenso da Sign In
opçã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 server
e use o nome de domínio da sua instância do Synapse. Como já configuramos o Nginx, podemos apenas usá-lo https://matrix.example.com
como servidor doméstico e https://matrix.org
como URL do servidor de identidade.
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.com
como domínio para o aplicativo Riot. Substitua toda a ocorrência deriot.example.com
pelo 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.
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
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
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
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
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
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
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
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
Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.
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:
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
Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos
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
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
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ê
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
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
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
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
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
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, 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.
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+
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.
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
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
À 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
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.