Instalacija Microwebera na Ubuntu 16.04
Korištenje drugog sustava? Microweber je CMS i internetska trgovina otvorenog koda povuci i ispusti. Izvorni kod Microwebera nalazi se na GitHubu. Ovaj vodič će vam pokazati
Apache OpenMeetings je aplikacija za web konferencije otvorenog koda. Napisan je na Javi i podržava više poslužitelja baze podataka. Pruža mnoge značajke, kao što su audio i video konferencije, dijeljenje zaslona, istraživač datoteka, sustav za moderiranje korisnika, privatne poruke i kontakti, integrirani kalendar za planove sastanaka i još mnogo toga. Također možete snimiti konferencijsku sesiju. Pruža SOAP/REST API i više dodataka za jednostavnu integraciju s Moodleom, Jira, Joomlom, Confluence i još mnogo toga.
Za ovaj vodič koristit ćemo 192.168.1.1
kao javnu IP adresu i meetings.example.com
kao ime domene usmjereno na Vultr instancu. Svakako zamijenite sva pojavljivanja primjera IP adrese i naziva domene stvarnim.
Ažurirajte svoj osnovni sustav pomoću vodiča Kako ažurirati CentOS 7 . Nakon što se vaš sustav ažurira, nastavite s instalacijom Jave.
OpenMeetings je napisan na Javi, stoga je za rad potrebno Java Runtime Environment (JRE). Preuzmite najnoviji dostupni Oracle SE JDK 8 RPM paket, koji uključuje i JRE i JDK.
wget --header 'Cookie: oraclelicense=a' http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm
Instalirajte preuzeti paket.
sudo rpm -Uvh jdk-8u161-linux-x64.rpm
Ako je Java uspješno instalirana, moći ćete provjeriti njezinu verziju.
java -version
Vidjet ćete sljedeći izlaz.
[user@vultr ~]$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Prije nego što nastavimo dalje, morat ćemo postaviti varijable okruženja JAVA_HOME
i JRE_HOME
. Pronađite apsolutni put JAVA izvršne datoteke u vašem sustavu.
readlink -f $(which java)
Vidjet ćete sličan izlaz.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_161/jre/bin/java
Sada postavite varijable JAVA_HOME
i JRE_HOME
okoline prema putu Java direktorija.
echo "export JAVA_HOME=/usr/java/jdk1.8.0_161" >> ~/.bash_profile
echo "export JRE_HOME=/usr/java/jdk1.8.0_161/jre" >> ~/.bash_profile
Izvršite bash_profile
datoteku.
source ~/.bash_profile
Sada možete pokrenuti echo $JAVA_HOME
naredbu kako biste bili sigurni da je varijabla okruženja postavljena.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_161
Instalirajte knjižnice ImageMagick i GhostScript.
sudo yum -y install epel-release
sudo yum -y install ImageMagick ghostscript
ImageMagick pruža podršku za prijenos slika i njihov uvoz na bijelu ploču. GhostScript vam omogućuje prijenos PDF-ova na bijelu ploču.
Provjerite verziju ImageMagick i GhostScript kako biste bili sigurni da su uspješno instalirani.
[user@vultr ~]$ identify -version
Version: ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP
[user@vultr ~]$ ghostscript -v
GPL Ghostscript 9.07 (2013-02-14)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
Nadalje, također ćemo morati instalirati ili Apache OpenOffice ili LibreOffice na sustav. Ugradnja bilo koji od ovih će omogućiti OpenMeetings za uvoz datoteke u Office formata dokumenata, kao što su .doc
, .docx
, .ppt
, .pptx
, ili .xlx
. U ovom vodiču instalirat ćemo Apache OpenOffice.
Prijeđite na privremeni direktorij i preuzmite Apache OpenOffice RPM.
cd /tmp
wget https://downloads.sourceforge.net/project/openofficeorg.mirror/4.1.5/binaries/en-US/Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_en-US.tar.gz
Raspakirajte arhivu i instalirajte sve RPM pakete.
tar xf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_en-US.tar.gz
cd en-US/RPMS
sudo rpm -Uvh *.rpm
sudo rpm -Uvh desktop-integration/openoffice4.1.5-redhat-menus-*.rpm
Da biste provjerili je li OpenOffice ispravno instaliran i radi li, upišite openoffice4 -h
u naredbeni redak. Ispisat će svoju verziju i kratku pomoć.
[user@vultr ~]$ openoffice4 -h
OpenOffice 4.1.5 415m1(Build:9789)
Usage: soffice [options] [documents...]
Options:
-minimized keep startup bitmap minimized.
...
Instalirajte RPMFusion repozitorij u svoj sustav jer nudi unaprijed izgrađene pakete za FFmpeg i Sound eXchange (SoX).
sudo rpm -Uvh https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
Instalirajte FFmpeg i SoX.
sudo yum -y install ffmpeg sox
FFmpeg i SoX će omogućiti snimanje sastanka. Oni će također pomoći pri uvozu medijskih datoteka kao što su .avi
, .flv
, .mov
i .mp4
u bijelu ploču. Provjerite instalaciju provjerom verzija i FFmpeg i SoX.
[user@vultr ~]$ sox --version
sox: SoX v14.4.1
[user@vultr ~]$ ffmpeg -version
ffmpeg version 2.8.13 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-11)
OpenMeetings podržava više vrsta poslužitelja baza podataka, kao što su MySQL, PostgreSQL, Apache, Derby i Oracle. U ovom vodiču koristit ćemo PostgreSQL poslužitelj za hostiranje baze podataka OpenMeeting.
PostgreSQL je objektno-relacijski sustav baze podataka poznat po svojoj stabilnosti i brzini. Zadano yum
spremište sadrži staru verziju PostgreSQL-a, pa dodajte PostgreSQL spremište za najnoviju verziju aplikacije u sustav.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Instalirajte PostgreSQL poslužitelj baze podataka.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Inicijalizirajte bazu podataka.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Pokrenite PostgreSQL poslužitelj i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Promijenite lozinku za zadanog korisnika PostgreSQL.
sudo passwd postgres
Prijavite se kao korisnik PostgreSQL-a.
sudo su - postgres
Stvorite novog PostgreSQL korisnika za korisnika OpenMeetings.
createuser openmeetings
Možete koristiti bilo koje korisničko ime umjesto openmeetings
. Prijeđite na ljusku PostgreSQL.
psql
Postavite lozinku za novostvorenog korisnika za bazu podataka OpenMeetings.
ALTER USER openmeetings WITH ENCRYPTED password 'DBPassword';
Zamijenite DBPassword
sigurnom lozinkom. Napravite novu bazu podataka za instalaciju OpenMeetingsa.
CREATE DATABASE openmeetings OWNER openmeetings;
Izađite iz psql
ljuske.
\q
Prebacite se na sudo
korisnika.
exit
Uredite pg_hba.conf
datoteku kako biste omogućili MD5 provjeru autentičnosti.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Pronađite sljedeće retke i promijenite vrijednosti u METHOD
stupcu od ident
na 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 ident
# IPv6 local connections:
host all all ::1/128 ident
Nakon ažuriranja, konfiguracija će izgledati ovako.
# 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 md5
# IPv6 local connections:
host all all ::1/128 md5
Save the file and exit from the editor. Restart PostgreSQL so that the changes can take effect.
sudo systemctl restart postgresql-10
Since all the required dependencies are installed. Create a new user for OpenMeetings. Using a non-root user for running OpenMeetings is recommended for the security of the server.
sudo adduser -b /var -s /sbin/nologin openmeetings
The above command will also create the home directory of the openmeetings
user in /var/openmeetings
.
Check the Apache OpenMeetings download page to obtain the link to the latest available release. Download the OpenMeetings archive.
cd /tmp
wget http://www-us.apache.org/dist/openmeetings/4.0.1/bin/apache-openmeetings-4.0.1.tar.gz
Extract the archive into the /var/openmeetings
directory.
sudo tar xf apache-openmeetings-4.0.1.tar.gz -C /var/openmeetings
Provide ownership of the files to the OpenMeetings user we have created earlier.
sudo chown -R openmeetings:openmeetings /var/openmeetings
Before we start the application, we will need to modify the firewall to allow ports 5080
and 1935
.
sudo firewall-cmd --zone=public --permanent --add-port=5080/tcp
sudo firewall-cmd --zone=public --permanent --add-port=1935/tcp
sudo firewall-cmd --reload
You can now start the application.
sudo su -s /bin/bash -c 'cd /var/openmeetings/ && sh red5.sh' openmeetings
You can now access http://192.168.1.1:5080/openmeetings
in your favorite browser. You will see the welcome screen with instructions to install GhostScript.
Since we have already installed GhostScript, proceed further. On next interface, you will be prompted to provide database server details. Select database type "PostgreSql
" and provide your database server details that you configured during PostgreSQL installation.
Click on the "Check
" button and you should get the message: "Database check was successful
". Provide your administrator account details and a group name in the next interface.
Configure the basic settings of your installation; such as to allow self-registration, email verification, and default language. Also, provide your SMTP server details. If you do not have an SMTP server ready than you can also provide the SMTP details later in the administrator dashboard.
It will ask you for the path to the binaries of different applications. Provide /usr/bin
as the path for ImageMagick, FFmpeg, and SoX. If the application is providing errors for the path entered, then you can use which <binary_name>
to find the absolute path to the binary. For example, which ffmpeg
should give you /usr/bin/ffmpeg
as output. Use /opt/openoffice4
as the path to the OpenOffice binaries.
You can skip the configuration on the next interface since we are going to use the default values. Finally, click the "Finish
" button to install the application and write the database.
OpenMeetings is now installed on your server. To make it more production friendly, we will setup Systemd to manage the OpenMeetings server. We will also configure Nginx with Let's Encrypt SSL as the secured reverse proxy to serve the application.
Though we can easily start and stop the application using the command above, it is recommended to set up a Systemd service unit to manage the application. This will also ensure that the service is automatically started on boot time and failures.
Stop the OpenMeetings server either by pressing "Ctrl+C
" or by killing the shell of the openmeetings
user.
sudo pkill -KILL -u openmeetings
Izradite novu Systemd jediničnu datoteku za OpenMeetings Server.
sudo nano /etc/systemd/system/openmeetings.service
Popunite datoteku.
[Unit]
Description=OpenMeeting Service
After=network.target
[Service]
Type=simple
User=openmeetings
WorkingDirectory=/var/openmeetings
ExecStart=/var/openmeetings/red5.sh
Restart=always
[Install]
WantedBy=multi-user.target
Pokrenite OpenMeetings poslužitelj i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start openmeetings
sudo systemctl enable openmeetings
Da biste provjerili status usluge, možete pokrenuti sljedeće.
sudo systemctl status openmeetings
Vidjet ćete sličan izlaz.
[root@vultr openmeetings]# sudo systemctl status openmeetings
● openmeetings.service - OpenMeeting Service
Loaded: loaded (/etc/systemd/system/openmeetings.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-01-31 15:40:56 UTC; 38s ago
Main PID: 10522 (java)
CGroup: /system.slice/openmeetings.service
└─10522 /bin/java -Dred5.root=/var/openmeetings -Djava.security.debug=failure -Xms256m...
Jan 31 15:41:29 vultr.guest red5.sh[10522]: [INFO] [Loader:/openmeetings] org.red5.server.Serv...ngs
Jan 31 15:41:29 vultr.guest red5.sh[10522]: [INFO] [Loader:/openmeetings] org.red5.server.Serv...ngs
Jan 31 15:41:29 vultr.guest red5.sh[10522]: DEBUG 01-31 15:41:29.431 16603 343 o.a.o.c.r.Scope...se]
Jan 31 15:41:29 vultr.guest red5.sh[10522]: DEBUG 01-31 15:41:29.531 16703 124 o.a.o.c.r.Scope...ngs
Jan 31 15:41:34 vultr.guest red5.sh[10522]: DEBUG 01-31 15:41:34.421 21593 82 o.a.o.u.Version ...] -
Jan 31 15:41:34 vultr.guest red5.sh[10522]: ##################################################...###
Jan 31 15:41:34 vultr.guest red5.sh[10522]: # Openmeetings is up ... #
Jan 31 15:41:34 vultr.guest red5.sh[10522]: # 4.0.1 3795f14 2017-12-05T16... #
Jan 31 15:41:34 vultr.guest red5.sh[10522]: # and ready to use ... #
Jan 31 15:41:34 vultr.guest red5.sh[10522]: ##################################################...###
Hint: Some lines were ellipsized, use -l to show in full.
Prema zadanim postavkama, OpenMeetings sluša port 5080
. Ako veza između preglednika i poslužitelja nije šifrirana SSL-om, tada će se prijave i druge informacije slati pomoću običnog teksta. To može biti potencijalna prijetnja jer netko tko prisluškuje mrežu može dobiti informacije. Da bismo ublažili ovaj problem, postavit ćemo Nginx kao obrnuti proxy koji će slušati zadani HTTPS port i proxy će sve zahtjeve poslužitelju OpenMeetings.
Instalirajte Nginx.
sudo yum -y install nginx
Pokrenite Nginx i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start nginx
sudo systemctl enable nginx
Instalirajte Certbot, klijentsku aplikaciju za Let's Encrypt CA.
sudo yum -y install certbot
Prije nego što možete zatražiti certifikate, morat ćete dopustiti portove 80
i/ 443
ili standard HTTP
i HTTPS
usluge putem vatrozida.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Napomena: Za dobivanje certifikata od Let's Encrypt CA, domena za koju se certifikati trebaju generirati mora biti usmjerena prema poslužitelju. Ako nije, izvršite potrebne promjene u DNS zapisima domene i pričekajte da se DNS širi prije nego što ponovno uputite zahtjev za certifikatom. Certbot provjerava autoritet domene prije pružanja certifikata.
Generirajte SSL certifikate.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d meetings.example.com
Generirani certifikati vjerojatno će biti pohranjeni u /etc/letsencrypt/live/meetings.example.com/
. SSL certifikat će biti pohranjen kao, fullchain.pem
a privatni ključ će biti pohranjen kao privkey.pem
.
Let's Encrypt certifikati istječu za 90 dana, stoga je preporučljivo postaviti automatsku obnovu certifikata pomoću Cron poslova.
Otvorite cron datoteku posla.
sudo crontab -e
Dodajte sljedeći redak na kraj datoteke.
30 5 * * * /usr/bin/certbot renew --quiet
Gornji cron posao će se izvoditi svaki dan u 5:30 ujutro. Ako certifikat istekne, automatski će se obnoviti.
Sada promijenite zadanu konfiguracijsku datoteku Nginxa da uklonite default_server
liniju.
sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf
Izradite novu konfiguracijsku datoteku za OpenMeetings Server.
sudo nano /etc/nginx/conf.d/meetings.example.com.conf
Popunite datoteku.
server {
listen 80;
server_name meetings.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name meetings.example.com;
ssl_certificate /etc/letsencrypt/live/meetings.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meetings.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/openmeetings.access.log;
location / {
proxy_pass http://localhost:5080;
proxy_set_header host $host;
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
}
}
Provjerite ima li pogrešaka u novoj konfiguracijskoj datoteci.
sudo nginx -t
Ako vidite sljedeći izlaz, konfiguracija je bez grešaka.
[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ako ste primili neku vrstu pogreške, provjerite još jednom put do SSL certifikata. Ponovno pokrenite Nginx web poslužitelj kako biste implementirali promjenu konfiguracije.
sudo systemctl restart nginx
Prije nego što počnete koristiti aplikaciju na SSL zaštićenom mjestu, morat ćete promijeniti konfiguraciju u OpenMeetings. Prijavite se na svoju administrativnu nadzornu ploču OpenMeetingsa i idite na " Administration >> Configuration
". U tablici ID-a, ključa i vrijednosti; naći application.base.url
. Promijenite njegovu vrijednost u https://meetings.example.com
prema nazivu vaše domene. Spremite konfiguraciju klikom na gornju ikonu za spremanje.
Ponovno pokrenite uslugu OpenMeetings.
sudo systemctl restart openmeetings
Sada možete pretraživati https://meetings.example.com
svoj omiljeni web preglednik i prijaviti se za korištenje aplikacije.
Čestitamo, Apache OpenMeetings je sada instaliran na vašem poslužitelju. Možete pozvati svoje prijatelje i početi koristiti OpenMeetings za online konferencije.
Korištenje drugog sustava? Microweber je CMS i internetska trgovina otvorenog koda povuci i ispusti. Izvorni kod Microwebera nalazi se na GitHubu. Ovaj vodič će vam pokazati
Korištenje drugog sustava? Sylius je moderna platforma za e-trgovinu za PHP, bazirana na Symfony Frameworku. Syliusov izvor je na GitHubu. Ovaj vodič će vam pomoći
Korištenje drugog sustava? Apache OpenMeetings je aplikacija za web konferencije otvorenog koda. Napisan je na Javi i podržava više poslužitelja baze podataka. ja
Korištenje drugog sustava? Mailtrain je aplikacija za bilten otvorenog koda koja se samostalno hostira i izgrađena na Node.js i MySQL/MariaDB. Izvor Mailtrains je na GitHubu. ti
Korištenje drugog sustava? Akaunting je besplatan računovodstveni softver otvorenog koda i online računovodstveni softver dizajniran za male tvrtke i slobodnjake. Izgrađen je duhovito
Korištenje drugog sustava? Mailtrain je aplikacija za bilten otvorenog koda koja se samostalno hostira i izgrađena na Node.js i MySQL/MariaDB. Izvor Mailtrains je na GitHubu. ti
Korištenje drugog sustava? InvoicePlane je besplatna aplikacija za fakturiranje otvorenog koda. Njegov izvorni kod može se pronaći na ovom Github repozitoriju. Ovaj vodič
Korištenje drugog sustava? osTicket je sustav za kupnju ulaznica otvorenog koda za korisničku podršku. OsTicket izvorni kod je javno hostiran na Githubu. U ovom vodiču
Korištenje drugog sustava? Open Web Analytics (OWA) je program za web analitiku otvorenog koda koji se može koristiti za praćenje i analizu kako ljudi koriste vašu web stranicu
Korištenje drugog sustava? X-Cart je iznimno fleksibilna platforma za e-trgovinu otvorenog koda s mnoštvom značajki i integracija. Izvorni kod X-Cart je hoste
Korištenje drugog sustava? X-Cart je iznimno fleksibilna platforma za e-trgovinu otvorenog koda s mnoštvom značajki i integracija. Izvorni kod X-Cart je hoste
Korištenje drugog sustava? Matomo (bivši Piwik) je analitička platforma otvorenog koda, otvorena alternativa Google Analyticsu. Matomo izvor je domaćin o
Korištenje drugog sustava? Zammad je open source helpdesk/sustav za prodaju karata dizajniran za timove korisničke podrške. Sa Zammadom, usluga za korisnike
Korištenje drugog sustava? X-Cart je iznimno fleksibilna platforma za e-trgovinu otvorenog koda s mnoštvom značajki i integracija. Izvorni kod X-Cart je hoste
Korištenje drugog sustava? Alfresco Community Edition verzija je otvorenog koda Alfresco Content Services. Napisan je na Javi i koristi PostgreSQL t
Korištenje drugog sustava? Matomo (bivši Piwik) je analitička platforma otvorenog koda, otvorena alternativa Google Analyticsu. Matomo izvor je domaćin o
Korištenje drugog sustava? Taiga je besplatna aplikacija otvorenog koda za upravljanje projektima. Za razliku od drugih alata za upravljanje projektima, Taiga koristi inkremente
Korištenje drugog sustava? Osclass je projekt otvorenog koda koji vam omogućuje jednostavnu izradu klasificirane stranice bez ikakvog tehničkog znanja. Njegov izvor
Korištenje drugog sustava? Dolibarr je open source planiranje poslovnih resursa (ERP) i upravljanje odnosima s klijentima (CRM) za poslovanje. Dolibar
Korištenje drugog sustava? Akaunting je besplatan računovodstveni softver otvorenog koda i online računovodstveni softver dizajniran za male tvrtke i slobodnjake. Izgrađen je duhovito
Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.
Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.
Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.
Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.
Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…
Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.
Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.
Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.
U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.
Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više