Nextcloud Client Server Hardening and Security Part-1

Nextcloud Client Server Hardening and Security

Setelah nextcloud download di official web dan terinstal. Ada beberapa tahapan dalam nextcloud security hardening agar aman dan terhindar dari hacker. Dan hal ini juga merupakan security hardening yang memang di rekomendasikan dari aplikasi nextcloud sendiri. Rekomendasi hardening ada pada menu settings > overview. Jika memang ada hal yang perlu di hardening dan merupakan critical maka akan tampil dan bentu warning berwarna kuning.

Dalam gambar dibawah ini, sobat ambil contoh 2 warning dari nextcloud. Yang pertama adalah peringatan dimana database mysql yang digunakan tidak support 4 byte karakter yang biasa digunakan emoji. Peringatan kedua adalah "Strict-Transport-Security" harus 15552000, nanti akan dijelaskan apa itu "Strict-Transport-Security" dan bagaimana langkahnya pada part 2 ya.

Nextcloud Client Server Hardening and Security

Enabling MySQL 4-byte support

Pastikan untuk melakukan backup database sebelum melakukan langkah ini. Kesalahan sedikit dapat berakibat aplikasi tidak dapat bekerja dengan baik

Untuk menggunakan Emoji (smilies berbasis teks) di server Nextcloud dengan database MySQL, penginstalan perlu diubah sedikit. Pada langkah ini secara default jika menggunakan database mysql, untuk jenis database berbeda-beda tergantung pada saat instalasi pertama kalinya, ada yang menggunakan mysql dan ada juga yang menggunakan mariadb, kalo saya pribadi kebetulan menggunakan mariadb. Untuk mariadb, dapat menjalankan step mariadb terlebih dahulu (disesuaikan versinya) kemudian dilanjutkan ke langkah 5 dalam proses ini ya.

  1. Pastikan database diatur untuk menggunakan format file Barracuda InnoDB, Login ke database mysql Anda dan jalankan:
  2. mysql> show variables like 'innodb_file_format';
    +--------------------+-----------+
    | Variable_name      | Value     |
    +--------------------+-----------+
    | innodb_file_format | Barracuda |
    +--------------------+-----------+
    1 row in set (0.00 sec)
    
  3. Jika innodb_file_format sebagai 'Antelope', migrasi format file menggunakan:
  4. mysql> SET GLOBAL innodb_file_format=Barracuda;
    
  5. Pastikan InnoDB settings sudah diset untuk versi MySQL 8.0 dan terbaru
  6. [mysqld]
    innodb_file_per_table=1
    
    mysql> show variables like 'innodb_file_per_table';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | ON    |
    +-----------------------+-------+
    1 row in set (0.00 sec)
    
  7. Pastikan InnoDB settings sudah diset untuk versi sebelum MySQL 8.0
  8. [mysqld]
    innodb_large_prefix=true
    innodb_file_format=barracuda
    innodb_file_per_table=1
    
  9. Buka shell atau terminalnya, dan lakukan maintenance mode nexcloudnya. Untuk letak pastinya dari direktori "nextcloud" akan berbeda-beda tergantung saat instalasinya. Kalo saya pribadi kebetulan instalasinya ke subfolder. Jadinya default direktori Nextcloud itu sendiri beda dalam path /var/www/html/nextcloud/nextcloud. Dalam direktori tersebutlah file occ dan folder config berada.
  10. $ cd /var/www/html/nextcloud/nextcloud
    $ sudo -u www-data php occ maintenance:mode --on
    
  11. Restart mysql services
  12. Lakukan perubahan pada database character setnya menggunakan perintah
  13. $ sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
    
  14. Lakukan perubahan mysql.utf8mb4 dalam config nextcloud menjadi "true"
  15. ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  16. Konversikan semua tabel dari nextcloud ke dalam format baru dengan menggunakan perintah "repair". Pastikan ketika menjalan perintah dibawah ini, pointer berada dalam folder /var/www/html/nextcloud/nextcloud, dimana file occ berada
  17. $ sudo -u www-data php occ maintenance:repair
    
     - Repair MySQL collation
         - Change row format for oc_accounts ...
         - Change collation for oc_accounts ...
         - Change row format for oc_activity ...
         - Change collation for oc_activity ...
         - Change row format for oc_activity_mq ...
         - Change collation for oc_activity_mq ...
         - Change row format for oc_addressbookchanges ...
         - Change collation for oc_addressbookchanges ...
         - Change row format for oc_addressbooks ...
         - Change collation for oc_addressbooks ...
         - Change row format for oc_appconfig ...
         - Change collation for oc_appconfig ...
         - Change row format for oc_authtoken ...
         - Change collation for oc_authtoken ...
         - Change row format for oc_bruteforce_attempts ...
         - Change collation for oc_bruteforce_attempts ...
         - Change row format for oc_calendar_invitations ...
         - Change collation for oc_calendar_invitations ...
         - Change row format for oc_calendar_reminders ...
         - Change collation for oc_calendar_reminders ...
         - Change row format for oc_calendar_resources ...
         - Change collation for oc_calendar_resources ...
         - Change row format for oc_calendar_resources_md ...
         - Change collation for oc_calendar_resources_md ...
         - Change row format for oc_calendar_rooms ...
         - Change collation for oc_calendar_rooms ...
         - Change row format for oc_calendar_rooms_md ...
         - Change collation for oc_calendar_rooms_md ...
         - Change row format for oc_calendarchanges ...
         - Change collation for oc_calendarchanges ...
         - Change row format for oc_calendarobjects ...
         - Change collation for oc_calendarobjects ...
         - Change row format for oc_calendarobjects_props ...
         - Change collation for oc_calendarobjects_props ...
         - Change row format for oc_calendars ...
         - Change collation for oc_calendars ...
         - Change row format for oc_calendarsubscriptions ...
         - Change collation for oc_calendarsubscriptions ...
         - Change row format for oc_cards ...
         - Change collation for oc_cards ...
         - Change row format for oc_cards_properties ...
         - Change collation for oc_cards_properties ...
         - Change row format for oc_collres_accesscache ...
         - Change collation for oc_collres_accesscache ...
         - Change row format for oc_collres_collections ...
         - Change collation for oc_collres_collections ...
         - Change row format for oc_collres_resources ...
         - Change collation for oc_collres_resources ...
         - Change row format for oc_comments ...
         - Change collation for oc_comments ...
         - Change row format for oc_comments_read_markers ...
         - Change collation for oc_comments_read_markers ...
         - Change row format for oc_credentials ...
         - Change collation for oc_credentials ...
         - Change row format for oc_dav_cal_proxy ...
         - Change collation for oc_dav_cal_proxy ...
         - Change row format for oc_dav_shares ...
         - Change collation for oc_dav_shares ...
         - Change row format for oc_direct_edit ...
         - Change collation for oc_direct_edit ...
         - Change row format for oc_directlink ...
         - Change collation for oc_directlink ...
         - Change row format for oc_file_locks ...
         - Change collation for oc_file_locks ...
         - Change row format for oc_filecache ...
         - Change collation for oc_filecache ...
         - Change row format for oc_filecache_extended ...
         - Change collation for oc_filecache_extended ...
         - Change row format for oc_files_trash ...
         - Change collation for oc_files_trash ...
         - Change row format for oc_flow_checks ...
         - Change collation for oc_flow_checks ...
         - Change row format for oc_flow_operations ...
         - Change collation for oc_flow_operations ...
         - Change row format for oc_flow_operations_scope ...
         - Change collation for oc_flow_operations_scope ...
         - Change row format for oc_group_admin ...
         - Change collation for oc_group_admin ...
         - Change row format for oc_group_user ...
         - Change collation for oc_group_user ...
         - Change row format for oc_groups ...
         - Change collation for oc_groups ...
         - Change row format for oc_jobs ...
         - Change collation for oc_jobs ...
         - Change row format for oc_login_flow_v2 ...
         - Change collation for oc_login_flow_v2 ...
         - Change row format for oc_mail_accounts ...
         - Change collation for oc_mail_accounts ...
         - Change row format for oc_mail_aliases ...
         - Change collation for oc_mail_aliases ...
         - Change row format for oc_mail_attachments ...
         - Change collation for oc_mail_attachments ...
         - Change row format for oc_mail_classifiers ...
         - Change collation for oc_mail_classifiers ...
         - Change row format for oc_mail_coll_addresses ...
         - Change collation for oc_mail_coll_addresses ...
         - Change row format for oc_mail_mailboxes ...
         - Change collation for oc_mail_mailboxes ...
         - Change row format for oc_mail_messages ...
         - Change collation for oc_mail_messages ...
         - Change row format for oc_mail_recipients ...
         - Change collation for oc_mail_recipients ...
         - Change row format for oc_migrations ...
         - Change collation for oc_migrations ...
         - Change row format for oc_mimetypes ...
         - Change collation for oc_mimetypes ...
         - Change row format for oc_mounts ...
         - Change collation for oc_mounts ...
         - Change row format for oc_notifications ...
         - Change collation for oc_notifications ...
         - Change row format for oc_notifications_pushtokens ...
         - Change collation for oc_notifications_pushtokens ...
         - Change row format for oc_oauth2_access_tokens ...
         - Change collation for oc_oauth2_access_tokens ...
         - Change row format for oc_oauth2_clients ...
         - Change collation for oc_oauth2_clients ...
         - Change row format for oc_preferences ...
         - Change collation for oc_preferences ...
         - Change row format for oc_privacy_admins ...
         - Change collation for oc_privacy_admins ...
         - Change row format for oc_properties ...
         - Change collation for oc_properties ...
         - Change row format for oc_recent_contact ...
         - Change collation for oc_recent_contact ...
         - Change row format for oc_richdocuments_assets ...
         - Change collation for oc_richdocuments_assets ...
         - Change row format for oc_richdocuments_direct ...
         - Change collation for oc_richdocuments_direct ...
         - Change row format for oc_richdocuments_wopi ...
         - Change collation for oc_richdocuments_wopi ...
         - Change row format for oc_schedulingobjects ...
         - Change collation for oc_schedulingobjects ...
         - Change row format for oc_share ...
         - Change collation for oc_share ...
         - Change row format for oc_share_external ...
         - Change collation for oc_share_external ...
         - Change row format for oc_storages ...
         - Change collation for oc_storages ...
         - Change row format for oc_systemtag ...
         - Change collation for oc_systemtag ...
         - Change row format for oc_systemtag_group ...
         - Change collation for oc_systemtag_group ...
         - Change row format for oc_systemtag_object_mapping ...
         - Change collation for oc_systemtag_object_mapping ...
         - Change row format for oc_talk_bridges ...
         - Change collation for oc_talk_bridges ...
         - Change row format for oc_talk_commands ...
         - Change collation for oc_talk_commands ...
         - Change row format for oc_talk_guests ...
         - Change collation for oc_talk_guests ...
         - Change row format for oc_talk_participants ...
         - Change collation for oc_talk_participants ...
         - Change row format for oc_talk_rooms ...
         - Change collation for oc_talk_rooms ...
         - Change row format for oc_talk_signaling ...
         - Change collation for oc_talk_signaling ...
         - Change row format for oc_text_documents ...
         - Change collation for oc_text_documents ...
         - Change row format for oc_text_sessions ...
         - Change collation for oc_text_sessions ...
         - Change row format for oc_text_steps ...
         - Change collation for oc_text_steps ...
         - Change row format for oc_trusted_servers ...
         - Change collation for oc_trusted_servers ...
         - Change row format for oc_twofactor_backupcodes ...
         - Change collation for oc_twofactor_backupcodes ...
         - Change row format for oc_twofactor_providers ...
         - Change collation for oc_twofactor_providers ...
         - Change row format for oc_user_status ...
         - Change collation for oc_user_status ...
         - Change row format for oc_user_transfer_owner ...
         - Change collation for oc_user_transfer_owner ...
         - Change row format for oc_users ...
         - Change collation for oc_users ...
         - Change row format for oc_vcategory ...
         - Change collation for oc_vcategory ...
         - Change row format for oc_vcategory_to_object ...
         - Change collation for oc_vcategory_to_object ...
         - Change row format for oc_webauthn ...
         - Change collation for oc_webauthn ...
         - Change row format for oc_whats_new ...
         - Change collation for oc_whats_new ...
         - Change row format for oc_federated_reshares ...
         - Change collation for oc_federated_reshares ...
     - Repair mime types
     - Clean tags and favorites
         - 0 tags of deleted users have been removed.
         - 0 tags for delete files have been removed.
         - 0 tag entries for deleted tags have been removed.
         - 0 tags with no entries have been removed.
     - Repair invalid shares
     - Move .step file of updater to backup location
     - Fix potential broken mount points
         - No mounts updated
     - Add log rotate job
     - Clear frontend caches
         - Image cache cleared
         - SCSS cache cleared
         - JS cache cleared
     - Clear every generated avatar on major updates
     - Add preview background cleanup job
     - Queue a one-time job to cleanup old backups of the updater
     - Cleanup invalid photocache files for carddav
     - Add background job to cleanup login flow v2 tokens
     - Remove potentially over exposing share links
         - No need to remove link shares.
     - Clear access cache of projects
     - Reset generated avatar flag
     - Keep legacy encryption enabled
     - Check encryption key format
     - Remove old dashboard app config data
     - Update name of the stored view
     - Fix component of birthday calendars
         - 1 birthday calendars updated.
     - Regenerating birthday calendars to use new icons and fix old birthday events without year
         - Adding background jobs to regenerate birthday calendar
     - Fix broken values of calendar objects
        0 [->--------------------------]
     - Registering building of calendar search index as background job
         - Add background job
     - Registering background jobs to update cache for webcal calendars
         - Added 0 background jobs to update webcal calendars
     - Registering building of calendar reminder index as background job
         - Add background job
     - Clean up orphan event and contact data
         - 0 events without a calendar have been cleaned up
         - 0 properties without an events have been cleaned up
         - 0 changes without a calendar have been cleaned up
         - 0 cached events without a calendar subscription have been cleaned up
         - 0 changes without a calendar subscription have been cleaned up
         - 0 contacts without an addressbook have been cleaned up
         - 0 properties without a contact have been cleaned up
         - 0 changes without an addressbook have been cleaned up
     - Remove activity entries of private events
         - Removed 0 activity entries
     - Fix the share type of guest shares when migrating from ownCloud
     - Copy the share password into the dedicated column
     - Set existing shares as accepted
     - Purify and migrate collected mail addresses
        0 [----->----------------------]
     - Insert background jobs for all accounts
        0 [--------->------------------]
     - Make Mail itinerary extractor executable
     - Migrate Mail provisioning config from config.php to the database
         - No old config found
     - Create or update provisioned Mail accounts
         - No Mail provisioning config set
     - Update OAuth token expiration times
     - Create help command
     - Invalidate access cache for projects conversation provider
     - Switches from default updater server to the customer one if a valid subscription is available
     - Send an admin notification if monthly report is disabled
     - Add background job to check for backup codes
     - Populating added database structures for workflows
    
  18. Jika sudah menampilkan replay diatas, berarti proses berhasil, langkah selanjutnya hanya tinggal menonaktifkan maintenance modenya
  19. $ sudo -u www-data php occ maintenance:mode --off
    

MariaDB 10.3 dan terbaru

  1. Pastikan pengaturan InnoDB berikut di server MariaDB:
  2. [mysqld]
    innodb_file_per_table=1
    
  3. Restart MariaDB server
  4. Lanjut ke langkah 5 dari Mysql

MariaDB 10.2 dan sebelumnya

Untuk step ini menggunakan akun yang memiliki hak akses penuh ke database. Karena akan melakukan perubahan terhadap tabel database. Dan pastikan database sudah dibackup dahulu sebelumnya
  1. Pastikan pengaturan InnoDB berikut di server MariaDB yang biasanya berlokasi di /etc/mysql
  2. vi /etc/mysql/mariadb.conf.d/50-server.cnf
    
    [mysqld]
    innodb_large_prefix=true
    innodb_file_format=barracuda
    innodb_file_per_table=1
    
  3. Restart MariaDB server
  4. systemctl restart mariadb
    
  5. Pada langkah ini kita mencari tahu apakah database nextcloud databasenya sudah dalam format barracuda apa belum.
  6. MariaDB> SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";
    
    +-----------------------------------------+-------+-------------+
    | NAME                                    | SPACE | FILE_FORMAT |
    +-----------------------------------------+-------+-------------+
    | nextclouddb/oc_accounts                 |    33 | Antelope    |
    | nextclouddb/oc_activity                 |   116 | Antelope    |
    | nextclouddb/oc_activity_mq              |   118 | Antelope    |
    | nextclouddb/oc_addressbookchanges       |    85 | Antelope    |
    | nextclouddb/oc_addressbooks             |    74 | Antelope    |
    | nextclouddb/oc_appconfig                |     7 | Antelope    |
    | nextclouddb/oc_authtoken                |    56 | Antelope    |
    | nextclouddb/oc_bruteforce_attempts      |    36 | Antelope    |
    | nextclouddb/oc_calendar_invitations     |    93 | Antelope    |
    | nextclouddb/oc_calendar_reminders       |   106 | Antelope    |
    | nextclouddb/oc_calendar_resources       |    91 | Antelope    |
    | nextclouddb/oc_calendar_resources_md    |   103 | Antelope    |
    | nextclouddb/oc_calendar_rooms           |    92 | Antelope    |
    | nextclouddb/oc_calendar_rooms_md        |   104 | Antelope    |
    | nextclouddb/oc_calendarchanges          |    94 | Antelope    |
    | nextclouddb/oc_calendarobjects          |    95 | Antelope    |
    | nextclouddb/oc_calendarobjects_props    |    96 | Antelope    |
    | nextclouddb/oc_calendars                |    78 | Antelope    |
    | nextclouddb/oc_calendarsubscriptions    |   102 | Antelope    |
    | nextclouddb/oc_cards                    |    98 | Antelope    |
    | nextclouddb/oc_cards_properties         |    82 | Antelope    |
    | nextclouddb/oc_collres_accesscache      |    64 | Antelope    |
    | nextclouddb/oc_collres_collections      |    59 | Antelope    |
    | nextclouddb/oc_collres_resources        |    60 | Antelope    |
    | nextclouddb/oc_comments                 |    37 | Antelope    |
    | nextclouddb/oc_comments_read_markers    |    29 | Antelope    |
    | nextclouddb/oc_credentials              |    30 | Antelope    |
    | nextclouddb/oc_dav_cal_proxy            |   105 | Antelope    |
    | nextclouddb/oc_dav_shares               |    89 | Antelope    |
    | nextclouddb/oc_direct_edit              |    68 | Antelope    |
    | nextclouddb/oc_directlink               |    90 | Antelope    |
    | nextclouddb/oc_federated_reshares       |   109 | Antelope    |
    | nextclouddb/oc_file_locks               |    38 | Antelope    |
    | nextclouddb/oc_filecache                |    11 | Antelope    |
    | nextclouddb/oc_filecache_extended       |    65 | Antelope    |
    | nextclouddb/oc_files_trash              |   119 | Antelope    |
    | nextclouddb/oc_flow_checks              |   122 | Antelope    |
    | nextclouddb/oc_flow_operations          |   123 | Antelope    |
    | nextclouddb/oc_flow_operations_scope    |   124 | Antelope    |
    | nextclouddb/oc_group_admin              |    13 | Antelope    |
    | nextclouddb/oc_group_user               |    12 | Antelope    |
    | nextclouddb/oc_groups                   |    66 | Antelope    |
    | nextclouddb/oc_jobs                     |    39 | Antelope    |
    | nextclouddb/oc_login_flow_v2            |    62 | Antelope    |
    | nextclouddb/oc_mail_accounts            |   154 | Antelope    |
    | nextclouddb/oc_mail_aliases             |   134 | Antelope    |
    | nextclouddb/oc_mail_attachments         |   155 | Antelope    |
    | nextclouddb/oc_mail_classifiers         |   150 | Antelope    |
    | nextclouddb/oc_mail_coll_addresses      |   133 | Antelope    |
    | nextclouddb/oc_mail_mailboxes           |   156 | Antelope    |
    | nextclouddb/oc_mail_messages            |   153 | Antelope    |
    | nextclouddb/oc_mail_recipients          |   146 | Antelope    |
    | nextclouddb/oc_migrations               |     4 | Antelope    |
    | nextclouddb/oc_mimetypes                |    10 | Antelope    |
    | nextclouddb/oc_mounts                   |    40 | Antelope    |
    | nextclouddb/oc_notifications            |   125 | Antelope    |
    | nextclouddb/oc_notifications_pushtokens |   126 | Antelope    |
    | nextclouddb/oc_oauth2_access_tokens     |   108 | Antelope    |
    | nextclouddb/oc_oauth2_clients           |   107 | Antelope    |
    | nextclouddb/oc_preferences              |    15 | Antelope    |
    | nextclouddb/oc_privacy_admins           |   121 | Antelope    |
    | nextclouddb/oc_properties               |    42 | Antelope    |
    | nextclouddb/oc_recent_contact           |   127 | Antelope    |
    | nextclouddb/oc_richdocuments_assets     |   130 | Antelope    |
    | nextclouddb/oc_richdocuments_direct     |   129 | Antelope    |
    | nextclouddb/oc_richdocuments_wopi       |   131 | Antelope    |
    | nextclouddb/oc_schedulingobjects        |    81 | Antelope    |
    | nextclouddb/oc_share                    |    58 | Antelope    |
    | nextclouddb/oc_share_external           |    70 | Antelope    |
    | nextclouddb/oc_storages                 |     8 | Antelope    |
    | nextclouddb/oc_systemtag                |    44 | Antelope    |
    | nextclouddb/oc_systemtag_group          |    45 | Antelope    |
    | nextclouddb/oc_systemtag_object_mapping |    46 | Antelope    |
    | nextclouddb/oc_talk_bridges             |   189 | Antelope    |
    | nextclouddb/oc_talk_commands            |   181 | Antelope    |
    | nextclouddb/oc_talk_guests              |   172 | Antelope    |
    | nextclouddb/oc_talk_participants        |   186 | Antelope    |
    | nextclouddb/oc_talk_rooms               |   187 | Antelope    |
    | nextclouddb/oc_talk_signaling           |   164 | Antelope    |
    | nextclouddb/oc_text_documents           |    71 | Antelope    |
    | nextclouddb/oc_text_sessions            |    72 | Antelope    |
    | nextclouddb/oc_text_steps               |    73 | Antelope    |
    | nextclouddb/oc_trusted_servers          |   115 | Antelope    |
    | nextclouddb/oc_twofactor_backupcodes    |   114 | Antelope    |
    | nextclouddb/oc_twofactor_providers      |    52 | Antelope    |
    | nextclouddb/oc_user_status              |   110 | Antelope    |
    | nextclouddb/oc_user_transfer_owner      |   120 | Antelope    |
    | nextclouddb/oc_users                    |    49 | Antelope    |
    | nextclouddb/oc_vcategory                |    47 | Antelope    |
    | nextclouddb/oc_vcategory_to_object      |    48 | Antelope    |
    | nextclouddb/oc_webauthn                 |    69 | Antelope    |
    | nextclouddb/oc_whats_new                |    53 | Antelope    |
    +-----------------------------------------+-------+-------------+
    92 rows in set (0.00 sec)
    
  7. Jika format file adalah "Barracuda" untuk setiap tabel, tidak ada hal yang harus dilakukan. Lanjutkan dengan instruksi MySQL di langkah 5
  8. Untuk berformat "Antelope", eksekusi dengan perintah dibawah ini untuk migrasi ke "Barracuda"
  9. MariaDB> USE INFORMATION_SCHEMA;
    MariaDB> SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` ROW_FORMAT=DYNAMIC;") AS MySQLCMD FROM TABLES WHERE TABLE_SCHEMA = "nextcloud";
    
    +-----------------------------------------------------------------------------+
    | MySQLCMD                                                                    |
    +-----------------------------------------------------------------------------+
    | ALTER TABLE `nextclouddb`.`oc_accounts` ROW_FORMAT=DYNAMIC;                 |
    | ALTER TABLE `nextclouddb`.`oc_activity` ROW_FORMAT=DYNAMIC;                 |
    | ALTER TABLE `nextclouddb`.`oc_activity_mq` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_addressbookchanges` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_addressbooks` ROW_FORMAT=DYNAMIC;             |
    | ALTER TABLE `nextclouddb`.`oc_appconfig` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_authtoken` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_bruteforce_attempts` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_calendar_invitations` ROW_FORMAT=DYNAMIC;     |
    | ALTER TABLE `nextclouddb`.`oc_calendar_reminders` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_calendar_resources` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_calendar_resources_md` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_calendar_rooms` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_calendar_rooms_md` ROW_FORMAT=DYNAMIC;        |
    | ALTER TABLE `nextclouddb`.`oc_calendarchanges` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_calendarobjects` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_calendarobjects_props` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_calendars` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_calendarsubscriptions` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_cards` ROW_FORMAT=DYNAMIC;                    |
    | ALTER TABLE `nextclouddb`.`oc_cards_properties` ROW_FORMAT=DYNAMIC;         |
    | ALTER TABLE `nextclouddb`.`oc_collres_accesscache` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_collres_collections` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_collres_resources` ROW_FORMAT=DYNAMIC;        |
    | ALTER TABLE `nextclouddb`.`oc_comments` ROW_FORMAT=DYNAMIC;                 |
    | ALTER TABLE `nextclouddb`.`oc_comments_read_markers` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_credentials` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_dav_cal_proxy` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_dav_shares` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_direct_edit` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_directlink` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_federated_reshares` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_file_locks` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_filecache` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_filecache_extended` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_files_trash` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_flow_checks` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_flow_operations` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_flow_operations_scope` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_group_admin` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_group_user` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_groups` ROW_FORMAT=DYNAMIC;                   |
    | ALTER TABLE `nextclouddb`.`oc_jobs` ROW_FORMAT=DYNAMIC;                     |
    | ALTER TABLE `nextclouddb`.`oc_login_flow_v2` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_mail_accounts` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_mail_aliases` ROW_FORMAT=DYNAMIC;             |
    | ALTER TABLE `nextclouddb`.`oc_mail_attachments` ROW_FORMAT=DYNAMIC;         |
    | ALTER TABLE `nextclouddb`.`oc_mail_classifiers` ROW_FORMAT=DYNAMIC;         |
    | ALTER TABLE `nextclouddb`.`oc_mail_coll_addresses` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_mail_mailboxes` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_mail_messages` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_mail_recipients` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_migrations` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_mimetypes` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_mounts` ROW_FORMAT=DYNAMIC;                   |
    | ALTER TABLE `nextclouddb`.`oc_notifications` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_notifications_pushtokens` ROW_FORMAT=DYNAMIC; |
    | ALTER TABLE `nextclouddb`.`oc_oauth2_access_tokens` ROW_FORMAT=DYNAMIC;     |
    | ALTER TABLE `nextclouddb`.`oc_oauth2_clients` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_preferences` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_privacy_admins` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_properties` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_recent_contact` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_richdocuments_assets` ROW_FORMAT=DYNAMIC;     |
    | ALTER TABLE `nextclouddb`.`oc_richdocuments_direct` ROW_FORMAT=DYNAMIC;     |
    | ALTER TABLE `nextclouddb`.`oc_richdocuments_wopi` ROW_FORMAT=DYNAMIC;       |
    | ALTER TABLE `nextclouddb`.`oc_schedulingobjects` ROW_FORMAT=DYNAMIC;        |
    | ALTER TABLE `nextclouddb`.`oc_share` ROW_FORMAT=DYNAMIC;                    |
    | ALTER TABLE `nextclouddb`.`oc_share_external` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_storages` ROW_FORMAT=DYNAMIC;                 |
    | ALTER TABLE `nextclouddb`.`oc_systemtag` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_systemtag_group` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_systemtag_object_mapping` ROW_FORMAT=DYNAMIC; |
    | ALTER TABLE `nextclouddb`.`oc_talk_bridges` ROW_FORMAT=DYNAMIC;             |
    | ALTER TABLE `nextclouddb`.`oc_talk_commands` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_talk_guests` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_talk_participants` ROW_FORMAT=DYNAMIC;        |
    | ALTER TABLE `nextclouddb`.`oc_talk_rooms` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_talk_signaling` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_text_documents` ROW_FORMAT=DYNAMIC;           |
    | ALTER TABLE `nextclouddb`.`oc_text_sessions` ROW_FORMAT=DYNAMIC;            |
    | ALTER TABLE `nextclouddb`.`oc_text_steps` ROW_FORMAT=DYNAMIC;               |
    | ALTER TABLE `nextclouddb`.`oc_trusted_servers` ROW_FORMAT=DYNAMIC;          |
    | ALTER TABLE `nextclouddb`.`oc_twofactor_backupcodes` ROW_FORMAT=DYNAMIC;    |
    | ALTER TABLE `nextclouddb`.`oc_twofactor_providers` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_user_status` ROW_FORMAT=DYNAMIC;              |
    | ALTER TABLE `nextclouddb`.`oc_user_transfer_owner` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_users` ROW_FORMAT=DYNAMIC;                    |
    | ALTER TABLE `nextclouddb`.`oc_vcategory` ROW_FORMAT=DYNAMIC;                |
    | ALTER TABLE `nextclouddb`.`oc_vcategory_to_object` ROW_FORMAT=DYNAMIC;      |
    | ALTER TABLE `nextclouddb`.`oc_webauthn` ROW_FORMAT=DYNAMIC;                 |
    | ALTER TABLE `nextclouddb`.`oc_whats_new` ROW_FORMAT=DYNAMIC;                |
    +-----------------------------------------------------------------------------+
    92 rows in set (0.00 sec)
    
  10. Jika proses migrasi berjalan dengan lancar, dapat dilanjutkan dengan instruksi MySQL di langkah 5
  11. Namun, ada kemungkinan bahwa beberapa tabel tidak dapat diubah. Operasi gagal dengan: "ERROR 1478 (HY000): Mesin penyimpanan tabel 'InnoDB' tidak mendukung opsi buat 'ROW_FORMAT'". Dalam hal ini tabel yang gagal memiliki nilai SPACE 0. Ini pada dasarnya berarti bahwa tabel tersebut tidak memiliki file indeks sendiri, yang diperlukan untuk format Barracuda. Ini dapat diselesaikan dengan perintah SQL yang sedikit berbeda:
  12. MariaDB> ALTER TABLE `nextcloud`.`oc_tablename` ROW_FORMAT=DYNAMIC, ALGORITHM=COPY;
    
  13. Isikan `oc_tablename` dengan nama tabel yang gagal dieksekusi sebelumnya, setelah dapat dilanjutkan dengan instruksi MySQL di langkah 5

Post a Comment for "Nextcloud Client Server Hardening and Security Part-1"