mirror of
https://github.com/haiwen/seafile-admin-docs.git
synced 2025-12-29 14:02:47 +00:00
4032 lines
100 KiB
HTML
4032 lines
100 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
|
||
<meta name="author" content="seafile">
|
||
|
||
|
||
<link rel="canonical" href="https://haiwen.github.io/seafile-admin-docs/deploy_pro/multiple_storage_backends/">
|
||
|
||
|
||
<link rel="prev" href="../setup_with_oss/">
|
||
|
||
|
||
<link rel="next" href="../migrate/">
|
||
|
||
|
||
<link rel="icon" href="../../media/favicon.ico">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
|
||
|
||
|
||
|
||
<title>Multiple Storage Backends - Seafile Admin Manual</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../../stylesheets/extra.css">
|
||
|
||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#multiple-storage-backend" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="md-header md-header--shadow" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href="../.." title="Seafile Admin Manual" class="md-header__button md-logo" aria-label="Seafile Admin Manual" data-md-component="logo">
|
||
|
||
<img src="../../media/seafile-transparent-1024.png" alt="logo">
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Seafile Admin Manual
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Multiple Storage Backends
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
haiwen/seafile-admin-docs
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href="../.." title="Seafile Admin Manual" class="md-nav__button md-logo" aria-label="Seafile Admin Manual" data-md-component="logo">
|
||
|
||
<img src="../../media/seafile-transparent-1024.png" alt="logo">
|
||
|
||
</a>
|
||
Seafile Admin Manual
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
haiwen/seafile-admin-docs
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Overview
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Overview
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../overview/components/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Components
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../overview/file_permission_management/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
File permission management
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../roadmap/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Roadmap
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../contribution/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Contribution
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../changelog/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Changelog
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Community Setup on Linux
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Seafile Community Setup on Linux
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/using_mysql/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Installation with MySQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/https_with_nginx/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
HTTPS with Nginx
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/https_with_apache/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
HTTPS with Apache
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Professional Setup on Linux
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Seafile Professional Setup on Linux
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../download_and_setup_seafile_professional_server/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Installation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../migrate_from_seafile_community_server/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Migration from Seafile Community
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Storage Backends
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_3_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Storage Backends
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../setup_with_amazon_s3/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Amazon S3 Backend
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../setup_with_ceph/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Ceph Backend
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../setup_with_swift/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OpenStack Swift Backend
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../setup_with_oss/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Alibaba OSS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Multiple Storage Backends
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="./" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Multiple Storage Backends
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#outline" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#seafile-configuration" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Seafile Configuration
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Seafile Configuration">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#notes-for-docker-installs" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Notes for Docker Installs
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#defining-storage-backends" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Defining Storage Backends
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#library-mapping-policies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Library Mapping Policies
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Library Mapping Policies">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#user-chosen" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
User Chosen
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#role-based-mapping" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Role-based Mapping
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#library-id-based-mapping" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Library ID Based Mapping
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#multiple-storage-backend-data-migration" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Multiple Storage Backend Data Migration
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Multiple Storage Backend Data Migration">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#delete-all-objects-in-a-library-in-the-specified-storage-backend" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Delete All Objects In a Library In The Specified Storage Backend
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../migrate/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Data migration
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Cluster Deployment
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_3_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Cluster Deployment
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../deploy_in_a_cluster/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Deploy in a cluster
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../enable_search_and_background_tasks_in_a_cluster/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Search and background tasks in a cluster
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../memcached_mariadb_cluster/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Memcache and MariaDB Cluster
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../setup_seafile_cluster_with_nfs/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Setup Seafile cluster with NFS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../seafile_professional_sdition_software_license_agreement/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
License
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Setup with Docker
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Seafile Setup with Docker
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/deploy_seafile_with_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Community Installation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/pro-edition/deploy_seafile_pro_with_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Professional Installation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/cluster/deploy_seafile_cluster_with_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Docker Cluster Deployment
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/deploy_with_k8s/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Setup with Kubernetes (K8s)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/pro-edition/migrate_ce_to_pro_with_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Migration from Seafile Community
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/non_docker_to_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Migrate from non-docker deployment
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../docker/seafile_docker_autostart/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Docker autostart
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced Setup Options
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Advanced Setup Options
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LDAP/AD Integration
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
LDAP/AD Integration
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/using_ldap/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LDAP Integration
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../using_ldap_pro/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LDAP Configuration for Seafile Pro
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ldap_group_sync/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Importing Groups from LDAP (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ldap_role_sync/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Importing Roles from LDAP (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/ldap_in_11.0/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LDAP in version 11.0
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ldap_in_11.0/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LDAP in version 11.0 (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Single Sign On
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Single Sign On
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/single_sign_on/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/oauth/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OAuth Authentication
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/remote_user/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Remote User Authentication
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/shibboleth_authentication/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Shibboleth Authentication
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/auto_login_seadrive/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Auto Login to SeaDrive on Windows
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../saml2_in_10.0/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SAML 2.0 in version 10.0+ (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../adfs/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SAML 2.0 (old) (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../cas/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
CAS Authentication (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/auth_switch/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Switch authentication
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_3" id="__nav_5_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Online Office
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Online Office
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/libreoffice_online/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
LibreOffice Online Integration
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/only_office/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OnlyOffice Integration
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../office_web_app/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Office Online Server Integration (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../extra_setup/setup_seadoc/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SeaDoc Integration
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/notification-server/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Notification Server
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../extension/webdav/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
WebDAV extension
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../extension/fuse/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
FUSE extension
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Virus Scan (Pro)
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Virus Scan (Pro)
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../virus_scan/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../deploy_clamav_with_seafile/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Deploy ClamAV with Seafile
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../virus_scan_with_kav4fs/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Virus Scan With Kav4fs
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_9" id="__nav_5_9_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced User Management (Pro)
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Advanced User Management (Pro)
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../multi_institutions/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Multi-Institutions Support
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../roles_permissions/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Roles and Permissions
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../admin_roles_permissions/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Administrator Roles and Permissions
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../multi_tenancy/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Multi-Tenancy Support
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../details_about_file_search/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced File Search configuration (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/migrate_from_sqlite_to_mysql/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Migrate From SQLite to MySQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5_12" id="__nav_5_12_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Others Deployment Notes
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Others Deployment Notes
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/start_seafile_at_system_bootup/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Start Seafile at System Bootup
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/using_logrotate/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Logrotate
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/ocm/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Open Cloud Mesh
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/deploy_seafile_behind_nat/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Deploy Seafile behind NAT
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../deploy/deploy_seahub_at_non-root_domain/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Deploy Seahub at Non-root domain or on custom port
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/fail2ban/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Config fail2ban
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../real_time_backup/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Real-time Backup Server
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Configuration and Customization
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Configuration and Customization
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/ccnet-conf/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ccnet.conf
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/seafile-conf/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
seafile.conf
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/seahub_settings_py/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
seahub_settings.py
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/seafevents-conf/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
seafevents.conf
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/seahub_customization/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seahub customization
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../config/sending_email/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Email Sending
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Administration
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Administration
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/account/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Account management
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/two_factor_authentication/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Two-factor Authentication
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/security_features/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Security features
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../security/auditing/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Access logs and auditing
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/export_report/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Export report
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/logs/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Logs
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/backup_recovery/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Backup and Recovery
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/seafile_fsck/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile FSCK
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/seafile_gc/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile GC
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../maintain/clean_database/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Clean database
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../seaf_import/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Import Directory To Seafile (Pro)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade Seafile Server
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Upgrade Seafile Server
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade Seafile Docker
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_a_cluster/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade Seafile Cluster
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_a_cluster_docker/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade Seafile Cluster (Docker)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_7.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 7.0.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_7.1.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 7.1.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_8.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 8.0.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_9.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 9.0.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_10.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 10.0.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_11.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 11.0.x
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../upgrade/upgrade_notes_for_12.0.x/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Upgrade notes for 12.0.x (In progress)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Developing
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Developing
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../develop/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_9_2" id="__nav_9_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
How to Build Seafile
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_9_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_9_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
How to Build Seafile
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/linux/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linux
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/osx/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
macOS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/windows/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Windows
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/server/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Server development
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../build_seafile/rpi/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Server binary package
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../develop/translation/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Translation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../develop/web_api_v2.1/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web API V2.1
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="https://github.com/rene-s/Seafile-PHP-SDK" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP API
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../develop/data_model/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Data Model
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ChangeLog
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
ChangeLog
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../changelog/server-changelog/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Community Edition
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../changelog/changelog-for-seafile-professional-server/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Professional Edition
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../changelog/client-changelog/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seafile Client
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../changelog/drive-client-changelog/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Drive Client
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#outline" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Outline
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#seafile-configuration" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Seafile Configuration
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Seafile Configuration">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#notes-for-docker-installs" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Notes for Docker Installs
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#defining-storage-backends" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Defining Storage Backends
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#library-mapping-policies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Library Mapping Policies
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Library Mapping Policies">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#user-chosen" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
User Chosen
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#role-based-mapping" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Role-based Mapping
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#library-id-based-mapping" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Library ID Based Mapping
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#multiple-storage-backend-data-migration" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Multiple Storage Backend Data Migration
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Multiple Storage Backend Data Migration">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#delete-all-objects-in-a-library-in-the-specified-storage-backend" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Delete All Objects In a Library In The Specified Storage Backend
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h1 id="multiple-storage-backend">Multiple Storage Backend<a class="headerlink" href="#multiple-storage-backend" title="Permanent link">¶</a></h1>
|
||
<p>There are some use cases that supporting multiple storage backends in Seafile server is needed. Such as:</p>
|
||
<ol>
|
||
<li>Store different types of files into different storage backends. For example, normal files can be stored in primary storage (disks, SSD); Archived files can be stored in cold storage (tapes or other backup systems).</li>
|
||
<li>Combine multiple storage backends to extend storage scalability. For example, a single NFS volume may be limited by size; a single S3 bucket of Ceph RGW may suffer performance decrease when the number of objects become very large.</li>
|
||
</ol>
|
||
<p>The library data in Seafile server are spreaded into multiple storage backends in the unit of libraries. All the data in a library will be located in the same storage backend. The mapping from library to its storage backend is stored in a database table. Different mapping policies can be chosen based on the use case.</p>
|
||
<p>To use this feature, you need to:</p>
|
||
<ol>
|
||
<li>Define storage classes in seafile.conf.</li>
|
||
<li>Enable multiple backend feature in seahub and choose a mapping policy.</li>
|
||
</ol>
|
||
<h2 id="outline">Outline<a class="headerlink" href="#outline" title="Permanent link">¶</a></h2>
|
||
<p>In Seafile server, a storage backend is represented by the concept of "storage class". A storage class is defined by specifying the following information:</p>
|
||
<ul>
|
||
<li><code>storage_id</code>: an internal string ID to identify the storage class. It's not visible to users. For example "primary storage".</li>
|
||
<li><code>name</code>: A user visible name for the storage class.</li>
|
||
<li><code>is_default</code>: whether this storage class is the default. This option are effective in two cases:</li>
|
||
<li>If the chosen mapping policy allows users to choose storage class for a library, this would be the default if the user doesn't choose one.</li>
|
||
<li>For other mapping policies, this option only takes effect when you have some existing libraries before enabling multiple storage backend feature. For existing libraries, the system will automatically map them to the default storage backend. So in this case you have to set the existing storage backend as the default one.</li>
|
||
<li><code>commits</code>:the storage for storing the commit objects for this class. It can be any storage that Seafile supports, like file system, ceph, s3.</li>
|
||
<li><code>fs</code>:the storage for storing the fs objects for this class. It can be any storage that Seafile supports, like file system, ceph, s3.</li>
|
||
<li><code>blocks</code>:the storage for storing the block objects for this class. It can be any storage that Seafile supports, like file system, ceph, s3.</li>
|
||
</ul>
|
||
<p>commit, fs, and blocks can be stored in different storages. This provides the most flexible way to define storage classes.</p>
|
||
<h2 id="seafile-configuration">Seafile Configuration<a class="headerlink" href="#seafile-configuration" title="Permanent link">¶</a></h2>
|
||
<p>As Seafile server before 6.3 version doesn't support multiple storage classes, you have to explicitly enable this new feature and define storage classes with a different syntax than how we define storage backend before.</p>
|
||
<p>First, you have to enable this feature in seafile.conf.</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="k">[storage]</span>
|
||
<span class="na">enable_storage_classes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span>
|
||
<span class="na">storage_classes_file</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/opt/seafile_storage_classes.json</span>
|
||
</code></pre></div>
|
||
|
||
<ul>
|
||
<li>enable_storage_classes :If this is set to true, the storage class feature is enabled. You must define the storage classes in a JSON file provided in the next configuration option.</li>
|
||
<li>storage_classes_file:Specifies the path for the JSON file that contains the storage class definition.</li>
|
||
</ul>
|
||
<p>You also need to add <a href="/manual/config/seafile-conf.md#cache-pro-edition-only">memory cache configurations</a> to <code>seafile.conf</code>.</p>
|
||
<h3 id="notes-for-docker-installs">Notes for Docker Installs<a class="headerlink" href="#notes-for-docker-installs" title="Permanent link">¶</a></h3>
|
||
<p>If installing Seafile as Docker containers, place the <code>seafile_storage_classes.json</code> file on your local disk in a sub-directory of the location that is mounted to the <code>seafile</code> container, and set the <code>storage_classes_file</code> configuration above to a path <strong><em>relative to the <code>/shared/</code> directory mounted on the <code>seafile</code> container</em></strong>. </p>
|
||
<p>For example, if the configuration of the <code>seafile</code> container in your <code>docker-compose.yml</code> file is similar to the following:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="l l-Scalar l-Scalar-Plain">// docker-compose.yml</span>
|
||
<span class="l l-Scalar l-Scalar-Plain">services</span><span class="p p-Indicator">:</span>
|
||
<span class="w"> </span><span class="nt">seafile</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">seafile</span>
|
||
<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/opt/seafile-data:/shared</span>
|
||
</code></pre></div>
|
||
|
||
<p>Then place the JSON file within any sub-directory of <code>/opt/seafile-data</code> (such as <code>/opt/seafile-data/conf/</code>) and then configure <code>seafile.conf</code> like so:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="k">[storage]</span>
|
||
<span class="n">enable_storage_classes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||
<span class="n">storage_classes_file</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">/shared/conf/seafile</span><span class="mi">_</span><span class="n">storage_classes</span><span class="p">.</span><span class="n">json</span>
|
||
</code></pre></div>
|
||
|
||
<p>You also need to add <a href="/manual/config/seafile-conf.md#cache-pro-edition-only">memory cache configurations</a> to <code>seafile.conf</code>.</p>
|
||
<h2 id="defining-storage-backends">Defining Storage Backends<a class="headerlink" href="#defining-storage-backends" title="Permanent link">¶</a></h2>
|
||
<p>The JSON file is an array of objects. Each object defines a storage class. The fields in the definition corresponds to the information we need to specify for a storage class. Below is an example:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="p">[</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"storage_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hot_storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hot Storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"is_default"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"commits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"s3"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-commits"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ZjoJ8RPNDqP1vcdD60U4wAHwUQf2oJYqxN27oR09"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"AKIAIOT3GCU5VGCCL44A"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"fs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"s3"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-fs"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ZjoJ8RPNDqP1vcdD60U4wAHwUQf2oJYqxN27oR09"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"AKIAIOT3GCU5VGCCL44A"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"s3"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-blocks"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ZjoJ8RPNDqP1vcdD60U4wAHwUQf2oJYqxN27oR09"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"key_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"AKIAIOT3GCU5VGCCL44A"</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"storage_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cold_storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Cold Storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"is_default"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"fs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fs"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/storage/seafile/seafile-data"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"commits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fs"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/storage/seafile/seafile-data"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fs"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/storage/seafile/seaflle-data"</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"storage_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"swift_storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Swift Storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"fs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"swift"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"tenant"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adminTenant"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"user_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"openstack"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"container"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-commits"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_host"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.56.31:5000"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_ver"</span><span class="p">:</span><span class="w"> </span><span class="s2">"v2.0"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"commits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"swift"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"tenant"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adminTenant"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"user_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"openstack"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"container"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-fs"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_host"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.56.31:5000"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_ver"</span><span class="p">:</span><span class="w"> </span><span class="s2">"v2.0"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"swift"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"tenant"</span><span class="p">:</span><span class="w"> </span><span class="s2">"adminTenant"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"user_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"openstack"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"container"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-blocks"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_host"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.56.31:5000"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"auth_ver"</span><span class="p">:</span><span class="w"> </span><span class="s2">"v2.0"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"region"</span><span class="p">:</span><span class="w"> </span><span class="s2">"RegionTwo"</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"storage_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ceph_storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ceph Storage"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"fs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ceph"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"ceph_config"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/etc/ceph/ceph.conf"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"pool"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-fs"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"commits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ceph"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"ceph_config"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/etc/ceph/ceph.conf"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"pool"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-commits"</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="nt">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ceph"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"ceph_config"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/etc/ceph/ceph.conf"</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="nt">"pool"</span><span class="p">:</span><span class="w"> </span><span class="s2">"seafile-blocks"</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="p">]</span>
|
||
</code></pre></div>
|
||
|
||
<p>As you may have seen, the <code>commits</code>, <code>fs</code> and <code>blocks</code> information syntax is similar to what is used in <code>[commit_object_backend]</code>, <code>[fs_object_backend]</code> and <code>[block_backend]</code> section of seafile.conf. Refer to the detailed syntax in the documentation for the storage you use. For exampe, if you use S3 storage, refer to <a href="../setup_with_amazon_s3/">S3 Storage</a>.</p>
|
||
<p>If you use file system as storage for <code>fs</code>, <code>commits</code> or <code>blocks</code>, you must explicitly provide the path for the <code>seafile-data</code> directory. The objects will be stored in <code>storage/commits</code>, <code>storage/fs</code>, <code>storage/blocks</code> under this path. </p>
|
||
<p><em>Note</em>: Currently file system, S3 and Swift backends are supported. Ceph/RADOS is also supported since version 7.0.14.</p>
|
||
<h2 id="library-mapping-policies">Library Mapping Policies<a class="headerlink" href="#library-mapping-policies" title="Permanent link">¶</a></h2>
|
||
<p>Library mapping policies decide the storage class a library uses. Currently we provide 3 policies for 3 different use cases. The storage class of a library is decided on creation and stored in a database table. The storage class of a library won't change if the mapping policy is changed later.</p>
|
||
<p>Before choosing your mapping policy, you need to enable the storage classes feature in seahub_settings.py:</p>
|
||
<div class="codehilite"><pre><span></span><code>ENABLE_STORAGE_CLASSES = True
|
||
</code></pre></div>
|
||
|
||
<h3 id="user-chosen">User Chosen<a class="headerlink" href="#user-chosen" title="Permanent link">¶</a></h3>
|
||
<p>This policy lets the users choose which storage class to use when creating a new library. The users can select any storage class that's been defined in the JSON file.</p>
|
||
<p>To use this policy, add following options in seahub_settings.py:</p>
|
||
<div class="codehilite"><pre><span></span><code>STORAGE_CLASS_MAPPING_POLICY = 'USER_SELECT'
|
||
</code></pre></div>
|
||
|
||
<p>If you enable storage class support but don't explicitly set <code>STORAGE_CLASS_MAPPING_POLIICY</code> in seahub_settings.py, this policy is used by default.</p>
|
||
<h3 id="role-based-mapping">Role-based Mapping<a class="headerlink" href="#role-based-mapping" title="Permanent link">¶</a></h3>
|
||
<p>Due to storage cost or management considerations, sometimes a system admin wants to make different type of users use different storage backends (or classes). You can configure a user's storage classes based on their roles.</p>
|
||
<p>A new option <code>storage_ids</code> is added to the role configuration in <code>seahub_settings.py</code> to assign storage classes to each role. If only one storage class is assigned to a role, the users with this role cannot choose storage class for libraries; otherwise, the users can choose a storage class if more than one class are assigned. If no storage class is assigned to a role, the default class specified in the JSON file will be used. </p>
|
||
<p>Here are the sample options in seahub_settings.py to use this policy:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="n">ENABLE_STORAGE_CLASSES</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">True</span>
|
||
<span class="n">STORAGE_CLASS_MAPPING_POLICY</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'ROLE_BASED'</span>
|
||
|
||
<span class="n">ENABLED_ROLE_PERMISSIONS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="s1">'default'</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="s1">'can_add_repo'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_add_group'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_view_org'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_use_global_address_book'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_generate_share_link'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_generate_upload_link'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_invite_guest'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_android_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_ios_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_desktop_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'storage_ids'</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'old_version_id'</span><span class="p">,</span><span class="w"> </span><span class="s1">'hot_storage'</span><span class="p">,</span><span class="w"> </span><span class="s1">'cold_storage'</span><span class="p">,</span><span class="w"> </span><span class="s1">'a_storage'</span><span class="p">],</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="w"> </span><span class="s1">'guest'</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="s1">'can_add_repo'</span><span class="p">:</span><span class="w"> </span><span class="n">True</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_add_group'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_view_org'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_use_global_address_book'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_generate_share_link'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_generate_upload_link'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_invite_guest'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_android_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_ios_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'can_connect_with_desktop_clients'</span><span class="p">:</span><span class="w"> </span><span class="n">False</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="s1">'storage_ids'</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s1">'hot_storage'</span><span class="p">,</span><span class="w"> </span><span class="s1">'cold_storage'</span><span class="p">],</span>
|
||
<span class="w"> </span><span class="p">},</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
|
||
<h3 id="library-id-based-mapping">Library ID Based Mapping<a class="headerlink" href="#library-id-based-mapping" title="Permanent link">¶</a></h3>
|
||
<p>This policy maps libraries to storage classes based on its library ID. The ID of a library is an UUID. In this way, the data in the system can be evenly distributed among the storage classes.</p>
|
||
<p>Note that this policy is not a designed to be a complete distributed storage solution. It doesn't handle automatic migration of library data between storage classes. If you need to add more storage classes to the configuration, existing libraries will stay in their original storage classes. New libraries can be distributed among the new storage classes (backends). You still have to plan about the total storage capacity of your system at the beginning.</p>
|
||
<p>To use this policy, you first add following options in seahub_settings.py:</p>
|
||
<div class="codehilite"><pre><span></span><code>STORAGE_CLASS_MAPPING_POLICY = 'REPO_ID_MAPPING'
|
||
</code></pre></div>
|
||
|
||
<p>Then you can add option <code>for_new_library</code> to the backends which are expected to store new libraries in json file:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="p">[</span>
|
||
<span class="p">{</span>
|
||
<span class="s">"storage_id"</span><span class="p">:</span><span class="w"> </span><span class="s">"new_backend"</span><span class="p">,</span>
|
||
<span class="s">"name"</span><span class="p">:</span><span class="w"> </span><span class="s">"New store"</span><span class="p">,</span>
|
||
<span class="s">"for_new_library"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||
<span class="s">"is_default"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
||
<span class="s">"fs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="s">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s">"fs"</span><span class="p">,</span><span class="w"> </span><span class="s">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s">"/storage/seafile/new-data"</span><span class="p">},</span>
|
||
<span class="s">"commits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="s">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s">"fs"</span><span class="p">,</span><span class="w"> </span><span class="s">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s">"/storage/seafile/new-data"</span><span class="p">},</span>
|
||
<span class="s">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="s">"backend"</span><span class="p">:</span><span class="w"> </span><span class="s">"fs"</span><span class="p">,</span><span class="w"> </span><span class="s">"dir"</span><span class="p">:</span><span class="w"> </span><span class="s">"/storage/seafile/new-data"</span><span class="p">}</span>
|
||
<span class="p">}</span>
|
||
<span class="p">]</span>
|
||
</code></pre></div>
|
||
|
||
<h2 id="multiple-storage-backend-data-migration">Multiple Storage Backend Data Migration<a class="headerlink" href="#multiple-storage-backend-data-migration" title="Permanent link">¶</a></h2>
|
||
<p>Run the <code>migrate-repo.sh</code> script to migrate library data between different storage backends.</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="p">.</span><span class="o">/</span><span class="n">migrate</span><span class="o">-</span><span class="n">repo</span><span class="p">.</span><span class="n">sh</span><span class="w"> </span><span class="o">[</span><span class="n">repo_id</span><span class="o">]</span><span class="w"> </span><span class="n">origin_storage_id</span><span class="w"> </span><span class="n">destination_storage_id</span>
|
||
</code></pre></div>
|
||
|
||
<ul>
|
||
<li>repo_id: migrated library id</li>
|
||
<li>origin_storage_id: migrated origin storage id</li>
|
||
<li>destination_storage_id: migrated destination storage id</li>
|
||
</ul>
|
||
<p>repo_id is optional, if not specified, all libraries will be migrated.</p>
|
||
<p>Before running the migration script, you can set the <code>OBJECT_LIST_FILE_PATH</code> environment variable to specify a path prefix to store the migrated object list.</p>
|
||
<p>For example:</p>
|
||
<div class="codehilite"><pre><span></span><code><span class="k">export</span><span class="w"> </span><span class="n">OBJECT_LIST_FILE_PATH</span><span class="o">=/</span><span class="n">opt</span><span class="o">/</span><span class="n">test</span>
|
||
</code></pre></div>
|
||
|
||
<p>This will create three files in the specified path (/opt): <code>test_4c731e5c-f589-4eaa-889f-14c00d4893cb.fs</code> <code>test_4c731e5c-f589-4eaa-889f-14c00d4893cb.commits</code> <code>test_4c731e5c-f589-4eaa-889f-14c00d4893cb.blocks</code>
|
||
Setting the <code>OBJECT_LIST_FILE_PATH</code> environment variable has two purposes:</p>
|
||
<ol>
|
||
<li>If the migrated library is very large, you need to run the migration script multiple times. Setting this environment variable can skip the previously migrated objects.</li>
|
||
<li>After the migration is complete, if you need to delete the objects in the origin storage, you must set this environment variable.</li>
|
||
</ol>
|
||
<h3 id="delete-all-objects-in-a-library-in-the-specified-storage-backend">Delete All Objects In a Library In The Specified Storage Backend<a class="headerlink" href="#delete-all-objects-in-a-library-in-the-specified-storage-backend" title="Permanent link">¶</a></h3>
|
||
<p>Run the <code>remove-objs.sh</code> script (before migration, you need to set the OBJECT_LIST_FILE_PATH environment variable) to delete all objects in a library in the specified storage backend.</p>
|
||
<div class="codehilite"><pre><span></span><code>./remove-objs.sh repo_id storage_id
|
||
</code></pre></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
<footer class="md-footer">
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
<div class="md-copyright__highlight">
|
||
Copyright © 2023 Seafile Ltd.
|
||
</div>
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="md-social">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://github.com/haiwen/seafile-admin-docs/" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": "../..", "features": [], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||
|
||
|
||
<script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |