Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Инсталиране на облачна структура

    При наличие на толкова много компании които предлагат безплатно тази услуга, трябва да се зачуди човек, защо ни е собствена облачна структура. Отговора е много прост. Всички имат някакви ограничения. Кои в дисковото пространство, кои в трафик към тях. От разнообразието на такива услуги лично ми допада NextCloud. Точно него ще се помъчим да инсталираме и настроим. За пояснение: - потребителя който ще се свързва с базата nextcloud е nextcloud с парола P@ssc0de - администратора на облака ще се казва admin с парола adminpass


    За начало да обновим репозиторите:

    # apt update # apt full-upgrade


    Тъй като тази тема я подхващам доста по-късно спрямо предните инсталации, нормално е да не си спомням какво имам инсталирано. Специално за NextCloud са необходими следните модули: apache2, mariadb-server, libapache2-mod-php, php-curl, php-gd, php-imagick, php-intl, php-json, php-mbstring, php-mysql, php-xml, php-zip. По-пътя на логиката модулите apache2 и mariadb-server ще са налични, защото това са първите модули които се инсталират след чистата инсталация на Debian. Има налични и PHP модули, защото е инсталиран и PHPMyAdmin, но въпроса е "кои са"? Да проверим:

    # dpkg -l | grep php ii libapache2-mod-php7.3 ii php-curl 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all CURL module for PHP [default] ii php-gd 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all GD module for PHP [default] ii php-intl 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all Internationalisation module for PHP [default] ii php-mbstring 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all MBSTRING module for PHP [default] ii php-mysql 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all MySQL module for PHP [default] ii php-xml 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all DOM, SimpleXML, WDDX, XML, and XSL module ii php-zip 2:7.3+69+0~20190303094804.15+stretch~1.gbp0f7465 all Zip ii php7.3-curl 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 CURL module for PHP ii php7.3-gd 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 GD module for PHP ii php7.3-intl 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 Internationalisation module for PHP ii php7.3-json 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 JSON module for PHP ii php7.3-mbstring 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 MBSTRING module for PHP ii php7.3-mysql 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 MySQL module for PHP ii php7.3-opcache 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 Zend ii php7.3-xml 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 DOM, SimpleXML, WDDX, XML, and XSL module ii php7.3-zip 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64 Zip module for PHP

    Списъка е доста по-дълъг, но е показано само това което ни интересува. Вижда се, че липсва php-imagick. Да го инсталираме:

    # apt-get install php-imagick


    Време е да създадем база за NextCloud:

    # mariadb -u root -p MariaDB [(none)]> CREATE DATABASE nextcloud; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'P@ssc0de'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud . * TO 'nextcloud'@'localhost'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye


    Да проверим какво сме създали:

    # mariadb -u nextcloud -p Enter password:


    За парола въвеждаме P@ssc0de и всичко е наред.

    MariaDB [(none)]> quit Bye


    В браузъра отваряме сайта https://nextcloud.com/install/#instructions-server. В тази страница има линк Details and download options. Цъкаме върху него. Отварят се три варианта за смъкване: 1. Download the .tar.bz2 or .zip archive. 2. Check package integrity using MD5 (.tar.bz2 / .zip) or SHA256 (.tar.bz2 / .zip) 3. Verify the authenticity via PGP (.tar.bz2 /.zip). The Nextcloud GPG key is here. От точка 1., върху линка .tar.bz2 цъкаме с десния бутон на мишката и избираме Копиране адреса на връзката. Връщаме се към облака.


    В терминала пишем:

    # wget https://download.nextcloud.com/server/releases/nextcloud-16.0.2.tar.bz2 # ls -l total 60160 .................................................... .................................................... -rw-r--r-- 1 root root 61600732 Jul 4 10:23 nextcloud-16.0.2.tar.bz2


    NextCloud е свален, сега да го разархивираме:

    # tar -xvf nextcloud-16.0.2.tar.bz2 # ls -l total 60164 .................................................... .................................................... drwxr-xr-x 14 nobody nogroup 4096 Jul 4 10:22 nextcloud -rw-r--r-- 1 root root 61600732 Jul 4 10:23 nextcloud-16.0.2.tar.bz2 # rm nextcloud-16.0.2.tar.bz2


    Създадена е директория nextcloud. Целта е, тази директория да я преместим в /home/www/

    # mv ./nextcloud /home/www/ # ls -l /home/www/ total 16 drwxr-xr-x 7 root root 4096 Jul 5 00:45 GRSoft drwxr-xr-x 4 root root 4096 Jul 4 18:18 home.tachko.com drwxr-xr-x 4 root root 4096 Jul 4 18:17 home.tlan.net drwxr-xr-x 14 nobody nogroup 4096 Jul 4 10:22 nextcloud


    Внимание: не слагайте файлове различни от архива в директорията /home/www/nextcloud. Вътре трябва да са само разархивираните.


    Ако разгледаме съдържанието на /home/www/nextcloud/ ще видим, че всички файлове са членове на nobody или root, идеята е да бъдат на www-data:www-data, затова:

    # chown -R www-data:www-data /home/www/nextcloud/* # chown -R www-data:www-data /home/www/nextcloud/.*

    Втората команда е заради факта, че в директорията nextcloud има два скрити файла .htaccess и .user.ini, така на практика и те са членове на www-data:www-data. Да направим така, че като напишем в браузъра http://home.tlan.net/cloud да се отваря страницата на нашия облак nextcloud.

    # vi /etc/apache2/conf-available/nextcloud.conf Alias /cloud /home/www/nextcloud <Directory /home/www/nextcloud> AllowOverride None Options +Indexes +ExecCGI Order deny,allow Allow from all Require all granted </Directory>


    Да активираме промените

    # a2enconf nextcloud Enabling conf nextcloud. To activate the new configuration, you need to run: systemctl reload apache2


    Да рестартираме Apache, за да влязат промените в сила

    # service apache2 restart


    Да проверим какво сме направили, като напишем в браузъра http://home.tlan.net/cloud/

    Pic01

    И така работи. Сега да настроим самия NextCloud. За Username: admin За Password: adminpass За Директория за данни: /home/wwww/nextcloud/nextcloud-data За Database user: nextcloud За Database pass: P@ssc0de За Database name: nextcloud За Host: localhost И за накрая натискаме бутона Завършване на инсталацията. Автоматично горните условия ни карат да създадем директория

    # mkdir /home/www/nextcloud/nextcloud-data # chown www-data:www-data /home/www/nextcloud/nextcloud-data/


    Изчаква се достатъчно време и накрая се получава следния резултат:

    Pic02
    Pic03

    Натискаме бутона Към Nextcloud


    Pic04

    Горе вдясно на страницата има едно зъбно колело натискаме върху него:


    Pic05

    Избираме Настройки


    Pic06

    В дясната секция избираме Owerview, а в лявата секция ни показва грешките които трябва да изчистим. Първа грешка: • Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root. "Файлът .htaccess не работи. Силно се препоръчва да конфигурирате вашия уеб сървър, така че директорията с данни да не е достъпна повече, или да преместите директорията с данни извън корените на документа на уеб сървъра." За целта:

    # vi /etc/apache2/conf-available/nextcloud.conf Alias /cloud /home/www/nextcloud <Directory /home/www/nextcloud> AllowOverride All Options +Indexes +ExecCGI Order deny,allow Allow from all Require all granted </Directory>

    Променихме AllowOverride None на AllowOverride All. И ако рефрешнем страницата от браузъра грешката ще изчезне.


    # service apache2 restart

    Рестартирахме Apache за да влязат промените в сила Следващата грешка е: • The PHP memory limit is below the recommended value of 512MB. Много важен параметър. В зависимот какво желаете, указвате големината на файловете с които боравите. NextCloud фирмата препоръчва да е 512MB големината на файла. Лично аз предпочитам по големи. Пример: трансферирам си някакъв клип който съм снимал на облака. Клипа ми е 1GB примерно, така няма да мога да го кача. За целта слагам големината да е 2GB. Рядко се качват такива големи файлове, пък и големите файлове искат много време за трансфер.

    # vi /etc/php/7.3/apache2/php.ini upload_max_filesize = 2000M memory_limit = 2000M post_max_size = 2000M


    # service apache2 restart

    Наново рестартирахме Apache за да влязат промените в сила. И наново ако рефрешнем страницата в браузра ще видим, че и тази грешка изчезна. Следваща грешка: • MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read the documentation page about this. MySQL достъпва до базата на NextCloud но не поддържа 4-byte символи.

    # mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 347 Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show variables like 'innodb_file_format'; +-------------------------+-------------+ | Variable_name | Value | +-------------------------+-------------+ | innodb_file_format | Antelope | +-------------------------+-------------+ 1 row in set (0.00 sec)

    Формата на InnoDB е Antelope а трябва да е Barracuda. За целта:

    MariaDB [(none)]> SET GLOBAL innodb_file_format=Barracuda; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show variables like 'innodb_file_format'; +-------------------------+--------------+ | Variable_name | Value | +-------------------------+--------------+ | innodb_file_format | Barracuda | +-------------------------+--------------+ 1 row in set (0.00 sec)

    Сега вече е както трябва. MySQL трябва да поддържа InnoDB.

    MariaDB [(none)]> show variables like 'innodb_file_per_table'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | innodb_file_per_table | ON | +-----------------------------+-------+ 1 row in set (0.00 sec) MariaDB [(none)]> quit Bye


    Редактираме конфигурационния файл на MySQL

    # vi /etc/mysql/my.cnf [client-server] # Import all .cnf files from configuration directory !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mariadb.conf.d/ # Най-отдолу на файла слагаме: [mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1


    Рестартираме MySQL сървиса

    # systemctl restart mariadb.service


    Смяна на символите и съпоставяне в базата данни:

    /# mysql -u root -p Enter password: MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> quit Bye


    Следващата стъпка е да активираме mysql.utf8mb4 в config.php на nextcloud. За да се случи това, обаче трябва потребителя с който работим в Debian да е член на групата sudo.

    # apt install sudo # apt install usermode # usermod -a -G sudo cccp


    В случая потребителя е cccp. За да влезе всичко в сила рестартираме Debian

    # reboot


    Сега да активираме mysql.utf8mb4. Внимавайте, трябва да сте в Debian като потребител, член на групата sudo, а не като root. В моя случай ще влезна като cccp.

    cccp@home:~$ cd /home/www/nextcloud/ cccp@home:/home/www/nextcloud$ sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true" System config value mysql.utf8mb4 set to boolean true cccp@home:/home/www/nextcloud$ sudo -u www-data php occ maintenance:repair cccp@home:/home/www/nextcloud$ sudo service apache2 restart

    И ако обновим браузъра ще видим, че и тази грешка е поправена. Следващата е: • The "Strict-Transport-Security" HTTP header is not set to at least "15552000" seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips ↗.. Влезте наново като потребител root.

    # vi /etc/apache2/conf-available/nextcloud.conf Alias /nextcloud /home/www/nextcloud <Directory /home/www/nextcloud> AllowOverride All Options +Indexes +ExecCGI Order deny,allow Allow from all Require all granted </Directory> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule>


    Още е необходимо да е активиран и модула mod_headers в Apache.

    # a2enmod headers Enabling module headers.


    Рестартираме Apache и проверяваме в браузъра:

    # service apache2 restart

    Всичко е наред. Следваща грешка: • Your web server is not properly set up to resolve "/.well-known/caldav". Further information can be found in the documentation.

    # vi /etc/apache2/mods-available/ssl.conf # Веднага под <IfModule mod_ssl.c> се поставя следното: Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav


    Рестартираме Apache и грешката е оправена.

    # service apache2 restart


    Едно много важно уточнение: Когато дефинирах Allis-ите, вместо /nextcloud, бях оставил само /cloud. След това в: /etc/apache2/mods-available/ssl.conf добавях редовете: Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav Проблема е, че вместо /nextcloud трябваше да е /cloud


    Следващия проблем е: • No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the documentation. След преглед на документацията:

    # apt install php-apcu # vi /home/www/nextcloud/config/config.php <?php $CONFIG = array ( 'instanceid' => 'ocj94w1yllx5', 'passwordsalt' => 'U4C7p8ClkTOZ8cf2mi4GY5LHpYGXD0', 'secret' => '31JLJxBYapYbSTVEEVmiCaYd9Z8+yKEpNfDu1F7jXOCfEmJs', 'trusted_domains' => array ( 0 => 'home.tlan.net', ), 'datadirectory' => '/home/www/nextcloud/nextcloud-data', 'dbtype' => 'mysql', 'version' => '16.0.2.1', 'overwrite.cli.url' => 'https://home.tlan.net/cloud', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => 'nextcloud', 'dbpassword' => 'P@ssc0de', 'installed' => true, 'mysql.utf8mb4' => true, 'maintenance' => false, 'memcache.local' => '\OC\Memcache\APCu', ); # service apache2 restart

    Обновяваме страницата в браузъра и грешката е оправена. Следващата грешка е: • This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them. - intl - imagick. Проблема е в това, че няма инсталирани някои модули на PHP. Необходими модули са: php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring php7.3-intl php-imagick php7.3-xml php7.3-zip. В случая липсват php7.3-intl и php-imagick. Бих препоръчал да се провери кои модули в момента съществуват.

    # dpkg -l php*


    Всички останали са налице, липсват само гореспоменатите два модула, да ги инсталираме:

    # apt install php7.3-intl php-imagick


    Рестартираме Apache

    # service apache2 restart


    Обновяваме страницата в браузъра да проверим за грешки. Всичко е наред. За накрая ни предлага: Проверете сигурността на Nextcloud като заявите сканиране ↗. Цъкаме с мишката върху линка като заявите сканиране. Отваря се следната страница:

    Pic07

    Натискаме върху бутона Scan. Изчакваме определено време и в крайна сметка се получава следното:

    Pic08

    С една малка забележка:


    Pic09

    Това е така защото когато създавахме /etc/apache2/conf-available/nextcloud.conf ползвахме алиаси Alias /nextcloud /home/www/nextcloud. Оправя се ако бяхме създали файл /etc/apache2/sites-available/nextcloud.conf и вътре не слагаме никакви алиаси. Това не е проблем и го оставяме така. В новите версии на NextCloud има изменения, разбира се и нови грешки. Тука ще покажа някои нови грешки и как се оправят. • Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this. • mounts.storage_id • mounts.root_id • mounts.mount_id Проблема се рещава чрез:

    /home/www/nextcloud$ sudo -u www-data php occ db:convert-filecache-bigint Following columns will be updated: * mounts.storage_id * mounts.root_id * mounts.mount_id This can take up to hours, depending on the number of files in your instance! Continue with the conversion (y/n)? [n] y


    Следваща грешка: • The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running "occ db:add-missing-indices" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster. • Missing index "calendarobject_calid_index" in table "oc_calendarobjects_props". • Missing index "schedulobj_principuri_index" in table "oc_schedulingobjects". Поправя се с:

    /home/www/nextcloud$ sudo -u www-data php occ db:add-missing-indices Check indices of the share table. Check indices of the filecache table. Check indices of the twofactor_providers table. Check indices of the login_flow_v2 table. Check indices of the whats_new table. Check indices of the cards table. Check indices of the cards_properties table. Check indices of the calendarobjects_props table. Adding calendarobject_calid_index index to the calendarobjects_props table, this can take some time... calendarobjects_props table updated successfully. Check indices of the schedulingobjects table. Adding schedulobj_principuri_index index to the schedulingobjects table, this can take some time... schedulingobjects table updated successfully. /home/www/nextcloud$ sudo service apache2 restart


    Сега бих дал много примери, но няма как да се обхване всичко. За целта както и преди ползваме Google!!!