seafile-admin-docs/12.0/setup_binary/installation_pro/index.html

4956 lines
148 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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/12.0/setup_binary/installation_pro/">
<link rel="prev" href="../outline_pro/">
<link rel="next" href="../migrate_from_seafile_community_server/">
<link rel="icon" href="../../media/favicon.ico">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.42">
<title>Installation - Seafile Admin Manual</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.0253249f.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="indigo" 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="#installation-of-seafile-server-professional-edition" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header" 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">
Installation
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<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">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<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>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</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">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Introduction
</a>
</li>
<li class="md-tabs__item">
<a href="../../setup/overview/" class="md-tabs__link">
Setup
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../outline_ce/" class="md-tabs__link">
Setup (binary)
</a>
</li>
<li class="md-tabs__item">
<a href="../../extension/setup_seadoc/" class="md-tabs__link">
Extensions
</a>
</li>
<li class="md-tabs__item">
<a href="../../config/ldap_in_11.0_ce/" class="md-tabs__link">
Configuration
</a>
</li>
<li class="md-tabs__item">
<a href="../../administration/" class="md-tabs__link">
Administration
</a>
</li>
<li class="md-tabs__item">
<a href="../../upgrade/upgrade/" class="md-tabs__link">
Upgrade
</a>
</li>
<li class="md-tabs__item">
<a href="../../develop/" class="md-tabs__link">
Developing
</a>
</li>
<li class="md-tabs__item">
<a href="../../changelog/server-changelog/" class="md-tabs__link">
ChangeLog
</a>
</li>
</ul>
</div>
</nav>
<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 md-nav--lifted" 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">
Introduction
</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>
Introduction
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../introduction/components/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../introduction/file_permission_management/" class="md-nav__link">
<span class="md-ellipsis">
File permission management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../introduction/roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../introduction/contribution/" class="md-nav__link">
<span class="md-ellipsis">
Contribution
</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">
Setup
</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>
Setup
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../setup/overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2" >
<label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
<span class="md-ellipsis">
Single node installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_2">
<span class="md-nav__icon md-icon"></span>
Single node installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../setup/setup_ce_by_docker/" class="md-nav__link">
<span class="md-ellipsis">
Setup community edition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/setup_pro_by_docker/" class="md-nav__link">
<span class="md-ellipsis">
Setup pro edition
</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_3" >
<label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
<span class="md-ellipsis">
Advanced topics
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
Advanced topics
</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_2_3_1" >
<label class="md-nav__link" for="__nav_2_3_1" id="__nav_2_3_1_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="3" aria-labelledby="__nav_2_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3_1">
<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/setup_with_amazon_s3/" class="md-nav__link">
<span class="md-ellipsis">
S3 Backend
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/setup_with_ceph/" class="md-nav__link">
<span class="md-ellipsis">
Ceph Backend
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/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/setup_with_oss/" class="md-nav__link">
<span class="md-ellipsis">
Alibaba OSS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/setup_with_multiple_storage_backends/" class="md-nav__link">
<span class="md-ellipsis">
Multiple Storage Backends
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/migrate_backends_data/" class="md-nav__link">
<span class="md-ellipsis">
Data migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../setup/seafile_docker_autostart/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Docker autostart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/setup_with_an_existing_mysql_server/" class="md-nav__link">
<span class="md-ellipsis">
Deploy with an existing MySQL server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/run_seafile_as_non_root_user_inside_docker/" class="md-nav__link">
<span class="md-ellipsis">
Run Seafile as non root user inside docker
</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_4" >
<label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
<span class="md-ellipsis">
Cluster installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
Cluster installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../setup/cluster_deploy_with_docker/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Docker Cluster Deployment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../setup/cluster_deploy_with_k8s/" class="md-nav__link">
<span class="md-ellipsis">
Setup with Kubernetes (K8s)
</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_5" >
<label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="0">
<span class="md-ellipsis">
Migration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../setup/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="../../setup/migrate_non_docker_to_docker/" class="md-nav__link">
<span class="md-ellipsis">
Migrate from non-docker deployment
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section 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="">
<span class="md-ellipsis">
Setup (binary)
</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>
Setup (binary)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="">
<span class="md-ellipsis">
Seafile Community Setup
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<span class="md-nav__icon md-icon"></span>
Seafile Community Setup
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../outline_ce/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../installation_ce/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../https_with_nginx/" class="md-nav__link">
<span class="md-ellipsis">
HTTPS with Nginx
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../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--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" checked>
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="">
<span class="md-ellipsis">
Seafile Professional Setup
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Seafile Professional Setup
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../outline_pro/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</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">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Installation
</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="#requirements" class="md-nav__link">
<span class="md-ellipsis">
Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#setup" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
<nav class="md-nav" aria-label="Setup">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#installing-and-preparing-the-sql-database" class="md-nav__link">
<span class="md-ellipsis">
Installing and preparing the SQL database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installing-prerequisites" class="md-nav__link">
<span class="md-ellipsis">
Installing prerequisites
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installing-java-runtime-environment" class="md-nav__link">
<span class="md-ellipsis">
Installing Java Runtime Environment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-the-programm-directory" class="md-nav__link">
<span class="md-ellipsis">
Creating the programm directory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-user-seafile" class="md-nav__link">
<span class="md-ellipsis">
Creating user seafile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#placing-the-seafile-pe-license" class="md-nav__link">
<span class="md-ellipsis">
Placing the Seafile PE license
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#downloading-the-install-package" class="md-nav__link">
<span class="md-ellipsis">
Downloading the install package
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#uncompressing-the-package" class="md-nav__link">
<span class="md-ellipsis">
Uncompressing the package
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#run-the-setup-script" class="md-nav__link">
<span class="md-ellipsis">
Run the setup script
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#setup-memory-cache" class="md-nav__link">
<span class="md-ellipsis">
Setup Memory Cache
</span>
</a>
<nav class="md-nav" aria-label="Setup Memory Cache">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#use-memcached" class="md-nav__link">
<span class="md-ellipsis">
Use Memcached
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-redis" class="md-nav__link">
<span class="md-ellipsis">
Use Redis
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-httphttps" class="md-nav__link">
<span class="md-ellipsis">
Enabling HTTP/HTTPS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#starting-seafile-server" class="md-nav__link">
<span class="md-ellipsis">
Starting Seafile Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#enabling-full-text-search" class="md-nav__link">
<span class="md-ellipsis">
Enabling full text search
</span>
</a>
<nav class="md-nav" aria-label="Enabling full text search">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#deploying-elasticsearch" class="md-nav__link">
<span class="md-ellipsis">
Deploying ElasticSearch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#modifying-seafevents" class="md-nav__link">
<span class="md-ellipsis">
Modifying seafevents
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</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--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_4" >
<label class="md-nav__link" for="__nav_3_2_4" id="__nav_3_2_4_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="3" aria-labelledby="__nav_3_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_4">
<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--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="">
<span class="md-ellipsis">
Other deployment notes
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Other deployment notes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../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="../using_logrotate/" class="md-nav__link">
<span class="md-ellipsis">
Logrotate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fail2ban/" class="md-nav__link">
<span class="md-ellipsis">
Config fail2ban
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../migrate_from_sqlite_to_mysql/" class="md-nav__link">
<span class="md-ellipsis">
Migrate From SQLite to MySQL
</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_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Extensions
</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>
Extensions
</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_4_1" >
<label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
<span class="md-ellipsis">
Extra Seafile components
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_1">
<span class="md-nav__icon md-icon"></span>
Extra Seafile components
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../extension/setup_seadoc/" class="md-nav__link">
<span class="md-ellipsis">
SeaDoc Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/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>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" >
<label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_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_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_2">
<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="../../extension/libreoffice_online/" class="md-nav__link">
<span class="md-ellipsis">
LibreOffice Online Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/only_office/" class="md-nav__link">
<span class="md-ellipsis">
OnlyOffice Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/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 md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" >
<label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_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_4_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_3">
<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="../../extension/virus_scan/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/deploy_clamav_with_seafile/" class="md-nav__link">
<span class="md-ellipsis">
Virus scan with ClamAV
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/virus_scan_with_kav4fs/" class="md-nav__link">
<span class="md-ellipsis">
Virus scan with Kav4fs
</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_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Configuration
</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>
Configuration
</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">
Authentication & Users
</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>
Authentication & Users
</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_1" >
<label class="md-nav__link" for="__nav_5_1_1" id="__nav_5_1_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="3" aria-labelledby="__nav_5_1_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1_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="../../config/ldap_in_11.0_ce/" class="md-nav__link">
<span class="md-ellipsis">
LDAP Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/ldap_in_11.0_pro/" class="md-nav__link">
<span class="md-ellipsis">
LDAP Integration (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_1_2" >
<label class="md-nav__link" for="__nav_5_1_2" id="__nav_5_1_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="3" aria-labelledby="__nav_5_1_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1_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="../../config/single_sign_on/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/oauth/" class="md-nav__link">
<span class="md-ellipsis">
OAuth Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/remote_user/" class="md-nav__link">
<span class="md-ellipsis">
Remote User Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/shibboleth_authentication/" class="md-nav__link">
<span class="md-ellipsis">
Shibboleth Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/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="../../config/saml2_in_10.0/" class="md-nav__link">
<span class="md-ellipsis">
SAML 2.0 (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/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_1_3" >
<label class="md-nav__link" for="__nav_5_1_3" id="__nav_5_1_3_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="3" aria-labelledby="__nav_5_1_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1_3">
<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="../../config/multi_institutions/" class="md-nav__link">
<span class="md-ellipsis">
Multi-Institutions Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/roles_permissions/" class="md-nav__link">
<span class="md-ellipsis">
Roles and Permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/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="../../config/multi_tenancy/" class="md-nav__link">
<span class="md-ellipsis">
Multi-Tenancy Support
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../config/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="../../config/ocm/" class="md-nav__link">
<span class="md-ellipsis">
Open Cloud Mesh
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_4" >
<label class="md-nav__link" for="__nav_5_4" id="__nav_5_4_label" tabindex="0">
<span class="md-ellipsis">
Available configuration options
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_4">
<span class="md-nav__icon md-icon"></span>
Available configuration options
</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/env/" class="md-nav__link">
<span class="md-ellipsis">
Environment variables
</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>
</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">
Administration
</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>
Administration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../administration/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/account/" class="md-nav__link">
<span class="md-ellipsis">
Account management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/two_factor_authentication/" class="md-nav__link">
<span class="md-ellipsis">
Two-factor Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/security_features/" class="md-nav__link">
<span class="md-ellipsis">
Security features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/auditing/" class="md-nav__link">
<span class="md-ellipsis">
Access logs and auditing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/export_report/" class="md-nav__link">
<span class="md-ellipsis">
Export report
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/logs/" class="md-nav__link">
<span class="md-ellipsis">
Logs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/backup_recovery/" class="md-nav__link">
<span class="md-ellipsis">
Backup and Recovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/seafile_fsck/" class="md-nav__link">
<span class="md-ellipsis">
Seafile FSCK
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/seafile_gc/" class="md-nav__link">
<span class="md-ellipsis">
Seafile GC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../administration/clean_database/" class="md-nav__link">
<span class="md-ellipsis">
Clean database
</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">
Upgrade
</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>
Upgrade
</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
</span>
<span class="md-status md-status--new" title="Work 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_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_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_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<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_8_2" >
<label class="md-nav__link" for="__nav_8_2" id="__nav_8_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_8_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_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="../../develop/build_seafile/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/linux/" class="md-nav__link">
<span class="md-ellipsis">
Linux
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/osx/" class="md-nav__link">
<span class="md-ellipsis">
macOS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/windows/" class="md-nav__link">
<span class="md-ellipsis">
Windows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/server/" class="md-nav__link">
<span class="md-ellipsis">
Server development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/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_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_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_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<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="#requirements" class="md-nav__link">
<span class="md-ellipsis">
Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#setup" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
<nav class="md-nav" aria-label="Setup">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#installing-and-preparing-the-sql-database" class="md-nav__link">
<span class="md-ellipsis">
Installing and preparing the SQL database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installing-prerequisites" class="md-nav__link">
<span class="md-ellipsis">
Installing prerequisites
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installing-java-runtime-environment" class="md-nav__link">
<span class="md-ellipsis">
Installing Java Runtime Environment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-the-programm-directory" class="md-nav__link">
<span class="md-ellipsis">
Creating the programm directory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-user-seafile" class="md-nav__link">
<span class="md-ellipsis">
Creating user seafile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#placing-the-seafile-pe-license" class="md-nav__link">
<span class="md-ellipsis">
Placing the Seafile PE license
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#downloading-the-install-package" class="md-nav__link">
<span class="md-ellipsis">
Downloading the install package
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#uncompressing-the-package" class="md-nav__link">
<span class="md-ellipsis">
Uncompressing the package
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#run-the-setup-script" class="md-nav__link">
<span class="md-ellipsis">
Run the setup script
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#setup-memory-cache" class="md-nav__link">
<span class="md-ellipsis">
Setup Memory Cache
</span>
</a>
<nav class="md-nav" aria-label="Setup Memory Cache">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#use-memcached" class="md-nav__link">
<span class="md-ellipsis">
Use Memcached
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-redis" class="md-nav__link">
<span class="md-ellipsis">
Use Redis
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-httphttps" class="md-nav__link">
<span class="md-ellipsis">
Enabling HTTP/HTTPS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#starting-seafile-server" class="md-nav__link">
<span class="md-ellipsis">
Starting Seafile Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#enabling-full-text-search" class="md-nav__link">
<span class="md-ellipsis">
Enabling full text search
</span>
</a>
<nav class="md-nav" aria-label="Enabling full text search">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#deploying-elasticsearch" class="md-nav__link">
<span class="md-ellipsis">
Deploying ElasticSearch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#modifying-seafevents" class="md-nav__link">
<span class="md-ellipsis">
Modifying seafevents
</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="installation-of-seafile-server-professional-edition">Installation of Seafile Server Professional Edition<a class="headerlink" href="#installation-of-seafile-server-professional-edition" title="Permanent link">&para;</a></h1>
<p>This manual explains how to deploy and run Seafile Server Professional Edition (Seafile PE) on a Linux server from a pre-built package using MySQL/MariaDB as database. The deployment has been tested for Debian/Ubuntu and CentOS, but Seafile PE should also work on other Linux distributions.</p>
<p><strong>Tip:</strong> If you have little experience with Seafile Server, we recommend that you use an installation script for deploying Seafile Server.</p>
<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">&para;</a></h2>
<p>Seafile PE requires a minimum of 2 cores and 2GB RAM. If elasticsearch is installed on the same server, the minimum requirements are 4 cores and 4 GB RAM.</p>
<p>Seafile PE can be used without a paid license with up to three users. Licenses for more user can be purchased in the <a href="https://customer.seafile.com">Seafile Customer Center</a> or contact Seafile Sales at sales@seafile.com or one of <a href="https://www.seafile.com/en/partner/">our partners</a>.</p>
<h2 id="setup">Setup<a class="headerlink" href="#setup" title="Permanent link">&para;</a></h2>
<h3 id="installing-and-preparing-the-sql-database">Installing and preparing the SQL database<a class="headerlink" href="#installing-and-preparing-the-sql-database" title="Permanent link">&para;</a></h3>
<p>These instructions assume that MySQL/MariaDB server and client are installed and a MySQL/MariaDB root user can authenticate using the mysql_native_password plugin.</p>
<h3 id="installing-prerequisites">Installing prerequisites<a class="headerlink" href="#installing-prerequisites" title="Permanent link">&para;</a></h3>
<p><strong>For Seafile 8.0.x</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Ubuntu 20.04 (on Debian 10/Ubuntu 18.04, it is almost the same)</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">update</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">libmysqlclient</span><span class="o">-</span><span class="n">dev</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">memcached</span><span class="w"> </span><span class="n">libmemcached</span><span class="o">-</span><span class="n">dev</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">Pillow</span><span class="o">==</span><span class="mf">9.4</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span>\
<span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">simple</span><span class="o">-</span><span class="n">captcha</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">mysqlclient</span>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="c1"># CentOS 8</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">mysql</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">gcc</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">Pillow</span><span class="o">==</span><span class="mf">9.4</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span>\
<span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">simple</span><span class="o">-</span><span class="n">captcha</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">mysqlclient</span>
</code></pre></div>
<p><strong>For Seafile 9.0.x</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># on Ubuntu 20.04 (on Debian 10/Ubuntu 18.04, it is almost the same)</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">update</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">libmysqlclient</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">memcached</span><span class="w"> </span><span class="n">libmemcached</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span>
<span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">3.2</span><span class="o">.*</span><span class="w"> </span><span class="n">future</span><span class="w"> </span><span class="n">mysqlclient</span><span class="w"> </span><span class="n">pymysql</span><span class="w"> </span><span class="n">Pillow</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span>\<span class="w"> </span>
<span class="n">captcha</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span><span class="n">psd</span><span class="o">-</span><span class="n">tools</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">simple</span><span class="o">-</span><span class="n">captcha</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.12</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.14</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="c1"># CentOS 8</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">mysql</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">gcc</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">3.2</span><span class="o">.*</span><span class="w"> </span><span class="n">Pillow</span><span class="o">==</span><span class="mf">9.4</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span>\
<span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">simple</span><span class="o">-</span><span class="n">captcha</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">mysqlclient</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.12</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.14</span><span class="o">.</span><span class="mi">0</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<p><strong>For Seafile 10.0.x</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># on Ubuntu 22.04 (on Ubuntu 20.04/Debian 11/Debian 10, it is almost the same)</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">update</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">libmysqlclient</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">memcached</span><span class="w"> </span><span class="n">libmemcached</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">3.2</span><span class="o">.*</span><span class="w"> </span><span class="n">future</span><span class="o">==</span><span class="mf">0.18</span><span class="o">.*</span><span class="w"> </span><span class="n">mysqlclient</span><span class="o">==</span><span class="mf">2.1</span><span class="o">.*</span><span class="w"> </span>\
<span class="w"> </span><span class="n">pymysql</span><span class="w"> </span><span class="n">pillow</span><span class="o">==</span><span class="mf">10.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.*</span><span class="w"> </span><span class="n">markupsafe</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">44</span><span class="w"> </span>\
<span class="w"> </span><span class="n">psd</span><span class="o">-</span><span class="n">tools</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django_simple_captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.</span><span class="mi">20</span><span class="w"> </span><span class="n">djangosaml2</span><span class="o">==</span><span class="mf">1.5</span><span class="o">.*</span><span class="w"> </span><span class="n">pysaml2</span><span class="o">==</span><span class="mf">7.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.16</span><span class="o">.*</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="c1"># CentOS 8</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">mysql</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">gcc</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">3.2</span><span class="o">.*</span><span class="w"> </span><span class="n">future</span><span class="o">==</span><span class="mf">0.18</span><span class="o">.*</span><span class="w"> </span><span class="n">mysqlclient</span><span class="o">==</span><span class="mf">2.1</span><span class="o">.*</span><span class="w"> </span>\
<span class="w"> </span><span class="n">pymysql</span><span class="w"> </span><span class="n">pillow</span><span class="o">==</span><span class="mf">10.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.*</span><span class="w"> </span><span class="n">markupsafe</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">44</span><span class="w"> </span>\
<span class="w"> </span><span class="n">psd</span><span class="o">-</span><span class="n">tools</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django_simple_captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.</span><span class="mi">20</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.16</span><span class="o">.*</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<p><strong>For Seafile 11.0.x (Debian 11, Ubuntu 22.04, Centos 8, etc.)</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># on Ubuntu 22.04 (on Ubuntu 20.04/Debian 11/Debian 10, it is almost the same)</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">update</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">dev</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">ldap</span><span class="w"> </span><span class="n">libmysqlclient</span><span class="o">-</span><span class="n">dev</span><span class="w"> </span><span class="n">ldap</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="n">libldap2</span><span class="o">-</span><span class="n">dev</span><span class="w"> </span><span class="n">dnsutils</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">memcached</span><span class="w"> </span><span class="n">libmemcached</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">4.2</span><span class="o">.*</span><span class="w"> </span><span class="n">future</span><span class="o">==</span><span class="mf">0.18</span><span class="o">.*</span><span class="w"> </span><span class="n">mysqlclient</span><span class="o">==</span><span class="mf">2.1</span><span class="o">.*</span><span class="w"> </span>\
<span class="w"> </span><span class="n">pymysql</span><span class="w"> </span><span class="n">pillow</span><span class="o">==</span><span class="mf">10.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.*</span><span class="w"> </span><span class="n">markupsafe</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">18</span><span class="w"> </span>\
<span class="w"> </span><span class="n">psd</span><span class="o">-</span><span class="n">tools</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django_simple_captcha</span><span class="o">==</span><span class="mf">0.6</span><span class="o">.*</span><span class="w"> </span><span class="n">djangosaml2</span><span class="o">==</span><span class="mf">1.5</span><span class="o">.*</span><span class="w"> </span><span class="n">pysaml2</span><span class="o">==</span><span class="mf">7.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.16</span><span class="o">.*</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">python</span><span class="o">-</span><span class="n">ldap</span><span class="o">==</span><span class="mf">3.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="c1"># CentOS 8</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">setuptools</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">pip</span><span class="w"> </span><span class="n">python3</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">mysql</span><span class="o">-</span><span class="n">devel</span><span class="w"> </span><span class="n">gcc</span><span class="w"> </span><span class="n">bind</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">poppler</span><span class="o">-</span><span class="n">utils</span><span class="w"> </span><span class="o">-</span><span class="n">y</span>
<span class="n">sudo</span><span class="w"> </span><span class="n">pip3</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">--</span><span class="n">timeout</span><span class="o">=</span><span class="mi">3600</span><span class="w"> </span><span class="n">django</span><span class="o">==</span><span class="mf">4.2</span><span class="o">.*</span><span class="w"> </span><span class="n">future</span><span class="o">==</span><span class="mf">0.18</span><span class="o">.*</span><span class="w"> </span><span class="n">mysqlclient</span><span class="o">==</span><span class="mf">2.1</span><span class="o">.*</span><span class="w"> </span>\
<span class="w"> </span><span class="n">pymysql</span><span class="w"> </span><span class="n">pillow</span><span class="o">==</span><span class="mf">10.2</span><span class="o">.*</span><span class="w"> </span><span class="n">pylibmc</span><span class="w"> </span><span class="n">captcha</span><span class="o">==</span><span class="mf">0.5</span><span class="o">.*</span><span class="w"> </span><span class="n">markupsafe</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">jinja2</span><span class="w"> </span><span class="n">sqlalchemy</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">18</span><span class="w"> </span>\
<span class="w"> </span><span class="n">psd</span><span class="o">-</span><span class="n">tools</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="n">pylibmc</span><span class="w"> </span><span class="n">django_simple_captcha</span><span class="o">==</span><span class="mf">0.6</span><span class="o">.*</span><span class="w"> </span><span class="n">pycryptodome</span><span class="o">==</span><span class="mf">3.16</span><span class="o">.*</span><span class="w"> </span><span class="n">cffi</span><span class="o">==</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">1</span><span class="w"> </span><span class="n">python</span><span class="o">-</span><span class="n">ldap</span><span class="o">==</span><span class="mf">3.4</span><span class="o">.</span><span class="mi">3</span><span class="w"> </span><span class="n">lxml</span>
</code></pre></div>
<p><strong>Note</strong>: The recommended deployment option for Seafile PE on CentOS/Redhat is <a href="../../setup/setup_pro_by_docker/">Docker</a>.</p>
<p><strong>For Seafile 11.0.x on Debian 12 and Ubuntu 24.04 with virtual env</strong></p>
<p>Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with "source python-venv/bin/activate".</p>
<div class="codehilite"><pre><span></span><code><span class="err">#</span><span class="w"> </span><span class="nx">Debian</span><span class="w"> </span><span class="mi">12</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">update</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">-</span><span class="nx">y</span><span class="w"> </span><span class="nx">python3</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">setuptools</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">pip</span><span class="w"> </span><span class="nx">libmariadb</span><span class="o">-</span><span class="nx">dev</span><span class="o">-</span><span class="nx">compat</span><span class="w"> </span><span class="nx">ldap</span><span class="o">-</span><span class="nx">utils</span><span class="w"> </span><span class="nx">libldap2</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">libsasl2</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">python3</span><span class="m m-Double">.11</span><span class="o">-</span><span class="nx">venv</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">-</span><span class="nx">y</span><span class="w"> </span><span class="nx">memcached</span><span class="w"> </span><span class="nx">libmemcached</span><span class="o">-</span><span class="nx">dev</span>
<span class="nx">mkdir</span><span class="w"> </span><span class="o">/</span><span class="nx">opt</span><span class="o">/</span><span class="nx">seafile</span>
<span class="nx">cd</span><span class="w"> </span><span class="o">/</span><span class="nx">opt</span><span class="o">/</span><span class="nx">seafile</span>
<span class="err">#</span><span class="w"> </span><span class="nx">create</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">vitual</span><span class="w"> </span><span class="nx">environment</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span><span class="w"> </span><span class="nx">directory</span>
<span class="nx">python3</span><span class="w"> </span><span class="o">-</span><span class="nx">m</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span>
<span class="err">#</span><span class="w"> </span><span class="nx">activate</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span>
<span class="nx">source</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span><span class="o">/</span><span class="nx">bin</span><span class="o">/</span><span class="nx">activate</span>
<span class="err">#</span><span class="w"> </span><span class="nx">Notice</span><span class="w"> </span><span class="nx">that</span><span class="w"> </span><span class="nx">this</span><span class="w"> </span><span class="nx">will</span><span class="w"> </span><span class="nx">usually</span><span class="w"> </span><span class="nx">change</span><span class="w"> </span><span class="nx">your</span><span class="w"> </span><span class="nx">prompt</span><span class="w"> </span><span class="nx">so</span><span class="w"> </span><span class="nx">you</span><span class="w"> </span><span class="nx">know</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">active</span>
<span class="err">#</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">packages</span><span class="w"> </span><span class="nx">into</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">active</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="nx">with</span><span class="w"> </span><span class="nx">pip</span><span class="w"> </span><span class="p">(</span><span class="nx">sudo</span><span class="w"> </span><span class="nx">isn</span><span class="err">&#39;</span><span class="nx">t</span><span class="w"> </span><span class="nx">needed</span><span class="w"> </span><span class="nx">because</span><span class="w"> </span><span class="nx">this</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">installing</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span><span class="p">,</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="nx">system</span><span class="o">-</span><span class="nx">wide</span><span class="p">).</span>
<span class="nx">pip3</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">--</span><span class="nx">timeout</span><span class="p">=</span><span class="mi">3600</span><span class="w"> </span><span class="nx">django</span><span class="o">==</span><span class="m m-Double">4.2</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">future</span><span class="o">==</span><span class="m m-Double">0.18</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">mysqlclient</span><span class="o">==</span><span class="m m-Double">2.1</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pymysql</span><span class="w"> </span><span class="nx">pillow</span><span class="o">==</span><span class="m m-Double">10.0</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pylibmc</span><span class="w"> </span><span class="nx">captcha</span><span class="o">==</span><span class="m m-Double">0.4</span><span class="w"> </span><span class="nx">markupsafe</span><span class="o">==</span><span class="m m-Double">2.0.1</span><span class="w"> </span><span class="nx">jinja2</span><span class="w"> </span><span class="nx">sqlalchemy</span><span class="o">==</span><span class="m m-Double">2.0.18</span><span class="w"> </span><span class="nx">psd</span><span class="o">-</span><span class="nx">tools</span><span class="w"> </span><span class="nx">django</span><span class="o">-</span><span class="nx">pylibmc</span><span class="w"> </span><span class="nx">django_simple_captcha</span><span class="o">==</span><span class="m m-Double">0.5</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">djangosaml2</span><span class="o">==</span><span class="m m-Double">1.5</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pysaml2</span><span class="o">==</span><span class="m m-Double">7.2</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pycryptodome</span><span class="o">==</span><span class="m m-Double">3.16</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">cffi</span><span class="o">==</span><span class="m m-Double">1.15.1</span><span class="w"> </span><span class="nx">lxml</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">ldap</span><span class="o">==</span><span class="m m-Double">3.4.3</span>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="err">#</span><span class="w"> </span><span class="nx">Ubuntu</span><span class="w"> </span><span class="m m-Double">24.04</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">update</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">-</span><span class="nx">y</span><span class="w"> </span><span class="nx">python3</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">setuptools</span><span class="w"> </span><span class="nx">python3</span><span class="o">-</span><span class="nx">pip</span><span class="w"> </span><span class="nx">libmysqlclient</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">ldap</span><span class="o">-</span><span class="nx">utils</span><span class="w"> </span><span class="nx">libldap2</span><span class="o">-</span><span class="nx">dev</span><span class="w"> </span><span class="nx">python3</span><span class="m m-Double">.12</span><span class="o">-</span><span class="nx">venv</span>
<span class="nx">sudo</span><span class="w"> </span><span class="nx">apt</span><span class="o">-</span><span class="nx">get</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">-</span><span class="nx">y</span><span class="w"> </span><span class="nx">memcached</span><span class="w"> </span><span class="nx">libmemcached</span><span class="o">-</span><span class="nx">dev</span>
<span class="nx">mkdir</span><span class="w"> </span><span class="o">/</span><span class="nx">opt</span><span class="o">/</span><span class="nx">seafile</span>
<span class="nx">cd</span><span class="w"> </span><span class="o">/</span><span class="nx">opt</span><span class="o">/</span><span class="nx">seafile</span>
<span class="err">#</span><span class="w"> </span><span class="nx">create</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">vitual</span><span class="w"> </span><span class="nx">environment</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span><span class="w"> </span><span class="nx">directory</span>
<span class="nx">python3</span><span class="w"> </span><span class="o">-</span><span class="nx">m</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span>
<span class="err">#</span><span class="w"> </span><span class="nx">activate</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span>
<span class="nx">source</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">venv</span><span class="o">/</span><span class="nx">bin</span><span class="o">/</span><span class="nx">activate</span>
<span class="err">#</span><span class="w"> </span><span class="nx">Notice</span><span class="w"> </span><span class="nx">that</span><span class="w"> </span><span class="nx">this</span><span class="w"> </span><span class="nx">will</span><span class="w"> </span><span class="nx">usually</span><span class="w"> </span><span class="nx">change</span><span class="w"> </span><span class="nx">your</span><span class="w"> </span><span class="nx">prompt</span><span class="w"> </span><span class="nx">so</span><span class="w"> </span><span class="nx">you</span><span class="w"> </span><span class="nx">know</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">active</span>
<span class="err">#</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">packages</span><span class="w"> </span><span class="nx">into</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">active</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="nx">with</span><span class="w"> </span><span class="nx">pip</span><span class="w"> </span><span class="p">(</span><span class="nx">sudo</span><span class="w"> </span><span class="nx">isn</span><span class="err">&#39;</span><span class="nx">t</span><span class="w"> </span><span class="nx">needed</span><span class="w"> </span><span class="nx">because</span><span class="w"> </span><span class="nx">this</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">installing</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">venv</span><span class="p">,</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="nx">system</span><span class="o">-</span><span class="nx">wide</span><span class="p">).</span>
<span class="nx">pip3</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="o">--</span><span class="nx">timeout</span><span class="p">=</span><span class="mi">3600</span><span class="w"> </span><span class="nx">django</span><span class="o">==</span><span class="m m-Double">4.2</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">future</span><span class="o">==</span><span class="m m-Double">0.18</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">mysqlclient</span><span class="o">==</span><span class="m m-Double">2.1</span><span class="p">.</span><span class="o">*</span><span class="w"> </span>\
<span class="w"> </span><span class="nx">pymysql</span><span class="w"> </span><span class="nx">pillow</span><span class="o">==</span><span class="m m-Double">10.2</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pylibmc</span><span class="w"> </span><span class="nx">captcha</span><span class="o">==</span><span class="m m-Double">0.5</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">markupsafe</span><span class="o">==</span><span class="m m-Double">2.0.1</span><span class="w"> </span><span class="nx">jinja2</span><span class="w"> </span><span class="nx">sqlalchemy</span><span class="o">==</span><span class="m m-Double">2.0.18</span><span class="w"> </span>\
<span class="w"> </span><span class="nx">psd</span><span class="o">-</span><span class="nx">tools</span><span class="w"> </span><span class="nx">django</span><span class="o">-</span><span class="nx">pylibmc</span><span class="w"> </span><span class="nx">django_simple_captcha</span><span class="o">==</span><span class="m m-Double">0.6</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">djangosaml2</span><span class="o">==</span><span class="m m-Double">1.5</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pysaml2</span><span class="o">==</span><span class="m m-Double">7.2</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">pycryptodome</span><span class="o">==</span><span class="m m-Double">3.16</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="nx">cffi</span><span class="o">==</span><span class="m m-Double">1.16.0</span><span class="w"> </span><span class="nx">lxml</span><span class="w"> </span><span class="nx">python</span><span class="o">-</span><span class="nx">ldap</span><span class="o">==</span><span class="m m-Double">3.4.3</span>
</code></pre></div>
<h3 id="installing-java-runtime-environment">Installing Java Runtime Environment<a class="headerlink" href="#installing-java-runtime-environment" title="Permanent link">&para;</a></h3>
<p>Java Runtime Environment (JRE) is a requirement for full text search with ElasticSearch. It is used in extracting contents from PDF and Office files.</p>
<div class="codehilite"><pre><span></span><code># Debian 10/Debian 11
sudo apt-get install default-jre -y
</code></pre></div>
<div class="codehilite"><pre><span></span><code># Ubuntu 16.04/Ubuntu 18.04/Ubuntu 20.04/Ubuntu 22.04
sudo apt-get install openjdk-8-jre -y
sudo ln -sf /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java /usr/bin/
</code></pre></div>
<div class="codehilite"><pre><span></span><code># CentOS
sudo yum install java-1.8.0-openjdk -y
</code></pre></div>
<h3 id="creating-the-programm-directory">Creating the programm directory<a class="headerlink" href="#creating-the-programm-directory" title="Permanent link">&para;</a></h3>
<p>The standard directory for Seafile's program files is <code>/opt/seafile</code>. Create this directory and change into it:</p>
<div class="codehilite"><pre><span></span><code>mkdir /opt/seafile
cd /opt/seafile
</code></pre></div>
<p>The program directory can be changed. The standard directory <code>/opt/seafile</code> is assumed for the rest of this manual. If you decide to put Seafile in another directory, some commands need to be modified accordingly.</p>
<h3 id="creating-user-seafile">Creating user seafile<a class="headerlink" href="#creating-user-seafile" title="Permanent link">&para;</a></h3>
<p>Elasticsearch, the indexing server, cannot be run as root. More generally, it is good practice not to run applications as root. </p>
<p>Create a new user and follow the instructions on the screen:</p>
<div class="codehilite"><pre><span></span><code>adduser seafile
</code></pre></div>
<p>Change ownership of the created directory to the new user:</p>
<div class="codehilite"><pre><span></span><code>chown -R seafile: /opt/seafile
</code></pre></div>
<p>All the following steps are done as user seafile.</p>
<p>Change to user seafile:</p>
<div class="codehilite"><pre><span></span><code>su seafile
</code></pre></div>
<h3 id="placing-the-seafile-pe-license">Placing the Seafile PE license<a class="headerlink" href="#placing-the-seafile-pe-license" title="Permanent link">&para;</a></h3>
<p>Save the license file in Seafile's programm directory <code>/opt/seafile</code>. Make sure that the name is <code>seafile-license.txt</code>. (If the file has a different name or cannot be read, Seafile PE will not start.)</p>
<h3 id="downloading-the-install-package">Downloading the install package<a class="headerlink" href="#downloading-the-install-package" title="Permanent link">&para;</a></h3>
<p>The install packages for Seafile PE are available for download in the the <a href="https://customer.seafile.com">Seafile Customer Center</a>. To access the Customer Center, a user account is necessary. The registration is free.</p>
<p>Beginning with Seafile PE 7.0.17, the Seafile Customer Center provides two install packages for every version (using Seafile PE 8.0.4 as an example):</p>
<ul>
<li><em>seafile-pro-server_8.0.4_x86-64_Ubuntu.tar.gz</em>, compiled in Ubuntu 18.04 environment</li>
<li><em>seafile-pro-server_8.0.4_x86-64_CentOS.tar.gz</em>, compiled in CentOS 7 environment</li>
</ul>
<p>The former is suitable for installation on Ubuntu/Debian servers, the latter for CentOS servers.</p>
<p>Download the install package using wget (replace the x.x.x with the version you wish to download):</p>
<div class="codehilite"><pre><span></span><code><span class="gh">#</span> Debian/Ubuntu
wget -O &#39;seafile-pro-server_x.x.x_x86-64_Ubuntu.tar.gz&#39; &#39;VERSION_SPECIFIC_LINK_FROM_SEAFILE_CUSTOMER_CENTER&#39;
<span class="gh">#</span> CentOS
wget -O &#39;seafile-pro-server_x.x.x_x86-64_CentOS.tar.gz&#39; &#39;VERSION_SPECIFIC_LINK_FROM_SEAFILE_CUSTOMER_CENTER&#39;
</code></pre></div>
<p>We use Seafile version 8.0.4 as an example in the remainder of these instructions.</p>
<h3 id="uncompressing-the-package">Uncompressing the package<a class="headerlink" href="#uncompressing-the-package" title="Permanent link">&para;</a></h3>
<p>The install package is downloaded as a compressed tarball which needs to be uncompressed.</p>
<p>Uncompress the package using tar:</p>
<div class="codehilite"><pre><span></span><code><span class="gh">#</span> Debian/Ubuntu
tar xf seafile-pro-server_8.0.4_x86-64_Ubuntu.tar.gz
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="gh">#</span> CentOS
tar xf seafile-pro-server_8.0.4_x86-64_CentOS.tar.gz
</code></pre></div>
<p>Now you have:</p>
<div class="codehilite"><pre><span></span><code>$<span class="w"> </span>tree<span class="w"> </span>-L<span class="w"> </span><span class="m">2</span><span class="w"> </span>/opt/seafile
.
├──<span class="w"> </span>seafile-license.txt
└──<span class="w"> </span>seafile-pro-server-8.0.4
<span class="w">   </span>├──<span class="w"> </span>check-db-type.py
<span class="w">   </span>├──<span class="w"> </span>check_init_admin.py
<span class="w">   </span>├──<span class="w"> </span>create-db
<span class="w">   </span>├──<span class="w"> </span>index_op.py
<span class="w">   </span>├──<span class="w"> </span>migrate.py
<span class="w">   </span>├──<span class="w"> </span>migrate-repo.py
<span class="w">   </span>├──<span class="w"> </span>migrate-repo.sh
<span class="w">   </span>├──<span class="w"> </span>migrate.sh
<span class="w">   </span>├──<span class="w"> </span>pro
<span class="w">   </span>├──<span class="w"> </span>remove-objs.py
<span class="w">   </span>├──<span class="w"> </span>remove-objs.sh
<span class="w">   </span>├──<span class="w"> </span>reset-admin.sh
<span class="w">   </span>├──<span class="w"> </span>run_index_master.sh
<span class="w">   </span>├──<span class="w"> </span>run_index_worker.sh
<span class="w">   </span>├──<span class="w"> </span>runtime
<span class="w">   </span>├──<span class="w"> </span>seaf-backup-cmd.py
<span class="w">   </span>├──<span class="w"> </span>seaf-backup-cmd.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-encrypt.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-fsck.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-fuse.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-gc.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-gen-key.sh
<span class="w">   </span>├──<span class="w"> </span>seafile
<span class="w">   </span>├──<span class="w"> </span>seafile-background-tasks.sh
<span class="w">   </span>├──<span class="w"> </span>seafile.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-import.sh
<span class="w">   </span>├──<span class="w"> </span>seahub
<span class="w">   </span>├──<span class="w"> </span>seahub-extra
<span class="w">   </span>├──<span class="w"> </span>seahub.sh
<span class="w">   </span>├──<span class="w"> </span>setup-seafile-mysql.py
<span class="w">   </span>├──<span class="w"> </span>setup-seafile-mysql.sh
<span class="w">   </span>├──<span class="w"> </span>setup-seafile.sh
<span class="w">   </span>├──<span class="w"> </span>sql
<span class="w">   </span>└──<span class="w"> </span>upgrade
└──<span class="w"> </span>seafile-pro-server_8.0.4_x86-64.tar.gz
</code></pre></div>
<p><strong>Note</strong>: The names of the install packages differ for Seafile CE and Seafile PE. Using Seafile CE and Seafile PE 8.0.4 as an example, the names are as follows:</p>
<ul>
<li>Seafile CE: <code>seafile-server_8.0.4_x86-86.tar.gz</code>; uncompressing into folder <code>seafile-server-8.0.4</code></li>
<li>Seafile PE: <code>seafile-pro-server_8.0.4_x86-86.tar.gz</code>; uncompressing into folder <code>seafile-pro-server-8.0.4</code></li>
</ul>
<h3 id="run-the-setup-script">Run the setup script<a class="headerlink" href="#run-the-setup-script" title="Permanent link">&para;</a></h3>
<p>The setup process of Seafile PE is the same as the Seafile CE. See <a href="../installation_ce/">Installation of Seafile Server Community Edition with MySQL/MariaDB</a>.</p>
<p>After the successful completition of the setup script, the directory layout of Seafile PE looks as follows (some folders only get created after the first start, e.g. <code>logs</code>):</p>
<p><strong>For Seafile 7.1.x and later</strong></p>
<div class="codehilite"><pre><span></span><code>$<span class="w"> </span>tree<span class="w"> </span>-L<span class="w"> </span><span class="m">2</span><span class="w"> </span>/opt/seafile
.
├──<span class="w"> </span>seafile-license.txt<span class="w"> </span><span class="c1"># license file</span>
├──<span class="w"> </span>ccnet<span class="w"> </span>
├──<span class="w"> </span>conf<span class="w"> </span><span class="c1"># configuration files</span>
<span class="w"> </span>└──<span class="w"> </span>ccnet.conf
<span class="w"> </span>└──<span class="w"> </span>gunicorn.conf.py
<span class="w"> </span>└──<span class="w"> </span>__pycache__
<span class="w"> </span>└──<span class="w"> </span>seafdav.conf
<span class="w"> </span>└──<span class="w"> </span>seafevents.conf
<span class="w"> </span>└──<span class="w"> </span>seafile.conf
<span class="w"> </span>└──<span class="w"> </span>seahub_settings.py
├──<span class="w"> </span>logs<span class="w"> </span><span class="c1"># log files</span>
├──<span class="w"> </span>pids<span class="w"> </span><span class="c1"># process id files</span>
├──<span class="w"> </span>pro-data<span class="w"> </span><span class="c1"># data specific for Seafile PE</span>
├──<span class="w"> </span>seafile-data<span class="w"> </span><span class="c1"># object database</span>
├──<span class="w"> </span>seafile-pro-server-8.0.4
<span class="w">   </span>├──<span class="w"> </span>check-db-type.py
<span class="w">   </span>├──<span class="w"> </span>check_init_admin.py
<span class="w">   </span>├──<span class="w"> </span>create-db
<span class="w">   </span>├──<span class="w"> </span>index_op.py
<span class="w">   </span>├──<span class="w"> </span>migrate.py
<span class="w">   </span>├──<span class="w"> </span>migrate-repo.py
<span class="w">   </span>├──<span class="w"> </span>migrate-repo.sh
<span class="w">   </span>├──<span class="w"> </span>migrate.sh
<span class="w">   </span>├──<span class="w"> </span>pro
<span class="w">   </span>├──<span class="w"> </span>reset-admin.sh
<span class="w">   </span>├──<span class="w"> </span>run_index_master.sh
<span class="w">   </span>├──<span class="w"> </span>run_index_worker.sh
<span class="w">   </span>├──<span class="w"> </span>runtime
<span class="w">   </span>├──<span class="w"> </span>seaf-backup-cmd.py
<span class="w">   </span>├──<span class="w"> </span>seaf-backup-cmd.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-encrypt.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-fsck.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-fuse.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-gc.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-gen-key.sh
<span class="w">   </span>├──<span class="w"> </span>seafile
<span class="w">   </span>├──<span class="w"> </span>seafile-background-tasks.sh
<span class="w">   </span>├──<span class="w"> </span>seafile.sh
<span class="w">   </span>├──<span class="w"> </span>seaf-import.sh
<span class="w">   </span>├──<span class="w"> </span>seahub
<span class="w">   </span>├──<span class="w"> </span>seahub-extra
<span class="w">   </span>├──<span class="w"> </span>seahub.sh
<span class="w">   </span>├──<span class="w"> </span>setup-seafile-mysql.py
<span class="w">   </span>├──<span class="w"> </span>setup-seafile-mysql.sh
<span class="w">   </span>├──<span class="w"> </span>setup-seafile.sh
<span class="w">   </span>├──<span class="w"> </span>sql
<span class="w">   </span>└──<span class="w"> </span>upgrade
├──<span class="w"> </span>seafile-server-latest<span class="w"> </span>-&gt;<span class="w"> </span>seafile-pro-server-8.0.4
├──<span class="w"> </span>seahub-data
<span class="w"> </span>└──<span class="w"> </span>avatars<span class="w"> </span><span class="c1"># user avatars</span>
</code></pre></div>
<h3 id="setup-memory-cache">Setup Memory Cache<a class="headerlink" href="#setup-memory-cache" title="Permanent link">&para;</a></h3>
<p>Memory cache is mandatory for pro edition. You may use Memcached or Reids as cache server.</p>
<h4 id="use-memcached">Use Memcached<a class="headerlink" href="#use-memcached" title="Permanent link">&para;</a></h4>
<p>Use the following commands to install memcached and corresponding libraies on your system:</p>
<div class="codehilite"><pre><span></span><code># on Debian/Ubuntu 18.04+
apt-get install memcached libmemcached-dev -y
pip3 install --timeout=3600 pylibmc django-pylibmc
systemctl enable --now memcached
</code></pre></div>
<p>Add the following configuration to <code>seahub_settings.py</code>.</p>
<div class="codehilite"><pre><span></span><code><span class="n">CACHES</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;default&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s">&#39;BACKEND&#39;</span><span class="p">:</span> <span class="s">&#39;django_pylibmc.memcached.PyLibMCCache&#39;</span><span class="p">,</span>
<span class="s">&#39;LOCATION&#39;</span><span class="p">:</span> <span class="s">&#39;127.0.0.1:11211&#39;</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">}</span>
</code></pre></div>
<h4 id="use-redis">Use Redis<a class="headerlink" href="#use-redis" title="Permanent link">&para;</a></h4>
<p>Redis is supported since version 11.0.</p>
<p>First, install Redis with package installers in your OS.</p>
<p>Then refer to <a href="https://docs.djangoproject.com/en/4.2/topics/cache/#redis">Django's documentation about using Redis cache</a> to add Redis configurations to <code>seahub_settings.py</code>.</p>
<h3 id="enabling-httphttps">Enabling HTTP/HTTPS<a class="headerlink" href="#enabling-httphttps" title="Permanent link">&para;</a></h3>
<p>You need at least setup HTTP to make Seafile's web interface work. This manual provides instructions for enabling HTTP/HTTPS for the two most popular web servers and reverse proxies:</p>
<ul>
<li><a href="../https_with_nginx/">Nginx</a></li>
<li><a href="../https_with_apache/">Apache</a></li>
</ul>
<h2 id="starting-seafile-server">Starting Seafile Server<a class="headerlink" href="#starting-seafile-server" title="Permanent link">&para;</a></h2>
<p>Run the following commands in <code>/opt/seafile/seafile-server-latest</code>:</p>
<div class="codehilite"><pre><span></span><code>#<span class="w"> </span><span class="k">For</span><span class="w"> </span><span class="nv">installations</span><span class="w"> </span><span class="nv">using</span><span class="w"> </span><span class="nv">python</span><span class="w"> </span><span class="nv">virtual</span><span class="w"> </span><span class="nv">environment</span>,<span class="w"> </span><span class="nv">activate</span><span class="w"> </span><span class="nv">it</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nv">it</span><span class="w"> </span><span class="nv">isn</span><span class="err">&#39;t already active</span>
<span class="err">source python-venv/bin/activate</span>
<span class="err">./seafile.sh start # Start Seafile service</span>
<span class="err">./seahub.sh start # Start seahub website, port defaults to 127.0.0.1:8000</span>
</code></pre></div>
<p>The first time you start Seahub, the script prompts you to create an admin account for your Seafile Server. Enter the email address of the admin user followed by the password.</p>
<p>Now you can access Seafile via the web interface at the host address (e.g., http://1.2.3.4:80).</p>
<h2 id="enabling-full-text-search">Enabling full text search<a class="headerlink" href="#enabling-full-text-search" title="Permanent link">&para;</a></h2>
<p>Seafile uses the indexing server ElasticSearch to enable full text search. In versions prior to Seafile 9.0, Seafile's install packages included ElasticSearch. A separate deployment was not necessary. Due to licensing conditions, ElasticSearch 7.x can no longer be bundled in Seafile's install package. As a consequence, a separate deployment of ElasticSearch is required to enble full text search in Seafile newest version.</p>
<h3 id="deploying-elasticsearch">Deploying ElasticSearch<a class="headerlink" href="#deploying-elasticsearch" title="Permanent link">&para;</a></h3>
<p>Our recommendation for deploying ElasticSearch is using Docker. Detailed information about installing Docker on various Linux distributions is available at <a href="https://docs.docker.com/engine/install/">Docker Docs</a>.</p>
<p>Seafile PE 9.0 only supports ElasticSearch 7.x. Seafile PE 10.0 and 11.0 only supports ElasticSearch 8.x.</p>
<p>We use ElasticSearch version 7.16.2 as an example in this section. Version 7.16.2 and newer version have been successfully tested with Seafile.</p>
<p>Pull the Docker image:</p>
<div class="codehilite"><pre><span></span><code>sudo docker pull elasticsearch:7.16.2
</code></pre></div>
<p>Create a folder for persistent data created by ElasticSearch and change its permission:</p>
<div class="codehilite"><pre><span></span><code>sudo mkdir -p /opt/seafile-elasticsearch/data &amp;&amp; chmod -R 777 /opt/seafile-elasticsearch/data/
</code></pre></div>
<p>Now start the ElasticSearch container using the docker run command:</p>
<div class="codehilite"><pre><span></span><code><span class="nx">sudo</span><span class="w"> </span><span class="nx">docker</span><span class="w"> </span><span class="nx">run</span><span class="w"> </span><span class="o">-</span><span class="nx">d</span><span class="w"> </span>\
<span class="o">--</span><span class="nx">name</span><span class="w"> </span><span class="nx">es</span><span class="w"> </span>\
<span class="o">-</span><span class="nx">p</span><span class="w"> </span><span class="mi">9200</span><span class="p">:</span><span class="mi">9200</span><span class="w"> </span>\
<span class="o">-</span><span class="nx">e</span><span class="w"> </span><span class="s">&quot;discovery.type=single-node&quot;</span><span class="w"> </span><span class="o">-</span><span class="nx">e</span><span class="w"> </span><span class="s">&quot;bootstrap.memory_lock=true&quot;</span><span class="w"> </span>\
<span class="o">-</span><span class="nx">e</span><span class="w"> </span><span class="s">&quot;ES_JAVA_OPTS=-Xms2g -Xmx2g&quot;</span><span class="w"> </span><span class="o">-</span><span class="nx">e</span><span class="w"> </span><span class="s">&quot;xpack.security.enabled=false&quot;</span><span class="w"> </span>\
<span class="o">--</span><span class="nx">restart</span><span class="p">=</span><span class="nx">always</span><span class="w"> </span>\
<span class="o">-</span><span class="nx">v</span><span class="w"> </span><span class="o">/</span><span class="nx">opt</span><span class="o">/</span><span class="nx">seafile</span><span class="o">-</span><span class="nx">elasticsearch</span><span class="o">/</span><span class="nx">data</span><span class="p">:</span><span class="o">/</span><span class="nx">usr</span><span class="o">/</span><span class="nx">share</span><span class="o">/</span><span class="nx">elasticsearch</span><span class="o">/</span><span class="nx">data</span><span class="w"> </span>\
<span class="o">-</span><span class="nx">d</span><span class="w"> </span><span class="nx">elasticsearch</span><span class="p">:</span><span class="m m-Double">7.16.2</span>
</code></pre></div>
<h3 id="modifying-seafevents">Modifying seafevents<a class="headerlink" href="#modifying-seafevents" title="Permanent link">&para;</a></h3>
<p>Add the following configuration to <code>seafevents.conf</code>:</p>
<div class="codehilite"><pre><span></span><code><span class="k">[INDEX FILES]</span>
<span class="na">external_es_server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span><span class="w"> </span><span class="c1"># required when ElasticSearch on separate host</span>
<span class="na">es_host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">your elasticsearch server&#39;s IP</span><span class="w"> </span><span class="c1"># IP address of ElasticSearch host</span>
<span class="w"> </span><span class="c1"># use 127.0.0.1 if deployed on the same server</span>
<span class="na">es_port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">9200</span><span class="w"> </span><span class="c1"># port of ElasticSearch host</span>
<span class="na">interval</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">10m</span><span class="w"> </span><span class="c1"># frequency of index updates in minutes</span>
<span class="na">highlight</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">fvh</span><span class="w"> </span><span class="c1"># parameter for improving the search performance</span>
</code></pre></div>
<p>Finally, restart Seafile:</p>
<div class="codehilite"><pre><span></span><code>./seafile.sh restart &amp;&amp; ./seahub.sh restart
</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>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</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 &copy; 2024 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": ["navigation.sections", "navigation.tabs", "navigation.top", "search.suggest", "search.highlight", "search.share"], "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"}, "version": {"provider": "mike"}}</script>
<script src="../../assets/javascripts/bundle.83f73b43.min.js"></script>
</body>
</html>