Як встановити Wekan (Open Source Kanban) на CentOS 7

Wekan — це канбан-дошка, створена з фреймворком Meteor JavaScript. Він вважається альтернативою Trello з відкритим вихідним кодом і самостійно розміщеною, що забезпечує майже ті ж функції. Це дозволяє створювати списки керування справами на основі карток. Wekan дуже допомагає підвищити продуктивність під час роботи в середовищі співпраці. Wekan має повністю адаптивний веб-інтерфейс, і його активно перекладають багатьма мовами.

Передумови

  • Примірник сервера Vultr CentOS 7.
  • Користувач sudo .

У цьому підручнику ми будемо використовувати wekan.example.comяк доменне ім’я, спрямоване на екземпляр Vultr. Будь ласка, не забудьте замінити всі входження прикладу доменного імені на фактичне.

Оновіть свою базову систему за допомогою посібника Як оновити CentOS 7 . Після оновлення системи перейдіть до встановлення залежностей.

Встановіть Node.js

Wekan підтримує лише Node.js LTS version 4.8. Щоб встановити Node.js, ми будемо використовувати менеджер версій вузла. Встановіть nvm, запустивши скрипт інсталятора.

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

Щоб негайно почати використовувати nvm, запустіть це.

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

Якщо nvmвстановлено успішно, ви зможете перевірити його версію.

[user@vultr ~]$ nvm --version
0.33.4

Встановіть Node.js.

nvm install v4.8

Встановіть версію Node.js за замовчуванням.

nvm use node

Якщо Node.js встановлено успішно, ви зможете перевірити його версію.

node -v

Ви побачите цей вихід.

[user@vultr ~]$ node -v
v4.8.4

NVM встановлює Node.js лише для поточного користувача. Щоб Node.js був доступним у всьому світі, запустіть це.

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

Node.js тепер доступний як /bin/node.

[user@vultr ~]$ sudo which node
/bin/node

Встановіть MongoDB

MongoDB — це безкоштовний сервер баз даних NoSQL з відкритим вихідним кодом. На відміну від традиційних баз даних, які використовують таблиці для організації своїх даних, MongoDB орієнтована на документи і використовує документи, подібні до JSON, без схем. Wekan використовує MongoDB для зберігання своїх даних.

Wekan сумісний лише з MongoDB version 3.2. MongoDB недоступний у YUMсховищі за замовчуванням , тому вам потрібно буде створити новий файл репозиторію.

sudo nano /etc/yum.repos.d/mongodb-org-3.2.repo

Заповніть файл таким вмістом.

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

Встановіть MongoDB.

sudo yum install -y mongodb-org

Запустіть сервер MongoDB та ввімкніть його автоматичний запуск.

sudo systemctl start mongod
sudo systemctl enable mongod

Захист екземпляра MongoDB

За замовчуванням на сервері MongoDB не ввімкнено аутентифікацію. Будь-який користувач, який має доступ до терміналу сервера, матиме повні привілеї щодо встановлення MongoDB. Щоб захистити сервер бази даних і обмежити доступ непривілейованого користувача, нам потрібно налаштувати аутентифікацію на сервері.

MongoDB надає mongoоболонку, яка використовується для виконання запитів до MongoDB. Перейдіть до mongoоболонки, ввівши.

mongo

Створіть нового користувача MongoDB з правами root. Ви можете використовувати будь-яке ім’я користувача на ваш вибір. Будь ласка, не забудьте замінити пароль .

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

Ви повинні побачити наступний вихід.

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

...

2017-09-29T20:42:29.042+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"
                }
        ]
}

Вийдіть із командного інтерфейсу MongoDB до терміналу Linux, натиснувши « Ctrl+C«.

Відредагуйте файл конфігурації MongoDB.

sudo nano /etc/mongod.conf

Додайте наступний рядок у кінці файлу.

security:
 authorization: enabled

Перезапустіть MongoDB, щоб зміни конфігурації вступили в силу.

sudo systemctl restart mongod

Тепер, коли безпека ввімкнено, ви можете перевірити, чи вона працює, знову переключившись на оболонку mongo за допомогою mongoкоманди. Цього разу, якщо ви запустите запит, наприклад, show dbsщоб показати список баз даних, ви побачите повідомлення про помилку авторизації. sudoЗнову перейдіть до користувача після перевірки входу як нового користувача, якого ви щойно створили.

Увійдіть як administratorтільки що створений користувач.

mongo -u admin -p

Введіть пароль користувача для успішного входу. Створіть нового користувача для Wekanбази даних, яка буде використовуватися для зберігання даних Wekan.

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

Не забудьте змінити StrongPasswordпароль на надійний пароль. Ви побачите наступний висновок.

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

...

2017-09-29T20:52:32.450+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" ] }

Встановіть Wekan

Check for the latest link to the Wekan release on Github as new releases are very frequent. Download the latest version of Wekan from Github replacing the link to the installer package.

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

Extract the downloaded archive into a new directory named wekan.

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

Install Bzip2, which is required to extract the Node.js dependencies.

sudo yum -y install bzip2

Install the Node.js dependencies.

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

The Wekan server reads configurations from the environment variables. Run the following commands to set the configurations as environment variables.

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

Make sure to replace the MongoDB password for the wekan user you have created. Also, update the mail URL according to your SMTP server settings. If you do not have mail server ready, you can always change this configuration later. Open the firewall to allow port 4000 through the firewall.

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

To immediately start the application.

cd ~/wekan/bundle
node main.js

You can now access the application by going to http://wekan.example.com:4000. You will see the interface to log-in to the Wekan kanban board.

For production use, it is recommended to set up a reverse proxy to serve the application on the standard HTTP port and a systemd service to manage the application process. In this tutorial, we will use the Nginx web server as a reverse proxy, secured with a Let's Encrypt free SSL.

Setting up the Nginx Reverse Proxy

Install the Nginx web server and Certbot, which is the client application for Let's Encrypt CA.

sudo yum -y install certbot nginx

Before you can request the SSL certificates, you will need to allow port 80 and 443 through the firewall. Certbot will check the domain authority before issuing certificates.

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

Now that we are running Wekan on a standard HTTPS port, we do not need to allow port 4000 through the firewall. Adjust the firewall to remove port 4000.

sudo firewall-cmd --zone=public --remove-port=4000/tcp --permanent
sudo firewall-cmd --reload

Note: The domain name which you are using to obtain the certificates from the Let's Encrypt CA must be pointed towards the server. The client verifies the domain authority before issuing the certificates.

Generate the SSL certificates.

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

Згенеровані сертифікати, ймовірно, будуть збережені в /etc/letsencrypt/live/wekan.example.com/каталозі. Сертифікат SSL буде збережено як fullchain.pem, а закритий ключ – як privkey.pem.

Термін дії сертифікатів Let's Encrypt закінчується через 90 днів, тому рекомендується налаштувати автоматичне оновлення сертифікатів за допомогою Cronjob. Cron — це системна служба, яка використовується для виконання періодичних завдань.

Відкрийте файл завдання cron.

sudo crontab -e

Додайте наступний рядок у кінці файлу.

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

Вищезазначене завдання cron виконуватиметься щодня о 5:30 ранку. Якщо термін дії сертифікатів закінчився, він автоматично поновить їх.

Створіть новий віртуальний хост.

sudo nano /etc/nginx/conf.d/wekan.example.com.conf

Заповніть файл наступним.

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;
        }
}

Замініть wekan.example.comсвоє фактичне доменне ім’я у наведеній вище конфігурації.

Перезапустіть Nginx, щоб зміни вступили в силу.

sudo systemctl restart nginx

Увімкніть автоматичний запуск Nginx під час завантаження.

sudo systemctl enable nginx

Налаштуйте службу Systemd

Створіть нового користувача для процесу.

sudo adduser wekan -s /usr/sbin/nologin -d /opt/wekan

Тепер перемістіть всі файли в /opt/wekanкаталог.

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

Надайте право власності на файли новоствореному користувачеві.

sudo chown -R wekan:wekan /opt/wekan

Wekan не бере дані з жодного файлу конфігурації. Замість цього він отримує до нього доступ із змінних середовища. Ми створимо новий файл для зберігання змінних середовища. Файл, що містить змінні середовища, буде переданий через Systemdслужбу.

Створіть новий файл для зберігання змінних середовища.

 sudo nano /opt/wekan/config.env

Заповніть файл таким вмістом.

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

Будь ласка, не забудьте замінити usernameта password.

Надати право власності wekanкористувачеві.

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

Створіть новий файл служби для служби Wekan systemd.

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

Заповніть файл наступним.

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

[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/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

Збережіть файл і вийдіть з редактора. Тепер ви можете легко запустити Wekan.

sudo systemctl start wekan

Щоб увімкнути автоматичний запуск Wekan під час завантаження.

sudo systemctl enable wekan

Щоб перевірити статус служби Wekan.

sudo systemctl status wekan

Підведенню

Тепер ви можете отримати доступ до екземпляра Wekan на https://wekan.example.com. Почніть зі створення нового облікового запису. Після створення облікового запису ви можете ввімкнути адміністративний доступ для щойно створеного користувача. Увійдіть до оболонки MongoDB як користувач адміністратора.

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

Тепер виберіть wekanбазу даних та оновіть об’єкт, щоб підвищити користувача до користувача адміністратора.

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

Будь ласка, не забудьте замінити admin_userфактичним ім’ям користувача створеного вами користувача. В інтерфейсі адміністратора ви зможете відключити самореєстрацію та оновити налаштування SMTP.

Вітаємо, ви успішно встановили плату Wekan Kanban на свій екземпляр Vultr CentOS.


Leave a Comment

Встановіть Plesk на CentOS 7

Встановіть Plesk на CentOS 7

Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних

Як встановити Squid Proxy на CentOS

Як встановити Squid Proxy на CentOS

Squid — популярна безкоштовна програма для Linux, яка дозволяє створювати веб-проксі для переадресації. У цьому посібнику ви дізнаєтеся, як встановити Squid на CentOS, щоб перетворити вас

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Вступ Lighttpd — це форк Apache, який має набагато меншу ресурсомісткість. Він легкий, звідси його назва, і досить простий у використанні. Встановити

Налаштування статичної мережі та IPv6 на CentOS 7

Налаштування статичної мережі та IPv6 на CentOS 7

VULTR нещодавно вніс зміни на свою сторону, і тепер усе має працювати нормально з коробки з увімкненим NetworkManager. Якщо ви бажаєте вимкнути

Змінення Icinga2 для використання моделі Master/Client на CentOS 6 або CentOS 7

Змінення Icinga2 для використання моделі Master/Client на CentOS 6 або CentOS 7

Icinga2 — це потужна система моніторингу, і при використанні в моделі «майстер-клієнт» вона може замінити потребу в перевірках моніторингу на основі NRPE. Майстер-клієнт

Як встановити Apache Cassandra 3.11.x на CentOS 7

Як встановити Apache Cassandra 3.11.x на CentOS 7

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Як встановити Microweber на CentOS 7

Як встановити Microweber на CentOS 7

Використання іншої системи? Microweber — це CMS та інтернет-магазин із відкритим вихідним кодом. Вихідний код Microweber розміщено на GitHub. Цей посібник покаже вам

Як встановити Vanilla Forum на CentOS 7

Як встановити Vanilla Forum на CentOS 7

Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд

Як встановити Mattermost 4.1 на CentOS 7

Як встановити Mattermost 4.1 на CentOS 7

Використання іншої системи? Mattermost — це автономна альтернатива службі обміну повідомленнями Slack SAAS з відкритим кодом. Іншими словами, з Mattermost ви бл

Lets Encrypt на Plesk

Lets Encrypt на Plesk

Панель керування Plesk має дуже гарну інтеграцію для Lets Encrypt. Lets Encrypt є одним із єдиних постачальників SSL, які надають сертифікати повністю

Дозволяє шифрувати на cPanel

Дозволяє шифрувати на cPanel

Lets Encrypt — це центр сертифікації, який надає безкоштовні сертифікати SSL. cPanel створив чітку інтеграцію, щоб ви і ваш клієнт

Як встановити Concrete5 на CentOS 7

Як встановити Concrete5 на CentOS 7

Використання іншої системи? Concrete5 — це CMS з відкритим вихідним кодом, яка пропонує багато відмінних і корисних функцій, які допомагають редакторам легко створювати вміст.

Як встановити Review Board на CentOS 7

Як встановити Review Board на CentOS 7

Використання іншої системи? Review Board — це безкоштовний інструмент з відкритим кодом для перегляду вихідного коду, документації, зображень та багато іншого. Це веб-програмне забезпечення

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію HTTP для веб-сервера Nginx, що працює на CentOS 7. Вимоги Щоб почати, вам знадобиться

Як встановити GoAccess на CentOS 7

Як встановити GoAccess на CentOS 7

Використання іншої системи? GoAccess — це аналізатор веб-журналів з відкритим вихідним кодом. Ви можете використовувати його для аналізу журналів у режимі реального часу в терміналі або

Як встановити YOURLS на CentOS 7

Як встановити YOURLS на CentOS 7

YOURLS (Your Own URL Shortener) — програма для скорочення URL-адрес і аналізу даних із відкритим вихідним кодом. У цій статті ми розглянемо процес встановлення

Як встановити та налаштувати ArangoDB на CentOS 7

Як встановити та налаштувати ArangoDB на CentOS 7

Використання іншої системи? Вступ ArangoDB — це відкрита база даних NoSQL з гнучкою моделлю даних для документів, графіків і ключів-значень. це є

Використання Etckeeper для контролю версій /etc

Використання Etckeeper для контролю версій /etc

Вступ Каталог /etc/ відіграє важливу роль у функціонуванні системи Linux. Причина цього в тому, що майже кожна конфігурація системи

Чому ви повинні використовувати SSHFS? Як підключити віддалену файлову систему з SSHFS на CentOS 6

Чому ви повинні використовувати SSHFS? Як підключити віддалену файлову систему з SSHFS на CentOS 6

Багато системних адміністраторів керують великою кількістю серверів. Якщо потрібно отримати доступ до файлів на різних серверах, увійти на кожен окремо бл

Налаштування сервера Half Life 2 на CentOS 6

Налаштування сервера Half Life 2 на CentOS 6

У цьому посібнику буде описано процес встановлення ігрового сервера Half Life 2 на систему CentOS 6. Крок 1: Встановлення необхідних умов Щоб налаштувати ou

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше