diff --git a/12.0/404.html b/12.0/404.html index 70e4b713..9dac4825 100644 --- a/12.0/404.html +++ b/12.0/404.html @@ -3314,14 +3314,6 @@ Upgrade Seafile Cluster - - - - - - - - @@ -3336,11 +3328,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/account/index.html b/12.0/administration/account/index.html index 862c4349..63627ed7 100644 --- a/12.0/administration/account/index.html +++ b/12.0/administration/account/index.html @@ -3417,14 +3417,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3439,11 +3431,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/auditing/index.html b/12.0/administration/auditing/index.html index 1c212187..924935e4 100644 --- a/12.0/administration/auditing/index.html +++ b/12.0/administration/auditing/index.html @@ -3342,14 +3342,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3364,11 +3356,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/backup_recovery/index.html b/12.0/administration/backup_recovery/index.html index d25c9e97..88100cc4 100644 --- a/12.0/administration/backup_recovery/index.html +++ b/12.0/administration/backup_recovery/index.html @@ -3551,14 +3551,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3573,11 +3565,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/clean_database/index.html b/12.0/administration/clean_database/index.html index e8d53a84..1c891286 100644 --- a/12.0/administration/clean_database/index.html +++ b/12.0/administration/clean_database/index.html @@ -3468,14 +3468,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3490,11 +3482,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/export_report/index.html b/12.0/administration/export_report/index.html index 9bfb6e49..aada6b8f 100644 --- a/12.0/administration/export_report/index.html +++ b/12.0/administration/export_report/index.html @@ -3399,14 +3399,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3421,11 +3413,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/index.html b/12.0/administration/index.html index 59f01e9d..9bf2fef1 100644 --- a/12.0/administration/index.html +++ b/12.0/administration/index.html @@ -3426,14 +3426,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3448,11 +3440,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/logs/index.html b/12.0/administration/logs/index.html index c965c363..8e69a05d 100644 --- a/12.0/administration/logs/index.html +++ b/12.0/administration/logs/index.html @@ -3390,14 +3390,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3412,11 +3404,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/seafile_fsck/index.html b/12.0/administration/seafile_fsck/index.html index 63278cfa..86a7b5c5 100644 --- a/12.0/administration/seafile_fsck/index.html +++ b/12.0/administration/seafile_fsck/index.html @@ -3423,14 +3423,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3445,11 +3437,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/seafile_gc/index.html b/12.0/administration/seafile_gc/index.html index 9d520077..4df71996 100644 --- a/12.0/administration/seafile_gc/index.html +++ b/12.0/administration/seafile_gc/index.html @@ -3432,14 +3432,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3454,11 +3446,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/security_features/index.html b/12.0/administration/security_features/index.html index cb70748d..32ccd1b0 100644 --- a/12.0/administration/security_features/index.html +++ b/12.0/administration/security_features/index.html @@ -3417,14 +3417,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3439,11 +3431,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/administration/two_factor_authentication/index.html b/12.0/administration/two_factor_authentication/index.html index 1b43fa63..d7eec540 100644 --- a/12.0/administration/two_factor_authentication/index.html +++ b/12.0/administration/two_factor_authentication/index.html @@ -3342,14 +3342,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3364,11 +3356,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/changelog-for-seafile-professional-server-old/index.html b/12.0/changelog/changelog-for-seafile-professional-server-old/index.html index 327ed298..1d8bfc61 100644 --- a/12.0/changelog/changelog-for-seafile-professional-server-old/index.html +++ b/12.0/changelog/changelog-for-seafile-professional-server-old/index.html @@ -3321,14 +3321,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3343,11 +3335,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/changelog-for-seafile-professional-server/index.html b/12.0/changelog/changelog-for-seafile-professional-server/index.html index f53d40ae..f7e3db42 100644 --- a/12.0/changelog/changelog-for-seafile-professional-server/index.html +++ b/12.0/changelog/changelog-for-seafile-professional-server/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/client-changelog/index.html b/12.0/changelog/client-changelog/index.html index ddb63bf0..c915e523 100644 --- a/12.0/changelog/client-changelog/index.html +++ b/12.0/changelog/client-changelog/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/drive-client-changelog/index.html b/12.0/changelog/drive-client-changelog/index.html index 9c9e0e9a..08d87e11 100644 --- a/12.0/changelog/drive-client-changelog/index.html +++ b/12.0/changelog/drive-client-changelog/index.html @@ -3325,14 +3325,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3347,11 +3339,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/index.html b/12.0/changelog/index.html index 2babf4a2..6e147727 100644 --- a/12.0/changelog/index.html +++ b/12.0/changelog/index.html @@ -3321,14 +3321,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3343,11 +3335,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/server-changelog-old/index.html b/12.0/changelog/server-changelog-old/index.html index 946077f6..443390a2 100644 --- a/12.0/changelog/server-changelog-old/index.html +++ b/12.0/changelog/server-changelog-old/index.html @@ -3321,14 +3321,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3343,11 +3335,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/changelog/server-changelog/index.html b/12.0/changelog/server-changelog/index.html index 6ce30fd5..219c828f 100644 --- a/12.0/changelog/server-changelog/index.html +++ b/12.0/changelog/server-changelog/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/admin_roles_permissions/index.html b/12.0/config/admin_roles_permissions/index.html index 30a9ceb0..78ed6430 100644 --- a/12.0/config/admin_roles_permissions/index.html +++ b/12.0/config/admin_roles_permissions/index.html @@ -3356,14 +3356,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3378,11 +3370,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/auth_switch/index.html b/12.0/config/auth_switch/index.html index 244e86c7..f9d67f63 100644 --- a/12.0/config/auth_switch/index.html +++ b/12.0/config/auth_switch/index.html @@ -3437,14 +3437,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3459,11 +3451,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/auto_login_seadrive/index.html b/12.0/config/auto_login_seadrive/index.html index 18dbbe24..b98542e8 100644 --- a/12.0/config/auto_login_seadrive/index.html +++ b/12.0/config/auto_login_seadrive/index.html @@ -3437,14 +3437,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3459,11 +3451,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/ccnet-conf/index.html b/12.0/config/ccnet-conf/index.html index 7e0a4f03..37b0399d 100644 --- a/12.0/config/ccnet-conf/index.html +++ b/12.0/config/ccnet-conf/index.html @@ -3411,14 +3411,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3433,11 +3425,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/config_seafile_with_ADFS/index.html b/12.0/config/config_seafile_with_ADFS/index.html index 32573809..a1c0b388 100644 --- a/12.0/config/config_seafile_with_ADFS/index.html +++ b/12.0/config/config_seafile_with_ADFS/index.html @@ -3321,14 +3321,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3343,11 +3335,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/customize_email_notifications/index.html b/12.0/config/customize_email_notifications/index.html index d3ce4755..afe9d7c6 100644 --- a/12.0/config/customize_email_notifications/index.html +++ b/12.0/config/customize_email_notifications/index.html @@ -3321,14 +3321,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3343,11 +3335,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/details_about_file_search/index.html b/12.0/config/details_about_file_search/index.html index e8a4576a..7204d635 100644 --- a/12.0/config/details_about_file_search/index.html +++ b/12.0/config/details_about_file_search/index.html @@ -3475,14 +3475,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3497,11 +3489,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/env/index.html b/12.0/config/env/index.html index 08d9b81c..c7f1a746 100644 --- a/12.0/config/env/index.html +++ b/12.0/config/env/index.html @@ -3471,14 +3471,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3493,11 +3485,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/index.html b/12.0/config/index.html index ddb0b919..e6c91bfc 100644 --- a/12.0/config/index.html +++ b/12.0/config/index.html @@ -3402,14 +3402,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3424,11 +3416,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/ldap_in_11.0_ce/index.html b/12.0/config/ldap_in_11.0_ce/index.html index 53feb4c5..b2018545 100644 --- a/12.0/config/ldap_in_11.0_ce/index.html +++ b/12.0/config/ldap_in_11.0_ce/index.html @@ -3470,14 +3470,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3492,11 +3484,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/ldap_in_11.0_pro/index.html b/12.0/config/ldap_in_11.0_pro/index.html index a84fe385..ebd35ac4 100644 --- a/12.0/config/ldap_in_11.0_pro/index.html +++ b/12.0/config/ldap_in_11.0_pro/index.html @@ -3617,14 +3617,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3639,11 +3631,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/multi_institutions/index.html b/12.0/config/multi_institutions/index.html index 4a5cbc44..26785372 100644 --- a/12.0/config/multi_institutions/index.html +++ b/12.0/config/multi_institutions/index.html @@ -3413,14 +3413,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3435,11 +3427,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/multi_tenancy/index.html b/12.0/config/multi_tenancy/index.html index 370eea0a..7b0c85de 100644 --- a/12.0/config/multi_tenancy/index.html +++ b/12.0/config/multi_tenancy/index.html @@ -3457,14 +3457,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3479,11 +3471,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/oauth/index.html b/12.0/config/oauth/index.html index 65339e7f..e5f9bb69 100644 --- a/12.0/config/oauth/index.html +++ b/12.0/config/oauth/index.html @@ -3433,14 +3433,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3455,11 +3447,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/ocm/index.html b/12.0/config/ocm/index.html index 0a3c632e..2d565b84 100644 --- a/12.0/config/ocm/index.html +++ b/12.0/config/ocm/index.html @@ -3424,14 +3424,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3446,11 +3438,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/remote_user/index.html b/12.0/config/remote_user/index.html index 9ab6a970..96ed18af 100644 --- a/12.0/config/remote_user/index.html +++ b/12.0/config/remote_user/index.html @@ -3356,14 +3356,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3378,11 +3370,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/roles_permissions/index.html b/12.0/config/roles_permissions/index.html index 829f2ba0..c4bf3615 100644 --- a/12.0/config/roles_permissions/index.html +++ b/12.0/config/roles_permissions/index.html @@ -3419,14 +3419,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3441,11 +3433,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/saml2_in_10.0/index.html b/12.0/config/saml2_in_10.0/index.html index a7b6869a..606163d6 100644 --- a/12.0/config/saml2_in_10.0/index.html +++ b/12.0/config/saml2_in_10.0/index.html @@ -3428,14 +3428,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3450,11 +3442,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/seafevents-conf/index.html b/12.0/config/seafevents-conf/index.html index c443bc9d..49238d8b 100644 --- a/12.0/config/seafevents-conf/index.html +++ b/12.0/config/seafevents-conf/index.html @@ -3393,14 +3393,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3415,11 +3407,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/seafile-conf/index.html b/12.0/config/seafile-conf/index.html index ddddbb36..f40498e8 100644 --- a/12.0/config/seafile-conf/index.html +++ b/12.0/config/seafile-conf/index.html @@ -3519,14 +3519,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3541,11 +3533,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/seahub_customization/index.html b/12.0/config/seahub_customization/index.html index e0cf9efc..3574fd6e 100644 --- a/12.0/config/seahub_customization/index.html +++ b/12.0/config/seahub_customization/index.html @@ -3471,14 +3471,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3493,11 +3485,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/seahub_settings_py/index.html b/12.0/config/seahub_settings_py/index.html index 9621a5ad..92fac8ec 100644 --- a/12.0/config/seahub_settings_py/index.html +++ b/12.0/config/seahub_settings_py/index.html @@ -3492,14 +3492,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3514,11 +3506,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/sending_email/index.html b/12.0/config/sending_email/index.html index 4a09cc5e..ded92f54 100644 --- a/12.0/config/sending_email/index.html +++ b/12.0/config/sending_email/index.html @@ -3489,14 +3489,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3511,11 +3503,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/shibboleth_authentication/index.html b/12.0/config/shibboleth_authentication/index.html index 5e8509b2..13b91aab 100644 --- a/12.0/config/shibboleth_authentication/index.html +++ b/12.0/config/shibboleth_authentication/index.html @@ -3527,14 +3527,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3549,11 +3541,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/config/single_sign_on/index.html b/12.0/config/single_sign_on/index.html index 544847ca..983fcccb 100644 --- a/12.0/config/single_sign_on/index.html +++ b/12.0/config/single_sign_on/index.html @@ -3356,14 +3356,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3378,11 +3370,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/build_seafile/index.html b/12.0/develop/build_seafile/index.html index 6ffb9330..fe976543 100644 --- a/12.0/develop/build_seafile/index.html +++ b/12.0/develop/build_seafile/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/data_model/index.html b/12.0/develop/data_model/index.html index 624277a7..c0920216 100644 --- a/12.0/develop/data_model/index.html +++ b/12.0/develop/data_model/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/index.html b/12.0/develop/index.html index 98e2ee52..426c6be8 100644 --- a/12.0/develop/index.html +++ b/12.0/develop/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/linux/index.html b/12.0/develop/linux/index.html index 3cdb4092..3735e42c 100644 --- a/12.0/develop/linux/index.html +++ b/12.0/develop/linux/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/osx/index.html b/12.0/develop/osx/index.html index 90a3c990..58658688 100644 --- a/12.0/develop/osx/index.html +++ b/12.0/develop/osx/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/rpi/index.html b/12.0/develop/rpi/index.html index c87b8d25..c97bd63a 100644 --- a/12.0/develop/rpi/index.html +++ b/12.0/develop/rpi/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/server/index.html b/12.0/develop/server/index.html index b1e53760..06631c4a 100644 --- a/12.0/develop/server/index.html +++ b/12.0/develop/server/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/translation/index.html b/12.0/develop/translation/index.html index 3070a3f5..af6ff95f 100644 --- a/12.0/develop/translation/index.html +++ b/12.0/develop/translation/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/web_api_v2.1/index.html b/12.0/develop/web_api_v2.1/index.html index 94d01374..6f9f49b2 100644 --- a/12.0/develop/web_api_v2.1/index.html +++ b/12.0/develop/web_api_v2.1/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/develop/windows/index.html b/12.0/develop/windows/index.html index 72eb9068..81637759 100644 --- a/12.0/develop/windows/index.html +++ b/12.0/develop/windows/index.html @@ -3327,14 +3327,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3349,11 +3341,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/distributed_indexing/index.html b/12.0/extension/distributed_indexing/index.html index 918de719..abab7f9f 100644 --- a/12.0/extension/distributed_indexing/index.html +++ b/12.0/extension/distributed_indexing/index.html @@ -3474,14 +3474,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3496,11 +3488,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/fuse/index.html b/12.0/extension/fuse/index.html index 731eeca7..eff441e7 100644 --- a/12.0/extension/fuse/index.html +++ b/12.0/extension/fuse/index.html @@ -3421,14 +3421,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3443,11 +3435,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/libreoffice_online/index.html b/12.0/extension/libreoffice_online/index.html index 92c16964..ad74ca4f 100644 --- a/12.0/extension/libreoffice_online/index.html +++ b/12.0/extension/libreoffice_online/index.html @@ -3448,14 +3448,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3470,11 +3462,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/notification-server/index.html b/12.0/extension/notification-server/index.html index 976fc355..78f91cac 100644 --- a/12.0/extension/notification-server/index.html +++ b/12.0/extension/notification-server/index.html @@ -3433,14 +3433,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3455,11 +3447,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/office_web_app/index.html b/12.0/extension/office_web_app/index.html index 226b2cbe..e07a1f7a 100644 --- a/12.0/extension/office_web_app/index.html +++ b/12.0/extension/office_web_app/index.html @@ -3397,14 +3397,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3419,11 +3411,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/only_office/index.html b/12.0/extension/only_office/index.html index 351da440..1e2ec435 100644 --- a/12.0/extension/only_office/index.html +++ b/12.0/extension/only_office/index.html @@ -3472,14 +3472,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3494,11 +3486,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/setup_seadoc/index.html b/12.0/extension/setup_seadoc/index.html index 24ee62f8..6d705f64 100644 --- a/12.0/extension/setup_seadoc/index.html +++ b/12.0/extension/setup_seadoc/index.html @@ -3433,14 +3433,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3455,11 +3447,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/virus_scan/index.html b/12.0/extension/virus_scan/index.html index 09da9e51..623bc0f1 100644 --- a/12.0/extension/virus_scan/index.html +++ b/12.0/extension/virus_scan/index.html @@ -3397,14 +3397,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3419,11 +3411,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/virus_scan_with_clamav/index.html b/12.0/extension/virus_scan_with_clamav/index.html index 220ffa34..35b1e959 100644 --- a/12.0/extension/virus_scan_with_clamav/index.html +++ b/12.0/extension/virus_scan_with_clamav/index.html @@ -3463,14 +3463,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3485,11 +3477,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/virus_scan_with_kav4fs/index.html b/12.0/extension/virus_scan_with_kav4fs/index.html index 4c14e4e7..dd31974d 100644 --- a/12.0/extension/virus_scan_with_kav4fs/index.html +++ b/12.0/extension/virus_scan_with_kav4fs/index.html @@ -3423,14 +3423,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3445,11 +3437,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/extension/webdav/index.html b/12.0/extension/webdav/index.html index 4904f041..ee195c3f 100644 --- a/12.0/extension/webdav/index.html +++ b/12.0/extension/webdav/index.html @@ -3466,14 +3466,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3488,11 +3480,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/index.html b/12.0/index.html index 65b53684..50379163 100644 --- a/12.0/index.html +++ b/12.0/index.html @@ -3388,14 +3388,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3410,11 +3402,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/introduction/components/index.html b/12.0/introduction/components/index.html index a3d8f07b..6268e119 100644 --- a/12.0/introduction/components/index.html +++ b/12.0/introduction/components/index.html @@ -3342,14 +3342,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3364,11 +3356,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/introduction/contribution/index.html b/12.0/introduction/contribution/index.html index b4eff4f1..c9140238 100644 --- a/12.0/introduction/contribution/index.html +++ b/12.0/introduction/contribution/index.html @@ -3399,14 +3399,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3421,11 +3413,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/introduction/file_permission_management/index.html b/12.0/introduction/file_permission_management/index.html index 8d3015ca..14a6d238 100644 --- a/12.0/introduction/file_permission_management/index.html +++ b/12.0/introduction/file_permission_management/index.html @@ -3390,14 +3390,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3412,11 +3404,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/introduction/roadmap/index.html b/12.0/introduction/roadmap/index.html index 2e94f62f..b89503c3 100644 --- a/12.0/introduction/roadmap/index.html +++ b/12.0/introduction/roadmap/index.html @@ -3342,14 +3342,6 @@ Upgrade Seafile Cluster - - - - - - - -
  • @@ -3364,11 +3356,11 @@
  • - + - Upgrade Seafile Cluster (Docker) + Upgrade Seafile Cluster (binary) diff --git a/12.0/outdate/change_default_java/index.html b/12.0/outdate/change_default_java/index.html deleted file mode 100644 index ae829f60..00000000 --- a/12.0/outdate/change_default_java/index.html +++ /dev/null @@ -1,4077 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Change default java - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - -

    Change default java

    - -

    When you have both Java 6 and Java 7 installed, the default Java may not be Java 7.

    -

    Do this by typing java -version, and check the output.

    -
      -
    • If the output is like "java version "1.7.0_xx", then the default Java is Java 7, which is good.
    • -
    • If the output is like "java version "1.6.0_xx", then the default Java is Java 6, we need to configure default Java to Java 7.
    • -
    -

    If the default Java is Java 6, then do

    -

    On Debian/Ubuntu: -

    sudo update-alternatives --config java
    -

    -

    On CentOS/RHEL: -

    sudo alternatives --config java
    -

    -

    The above command will ask you to choose one of the installed Java versions as default. You should choose Java 7 here.

    -

    After that, re-run java -version to make sure the change has taken effect.

    -

    Reference link

    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/kerberos_config/index.html b/12.0/outdate/kerberos_config/index.html deleted file mode 100644 index e8042cf4..00000000 --- a/12.0/outdate/kerberos_config/index.html +++ /dev/null @@ -1,4168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Kerberos config - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - -

    Kerberos config

    - -

    Kerberos

    -

    NOTE: Since version 7.0, this documenation is deprecated. Users should use Apache as a proxy server for Kerberos authentication. Then configure Seahub by the instructions in Remote User Authentication.

    -

    Kerberos is a widely used single sign on (SSO) protocol. Seafile server supports authentication via Kerberos. It allows users to log in to Seafile without entering credentials again if they have a kerberos ticket.

    -

    In this documentation, we assume the reader is familiar with Kerberos installation and configuration.

    -

    Seahub provides a special URL to handle Kerberos login. The URL is https://your-server/krb5-login. Only this URL needs to be configured under Kerberos protection. All other URLs don't go through the Kerberos module. The overall workflow for a user to login with Kerberos is as follows:

    -
      -
    1. In the Seafile login page, there is a separate "Kerberos" login button. When the user clicks the button, it will be redirected to https://your-server/krb5-login.
    2. -
    3. Since that URL is controlled by Kerberos, the apache module will try to get a Ticket from the Kerberos server.
    4. -
    5. Seahub reads the user information from the request and brings the user to its home page.
    6. -
    7. Further requests to Seahub will not pass through the Kerberos module. Since Seahub keeps session information internally, the user doesn't need to login again until the session expires.
    8. -
    -

    The configuration includes three steps:

    -
      -
    1. Get a keytab for Apache from Kerberos
    2. -
    3. Configure Apache
    4. -
    5. Configure Seahub
    6. -
    -

    Get keytab for Apache

    -

    Store the keytab under the name defined below and make it accessible only to the apache user (e.g. httpd or www-data and chmod 600).

    -

    Apache Configuration

    -

    You should create a new location in your virtual host configuration for Kerberos.

    -
    <IfModule mod_ssl.c>
    -    <VirtualHost _default_:443>
    -        ServerName seafile.example.com
    -        DocumentRoot /var/www
    -...
    -        <Location /krb5-login/>
    -            SSLRequireSSL
    -            AuthType Kerberos
    -            AuthName "Kerberos EXAMPLE.ORG"
    -            KrbMethodNegotiate On
    -            KrbMethodK5Passwd On
    -            Krb5KeyTab /etc/apache2/conf.d/http.keytab
    -            #ErrorDocument 401 '<html><meta http-equiv="refresh" content="0; URL=/accounts/login"><body>Kerberos authentication did not pass.</body></html>'
    -            Require valid-user
    -        </Location>
    -...
    -    </VirtualHost>
    -</IfModule>
    -
    -

    After restarting Apache, you should see in the Apache logs that user@REALM is used when accessing https://seafile.example.com/krb5-login/.

    -

    Configure Seahub

    -

    Seahub extracts the username from the REMOTE_USER environment variable.

    -

    Now we have to tell Seahub what to do with the authentication information passed in by Kerberos.

    -

    Add the following option to seahub_settings.py.

    -
    ENABLE_KRB5_LOGIN = True
    -
    -

    Verify

    -

    After restarting Apache and Seafile services, you can test the Kerberos login workflow.

    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/outlook_addin_config/index.html b/12.0/outdate/outlook_addin_config/index.html deleted file mode 100644 index 492c6e3e..00000000 --- a/12.0/outdate/outlook_addin_config/index.html +++ /dev/null @@ -1,4274 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SSO for Seafile Outlook Add-in - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - -
    -
    - -
    -
    - - - -
    -
    - - - - - - - -

    SSO for Seafile Outlook Add-in

    -

    The Seafile Add-in for Outlook natively supports authentication via username and password. In order to authenticate with SSO, the add-in utilizes SSO support integrated in Seafile's webinterface Seahub.

    -

    Specifically, this is how SSO with the add-in works :

    -
      -
    • When clicking the SSO button in the add-in, the add-in opens a browser window and requests http(s)://SEAFILE_SERVER_URL/outlook/
    • -
    • A PHP script redirects the request to http(s)://SEAFILE_SERVER_URL/accounts/login/ including a redirect request to /outlook/ following a successful authentication (e.g., https://demo.seafile.com/accounts/login/?next=/jwt-sso/?page=/outlook/)
    • -
    • The identity provider signals to Seafile the user's successful authentication
    • -
    • The PHP script sends an API-token to the add-in
    • -
    • The add-in authorizes all API calls with the API-token
    • -
    -

    This document explains how to configure Seafile and the reverse proxy and how to deploy the PHP script.

    -

    Requirements

    -

    SSO authentication must be configured in Seafile.

    -

    Seafile Server must be version 8.0 or above.

    -

    Installing prerequisites

    -

    The packages php, composer, firebase-jwt, and guzzle must be installed. PHP can usually be downloaded and installed via the distribution's official repositories. firebase-jwt and guzzle are installed using composer.

    -

    First, install the php package and check the installed version: -

    # CentOS/RedHat
    -$ sudo yum install -y php-fpm php-curl
    -$ php --version
    -
    -# Debian/Ubuntu
    -$ sudo apt install -y php-fpm php-curl
    -$ php --version
    -

    -

    Second, install composer. You find an up-to-date install manual at https://getcomposer.org/ for CentOS, Debian, and Ubuntu.

    -

    Third, use composer to install firebase-jwt and guzzle in a new directory in /var/www: -

    $ mkdir -p /var/www/outlook-sso
    -$ cd /var/www/outlook-sso
    -$ composer require firebase/php-jwt guzzlehttp/guzzle
    -

    -

    Configuring Seahub

    -

    Add this block to the config file seahub_settings.py using a text editor:

    -
    ENABLE_JWT_SSO = True
    -JWT_SSO_SECRET_KEY = 'SHARED_SECRET'
    -ENABLE_SYS_ADMIN_GENERATE_USER_AUTH_TOKEN = True
    -
    -

    Replace SHARED_SECRET with a secret of your own.

    -

    Configuring the proxy server

    -

    The configuration depends on the proxy server use.

    -

    If you use nginx, add the following location block to the nginx configuration:

    -
    location /outlook {
    -    alias /var/www/outlook-sso/public;
    -    index index.php;
    -    location ~ \.php$ {
    -      fastcgi_split_path_info ^(.+\.php)(/.+)$;
    -      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    -      fastcgi_param SCRIPT_FILENAME $request_filename;
    -      fastcgi_index index.php;
    -      include fastcgi_params;
    -    }
    -}
    -
    -

    This sample block assumes that PHP 7.4 is installed. If you have a different PHP version on your system, modify the version in the fastcgi_pass unix.

    -

    Note: The alias path can be altered. We advise against it unless there are good reasons. If you do, make sure you modify the path accordingly in all subsequent steps.

    -

    Finally, check the nginx configuration and restart nginx:

    -
    $ nginx -t
    -$ nginx -s reload
    -
    -

    Deploying the PHP script

    -

    The PHP script and corresponding configuration files will be saved in the new directory created earlier. Change into it and add a PHP config file:

    -
    $ cd /var/www/outlook-sso
    -$ nano config.php
    -
    -

    Paste the following content in the config.php:

    -
    <?php
    -
    -# general settings
    -$seafile_url = 'SEAFILE_SERVER_URL';
    -$jwt_shared_secret = 'SHARED_SECRET';
    -
    -# Option 1: provide credentials of a seafile admin user
    -$seafile_admin_account = [
    -    'username' => '',
    -    'password' => '',
    -];
    -
    -# Option 2: provide the api-token of a seafile admin user
    -$seafile_admin_token = '';
    -
    -?>
    -
    -

    First, replace SEAFILE_SERVER_URL with the URL of your Seafile Server and SHARED_SECRET with the key used in Configuring Seahub.

    -

    Second, add either the user credentials of a Seafile user with admin rights or the API-token of such a user.

    -

    In the next step, create the index.php and copy & paste the PHP script:

    -
    mkdir /var/www/outlook-sso/public
    -$ cd /var/www/outlook-sso/public
    -$ nano index.php
    -
    -

    Paste the following code block:

    -
    <?php
    -/** IMPORTANT: there is no need to change anything in this file ! **/
    -
    -require_once __DIR__ . '/../vendor/autoload.php';
    -require_once __DIR__ . '/../config.php';
    -
    -if(!empty($_GET['jwt-token'])){
    -    try {
    -        $decoded = Firebase\JWT\JWT::decode($_GET['jwt-token'], new Firebase\JWT\Key($jwt_shared_secret, 'HS256'));
    -    }
    -    catch (Exception $e){
    -        echo json_encode(["error" => "wrong JWT-Token"]);
    -        die();
    -    }
    -
    -    try {
    -        // init connetion to seafile api
    -        $client = new GuzzleHttp\Client(['base_uri' => $seafile_url]);
    -
    -        // get admin api-token with his credentials (if not set)
    -        if(empty($seafile_admin_token)){
    -            $request = $client->request('POST', '/api2/auth-token/', ['form_params' => $seafile_admin_account]);
    -            $response = json_decode($request->getBody());
    -            $seafile_admin_token = $response->token;
    -        }
    -
    -        // get api-token of the user
    -        $request = $client->request('POST', '/api/v2.1/admin/generate-user-auth-token/', [
    -            'json' => ['email' => $decoded->email],
    -            'headers' => ['Authorization' => 'Token '. $seafile_admin_token]
    -        ]);
    -        $response = json_decode($request->getBody());
    -
    -        // create the output for the outlook plugin (json like response)
    -        echo json_encode([
    -            'exp' => $decoded->exp,
    -            'email' => $decoded->email,
    -            'name' => $decoded->name,
    -            'token' => $response->token,
    -        ]);
    -    } catch (GuzzleHttp\Exception\ClientException $e){
    -        echo $e->getResponse()->getBody();
    -    }
    -}
    -else{ // no jwt-token. therefore redirect to the login page of seafile
    -    header("Location: ". $seafile_url ."/accounts/login/?next=/jwt-sso/?page=/outlook");
    -} ?>
    -
    -

    Note: Contrary to the config.php, no replacements or modifications are necessary in this file.

    -

    The directory layout in /var/www/sso-outlook/ should now look as follows:

    -
    $ tree -L 2 /var/www/outlook-sso
    -/var/www/outlook-sso/
    -├── composer.json
    -├── composer.lock
    -├── config.php
    -├── public
    -|   └── index.php
    -└── vendor
    -    ├── autoload.php
    -    ├── composer
    -    └── firebase
    -
    -

    Seafile and Seahub are now configured to support SSO in the Seafile Add-in for Outlook.

    -

    Testing

    -

    You can now test SSO authentication in the add-in. Hit the SSO button in the settings of the Seafile add-in.

    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/seaf_encrypt/index.html b/12.0/outdate/seaf_encrypt/index.html deleted file mode 100644 index ca707029..00000000 --- a/12.0/outdate/seaf_encrypt/index.html +++ /dev/null @@ -1,4217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Seafile Storage Encryption Backend - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - -

    Seafile Storage Encryption Backend

    -
    -

    This feature is deprecated. We recommend you to use the encryption feature provided the storage system.

    -
    -

    Since Seafile Professional Server 5.1.3, we support storage enryption backend functionality. When enabled, all seafile objects (commit, fs, block) will be encrypted with AES 256 CBC algorithm, before writing them to the storage backend. Currently supported backends are: file system, Ceph, Swift and S3.

    -

    Note that all objects will be encrypted with the same global key/iv pair. The key/iv pair has to be generated by the system admin and stored safely. If the key/iv pair is lost, all data cannot be recovered.

    -

    Configure Storage Backend Encryption

    -

    Generate Key and IV

    -

    Go to /seafile-server-latest, execute ./seaf-gen-key.sh -h. it will print the following usage information:

    -
    usage :
    -seaf-gen-key.sh
    - -p <file path to write key iv, default ./seaf-key.txt>
    -
    -

    By default, the key/iv pair will be saved to a file named seaf-key.txt in the current directory. You can use '-p' option to change the path.

    -

    Configure a freshly installed Seafile Server

    -

    Add the following configuration to seafile.conf:

    -
    [store_crypt]
    -key_path = <the key file path generated in previous section>
    -
    -

    Now the encryption feature should be working.

    -

    Migrating Existing Seafile Server

    -

    If you have existing data in the Seafile server, you have to migrate/encrypt the existing data. You must stop Seafile server before migrating the data.

    -

    Create Directories for Encrypted Data

    -

    Create new configuration and data directories for the encrypted data.

    -
    cd seafile-server-latest
    -cp -r conf conf-enc
    -mkdir seafile-data-enc
    -cp -r seafile-data/library-template seafile-data-enc
    -# If you use SQLite database
    -cp seafile-data/seafile.db seafile-data-enc/
    -
    -

    Edit Config Files

    -

    If you configured S3/Swift/Ceph backend, edit /conf-enc/seafile.conf. You must use a different bucket/container/pool to store the encrypted data.

    -

    Then add the following configuration to /conf-enc/seafile.conf

    -
    [store_crypt]
    -key_path = <the key file path generated in previous section>
    -
    -

    Migrate the Data

    -

    Go to /seafile-server-latest, use the seaf-encrypt.sh script to migrate the data.

    -

    Run ./seaf-encrypt.sh -f ../conf-enc -e ../seafile-data-enc,

    -
    Starting seaf-encrypt, please wait ...
    -[04/26/16 06:59:40] seaf-encrypt.c(444): Start to encrypt 57 block among 12 repo.
    -[04/26/16 06:59:40] seaf-encrypt.c(444): Start to encrypt 102 fs among 12 repo.
    -[04/26/16 06:59:41] seaf-encrypt.c(454): Success encrypt all fs.
    -[04/26/16 06:59:40] seaf-encrypt.c(444): Start to encrypt 66 commit among 12 repo.
    -[04/26/16 06:59:41] seaf-encrypt.c(454): Success encrypt all commit.
    -[04/26/16 06:59:41] seaf-encrypt.c(454): Success encrypt all block.
    -seaf-encrypt run done
    -Done.
    -
    -

    If there are error messages after executing seaf-encrypt.sh, you can fix the problem and run the script again. Objects that have already been migrated will not be copied again.

    -

    Clean Up

    -

    Go to , execute following commands:

    -
    mv conf conf-bak
    -mv seafile-data seafile-data-bak
    -mv conf-enc conf
    -mv seafile-data-enc seafile-data
    -
    -

    Restart Seafile Server. If everything works okay, you can remove the backup directories.

    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/sqlite_to_mysql.sh b/12.0/outdate/sqlite_to_mysql.sh deleted file mode 100644 index 5b20d41e..00000000 --- a/12.0/outdate/sqlite_to_mysql.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -# -# This shell script uses sqlite3 commands to export data only(no schema) from seafile sqlite3 installation -# -# Setup: -# -# 1. Move this file to the top directory of your Seafile -# installation path (e.g. /data/haiwen). -# 2. Run: ./sqlite_to_mysql.sh -# 3. Three files(ccnet_db_data.sql, seafile_db_data.sql, seahub_db_data.sql) are created. -# 4. Loads these files to MySQL after you load schema -# example: (mysql> source ccnet_db_data.sql) -# - -#Function that generates INSERT statements for all data in given database -#Parameter1 = database_path - -Sqlite2MysqlData () { - echo "SET FOREIGN_KEY_CHECKS=0;" - for TABLE in $(sqlite3 $1 .tables) - do - #get columns and insert ``, around every one - COLS=$(sqlite3 $1 "PRAGMA table_info('${TABLE}');" | cut -d'|' -f2 | sed 's/^/`/' | sed 's/$/`, /' ) - - #remove comma from last one - COLS_PURE=$(echo $COLS | sed 's/.$//') - - #generate insertstatemets (via echoMultipleCommands support by sqlite3), does not include column names - echo ".mode insert\nselect * from '${TABLE}';" | sqlite3 $1 | - - #replace 3rd word with columns from above: TableName(`col1`, `col2`, `col3`, ...) - sed "s/[^ ]*[^ ]/${TABLE}(${COLS_PURE})/3" - done - echo "SET FOREIGN_KEY_CHECKS=1;" -} - -CCNET_DB='ccnet_db_data.sql' -SEAFILE_DB='seafile_db_data.sql' -SEAHUB_DB='seahub_db_data.sql' - -########## ccnet - -seafile_path=$(pwd) - -if [ -d "${seafile_path}/ccnet" ]; then - USER_MGR_DB=${seafile_path}/ccnet/PeerMgr/usermgr.db - GRP_MGR_DB=${seafile_path}/ccnet/GroupMgr/groupmgr.db -else - echo "${seafile_path}/ccnet does not exists." - read -p "Please provide your ccnet folder path(e.g. /data/haiwen/ccnet): " ccnet_path - if [ -d ${ccnet_path} ]; then - USER_MGR_DB=$(dirname "${ccnet_path}")/PeerMgr/usermgr.db - GRP_MGR_DB=$(dirname "${ccnet_path}")/GroupMgr/groupmgr.db - else - echo "${ccnet_path} does not exists, quit." - exit 1 - fi -fi - -rm -rf ${CCNET_DB} - -echo "Start export ccnet data from user" -Sqlite2MysqlData ${USER_MGR_DB} > ${CCNET_DB} - -echo "Start export ccnet data from group" -Sqlite2MysqlData ${GRP_MGR_DB} >> ${CCNET_DB} - -echo "Done export ccnet data" - -########## seafile - -if [ -f "${seafile_path}/seafile-data/seafile.db" ]; then - SEAFILE_SQLITE_DB=${seafile_path}/seafile-data/seafile.db -else - echo "${seafile_path}/seafile-data/seafile.db does not exists." - read -p "Please provide your seafile.db path(e.g. /data/haiwen/seafile-data/seafile.db): " seafile_db_path - if [ -f ${seafile_db_path} ];then - SEAFILE_SQLITE_DB=${seafile_db_path} - else - echo "${seafile_db_path} does not exists, quit." - exit 1 - fi -fi - -rm -rf ${SEAFILE_DB} - -echo "Start export seafile data" -Sqlite2MysqlData ${SEAFILE_SQLITE_DB} > ${SEAFILE_DB} - -echo "Done export seafile data" - -########## seahub - -if [ -f "${seafile_path}/seahub.db" ]; then - SEAHUB_SQLITE_DB=${seafile_path}/seahub.db -else - echo "${seafile_path}/seahub.db does not exists." - read -p "Please prove your seahub.db path(e.g. /data/haiwen/seahub.db): " seahub_db_path - if [ -f ${seahub_db_path} ]; then - SEAHUB_SQLITE_DB=${seahub_db_path} - else - echo "${seahub_db_path} does not exists, quit." - exit 1 - fi -fi - -rm -rf ${SEAHUB_DB} - -#delete existed data from `django_content_type`: -echo "DELETE FROM \`django_content_type\`;" > ${SEAHUB_DB} - -#delete existed data from `django_migrations`: -echo "DELETE FROM \`django_migrations\`;" >> ${SEAHUB_DB} - -echo "Start export seahub data" -Sqlite2MysqlData ${SEAHUB_SQLITE_DB} >> ${SEAHUB_DB} - -echo "Done export seahub data" diff --git a/12.0/outdate/terms_and_conditions/index.html b/12.0/outdate/terms_and_conditions/index.html deleted file mode 100644 index 8c54853b..00000000 --- a/12.0/outdate/terms_and_conditions/index.html +++ /dev/null @@ -1,4072 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Terms and Conditions - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - -

    Terms and Conditions

    -

    Starting from version 6.0, system admin can add T&C at admin panel, all users need to accept that before using the site.

    -

    In order to use this feature, please add following line to seahub_settings.py, -

    ENABLE_TERMS_AND_CONDITIONS = True
    -

    -

    After restarting, there will be "Terms and Conditions" section at sidebar of admin panel.

    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/using_fuse/index.html b/12.0/outdate/using_fuse/index.html deleted file mode 100644 index b5318fe4..00000000 --- a/12.0/outdate/using_fuse/index.html +++ /dev/null @@ -1,4235 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Seafile - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - -

    Seafile

    -

    Using Fuse

    -

    Files in the seafile system are split to blocks, which means what are stored on your seafile server are not complete files, but blocks. This design faciliates effective data deduplication.

    -

    However, administrators sometimes want to access the files directly on the server. You can use seaf-fuse to do this.

    -

    Seaf-fuse is an implementation of the [http://fuse.sourceforge.net FUSE] virtual filesystem. In a word, it mounts all the seafile files to a folder (which is called the '''mount point'''), so that you can access all the files managed by seafile server, just as you access a normal folder on your server.

    -

    Seaf-fuse is added since Seafile Server '''2.1.0'''.

    -

    '''Note:''' -* Encrypted folders can't be accessed by seaf-fuse. -* Currently the implementation is '''read-only''', which means you can't modify the files through the mounted folder. -* One debian/centos systems, you need to be in the "fuse" group to have the permission to mount a FUSE folder.

    -

    How to start seaf-fuse

    -

    Assume we want to mount to /data/seafile-fuse.

    -

    Create the folder as the mount point

    -
    mkdir -p /data/seafile-fuse
    -
    -

    Start seaf-fuse with the script

    -

    '''Note:''' Before start seaf-fuse, you should have started seafile server with ./seafile.sh start.

    -
    ./seaf-fuse.sh start /data/seafile-fuse
    -
    -

    Stop seaf-fuse

    -
    ./seaf-fuse.sh stop
    -
    -

    Contents of the mounted folder

    -

    The top level folder

    -

    Now you can list the content of /data/seafile-fuse.

    -
    $ ls -lhp /data/seafile-fuse
    -
    -drwxr-xr-x 2 root root 4.0K Jan  1  1970 abc@abc.com/
    -drwxr-xr-x 2 root root 4.0K Jan  1  1970 foo@foo.com/
    -drwxr-xr-x 2 root root 4.0K Jan  1  1970 plus@plus.com/
    -drwxr-xr-x 2 root root 4.0K Jan  1  1970 sharp@sharp.com/
    -drwxr-xr-x 2 root root 4.0K Jan  1  1970 test@test.com/
    -
    -
      -
    • The top level folder contains many subfolders, each of which corresponds to a user
    • -
    • The time stamp of files and folders is not preserved.
    • -
    -

    The folder for each user

    -
    $ ls -lhp /data/seafile-fuse/abc@abc.com
    -
    -drwxr-xr-x 2 root root  924 Jan  1  1970 5403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/
    -drwxr-xr-x 2 root root 1.6K Jan  1  1970 a09ab9fc-7bd0-49f1-929d-6abeb8491397_My Notes/
    -
    -

    From the above list you can see, under the folder of a user there are subfolders, each of which represents a library of that user, and has a name of this format: '''{library_id}-{library-name}'''.

    -

    The folder for a library

    -
    $ ls -lhp /data/seafile-fuse/abc@abc.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/
    -
    --rw-r--r-- 1 root root 501K Jan  1  1970 image.png
    --rw-r--r-- 1 root root 501K Jan  1  1970 sample.jpng
    -
    -

    If you get a "Permission denied" error

    -

    If you get an error message saying "Permission denied" when running ./seaf-fuse.sh start, most likely you are not in the "fuse group". You should:

    -
      -
    • Add yourself to the fuse group -
      sudo usermod -a -G fuse <your-user-name>
      -
    • -
    • Logout your shell and login again
    • -
    • Now try ./seaf-fuse.sh start <path> again.
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/outdate/video_thumbnails/index.html b/12.0/outdate/video_thumbnails/index.html deleted file mode 100644 index 6305b2f9..00000000 --- a/12.0/outdate/video_thumbnails/index.html +++ /dev/null @@ -1,4137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Video thumbnails - Seafile Admin Manual - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - Skip to content - - -
    -
    - -
    - - - - - - -
    - - -
    - -
    - - - - - - - - - -
    -
    - - - -
    -
    -
    - - - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - -

    Video thumbnails

    -

    Install ffmpeg package

    -

    You need to install ffmpeg package to let the video thumbnail work correctly:

    -

    Ubuntu 16.04 -

    # Install ffmpeg
    -sudo apt-get update && sudo apt-get -y install ffmpeg
    -
    -# Now we need to install some modules
    -pip install pillow moviepy
    -

    -

    Centos 7 -

    # We need to activate the epel repos
    -yum -y install epel-release
    -rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
    -
    -# Then update the repo and install ffmpeg
    -yum -y install ffmpeg ffmpeg-devel
    -
    -# Now we need to install some modules
    -pip install pillow moviepy
    -

    -

    Debian Jessie -

    # Add backports repo to /etc/apt/sources.list.d/
    -# e.g. the following repo works (June 2017)
    -sudo echo "deb http://httpredir.debian.org/debian $(lsb_release -cs)-backports main non-free" > /etc/apt/sources.list.d/debian-backports.list
    -
    -# Then update the repo and install ffmpeg
    -sudo apt-get update && sudo apt-get -y install ffmpeg
    -
    -# Now we need to install some modules
    -pip install pillow moviepy
    -

    -

    Configure Seafile to create thumbnails

    -

    Now configure accordingly in seahub_settings.py

    -
    # Enable or disable thumbnail for video. ffmpeg and moviepy should be installed first. 
    -# For details, please refer to https://manual.seafile.com/deploy/video_thumbnails/
    -# NOTE: since version 6.1
    -ENABLE_VIDEO_THUMBNAIL = True
    -
    -# Use the frame at 5 second as thumbnail
    -THUMBNAIL_VIDEO_FRAME_TIME = 5  
    -
    -# Absolute filesystem path to the directory that will hold thumbnail files.
    -THUMBNAIL_ROOT = '/haiwen/seahub-data/thumbnail/thumb/'
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    - - - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/12.0/search/search_index.json b/12.0/search/search_index.json index 978a819b..a403033f 100644 --- a/12.0/search/search_index.json +++ b/12.0/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"

    Seafile is an open source cloud storage system for file sync, share and document collaboration. SeaDoc is an extension of Seafile that providing a lightweight online collaborative document feature.

    "},{"location":"#license","title":"LICENSE","text":"

    The different components of Seafile project are released under different licenses:

    "},{"location":"#contact-information","title":"Contact information","text":""},{"location":"changelog/","title":"Changelog","text":""},{"location":"changelog/#changelogs","title":"Changelogs","text":""},{"location":"administration/","title":"Administration","text":""},{"location":"administration/#enter-the-admin-panel","title":"Enter the admin panel","text":"

    As the system admin, you can enter the admin panel by click System Admin in the popup of avatar.

    "},{"location":"administration/#account-management","title":"Account management","text":""},{"location":"administration/#logs","title":"Logs","text":""},{"location":"administration/#backup-and-recovery","title":"Backup and Recovery","text":"

    Backup and recovery:

    Recover corrupt files after server hard shutdown or system crash:

    You can run Seafile GC to remove unused files:

    "},{"location":"administration/#clean-database","title":"Clean database","text":""},{"location":"administration/#export-report","title":"Export report","text":""},{"location":"administration/account/","title":"Account Management","text":""},{"location":"administration/account/#user-management","title":"User Management","text":"

    When you setup seahub website, you should have setup a admin account. After you logged in a admin, you may add/delete users and file libraries.

    "},{"location":"administration/account/#how-to-change-a-users-id","title":"How to change a user's ID","text":"

    Since version 11.0, if you need to change a user's external ID, you can manually modify database table social_auth_usersocialauth to map the new external ID to internal ID.

    "},{"location":"administration/account/#resetting-user-password","title":"Resetting User Password","text":"

    Administrator can reset password for a user in \"System Admin\" page.

    In a private server, the default settings doesn't support users to reset their password by email. If you want to enable this, you have first to set up notification email.

    "},{"location":"administration/account/#forgot-admin-account-or-password","title":"Forgot Admin Account or Password?","text":"

    You may run reset-admin.sh script under seafile-server-latest directory. This script would help you reset the admin account and password. Your data will not be deleted from the admin account, this only unlocks and changes the password for the admin account.

    Tip

    Enter into the docker image, then go to /opt/seafile/seafile-server-latest

    "},{"location":"administration/account/#user-quota-notice","title":"User Quota Notice","text":"

    Under the seafile-server-latest directory, run ./seahub.sh python-env python seahub/manage.py check_user_quota , when the user quota exceeds 90%, an email will be sent. If you want to enable this, you have first to set up notification email.

    "},{"location":"administration/auditing/","title":"Access log and auditing","text":"

    In the Pro Edition, Seafile offers four audit logs in system admin panel:

    The logging feature is turned off by default before version 6.0. Add the following option to seafevents.conf to turn it on:

    [Audit]\n## Audit log is disabled default.\n## Leads to additional SQL tables being filled up, make sure your SQL server is able to handle it.\nenabled = true\n

    The audit log data is being saved in seahub_db.

    "},{"location":"administration/backup_recovery/","title":"Backup and Recovery","text":""},{"location":"administration/backup_recovery/#overview","title":"Overview","text":"

    There are generally two parts of data to backup

    There are 3 databases:

    "},{"location":"administration/backup_recovery/#backup-steps","title":"Backup steps","text":"

    The backup is a two step procedure:

    1. Backup the databases;
    2. Backup the seafile data directory;
    "},{"location":"administration/backup_recovery/#backup-order-database-first-or-data-directory-first","title":"Backup Order: Database First or Data Directory First","text":"

    The second sequence is better in the sense that it avoids library corruption. Like other backup solutions, some new data can be lost in recovery. There is always a backup window. However, if your storage backup mechanism can finish quickly enough, using the first sequence can retain more data.

    We assume your seafile data directory is in /opt/seafile for binary package based deployment (or /opt/seafile-data for docker based deployment). And you want to backup to /backup directory. The /backup can be an NFS or Windows share mount exported by another machine, or just an external disk. You can create a layout similar to the following in /backup directory:

    /backup\n---- databases/  contains database backup files\n---- data/  contains backups of the data directory\n
    "},{"location":"administration/backup_recovery/#backup-and-restore-for-binary-package-based-deployment","title":"Backup and restore for binary package based deployment","text":""},{"location":"administration/backup_recovery/#backing-up-databases","title":"Backing up Databases","text":"

    It's recommended to backup the database to a separate file each time. Don't overwrite older database backups for at least a week.

    MySQL

    Assume your database names are ccnet_db, seafile_db and seahub_db. mysqldump automatically locks the tables so you don't need to stop Seafile server when backing up MySQL databases. Since the database tables are usually very small, it won't take long to dump.

    mysqldump -h [mysqlhost] -u[username] -p[password] --opt ccnet_db > /backup/databases/ccnet_db.sql.`date +\"%Y-%m-%d-%H-%M-%S\"`\n\nmysqldump -h [mysqlhost] -u[username] -p[password] --opt seafile_db > /backup/databases/seafile_db.sql.`date +\"%Y-%m-%d-%H-%M-%S\"`\n\nmysqldump -h [mysqlhost] -u[username] -p[password] --opt seahub_db > /backup/databases/seahub_db.sql.`date +\"%Y-%m-%d-%H-%M-%S\"`\n
    "},{"location":"administration/backup_recovery/#backing-up-seafile-library-data","title":"Backing up Seafile library data","text":"

    The data files are all stored in the /opt/seafile directory, so just back up the whole directory. You can directly copy the whole directory to the backup destination, or you can use rsync to do incremental backup.

    To directly copy the whole data directory,

    cp -R /opt/seafile /backup/data/seafile-`date +\"%Y-%m-%d-%H-%M-%S\"`\n

    This produces a separate copy of the data directory each time. You can delete older backup copies after a new one is completed.

    If you have a lot of data, copying the whole data directory would take long. You can use rsync to do incremental backup.

    rsync -az /opt/seafile /backup/data\n

    This command backup the data directory to /backup/data/seafile.

    "},{"location":"administration/backup_recovery/#restore-from-backup","title":"Restore from backup","text":"

    Now supposed your primary seafile server is broken, you're switching to a new machine. Using the backup data to restore your Seafile instance:

    1. Copy /backup/data/seafile to the new machine. Let's assume the seafile deployment location new machine is also /opt/seafile.
    2. Restore the database.
    3. Since database and data are backed up separately, they may become a little inconsistent with each other. To correct the potential inconsistency, run seaf-fsck tool to check data integrity on the new machine. See seaf-fsck documentation.
    "},{"location":"administration/backup_recovery/#restore-the-databases","title":"Restore the databases","text":"

    Now with the latest valid database backup files at hand, you can restore them.

    MySQL

    mysql -u[username] -p[password] ccnet_db < ccnet_db.sql.2013-10-19-16-00-05\nmysql -u[username] -p[password] seafile_db < seafile_db.sql.2013-10-19-16-00-20\nmysql -u[username] -p[password] seahub_db < seahub_db.sql.2013-10-19-16-01-05\n
    "},{"location":"administration/backup_recovery/#backup-and-restore-for-docker-based-deployment","title":"Backup and restore for Docker based deployment","text":""},{"location":"administration/backup_recovery/#structure","title":"Structure","text":"

    We assume your seafile volumns path is in /opt/seafile-data. And you want to backup to /backup directory.

    The data files to be backed up:

    /opt/seafile-data/seafile/conf  # configuration files\n/opt/seafile-data/seafile/seafile-data # data of seafile\n/opt/seafile-data/seafile/seahub-data # data of seahub\n
    "},{"location":"administration/backup_recovery/#backing-up-database","title":"Backing up Database","text":"
    # It's recommended to backup the database to a separate file each time. Don't overwrite older database backups for at least a week.\ncd /backup/databases\ndocker exec -it seafile-mysql mysqldump  -u[username] -p[password] --opt ccnet_db > ccnet_db.sql\ndocker exec -it seafile-mysql mysqldump  -u[username] -p[password] --opt seafile_db > seafile_db.sql\ndocker exec -it seafile-mysql mysqldump  -u[username] -p[password] --opt seahub_db > seahub_db.sql\n
    "},{"location":"administration/backup_recovery/#backing-up-seafile-library-data_1","title":"Backing up Seafile library data","text":""},{"location":"administration/backup_recovery/#to-directly-copy-the-whole-data-directory","title":"To directly copy the whole data directory","text":"
    cp -R /opt/seafile-data/seafile /backup/data/\n
    "},{"location":"administration/backup_recovery/#use-rsync-to-do-incremental-backup","title":"Use rsync to do incremental backup","text":"
    rsync -az /opt/seafile-data/seafile /backup/data/\n
    "},{"location":"administration/backup_recovery/#recovery","title":"Recovery","text":""},{"location":"administration/backup_recovery/#restore-the-databases_1","title":"Restore the databases","text":"
    docker cp /backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql\ndocker cp /backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql\ndocker cp /backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql\n\ndocker exec -it seafile-mysql /bin/sh -c \"mysql -u[username] -p[password] ccnet_db < /tmp/ccnet_db.sql\"\ndocker exec -it seafile-mysql /bin/sh -c \"mysql -u[username] -p[password] seafile_db < /tmp/seafile_db.sql\"\ndocker exec -it seafile-mysql /bin/sh -c \"mysql -u[username] -p[password] seahub_db < /tmp/seahub_db.sql\"\n
    "},{"location":"administration/backup_recovery/#restore-the-seafile-data","title":"Restore the seafile data","text":"
    cp -R /backup/data/* /opt/seafile-data/seafile/\n
    "},{"location":"administration/clean_database/","title":"Clean Database","text":""},{"location":"administration/clean_database/#session","title":"Session","text":"

    Use the following command to clear expired session records in Seahub database:

    cd seafile-server-latest\n./seahub.sh python-env python3 seahub/manage.py clearsessions\n

    Tip

    Enter into the docker image, then go to /opt/seafile/seafile-server-latest

    "},{"location":"administration/clean_database/#use-clean_db_records-command-to-clean-seahub_db","title":"Use clean_db_records command to clean seahub_db","text":"

    Use the following command to simultaneously clean up table records of Activity, sysadmin_extra_userloginlog, FileAudit, FileUpdate, FileHistory, PermAudit, FileTrash 90 days ago:

    ./seahub.sh python-env python3 seahub/manage.py clean_db_records\n

    You can also clean these tables manually if you like as following.

    "},{"location":"administration/clean_database/#activity","title":"Activity","text":"

    Use the following command to clear the activity records:

    use seahub_db;\nDELETE FROM Activity WHERE to_days(now()) - to_days(timestamp) > 90;\nDELETE FROM UserActivity WHERE to_days(now()) - to_days(timestamp) > 90;\n
    "},{"location":"administration/clean_database/#login","title":"Login","text":"

    Use the following command to clean the login records:

    use seahub_db;\nDELETE FROM sysadmin_extra_userloginlog WHERE to_days(now()) - to_days(login_date) > 90;\n
    "},{"location":"administration/clean_database/#file-access","title":"File Access","text":"

    Use the following command to clean the file access records:

    use seahub_db;\nDELETE FROM FileAudit WHERE to_days(now()) - to_days(timestamp) > 90;\n
    "},{"location":"administration/clean_database/#file-update","title":"File Update","text":"

    Use the following command to clean the file update records:

    use seahub_db;\nDELETE FROM FileUpdate WHERE to_days(now()) - to_days(timestamp) > 90;\n
    "},{"location":"administration/clean_database/#permisson","title":"Permisson","text":"

    Use the following command to clean the permission change audit records:

    use seahub_db;\nDELETE FROM PermAudit WHERE to_days(now()) - to_days(timestamp) > 90;\n
    "},{"location":"administration/clean_database/#file-history","title":"File History","text":"

    Use the following command to clean the file history records:

    use seahub_db;\nDELETE FROM FileHistory WHERE to_days(now()) - to_days(timestamp) > 90;\n
    "},{"location":"administration/clean_database/#clean-outdated-library-data","title":"Clean outdated library data","text":"

    Since version 6.2, we offer command to clear outdated library records in Seafile database, e.g. records that are not deleted after a library is deleted. This is because users can restore a deleted library, so we can't delete these records at library deleting time.

    ./seahub.sh python-env python3 seahub/manage.py clear_invalid_repo_data\n

    This command has been improved in version 10.0, including:

    1. It will clear the invalid data in small batch, avoiding consume too much database resource in a short time.

    2. Dry-run mode: if you just want to see how much invalid data can be deleted without actually deleting any data, you can use the dry-run option, e.g.

    ./seahub.sh python-env python3 seahub/manage.py clear_invalid_repo_data --dry-run=true\n
    "},{"location":"administration/clean_database/#clean-library-sync-tokens","title":"Clean library sync tokens","text":"

    There are two tables in Seafile db that are related to library sync tokens.

    When you have many sync clients connected to the server, these two tables can have large number of rows. Many of them are no longer actively used. You may clean the tokens that are not used in a recent period, by the following SQL query:

    delete t,i from RepoUserToken t, RepoTokenPeerInfo i where t.token=i.token and sync_time < xxxx;\n

    xxxx is the UNIX timestamp for the time before which tokens will be deleted.

    To be safe, you can first check how many tokens will be removed:

    select * from RepoUserToken t, RepoTokenPeerInfo i where t.token=i.token and sync_time < xxxx;\n
    "},{"location":"administration/export_report/","title":"Export Report","text":"

    Since version 7.0.8 pro, Seafile provides commands to export reports via command line.

    Tip

    Enter into the docker image, then go to /opt/seafile/seafile-server-latest

    "},{"location":"administration/export_report/#export-user-traffic-report","title":"Export User Traffic Report","text":"
    cd seafile-server-latest\n./seahub.sh python-env python3 seahub/manage.py export_user_traffic_report --date 201906\n
    "},{"location":"administration/export_report/#export-user-storage-report","title":"Export User Storage Report","text":"
    cd seafile-server-latest\n./seahub.sh python-env python3 seahub/manage.py export_user_storage_report\n
    "},{"location":"administration/export_report/#export-file-access-log","title":"Export File Access Log","text":"
    cd seafile-server-latest\n./seahub.sh python-env python3 seahub/manage.py export_file_access_log --start-date 2019-06-01 --end-date 2019-07-01\n
    "},{"location":"administration/logs/","title":"Logs","text":""},{"location":"administration/logs/#log-files-of-seafile-server","title":"Log files of seafile server","text":""},{"location":"administration/logs/#log-files-for-seafile-background-node-in-cluster-mode","title":"Log files for seafile background node in cluster mode","text":""},{"location":"administration/seafile_fsck/","title":"Seafile FSCK","text":"

    On the server side, Seafile stores the files in the libraries in an internal format. Seafile has its own representation of directories and files (similar to Git).

    With default installation, these internal objects are stored in the server's file system directly (such as Ext4, NTFS). But most file systems don't assure the integrity of file contents after a hard shutdown or system crash. So if new Seafile internal objects are being written when the system crashes, they can be corrupt after the system reboots. This will make part of the corresponding library not accessible.

    Warning

    If you store the seafile-data directory in a battery-backed NAS (like EMC or NetApp), or use S3 backend available in the Pro edition, the internal objects won't be corrupt.

    We provide a seaf-fsck.sh script to check the integrity of libraries. The seaf-fsck tool accepts the following arguments:

    cd seafile-server-latest\n./seaf-fsck.sh [--repair|-r] [--export|-E export_path] [repo_id_1 [repo_id_2 ...]]\n

    Tip

    Enter into the docker image, then go to /opt/seafile/seafile-server-latest

    There are three modes of operation for seaf-fsck:

    1. checking integrity of libraries.
    2. repairing corrupted libraries.
    3. exporting libraries.
    "},{"location":"administration/seafile_fsck/#checking-integrity-of-libraries","title":"Checking Integrity of Libraries","text":"

    Running seaf-fsck.sh without any arguments will run a read-only integrity check for all libraries.

    ./seaf-fsck.sh\n

    If you want to check integrity for specific libraries, just append the library id's as arguments:

    ./seaf-fsck.sh [library-id1] [library-id2] ...\n

    The output looks like:

    [02/13/15 16:21:07] fsck.c(470): Running fsck for repo ca1a860d-e1c1-4a52-8123-0bf9def8697f.\n[02/13/15 16:21:07] fsck.c(413): Checking file system integrity of repo fsck(ca1a860d)...\n[02/13/15 16:21:07] fsck.c(35): Dir 9c09d937397b51e1283d68ee7590cd9ce01fe4c9 is missing.\n[02/13/15 16:21:07] fsck.c(200): Dir /bf/pk/(9c09d937) is corrupted.\n[02/13/15 16:21:07] fsck.c(105): Block 36e3dd8757edeb97758b3b4d8530a4a8a045d3cb is corrupted.\n[02/13/15 16:21:07] fsck.c(178): File /bf/02.1.md(ef37e350) is corrupted.\n[02/13/15 16:21:07] fsck.c(85): Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.\n[02/13/15 16:21:07] fsck.c(178): File /01.2.md(4a73621f) is corrupted.\n[02/13/15 16:21:07] fsck.c(514): Fsck finished for repo ca1a860d.\n

    The corrupted files and directories are reported.

    Sometimes you can see output like the following:

    [02/13/15 16:36:11] Commit 6259251e2b0dd9a8e99925ae6199cbf4c134ec10 is missing\n[02/13/15 16:36:11] fsck.c(476): Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.\n[02/13/15 16:36:11] fsck.c(314): Scanning available commits...\n[02/13/15 16:36:11] fsck.c(376): Find available commit 1b26b13c(created at 2015-02-13 16:10:21) for repo ca1a860d.\n

    This means the \"head commit\" (current state of the library) recorded in database is not consistent with the library data. In such case, fsck will try to find the last consistent state and check the integrity in that state.

    Tip

    If you have many libraries, it's helpful to save the fsck output into a log file for later analysis.

    "},{"location":"administration/seafile_fsck/#repairing-corruption","title":"Repairing Corruption","text":"

    Corruption repair in seaf-fsck basically works in two steps:

    1. If the library state (commit) recorded in database is not found in data directory, find the last available state from data directory.
    2. Check data integrity in that specific state. If files or directories are corrupted, set them to empty files or empty directories. The corrupted paths will be reported, so that the user can recover them from somewhere else.

    Running the following command repairs all the libraries:

    ./seaf-fsck.sh --repair\n

    Most of time you run the read-only integrity check first, to find out which libraries are corrupted. And then you repair specific libraries with the following command:

    ./seaf-fsck.sh --repair [library-id1] [library-id2] ...\n

    After repairing, in the library history, seaf-fsck includes the list of files and folders that are corrupted. So it's much easier to located corrupted paths.

    "},{"location":"administration/seafile_fsck/#best-practice-for-repairing-a-library","title":"Best Practice for Repairing a Library","text":"

    To check all libraries and find out which library is corrupted, the system admin can run seaf-fsck.sh without any argument and save the output to a log file. Search for keyword \"Fail\" in the log file to locate corrupted libraries. You can run seaf-fsck to check all libraries when your Seafile server is running. It won't damage or change any files.

    When the system admin find a library is corrupted, he/she should run seaf-fsck.sh with \"--repair\" for the library. After the command fixes the library, the admin should inform user to recover files from other places. There are two ways:

    "},{"location":"administration/seafile_fsck/#speeding-up-fsck-by-not-checking-file-contents","title":"Speeding up FSCK by not checking file contents","text":"

    Starting from Pro edition 7.1.5, an option is added to speed up FSCK. Most of the running time of seaf-fsck is spent on calculating hashes for file contents. This hash will be compared with block object ID. If they're not consistent, the block is detected as corrupted.

    In many cases, the file contents won't be corrupted most of time. Some objects are just missing from the system. So it's enough to only check for object existence. This will greatly speed up the fsck process.

    To skip checking file contents, add the \"--shallow\" or \"-s\" option to seaf-fsck.

    "},{"location":"administration/seafile_fsck/#exporting-libraries-to-file-system","title":"Exporting Libraries to File System","text":"

    You can use seaf-fsck to export all the files in libraries to external file system (such as Ext4). This procedure doesn't rely on the seafile database. As long as you have your seafile-data directory, you can always export your files from Seafile to external file system.

    The command syntax is

    ./seaf-fsck.sh --export top_export_path [library-id1] [library-id2] ...\n

    The argument top_export_path is a directory to place the exported files. Each library will be exported as a sub-directory of the export path. If you don't specify library ids, all libraries will be exported.

    Currently only un-encrypted libraries can be exported. Encrypted libraries will be skipped.

    "},{"location":"administration/seafile_gc/","title":"Seafile GC","text":"

    Seafile uses storage de-duplication technology to reduce storage usage. The underlying data blocks will not be removed immediately after you delete a file or a library. As a result, the number of unused data blocks will increase on Seafile server.

    To release the storage space occupied by unused blocks, you have to run a \"garbage collection\" program to clean up unused blocks on your server.

    The GC program cleans up two types of unused blocks:

    1. Blocks that no library references to, that is, the blocks belong to deleted libraries;
    2. If you set history length limit on some libraries, the out-dated blocks in those libraries will also be removed.
    "},{"location":"administration/seafile_gc/#run-gc","title":"Run GC","text":""},{"location":"administration/seafile_gc/#dry-run-mode","title":"Dry-run Mode","text":"

    To see how much garbage can be collected without actually removing any garbage, use the dry-run option:

    ./seaf-gc.sh --dry-run [repo-id1] [repo-id2] ...\n

    Tip

    Enter into the docker image, then go to /opt/seafile/seafile-server-latest

    The output should look like:

    [03/19/15 19:41:49] seafserv-gc.c(115): GC version 1 repo My Library(ffa57d93)\n[03/19/15 19:41:49] gc-core.c(394): GC started. Total block number is 265.\n[03/19/15 19:41:49] gc-core.c(75): GC index size is 1024 Byte.\n[03/19/15 19:41:49] gc-core.c(408): Populating index.\n[03/19/15 19:41:49] gc-core.c(262): Populating index for repo ffa57d93.\n[03/19/15 19:41:49] gc-core.c(308): Traversed 5 commits, 265 blocks.\n[03/19/15 19:41:49] gc-core.c(440): Scanning unused blocks.\n[03/19/15 19:41:49] gc-core.c(472): GC finished. 265 blocks total, about 265 reachable blocks, 0 blocks can be removed.\n\n[03/19/15 19:41:49] seafserv-gc.c(115): GC version 1 repo aa(f3d0a8d0)\n[03/19/15 19:41:49] gc-core.c(394): GC started. Total block number is 5.\n[03/19/15 19:41:49] gc-core.c(75): GC index size is 1024 Byte.\n[03/19/15 19:41:49] gc-core.c(408): Populating index.\n[03/19/15 19:41:49] gc-core.c(262): Populating index for repo f3d0a8d0.\n[03/19/15 19:41:49] gc-core.c(308): Traversed 8 commits, 5 blocks.\n[03/19/15 19:41:49] gc-core.c(264): Populating index for sub-repo 9217622a.\n[03/19/15 19:41:49] gc-core.c(308): Traversed 4 commits, 4 blocks.\n[03/19/15 19:41:49] gc-core.c(440): Scanning unused blocks.\n[03/19/15 19:41:49] gc-core.c(472): GC finished. 5 blocks total, about 9 reachable blocks, 0 blocks can be removed.\n\n[03/19/15 19:41:49] seafserv-gc.c(115): GC version 1 repo test2(e7d26d93)\n[03/19/15 19:41:49] gc-core.c(394): GC started. Total block number is 507.\n[03/19/15 19:41:49] gc-core.c(75): GC index size is 1024 Byte.\n[03/19/15 19:41:49] gc-core.c(408): Populating index.\n[03/19/15 19:41:49] gc-core.c(262): Populating index for repo e7d26d93.\n[03/19/15 19:41:49] gc-core.c(308): Traversed 577 commits, 507 blocks.\n[03/19/15 19:41:49] gc-core.c(440): Scanning unused blocks.\n[03/19/15 19:41:49] gc-core.c(472): GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.\n\n[03/19/15 19:41:50] seafserv-gc.c(124): === Repos deleted by users ===\n[03/19/15 19:41:50] seafserv-gc.c(145): === GC is finished ===\n\n[03/19/15 19:41:50] Following repos have blocks to be removed:\nrepo-id1\nrepo-id2\nrepo-id3\n

    If you give specific library ids, only those libraries will be checked; otherwise all libraries will be checked.

    repos have blocks to be removed

    Notice that at the end of the output there is a \"repos have blocks to be removed\" section. It contains the list of libraries that have garbage blocks. Later when you run GC without --dry-run option, you can use these libraris ids as input arguments to GC program.

    "},{"location":"administration/seafile_gc/#removing-garbage","title":"Removing Garbage","text":"

    To actually remove garbage blocks, run without the --dry-run option:

    ./seaf-gc.sh [repo-id1] [repo-id2] ...\n

    If libraries ids are specified, only those libraries will be checked for garbage.

    As described before, there are two types of garbage blocks to be removed. Sometimes just removing the first type of blocks (those that belong to deleted libraries) is good enough. In this case, the GC program won't bother to check the libraries for outdated historic blocks. The \"-r\" option implements this feature:

    ./seaf-gc.sh -r\n

    Success

    Libraries deleted by the users are not immediately removed from the system. Instead, they're moved into a \"trash\" in the system admin page. Before they're cleared from the trash, their blocks won't be garbage collected.

    "},{"location":"administration/seafile_gc/#removing-fs-objects","title":"Removing FS objects","text":"

    Since Pro server 8.0.6 and community edition 9.0, you can remove garbage fs objects. It should be run without the --dry-run option:

    ./seaf-gc.sh --rm-fs\n

    Bug reports

    This command has bug before Pro Edition 10.0.15 and Community Edition 11.0.7. It could cause virtual libraries (e.g. shared folders) failing to merge into their parent libraries. Please avoid using this option in the affected versions. Please contact our support team if you are affected by this bug.

    "},{"location":"administration/seafile_gc/#using-multiple-threads-in-gc","title":"Using Multiple Threads in GC","text":"

    You can specify the thread number in GC. By default,

    You can specify the thread number in with \"-t\" option. \"-t\" option can be used together with all other options. Each thread will do GC on one library. For example, the following command will use 20 threads to GC all libraries:

    ./seaf-gc.sh -t 20\n

    Since the threads are concurrent, the output of each thread may mix with each others. Library ID is printed in each line of output.

    "},{"location":"administration/seafile_gc/#run-gc-based-on-library-id-prefix","title":"Run GC based on library ID prefix","text":"

    Since GC usually runs quite slowly as it needs to traverse the entire library history. You can use multiple threads to run GC in parallel. For even larger deployments, it's also desirable to run GC on multiple server in parallel.

    A simple pattern to divide the workload among multiple GC servers is to assign libraries to servers based on library ID. Since Pro edition 7.1.5, this is supported. You can add \"--id-prefix\" option to seaf-gc.sh, to specify the library ID prefix. For example, the below command will only process libraries having \"a123\" as ID prefix.

    ./seaf-gc.sh --id-prefix a123\n
    "},{"location":"administration/security_features/","title":"Security Questions","text":""},{"location":"administration/security_features/#how-is-the-connection-between-client-and-server-encrypted","title":"How is the connection between client and server encrypted?","text":"

    Seafile uses HTTP(S) to syncing files between client and server (Since version 4.1.0).

    "},{"location":"administration/security_features/#encrypted-library","title":"Encrypted Library","text":"

    Seafile provides a feature called encrypted library to protect your privacy. The file encryption/decryption is performed on client-side when using the desktop client for file synchronization. The password of an encrypted library is not stored on the server. Even the system admin of the server can't view the file contents.

    There are a few limitation about this feature:

    1. File metadata is NOT encrypted. The metadata includes: the complete list of directory and file names, every files size, the history of editors, when, and what byte ranges were altered.
    2. The client side encryption does currently NOT work while using the web browser and the cloud file explorer of the desktop client. When you are browsing encrypted libraries via the web browser or the cloud file explorer, you need to input the password and the server is going to use the password to decrypt the \"file key\" for the library (see description below) and cache the password in memory for one hour. The plain text password is never stored or cached on the server.
    3. If you create an encrypted library on the web interface, the library password and encryption keys will pass through the server. If you want end-to-end protection, you should create encrypted libraries from desktop client only.
    4. For encryption protocol version 3 or newer, each library use its own salt to derive key/iv pairs. However, all files within a library shares the same salt. Likewise, all the files within a library are encrypted with the same key/iv pair. With encryption protocol version <= 2, all libraries use the same salt, but separate key/iv pairs.
    5. Encrypted library doesn't ensure file integrity. For example, the server admin can still partially change the contents of files in an encrypted library. The client is not able to detect such changes to contents.

    The client side encryption works on iOS client since version 2.1.6. The Android client support client side encryption since version 2.1.0.

    "},{"location":"administration/security_features/#how-does-an-encrypted-library-work","title":"How does an encrypted library work?","text":"

    When you create an encrypted library, you'll need to provide a password for it. All the data in that library will be encrypted with the password before uploading it to the server (see limitations above).

    The encryption procedure is:

    1. Generate a 32-byte long cryptographically strong random number. This will be used as the file encryption key (\"file key\").
    2. Encrypt the file key with the user provided password. We first use PBKDF2 algorithm (1000 iterations of SHA256) to derive a key/iv pair from the password, then use AES 256/CBC to encrypt the file key. The result is called the \"encrypted file key\". This encrypted file key will be sent to and stored on the server. When you need to access the data, you can decrypt the file key from the encrypted file key.
    3. All file data is encrypted by the file key with AES 256/CBC. We use PBKDF2 algorithm (1000 iterations of SHA256) to derive key/iv pair from the file key. After encryption, the data is uploaded to the server.

    The above encryption procedure can be executed on the desktop and the mobile client. The Seahub browser client uses a different encryption procedure that happens at the server. Because of this your password will be transferred to the server.

    When you sync an encrypted library to the desktop, the client needs to verify your password. When you create the library, a \"magic token\" is derived from the password and library id. This token is stored with the library on the server side. The client use this token to check whether your password is correct before you sync the library. The magic token is generated by PBKDF2 algorithm with 1000 iterations of SHA256 hash.

    For maximum security, the plain-text password won't be saved on the client side, too. The client only saves the key/iv pair derived from the \"file key\", which is used to decrypt the data. So if you forget the password, you won't be able to recover it or access your data on the server.

    "},{"location":"administration/security_features/#why-fileserver-delivers-every-content-to-everybody-knowing-the-content-url-of-an-unshared-private-file","title":"Why fileserver delivers every content to everybody knowing the content URL of an unshared private file?","text":"

    When a file download link is clicked, a random URL is generated for user to access the file from fileserver. This url can only be access once. After that, all access will be denied to the url. So even if someone else happens to know about the url, he can't access it anymore.

    "},{"location":"administration/security_features/#how-does-seafile-store-user-login-password","title":"How does Seafile store user login password?","text":"

    User login passwords are stored in hash form only. Note that user login password is different from the passwords used in encrypted libraries. In the database, its format is

    PBKDF2SHA256$iterations$salt$hash\n

    The record is divided into 4 parts by the $ sign.

    To calculate the hash:

    "},{"location":"administration/two_factor_authentication/","title":"Two-Factor Authentication","text":"

    Starting from version 6.0, we added Two-Factor Authentication to enhance account security.

    There are two ways to enable this feature:

    After that, there will be a \"Two-Factor Authentication\" section in the user profile page.

    Users can use the Google Authenticator app on their smart-phone to scan the QR code.

    "},{"location":"changelog/changelog-for-seafile-professional-server-old/","title":"Seafile Professional Server Changelog (old)","text":""},{"location":"changelog/changelog-for-seafile-professional-server-old/#44","title":"4.4","text":"

    Note: Two new options are added in version 4.4, both are in seahub_settings.py

    This version contains no database table change.

    "},{"location":"changelog/changelog-for-seafile-professional-server-old/#449-20160229","title":"4.4.9 (2016.02.29)","text":""},{"location":"changelog/changelog-for-seafile-professional-server-old/#448-20151217","title":"4.4.8 (2015.12.17)","text":""},{"location":"changelog/changelog-for-seafile-professional-server-old/#447-20151120","title":"4.4.7 (2015.11.20)","text":""},{"location":"changelog/changelog-for-seafile-professional-server-old/#446-20151109","title":"4.4.6 (2015.11.09)","text":"