seafile-admin-docs/deprecated/deploy/using_mysql/index.html
2024-10-23 15:20:00 +08:00

4393 lines
128 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/deploy/using_mysql/">
<link rel="prev" href="../">
<link rel="next" href="../https_with_nginx/">
<link rel="icon" href="../../media/favicon.ico">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
<title>Installation with MySQL - Seafile Admin Manual</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../stylesheets/extra.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#installation-of-seafile-server-community-edition-with-mysqlmariadb" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Seafile Admin Manual" class="md-header__button md-logo" aria-label="Seafile Admin Manual" data-md-component="logo">
<img src="../../media/seafile-transparent-1024.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Seafile Admin Manual
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Installation with MySQL
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
haiwen/seafile-admin-docs
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Seafile Admin Manual" class="md-nav__button md-logo" aria-label="Seafile Admin Manual" data-md-component="logo">
<img src="../../media/seafile-transparent-1024.png" alt="logo">
</a>
Seafile Admin Manual
</label>
<div class="md-nav__source">
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
haiwen/seafile-admin-docs
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-ellipsis">
Overview
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Overview
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../overview/components/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../overview/file_permission_management/" class="md-nav__link">
<span class="md-ellipsis">
File permission management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contribution/" class="md-nav__link">
<span class="md-ellipsis">
Contribution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/" class="md-nav__link">
<span class="md-ellipsis">
Changelog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Seafile Community Setup on Linux
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Seafile Community Setup on Linux
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" 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 with MySQL
</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 with MySQL
</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="#creating-the-program-directory" class="md-nav__link">
<span class="md-ellipsis">
Creating the program 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="#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="#setting-up-seafile-ce" class="md-nav__link">
<span class="md-ellipsis">
Setting up Seafile CE
</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="#tweaking-conf-files" class="md-nav__link">
<span class="md-ellipsis">
Tweaking conf files
</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>
<nav class="md-nav" aria-label="Starting Seafile Server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#stopping-and-restarting-seafile-and-seahub" class="md-nav__link">
<span class="md-ellipsis">
Stopping and Restarting Seafile and Seahub
</span>
</a>
<nav class="md-nav" aria-label="Stopping and Restarting Seafile and Seahub">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#stopping" class="md-nav__link">
<span class="md-ellipsis">
Stopping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#restarting" class="md-nav__link">
<span class="md-ellipsis">
Restarting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-https" class="md-nav__link">
<span class="md-ellipsis">
Enabling HTTPS
</span>
</a>
</li>
</ul>
</nav>
</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--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Seafile Professional Setup on Linux
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Seafile Professional Setup on Linux
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deploy_pro/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/download_and_setup_seafile_professional_server/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/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_4" >
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
<span class="md-ellipsis">
Storage Backends
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4">
<span class="md-nav__icon md-icon"></span>
Storage Backends
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deploy_pro/setup_with_amazon_s3/" class="md-nav__link">
<span class="md-ellipsis">
Amazon S3 Backend
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/setup_with_ceph/" class="md-nav__link">
<span class="md-ellipsis">
Ceph Backend
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/setup_with_swift/" class="md-nav__link">
<span class="md-ellipsis">
OpenStack Swift Backend
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/setup_with_oss/" class="md-nav__link">
<span class="md-ellipsis">
Alibaba OSS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/multiple_storage_backends/" class="md-nav__link">
<span class="md-ellipsis">
Multiple Storage Backends
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/migrate/" class="md-nav__link">
<span class="md-ellipsis">
Data migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
<label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
<span class="md-ellipsis">
Cluster Deployment
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5">
<span class="md-nav__icon md-icon"></span>
Cluster Deployment
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deploy_pro/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="../../deploy_pro/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="../../deploy_pro/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="../../deploy_pro/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="../../deploy_pro/seafile_professional_sdition_software_license_agreement/" class="md-nav__link">
<span class="md-ellipsis">
License
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Seafile Setup with Docker
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Seafile Setup with Docker
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../docker/deploy_seafile_with_docker/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Community Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker/pro-edition/deploy_seafile_pro_with_docker/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Professional Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker/cluster/deploy_seafile_cluster_with_docker/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Docker Cluster Deployment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../deploy_with_k8s/" class="md-nav__link">
<span class="md-ellipsis">
Setup with Kubernetes (K8s)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker/pro-edition/migrate_ce_to_pro_with_docker/" class="md-nav__link">
<span class="md-ellipsis">
Migration from Seafile Community
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker/non_docker_to_docker/" class="md-nav__link">
<span class="md-ellipsis">
Migrate from non-docker deployment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker/seafile_docker_autostart/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Docker autostart
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Advanced Setup Options
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Advanced Setup Options
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
<span class="md-ellipsis">
LDAP/AD Integration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1">
<span class="md-nav__icon md-icon"></span>
LDAP/AD Integration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../using_ldap/" class="md-nav__link">
<span class="md-ellipsis">
LDAP Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/using_ldap_pro/" class="md-nav__link">
<span class="md-ellipsis">
LDAP Configuration for Seafile Pro
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/ldap_group_sync/" class="md-nav__link">
<span class="md-ellipsis">
Importing Groups from LDAP (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/ldap_role_sync/" class="md-nav__link">
<span class="md-ellipsis">
Importing Roles from LDAP (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ldap_in_11.0/" class="md-nav__link">
<span class="md-ellipsis">
LDAP in version 11.0
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/ldap_in_11.0/" class="md-nav__link">
<span class="md-ellipsis">
LDAP in version 11.0 (Pro)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
<span class="md-ellipsis">
Single Sign On
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_2">
<span class="md-nav__icon md-icon"></span>
Single Sign On
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../single_sign_on/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../oauth/" class="md-nav__link">
<span class="md-ellipsis">
OAuth Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../remote_user/" class="md-nav__link">
<span class="md-ellipsis">
Remote User Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../shibboleth_authentication/" class="md-nav__link">
<span class="md-ellipsis">
Shibboleth Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../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="../../deploy_pro/saml2_in_10.0/" class="md-nav__link">
<span class="md-ellipsis">
SAML 2.0 in version 10.0+ (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/adfs/" class="md-nav__link">
<span class="md-ellipsis">
SAML 2.0 (old) (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/cas/" class="md-nav__link">
<span class="md-ellipsis">
CAS Authentication (Pro)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../auth_switch/" class="md-nav__link">
<span class="md-ellipsis">
Switch authentication
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" >
<label class="md-nav__link" for="__nav_5_3" id="__nav_5_3_label" tabindex="0">
<span class="md-ellipsis">
Online Office
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_3">
<span class="md-nav__icon md-icon"></span>
Online Office
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../libreoffice_online/" class="md-nav__link">
<span class="md-ellipsis">
LibreOffice Online Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../only_office/" class="md-nav__link">
<span class="md-ellipsis">
OnlyOffice Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/office_web_app/" class="md-nav__link">
<span class="md-ellipsis">
Office Online Server Integration (Pro)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../extra_setup/setup_seadoc/" class="md-nav__link">
<span class="md-ellipsis">
SeaDoc Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../notification-server/" class="md-nav__link">
<span class="md-ellipsis">
Notification Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/webdav/" class="md-nav__link">
<span class="md-ellipsis">
WebDAV extension
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../extension/fuse/" class="md-nav__link">
<span class="md-ellipsis">
FUSE extension
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
<label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
<span class="md-ellipsis">
Virus Scan (Pro)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_8">
<span class="md-nav__icon md-icon"></span>
Virus Scan (Pro)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deploy_pro/virus_scan/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/deploy_clamav_with_seafile/" class="md-nav__link">
<span class="md-ellipsis">
Deploy ClamAV with Seafile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/virus_scan_with_kav4fs/" class="md-nav__link">
<span class="md-ellipsis">
Virus Scan With Kav4fs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_9" >
<label class="md-nav__link" for="__nav_5_9" id="__nav_5_9_label" tabindex="0">
<span class="md-ellipsis">
Advanced User Management (Pro)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_9">
<span class="md-nav__icon md-icon"></span>
Advanced User Management (Pro)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deploy_pro/multi_institutions/" class="md-nav__link">
<span class="md-ellipsis">
Multi-Institutions Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/roles_permissions/" class="md-nav__link">
<span class="md-ellipsis">
Roles and Permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/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="../../deploy_pro/multi_tenancy/" class="md-nav__link">
<span class="md-ellipsis">
Multi-Tenancy Support
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/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="../migrate_from_sqlite_to_mysql/" class="md-nav__link">
<span class="md-ellipsis">
Migrate From SQLite to MySQL
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_12" >
<label class="md-nav__link" for="__nav_5_12" id="__nav_5_12_label" tabindex="0">
<span class="md-ellipsis">
Others Deployment Notes
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_12">
<span class="md-nav__icon md-icon"></span>
Others Deployment Notes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../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="../ocm/" class="md-nav__link">
<span class="md-ellipsis">
Open Cloud Mesh
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../deploy_seafile_behind_nat/" class="md-nav__link">
<span class="md-ellipsis">
Deploy Seafile behind NAT
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../deploy_seahub_at_non-root_domain/" class="md-nav__link">
<span class="md-ellipsis">
Deploy Seahub at Non-root domain or on custom port
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/fail2ban/" class="md-nav__link">
<span class="md-ellipsis">
Config fail2ban
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/real_time_backup/" class="md-nav__link">
<span class="md-ellipsis">
Real-time Backup Server
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Configuration and Customization
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Configuration and Customization
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../config/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/ccnet-conf/" class="md-nav__link">
<span class="md-ellipsis">
ccnet.conf
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/seafile-conf/" class="md-nav__link">
<span class="md-ellipsis">
seafile.conf
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/seahub_settings_py/" class="md-nav__link">
<span class="md-ellipsis">
seahub_settings.py
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/seafevents-conf/" class="md-nav__link">
<span class="md-ellipsis">
seafevents.conf
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/seahub_customization/" class="md-nav__link">
<span class="md-ellipsis">
Seahub customization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../config/sending_email/" class="md-nav__link">
<span class="md-ellipsis">
Email Sending
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Administration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Administration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../maintain/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/account/" class="md-nav__link">
<span class="md-ellipsis">
Account management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/two_factor_authentication/" class="md-nav__link">
<span class="md-ellipsis">
Two-factor Authentication
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/security_features/" class="md-nav__link">
<span class="md-ellipsis">
Security features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../security/auditing/" class="md-nav__link">
<span class="md-ellipsis">
Access logs and auditing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/export_report/" class="md-nav__link">
<span class="md-ellipsis">
Export report
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/logs/" class="md-nav__link">
<span class="md-ellipsis">
Logs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/backup_recovery/" class="md-nav__link">
<span class="md-ellipsis">
Backup and Recovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/seafile_fsck/" class="md-nav__link">
<span class="md-ellipsis">
Seafile FSCK
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/seafile_gc/" class="md-nav__link">
<span class="md-ellipsis">
Seafile GC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../maintain/clean_database/" class="md-nav__link">
<span class="md-ellipsis">
Clean database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deploy_pro/seaf_import/" class="md-nav__link">
<span class="md-ellipsis">
Import Directory To Seafile (Pro)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Upgrade Seafile Server
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Upgrade Seafile Server
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../upgrade/upgrade/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_docker/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade Seafile Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_a_cluster/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade Seafile Cluster
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_a_cluster_docker/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade Seafile Cluster (Docker)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_7.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 7.0.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_7.1.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 7.1.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_8.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 8.0.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_9.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 9.0.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_10.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 10.0.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_11.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 11.0.x
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../upgrade/upgrade_notes_for_12.0.x/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade notes for 12.0.x (In progress)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
Developing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Developing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../develop/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9_2" >
<label class="md-nav__link" for="__nav_9_2" id="__nav_9_2_label" tabindex="0">
<span class="md-ellipsis">
How to Build Seafile
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_9_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9_2">
<span class="md-nav__icon md-icon"></span>
How to Build Seafile
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../build_seafile/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../build_seafile/linux/" class="md-nav__link">
<span class="md-ellipsis">
Linux
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../build_seafile/osx/" class="md-nav__link">
<span class="md-ellipsis">
macOS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../build_seafile/windows/" class="md-nav__link">
<span class="md-ellipsis">
Windows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../build_seafile/server/" class="md-nav__link">
<span class="md-ellipsis">
Server development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../build_seafile/rpi/" class="md-nav__link">
<span class="md-ellipsis">
Server binary package
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../develop/translation/" class="md-nav__link">
<span class="md-ellipsis">
Translation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/web_api_v2.1/" class="md-nav__link">
<span class="md-ellipsis">
Web API V2.1
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://github.com/rene-s/Seafile-PHP-SDK" class="md-nav__link">
<span class="md-ellipsis">
PHP API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../develop/data_model/" class="md-nav__link">
<span class="md-ellipsis">
Data Model
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
<span class="md-ellipsis">
ChangeLog
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
ChangeLog
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../changelog/server-changelog/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Community Edition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/changelog-for-seafile-professional-server/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Professional Edition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/client-changelog/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Client
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/drive-client-changelog/" class="md-nav__link">
<span class="md-ellipsis">
Drive Client
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#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="#creating-the-program-directory" class="md-nav__link">
<span class="md-ellipsis">
Creating the program 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="#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="#setting-up-seafile-ce" class="md-nav__link">
<span class="md-ellipsis">
Setting up Seafile CE
</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="#tweaking-conf-files" class="md-nav__link">
<span class="md-ellipsis">
Tweaking conf files
</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>
<nav class="md-nav" aria-label="Starting Seafile Server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#stopping-and-restarting-seafile-and-seahub" class="md-nav__link">
<span class="md-ellipsis">
Stopping and Restarting Seafile and Seahub
</span>
</a>
<nav class="md-nav" aria-label="Stopping and Restarting Seafile and Seahub">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#stopping" class="md-nav__link">
<span class="md-ellipsis">
Stopping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#restarting" class="md-nav__link">
<span class="md-ellipsis">
Restarting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#enabling-https" class="md-nav__link">
<span class="md-ellipsis">
Enabling HTTPS
</span>
</a>
</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-community-edition-with-mysqlmariadb">Installation of Seafile Server Community Edition with MySQL/MariaDB<a class="headerlink" href="#installation-of-seafile-server-community-edition-with-mysqlmariadb" title="Permanent link">&para;</a></h1>
<p>This manual explains how to deploy and run Seafile Server Community Edition (Seafile CE) 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 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 <a href="https://github.com/haiwen/seafile-server-installer">installation script</a> for deploying Seafile.</p>
<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">&para;</a></h2>
<p>Seafile CE for x86 architecture requires a minimum of 2 cores and 2GB RAM.</p>
<p>There is a community-supported package for the installation on Raspberry Pi.</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>Seafile supports MySQL and MariaDB. We recommend that you use the preferred SQL database management engine included in the package repositories of your distribution. This means:</p>
<ul>
<li>CentOS and Debian: MariaDB</li>
<li>Ubuntu: MySQL</li>
</ul>
<p>You can find step-by-step how-tos for installing MySQL and MariaDB in the <a href="https://www.digitalocean.com/community/tutorials">tutorials on the Digital Ocean website</a>.</p>
<p>Seafile uses the mysql_native_password plugin for authentication. The versions of MySQL and MariaDB installed on CentOS 8, Debian 10, and Ubuntu 20.04 use a different authentication plugin by default. It is therefore required to change to authentication plugin to mysql_native_password for the root user prior to the installation of Seafile. The above mentioned tutorials explain how to do it.</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"># Debian 10</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="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">default</span><span class="o">-</span><span class="n">libmysqlclient</span><span class="o">-</span><span class="n">dev</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>
<div class="codehilite"><pre><span></span><code><span class="c1"># Ubuntu 18.04</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="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="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>
</code></pre></div>
<div class="codehilite"><pre><span></span><code><span class="c1"># Ubuntu 20.04</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="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="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="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>
<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">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>
<p>Note: CentOS 8 is no longer supported.</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Ubuntu 20.04 (almost the same for Ubuntu 18.04 and Debian 10)</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">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"># Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)</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">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>
<p><strong>For Seafile 11.0.x (Debian 11, Ubuntu 22.04, etc.)</strong></p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)</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">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">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="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">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">lxml</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>
</code></pre></div>
<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="creating-the-program-directory">Creating the program directory<a class="headerlink" href="#creating-the-program-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>sudo 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, modify the commands accordingly.</p>
<h3 id="creating-user-seafile">Creating user seafile<a class="headerlink" href="#creating-user-seafile" title="Permanent link">&para;</a></h3>
<p>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>sudo adduser seafile
</code></pre></div>
<p>Change ownership of the created directory to the new user:</p>
<div class="codehilite"><pre><span></span><code>sudo 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="downloading-the-install-package">Downloading the install package<a class="headerlink" href="#downloading-the-install-package" title="Permanent link">&para;</a></h3>
<p>Download the install package from the <a href="https://www.seafile.com/en/download/">download page</a> on Seafile's website using wget.</p>
<p>We use Seafile CE version 8.0.4 as an example in the rest of this manual.</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>tar xf seafile-server_8.0.4_x86-64.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>seafile-server-8.0.4
<span class="w">   </span>├──<span class="w"> </span>check_init_admin.py
<span class="w">   </span>├──<span class="w"> </span>reset-admin.sh
<span class="w">   </span>├──<span class="w"> </span>runtime
<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>seafile
<span class="w">   </span>├──<span class="w"> </span>seafile.sh
<span class="w">   </span>├──<span class="w"> </span>seahub
<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_8.0.4_x86-64.tar.gz
</code></pre></div>
<h3 id="setting-up-seafile-ce">Setting up Seafile CE<a class="headerlink" href="#setting-up-seafile-ce" title="Permanent link">&para;</a></h3>
<p>The install package comes with a script that sets Seafile up for you. Specifically, the script creates the required directories and extracts all files in the right place. It can also create a MySQL user and the three databases that <a href="../../overview/components/">Seafile's components</a> require :</p>
<ul>
<li>ccnet server</li>
<li>seafile server</li>
<li>seahub</li>
</ul>
<p>Note: While ccnet server was merged into the seafile-server in Seafile 8.0, the corresponding database is still required for the time being.</p>
<p>Run the script as user seafile:</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">cd seafile-server-8.0.4</span>
<span class="err">./setup-seafile-mysql.sh</span>
</code></pre></div>
<p>Configure your Seafile Server by specifying the following three parameters:</p>
<table>
<thead>
<tr>
<th>Option</th>
<th>Description</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>server name</td>
<td>Name of the Seafile Server</td>
<td>3-15 characters, only English letters, digits and underscore ('_') are allowed</td>
</tr>
<tr>
<td>server's ip or domain</td>
<td>IP address or domain name used by the Seafile Server</td>
<td>Seafile client program will access the server using this address</td>
</tr>
<tr>
<td>fileserver port</td>
<td>TCP port used by the Seafile fileserver</td>
<td>Default port is 8082, it is recommended to use this port and to only change it if is used by other service</td>
</tr>
</tbody>
</table>
<p>In the next step, choose whether to create new databases for Seafile or to use existing databases. The creation of new databases requires the root password for the SQL server. </p>
<p><img alt="grafik" src="../../images/seafile-setup-database.png" /></p>
<p>When choosing "[1] Create new ccnet/seafile/seahub databases", the script creates these databases and a MySQL user that Seafile Server will use to access them. To this effect, you need to answer these questions:</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Description</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>mysql server host</td>
<td>Host address of the MySQL server</td>
<td>Default is localhost</td>
</tr>
<tr>
<td>mysql server port</td>
<td>TCP port used by the MySQL server</td>
<td>Default port is 3306; almost every MySQL server uses this port</td>
</tr>
<tr>
<td>mysql root password</td>
<td>Password of the MySQL root account</td>
<td>The root password is required to create new databases and a MySQL user</td>
</tr>
<tr>
<td>mysql user for Seafile</td>
<td>MySQL user created by the script, used by Seafile's components to access the databases</td>
<td>Default is seafile; the user is created unless it exists</td>
</tr>
<tr>
<td>mysql password for Seafile user</td>
<td>Password for the user above, written in Seafile's config files</td>
<td>Percent sign ('%') is not allowed</td>
</tr>
<tr>
<td>database name</td>
<td>Name of the database used by ccnet</td>
<td>Default is "ccnet_db", the database is created if it does not exist</td>
</tr>
<tr>
<td>seafile database name</td>
<td>Name of the database used by Seafile</td>
<td>Default is "seafile_db", the database is created if it does not exist</td>
</tr>
<tr>
<td>seahub database name</td>
<td>Name of the database used by seahub</td>
<td>Default is "seahub_db", the database is created if it does not exist</td>
</tr>
</tbody>
</table>
<p>When choosing "[2] Use existing ccnet/seafile/seahub databases", this are the prompts you need to answer: </p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Description</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>mysql server host</td>
<td>Host address of the MySQL server</td>
<td>Default is localhost</td>
</tr>
<tr>
<td>mysql server port</td>
<td>TCP port used by MySQL server</td>
<td>Default port is 3306; almost every MySQL server uses this port</td>
</tr>
<tr>
<td>mysql user for Seafile</td>
<td>User used by Seafile's components to access the databases</td>
<td>The user must exists</td>
</tr>
<tr>
<td>mysql password for Seafile user</td>
<td>Password for the user above</td>
<td></td>
</tr>
<tr>
<td>ccnet database name</td>
<td>Name of the database used by ccnet, default is "ccnet_db"</td>
<td>The database must exist</td>
</tr>
<tr>
<td>seafile database name</td>
<td>Name of the database used by Seafile, default is "seafile_db"</td>
<td>The database must exist</td>
</tr>
<tr>
<td>seahub dabase name</td>
<td>Name of the database used by Seahub, default is "seahub_db"</td>
<td>The database must exist</td>
</tr>
</tbody>
</table>
<p>If the setup is successful, you see the following output:</p>
<p><img alt="grafik" src="../../images/seafile-setup-output.png" /></p>
<p>The directory layout then looks as follows:</p>
<div class="codehilite"><pre><span></span><code>$<span class="w"> </span>tree<span class="w"> </span>/opt/seafile<span class="w"> </span>-L<span class="w"> </span><span class="m">2</span>
seafile
├──<span class="w"> </span>ccnet
├──<span class="w"> </span>conf
<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>seafdav.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>seafile-data
<span class="w"> </span>└──<span class="w"> </span>library-template
├──<span class="w"> </span>seafile-server-8.0.4
<span class="w"> </span>└──<span class="w"> </span>check_init_admin.py
<span class="w">   </span>├──<span class="w"> </span>reset-admin.sh
<span class="w">   </span>├──<span class="w"> </span>runtime
<span class="w"> </span>└──<span class="w"> </span>seaf-fsck.sh
<span class="w"> </span>└──<span class="w"> </span>seaf-gc.sh
<span class="w">   </span>├──<span class="w"> </span>seafile
<span class="w">   </span>├──<span class="w"> </span>seafile.sh
<span class="w">   </span>├──<span class="w"> </span>seahub
<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>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-server-8.0.6
├──<span class="w"> </span>seahub-data
<span class="w">   </span>└──<span class="w"> </span>avatars
</code></pre></div>
<p>The folder <code>seafile-server-latest</code> is a symbolic link to the current Seafile Server folder. When later you upgrade to a new version, the upgrade scripts update this link to point to the latest Seafile Server folder.</p>
<p>Note: If you don't have the root password, you need someone who has the privileges, e.g., the database admin, to create the three databases required by Seafile, as well as a MySQL user who can access the databases. For example, to create three databases <code>ccnet_db</code> / <code>seafile_db</code> / <code>seahub_db</code> for ccnet/seafile/seahub respectively, and a MySQL user "seafile" to access these databases run the following SQL queries:</p>
<div class="codehilite"><pre><span></span><code><span class="k">create</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="n n-Quoted">`ccnet_db`</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;utf8&#39;</span><span class="p">;</span>
<span class="k">create</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="n n-Quoted">`seafile_db`</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;utf8&#39;</span><span class="p">;</span>
<span class="k">create</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="n n-Quoted">`seahub_db`</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;utf8&#39;</span><span class="p">;</span>
<span class="k">create</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="s1">&#39;seafile&#39;</span><span class="nv">@&#39;localhost&#39;</span><span class="w"> </span><span class="k">identified</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="s1">&#39;seafile&#39;</span><span class="p">;</span>
<span class="k">GRANT</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="k">PRIVILEGES</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n n-Quoted">`ccnet_db`</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n n-Quoted">`seafile`</span><span class="nv">@localhost</span><span class="p">;</span>
<span class="k">GRANT</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="k">PRIVILEGES</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n n-Quoted">`seafile_db`</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n n-Quoted">`seafile`</span><span class="nv">@localhost</span><span class="p">;</span>
<span class="k">GRANT</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="k">PRIVILEGES</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n n-Quoted">`seahub_db`</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n n-Quoted">`seafile`</span><span class="nv">@localhost</span><span class="p">;</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>Seahub caches items(avatars, profiles, etc) on file system by default(/tmp/seahub_cache/). You can replace with Memcached or Redis.</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="tweaking-conf-files">Tweaking conf files<a class="headerlink" href="#tweaking-conf-files" title="Permanent link">&para;</a></h3>
<p>Seafile's config files as created by the setup script are prepared for Seafile running behind a reverse proxy.</p>
<p>To access Seafile's web interface and to create working sharing links without a reverse proxy, you need to modify two configuration files in <code>/opt/seafile/conf</code>:</p>
<ul>
<li>seahub_settings.py (if you use 9.0.x): Add port 8000 to the <code>SERVICE_URL</code> (i.e., SERVICE_URL = 'http://1.2.3.4:8000/').</li>
<li>ccnet.conf (if you use 8.0.x or 7.1.x): Add port 8000 to the <code>SERVICE_URL</code> (i.e., SERVICE_URL = http://1.2.3.4:8000/).</li>
<li>gunicorn.conf.py: Change the bind to "0.0.0.0:8000" (i.e., bind = "0.0.0.0:8000")</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 # starts seaf-server</span>
<span class="err">./seahub.sh start # starts seahub</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 and port 8000 (e.g., http://1.2.3.4:8000)</p>
<p>Note: On CentOS, the firewall blocks traffic on port 8000 by default.</p>
<h3 id="troubleshooting">Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permanent link">&para;</a></h3>
<p>If seafile.sh and/or seahub.sh fail to run successfully, use <code>pgrep</code> to check if seafile/seahub processes are still running:</p>
<div class="codehilite"><pre><span></span><code>pgrep -f seafile-controller # checks seafile processes
pgrep -f &quot;seahub&quot; # checks seahub process
</code></pre></div>
<p>Use <code>pkill</code> to kill the processes:</p>
<div class="codehilite"><pre><span></span><code>pkill -f seafile-controller
pkill -f &quot;seahub&quot;
</code></pre></div>
<h2 id="stopping-and-restarting-seafile-and-seahub">Stopping and Restarting Seafile and Seahub<a class="headerlink" href="#stopping-and-restarting-seafile-and-seahub" title="Permanent link">&para;</a></h2>
<h3 id="stopping">Stopping<a class="headerlink" href="#stopping" title="Permanent link">&para;</a></h3>
<div class="codehilite"><pre><span></span><code>./seahub.sh stop # stops seahub
./seafile.sh stop # stops seaf-server
</code></pre></div>
<h3 id="restarting">Restarting<a class="headerlink" href="#restarting" title="Permanent link">&para;</a></h3>
<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 restart</span>
<span class="err">./seahub.sh restart</span>
</code></pre></div>
<h2 id="enabling-https">Enabling HTTPS<a class="headerlink" href="#enabling-https" title="Permanent link">&para;</a></h2>
<p>It is strongly recommended to switch from unencrypted HTTP (via port 8000) to encrypted HTTPS (via port 443).</p>
<p>This manual provides instructions for enabling HTTPS for the two most popular web servers and reverse proxies:</p>
<ul>
<li><a href="https://manual.seafile.com/deploy/https_with_nginx/">Nginx</a></li>
<li><a href="https://manual.seafile.com/deploy/https_with_apache/">Apache</a></li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Seafile Ltd.
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/haiwen/seafile-admin-docs/" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": [], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
</body>
</html>