Cum se instalează Wekan (Open Source Kanban) pe Ubuntu 16.04

Wekan este o placă kanban construită cu cadrul JavaScript Meteor. Este considerată o alternativă open source și self-gazdată la Trello, oferind aproape aceleași caracteristici. Vă permite să creați liste de gestionare bazate pe carduri „de făcut”. Wekan este foarte util pentru a crește productivitatea atunci când lucrați într-un mediu de colaborare. Wekan are o interfață web plină de reacție și este tradusă activ în multe limbi.

Cerințe preliminare

Pentru acest tutorial, vom folosi wekan.example.comca nume de domeniu indicat spre instanța Vultr. Vă rugăm să vă asigurați că înlocuiți toate aparițiile numelui de domeniu exemplu cu cel real.

Actualizați-vă sistemul de bază utilizând ghidul Cum să actualizați Ubuntu 16.04 . După ce sistemul dvs. a fost actualizat, continuați să instalați dependențele.

Instalați Node.js

Wekan acceptă doar Node.js LTS version 4.8. Pentru a instala Node.js, vom folosi managerul versiunii nodului. Instalați nvmrulând scriptul de instalare.

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash

Pentru a începe imediat să folosiți nvm, rulați acest lucru.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Dacă s- nvma instalat cu succes, atunci ar trebui să puteți verifica versiunea sa.

user@vultr:~$ nvm --version
0.33.4

Instalează Node.js.

nvm install v4.8

Setați versiunea implicită a Node.js.

nvm use node

Dacă Node.js s-a instalat cu succes, atunci ar trebui să puteți verifica versiunea sa.

node -v

Veți vedea această ieșire.

user@vultr:~$ node -v
v4.8.4

NVM instalează Node.js doar pentru utilizatorul curent. Pentru ca Node.js să fie accesibil la nivel global, executați acest lucru.

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr

Node.js este acum disponibil ca /usr/bin/node.

user@vultr:~$ sudo which node
/usr/bin/node

Instalați MongoDB

MongoDB este un server de baze de date NoSQL gratuit și open source. Spre deosebire de bazele de date tradiționale care utilizează tabele pentru a-și organiza datele, MongoDB este orientat pe documente și folosește documente asemănătoare JSON fără scheme. Wekan folosește MongoDB pentru a stoca datele sale.

Wekan este compatibil numai cu MongoDB version 3.2. Creați un nou fișier de depozitare.

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Importați cheia GPG publică MongoDB și actualizați lista de pachete.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
sudo apt update

Instalați MongoDB.

sudo apt install -y mongodb-org

Porniți MongoDB și permiteți-l să pornească automat.

sudo systemctl start mongod
sudo systemctl enable mongod

Securizarea instanței MongoDB

În mod implicit, nu există o autentificare activată pe un server MongoDB. Orice utilizator care are acces la terminalul serverului va avea privilegii complete cu privire la instalarea MongoDB. Pentru a securiza serverul de baze de date și a restricționa accesul unui utilizator neprivilegiat, va trebui să configurați autentificarea pe server.

MongoDB oferă un mongoshell care este utilizat pentru a rula interogări pe MongoDB. Comutați la mongocoajă.

mongo

Creați un nou utilizator MongoDB cu privilegii root. Puteți utiliza orice nume de utilizator la alegere. Vă rugăm să vă asigurați că înlocuiți parola .

db.createUser(
  {
    user: "admin",
    pwd: "StrongAdminPassword",
    roles: [ { role: "root", db: "admin" } ]
  }
)

Ar trebui să vedeți următoarea ieșire.

user@vultr:~$ mongo
MongoDB shell version: 3.2.17
connecting to: test
Welcome to the MongoDB shell.

...

2017-09-30T18:11:40.274+0000 I CONTROL  [initandlisten]
> db.createUser(
...   {
...     user: "admin",
...     pwd: "StrongAdminPassword",
...     roles: [ { role: "root", db: "admin" } ]
...   }
... )
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

Ieșiți de interfața de comandă MongoDB la terminalul Linux apăsând " Ctrl+C".

Editați fișierul de configurare MongoDB.

sudo nano /etc/mongod.conf

Adăugați următoarea linie la sfârșitul fișierului.

security:
 authorization: enabled

Reporniți MongoDB pentru ca modificarea configurației să poată produce efect.

sudo systemctl restart mongod

Acum că securitatea a fost activată, puteți testa dacă funcționează trecând din nou la coaja mongo folosind mongocomanda. De data aceasta, dacă executați o interogare, de exemplu, show dbspentru a afișa lista bazelor de date, veți vedea un mesaj care raportează autorizarea eșuată. Ieșiți din sudonou la utilizator după testarea log-in-ului ca nou utilizator pe care tocmai l-ați creat.

Conectați-vă ca administratorutilizatorul pe care tocmai l-ați creat.

mongo -u admin -p

Furnizați parola utilizatorului pentru o autentificare reușită. Creați un utilizator nou pentru wekanbaza de date care va fi utilizat pentru stocarea datelor Wekan.

use wekan
db.createUser(
    {
      user: "wekan",
      pwd: "StrongPassword",
      roles: ["readWrite"]
    }
 ) 

Asigurați-vă că înlocuiți StrongPasswordparola cu o parolă puternică. Veți vedea următoarea ieșire.

user@vultr:~$ mongo -u admin -p
MongoDB shell version: 3.2.17
Enter password:
connecting to: test

...

2017-09-30T18:13:26.007+0000 I CONTROL  [initandlisten]
>
> use wekan
switched to db wekan
> db.createUser(
...     {
...       user: "wekan",
...       pwd: "StrongPassword",
...       roles: ["readWrite"]
...     }
...  )
Successfully added user: { "user" : "wekan", "roles" : [ "readWrite" ] }

Instalați Wekan

Verificați cel mai recent link către lansarea Wekan pe Github, deoarece noile versiuni sunt foarte frecvente. Descărcați cea mai recentă versiune a Wekan de la Github înlocuind linkul către pachetul de instalare.

cd ~
wget https://github.com/wekan/wekan/releases/download/v0.44/wekan-0.44.tar.gz

Extrageți arhiva descărcată într-un director nou numit wekan.

mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan

Instalați dependențele Node.js.

cd wekan/bundle/programs/server && npm install

Serverul Wekan citește configurații din variabilele de mediu. Executați următoarele comenzi pentru a seta configurațiile ca variabile de mediu.

export MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
export ROOT_URL='http://wekan.example.com'
export MAIL_URL='smtp://user:[email protected]:25/'
export MAIL_FROM='[email protected]'
export PORT=4000

Asigurați-vă că înlocuiți parola MongoDB pentru wekanutilizatorul pe care l-ați creat. De asemenea, actualizați adresa URL de e-mail în conformitate cu setările serverului dvs. SMTP. Dacă nu aveți un server de e-mail pregătit, puteți schimba această configurație mai târziu.

Pentru a porni imediat cererea.

cd ~/wekan/bundle
node main.js

Acum puteți accesa aplicația accesând http://wekan.example.com:4000. Veți vedea interfața pentru a vă conecta la Wekan kanban board.

Pentru utilizare în producție, este recomandat să configurați un proxy invers pentru a servi aplicația pe HTTPportul standard și un systemdserviciu pentru a gestiona procesul de aplicare. În acest tutorial, vom folosi serverul web Nginx ca proxy invers, securizat cu un SSL gratuit Let's Encrypt.

Configurarea proxy-ului Nginx Reverse

Adăugați Certbot PPAdepozitul la sistem.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

Instalați Nginx și Certbot, care este aplicația client pentru Let's Encrypt CA.

sudo apt -y install certbot nginx

Notă: Numele de domeniu pe care îl utilizați pentru a obține certificatele de la Let's Encrypt CA trebuie să fie îndreptat către server. Clientul verifică autoritatea domeniului înainte de emiterea certificatelor .

Generați certificatele SSL.

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

Este posibil ca certificatele generate să fie stocate în /etc/letsencrypt/live/wekan.example.com/director. Certificatul SSL va fi stocate ca fullchain.pemși cheia privată vor fi stocate ca privkey.pem.

Haideți să criptați certificatele expiră în 90 de zile, de aceea este recomandat să setați reînnoirea automată a certificatelor folosind Cronjob. Cron este un serviciu de sistem care este utilizat pentru a executa sarcini periodice.

Deschideți fișierul de job cron.

sudo crontab -e

Adăugați următoarea linie la sfârșitul fișierului.

30 5 * * * /usr/bin/certbot renew --quiet

Slujba cron de mai sus va rula în fiecare zi la 5:30 AM. Dacă certificatele sunt expirate, acestea le vor reînnoi automat.

Creați o nouă gazdă virtuală.

sudo nano /etc/nginx/sites-available/wekan.example.com.conf

Populați fișierul cu următoarele.

upstream wekan {
        server 127.0.0.1:4000;
}
server {
        listen  80;
        listen [::]:80;
        server_name  wekan.example.com;

        location / {
                if ($ssl_protocol = "") {
                        rewrite     ^   https://$server_name$request_uri? permanent;
                }
        }
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name wekan.example.com;

        add_header Strict-Transport-Security "max-age=15768000";

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

        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;

        ssl_stapling on;
        ssl_stapling_verify on;

        error_page 497  https://$host:$server_port$request_uri;
        location / {
            proxy_pass http://wekan;
            proxy_http_version 1.1;
            proxy_set_header Host $host:$server_port;
            proxy_set_header Referer $http_referer;
            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 https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header X-Nginx-Proxy true;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            proxy_redirect off;

            proxy_send_timeout 86400;
            proxy_read_timeout 86400;
        }
}

Înlocuiți wekan.example.comnumele dvs. de domeniu real în configurația de mai sus.

Activați site-ul nou adăugat.

sudo ln -s /etc/nginx/sites-available/wekan.example.com.conf /etc/nginx/sites-enabled/wekan.example.com.conf

Reporniți Nginx pentru ca modificările să aibă efect.

sudo systemctl restart nginx

Activați Nginx pentru a porni automat la momentul de pornire.

sudo systemctl enable nginx

Configurare Serviciu Systemd

Creați un utilizator nou pentru procesul de rulare.

sudo adduser wekan --shell /usr/sbin/nologin --home /opt/wekan

Acum mutați toate fișierele în /opt/wekandirector.

sudo mv ~/wekan/* /opt/wekan/

Oferiți proprietatea fișierelor utilizatorului nou creat.

sudo chown -R wekan:wekan /opt/wekan

Wekan nu preia date din niciun fișier de configurare. În schimb, îl accesează din variabile de mediu. Vom crea un nou fișier pentru a stoca variabilele de mediu. Fișierul care conține variabilele de mediu va fi trecut prin Systemdserviciu.

Creați un nou fișier pentru a stoca variabilele de mediu.

 sudo nano /opt/wekan/config.env

Populați fișierul cu următorul conținut.

MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.example.com'
MAIL_URL='smtp://user:[email protected]:25/'
MAIL_FROM='[email protected]'
PORT=4000
HTTP_FORWARDED_COUNT=1

Vă rugăm să vă asigurați că înlocuiți usernameși password.

Oferiți proprietatea wekanutilizatorului rulând.

sudo chown -R wekan:wekan /opt/wekan/config.env

Creați un nou fișier de serviciu pentru serviciul de sistem Wekan.

sudo nano /etc/systemd/system/wekan.service

Populați fișierul cu următoarele.

[Unit]
Description=Wekan Server
After=syslog.target
After=network.target

[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/usr/bin/node /opt/wekan/bundle/main.js
EnvironmentFile=/opt/wekan/config.env
ExecReload=/bin/kill -USR1 $MAINPID
RestartSec=10
User=wekan
Group=wekan
WorkingDirectory=/opt/wekan
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Wekan

[Install]
WantedBy=multi-user.target

Salvați fișierul și ieșiți din editor. Acum puteți porni cu ușurință Wekan.

sudo systemctl start wekan

Pentru a activa Wekan să pornească automat la momentul de pornire.

sudo systemctl enable wekan

Pentru a verifica starea serviciului Wekan.

sudo systemctl status wekan

Înveliți

Acum puteți accesa instanța Wekan pe https://wekan.example.com. Începeți prin crearea unui cont nou. După ce ați creat contul, puteți activa accesul administrativ al utilizatorului nou creat. Conectați-vă la shell-ul MongoDB ca utilizator administrativ.

mongo -u wekan -p --authenticationDatabase "wekan"

Acum selectați wekanbaza de date și actualizați obiectul pentru a-l promova pe utilizator la administrator.

use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})

Vă rugăm să vă asigurați că înlocuiți admin_usercu numele de utilizator real al utilizatorului pe care l-ați creat. Din interfața admin, veți putea dezactiva auto-înregistrarea și actualiza setările SMTP.

Felicitări, ați instalat cu succes placa Wekan Kanban pe instanța dvs. Vultr Ubuntu.



Leave a Comment

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis

Configurare partajare NFS pe Debian

Configurare partajare NFS pe Debian

NFS este un sistem de fișiere bazat pe rețea care permite computerelor să acceseze fișiere într-o rețea de calculatoare. Acest ghid explică modul în care puteți expune folderele peste NF

Configurați un server TeamTalk pe Linux

Configurați un server TeamTalk pe Linux

TeamTalk este un sistem de conferințe care permite utilizatorilor să aibă conversații audio / video de înaltă calitate, chat de text, transfer de fișiere și partajare ecrane. Este

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Vultr oferă o caracteristică care vă permite să preinstalați cheile SSH la crearea unei noi instanțe. Acest lucru vă permite să accesați utilizatorul root al serverelor, totuși

Cum se instalează Ranger Terminal File Manager pe Linux

Cum se instalează Ranger Terminal File Manager pe Linux

Ranger este un manager de fișiere bazat pe linia de comandă cu legături de cheie VI. Oferă o interfață de blestem minimalistă și frumoasă, cu o vedere asupra ierarhiei de directoare

Cum se instalează Redmine pe Ubuntu 16.04

Cum se instalează Redmine pe Ubuntu 16.04

Folosind un sistem diferit? Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe baze de date

Instalare RethinkDB Cluster pe CentOS 7

Instalare RethinkDB Cluster pe CentOS 7

Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Folosind un sistem diferit? Brotli este o nouă metodă de compresie cu un raport de compresie mai bun decât GZIP. Codul sursă este găzduit public pe acest Githu

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

În anumite ocazii, este posibil ca un administrator de sistem să aibă nevoie să creeze un cont de utilizator și să restricționeze accesul acestora la gestionarea propriilor fișiere prin sFTP, dar nu b

Utilizarea vizualizărilor MySQL pe Debian 7

Utilizarea vizualizărilor MySQL pe Debian 7

Introducere MySQL are o caracteristică excelentă cunoscută sub numele de vizualizări. Vizualizările sunt interogări stocate. Gândiți-vă la ele ca la un alias pentru o întrebare altfel lungă. În acest ghid,

Cum se instalează Nginx 1.14 pe Arch Linux

Cum se instalează Nginx 1.14 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de #. Th

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Permiterea autentificării root pe SSH este de obicei considerată o practică slabă de securitate în întreaga industrie tehnologică. În schimb, puteți efectua administrativ sensibil

Cum se instalează Seafile Server pe Ubuntu 16.10

Cum se instalează Seafile Server pe Ubuntu 16.10

Folosind un sistem diferit? Seafile (versiunea comunității) este o soluție gratuită și deschisă de sincronizare și partajare a fișierelor, care este similară cu ownCloud. De-a lungul spiritului

Cum să compilați Nginx din sursă pe CentOS 7

Cum să compilați Nginx din sursă pe CentOS 7

Folosind un sistem diferit? NGINX poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy de poștă, echilibrator de sarcină, terminator TLS sau cachin

Cum se instalează Thelia 2.3 pe Debian 9

Cum se instalează Thelia 2.3 pe Debian 9

Folosind un sistem diferit? Thelia este un instrument open source pentru crearea de site-uri web pentru e-business și gestionarea conținutului online scris în PHP. Codul sursă Thelia i

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik

Configurarea unui chroot pe Debian

Configurarea unui chroot pe Debian

Acest articol vă va învăța cum să configurați o închisoare chroot pe Debian. Presupun că utilizați Debian 7.x. Dacă executați Debian 6 sau 8, acest lucru poate funcționa, bine

Cum se instalează PiVPN pe Debian

Cum se instalează PiVPN pe Debian

Introducere Un mod ușor de a configura un server VPN pe Debian este cu PiVPN. PiVPN este un instalator și un pachet pentru OpenVPN. Creează comenzi simple pentru tine

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

EasyEngine (ee) este un instrument Python care vă permite să gestionați ușor și automat site-urile Wordpress de pe Nginx. Folosind EasyEngine, nu va trebui să dați

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe