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

4308 lines
118 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. 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/only_office/">
<link rel="prev" href="../libreoffice_online/">
<link rel="next" href="../../deploy_pro/office_web_app/">
<link rel="icon" href="../../media/favicon.ico">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
<title>OnlyOffice Integration - 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="#onlyoffice" 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">
OnlyOffice Integration
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
haiwen/seafile-admin-docs
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Seafile Admin Manual" class="md-nav__button md-logo" aria-label="Seafile Admin Manual" data-md-component="logo">
<img src="../../media/seafile-transparent-1024.png" alt="logo">
</a>
Seafile Admin Manual
</label>
<div class="md-nav__source">
<a href="https://github.com/haiwen/seafile-admin-docs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
haiwen/seafile-admin-docs
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-ellipsis">
Overview
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Overview
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../overview/components/" class="md-nav__link">
<span class="md-ellipsis">
Seafile Components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../overview/file_permission_management/" class="md-nav__link">
<span class="md-ellipsis">
File permission management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contribution/" class="md-nav__link">
<span class="md-ellipsis">
Contribution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/" class="md-nav__link">
<span class="md-ellipsis">
Changelog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Seafile Community Setup on Linux
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Seafile Community Setup on Linux
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../using_mysql/" class="md-nav__link">
<span class="md-ellipsis">
Installation with MySQL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../https_with_nginx/" class="md-nav__link">
<span class="md-ellipsis">
HTTPS with Nginx
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../https_with_apache/" class="md-nav__link">
<span class="md-ellipsis">
HTTPS with Apache
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--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--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
<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="true">
<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--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" checked>
<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="true">
<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 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">
OnlyOffice Integration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
OnlyOffice Integration
</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="#deployment-of-onlyoffice" class="md-nav__link">
<span class="md-ellipsis">
Deployment of OnlyOffice
</span>
</a>
<nav class="md-nav" aria-label="Deployment of OnlyOffice">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#test-that-onlyoffice-is-running" class="md-nav__link">
<span class="md-ellipsis">
Test that OnlyOffice is running
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-onlyoffice-to-automatically-save" class="md-nav__link">
<span class="md-ellipsis">
Configure OnlyOffice to automatically save
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-onlyoffice-to-use-jwt-secret" class="md-nav__link">
<span class="md-ellipsis">
Configure OnlyOffice to use JWT Secret
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configure-seafile-server" class="md-nav__link">
<span class="md-ellipsis">
Configure Seafile Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#config-seafile-and-onlyoffice-in-the-same-machine" class="md-nav__link">
<span class="md-ellipsis">
Config Seafile and OnlyOffice in the same machine
</span>
</a>
<nav class="md-nav" aria-label="Config Seafile and OnlyOffice in the same machine">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-webserver" class="md-nav__link">
<span class="md-ellipsis">
Configure Webserver
</span>
</a>
<nav class="md-nav" aria-label="Configure Webserver">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-nginx" class="md-nav__link">
<span class="md-ellipsis">
Configure Nginx
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-apache" class="md-nav__link">
<span class="md-ellipsis">
Configure Apache
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#test-that-documentserver-is-running-via-subfolder" class="md-nav__link">
<span class="md-ellipsis">
Test that DocumentServer is running via SUBFOLDER
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-seafile-server-for-subfolder" class="md-nav__link">
<span class="md-ellipsis">
Configure Seafile Server for SUBFOLDER
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#complete-nginx-config-example" class="md-nav__link">
<span class="md-ellipsis">
Complete Nginx config EXAMPLE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#complete-apache-config-example" class="md-nav__link">
<span class="md-ellipsis">
Complete Apache config EXAMPLE
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#faq" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
<nav class="md-nav" aria-label="FAQ">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#encountering-download-failed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-74-or-later" class="md-nav__link">
<span class="md-ellipsis">
Encountering Download failed. problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.4 or later.
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#encountering-the-document-security-token-is-not-correctly-formed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-72-or-later" class="md-nav__link">
<span class="md-ellipsis">
Encountering The document security token is not correctly formed. problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.2 or later.
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</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="#deployment-of-onlyoffice" class="md-nav__link">
<span class="md-ellipsis">
Deployment of OnlyOffice
</span>
</a>
<nav class="md-nav" aria-label="Deployment of OnlyOffice">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#test-that-onlyoffice-is-running" class="md-nav__link">
<span class="md-ellipsis">
Test that OnlyOffice is running
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-onlyoffice-to-automatically-save" class="md-nav__link">
<span class="md-ellipsis">
Configure OnlyOffice to automatically save
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-onlyoffice-to-use-jwt-secret" class="md-nav__link">
<span class="md-ellipsis">
Configure OnlyOffice to use JWT Secret
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configure-seafile-server" class="md-nav__link">
<span class="md-ellipsis">
Configure Seafile Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#config-seafile-and-onlyoffice-in-the-same-machine" class="md-nav__link">
<span class="md-ellipsis">
Config Seafile and OnlyOffice in the same machine
</span>
</a>
<nav class="md-nav" aria-label="Config Seafile and OnlyOffice in the same machine">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-webserver" class="md-nav__link">
<span class="md-ellipsis">
Configure Webserver
</span>
</a>
<nav class="md-nav" aria-label="Configure Webserver">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configure-nginx" class="md-nav__link">
<span class="md-ellipsis">
Configure Nginx
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-apache" class="md-nav__link">
<span class="md-ellipsis">
Configure Apache
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#test-that-documentserver-is-running-via-subfolder" class="md-nav__link">
<span class="md-ellipsis">
Test that DocumentServer is running via SUBFOLDER
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configure-seafile-server-for-subfolder" class="md-nav__link">
<span class="md-ellipsis">
Configure Seafile Server for SUBFOLDER
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#complete-nginx-config-example" class="md-nav__link">
<span class="md-ellipsis">
Complete Nginx config EXAMPLE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#complete-apache-config-example" class="md-nav__link">
<span class="md-ellipsis">
Complete Apache config EXAMPLE
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#faq" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
<nav class="md-nav" aria-label="FAQ">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#encountering-download-failed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-74-or-later" class="md-nav__link">
<span class="md-ellipsis">
Encountering Download failed. problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.4 or later.
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#encountering-the-document-security-token-is-not-correctly-formed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-72-or-later" class="md-nav__link">
<span class="md-ellipsis">
Encountering The document security token is not correctly formed. problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.2 or later.
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="onlyoffice">OnlyOffice<a class="headerlink" href="#onlyoffice" title="Permanent link">&para;</a></h1>
<p>From version 6.1.0+ on (including CE), Seafile supports <a href="https://www.onlyoffice.com/">OnlyOffice</a> to view/edit office files online. In order to use OnlyOffice, you must first deploy an OnlyOffice server.</p>
<p>You can deploy OnlyOffice and Seafile in the same machine with same domain or using two separate machines with two different domains.</p>
<p>In a cluster setup we recommend a dedicated DocumentServer host or a DocumentServer Cluster on a different subdomain. </p>
<h2 id="deployment-of-onlyoffice">Deployment of OnlyOffice<a class="headerlink" href="#deployment-of-onlyoffice" title="Permanent link">&para;</a></h2>
<p>For a quick and easy installation, we suggest you use <a href="https://github.com/ONLYOFFICE/Docker-DocumentServer">ONLYOFFICE/Docker-DocumentServer</a>.</p>
<h3 id="test-that-onlyoffice-is-running">Test that OnlyOffice is running<a class="headerlink" href="#test-that-onlyoffice-is-running" title="Permanent link">&para;</a></h3>
<p>After the installation process is finished, visit this page to make sure you have deployed OnlyOffice successfully: <code>http{s}://{your OnlyOffice server's domain or IP}/welcome</code>, you will get <strong>Document Server is running</strong> info at this page.</p>
<h3 id="configure-onlyoffice-to-automatically-save">Configure OnlyOffice to automatically save<a class="headerlink" href="#configure-onlyoffice-to-automatically-save" title="Permanent link">&para;</a></h3>
<p>When open file with OnlyOffice, OnlyOffice will only send a file save request to Seafile after the user closes the page. If the user does not close the page for a long time, the user's changes to the file will not be saved on the Seafile. </p>
<p>You can now set up automatic save by changing the configuration of OnlyOffice. </p>
<ul>
<li>Go to the container of onlyoffice/documentserver and open the configuration file: <code>/etc/onlyoffice/documentserver/local.json</code> </li>
<li>Add this configuration: </li>
</ul>
<div class="codehilite"><pre><span></span><code>{
&quot;services&quot;: {
&quot;CoAuthoring&quot;: {
&quot;autoAssembly&quot;: {
&quot;enable&quot;: true,
&quot;interval&quot;: &quot;5m&quot;
}
}
}
}
</code></pre></div>
<ul>
<li>Restart OnlyOffice: <code>supervisorctl restart all</code> </li>
</ul>
<p>You can get more info in OnlyOffice's official document: https\://api.onlyoffice.com/editors/save</p>
<h3 id="configure-onlyoffice-to-use-jwt-secret">Configure OnlyOffice to use JWT Secret<a class="headerlink" href="#configure-onlyoffice-to-use-jwt-secret" title="Permanent link">&para;</a></h3>
<p>JWT secret can be used to secure your OnlyOffice server so other people will not be able to use it.Since 7.1.2</p>
<p>To enable this feature, you should install a python moduel</p>
<div class="codehilite"><pre><span></span><code>pip install pyjwt
</code></pre></div>
<p>Config seahub_settings.py:</p>
<div class="codehilite"><pre><span></span><code>ONLYOFFICE_JWT_SECRET = &#39;your-secret-string&#39;
</code></pre></div>
<p>Then run OnlyOffice docker image via the following command:</p>
<div class="codehilite"><pre><span></span><code>sudo docker run -i -t -d -p 80:80 -e JWT_ENABLED=true -e JWT_SECRET=your-secret-string onlyoffice/documentserver
</code></pre></div>
<p>For more information you can check the official documentation: <a href="https://api.onlyoffice.com/editors/signature/">https://api.onlyoffice.com/editors/signature/</a> and <a href="https://github.com/ONLYOFFICE/Docker-DocumentServer#available-configuration-parameters">https://github.com/ONLYOFFICE/Docker-DocumentServer#available-configuration-parameters</a></p>
<p><strong>NOTE</strong>To avoid the problem of having to change the configuration file every time the <em>documentserver</em> container is restarted, you can create a locally persistent configuration file <code>local-production-linux.json</code> and mount it into <em>documentserver</em> container :</p>
<div class="codehilite"><pre><span></span><code>-v /local/path/to/local-production-linux.json:/etc/onlyoffice/documentserver/local-production-linux.json
</code></pre></div>
<h2 id="configure-seafile-server">Configure Seafile Server<a class="headerlink" href="#configure-seafile-server" title="Permanent link">&para;</a></h2>
<blockquote>
<p>For OnlyOffice is deployed in a separate machine with a different domain.</p>
</blockquote>
<p>Add the following config option to <code>seahub_settings.py</code>.</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Enable OnlyOffice</span>
<span class="n">ENABLE_ONLYOFFICE</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">VERIFY_ONLYOFFICE_CERTIFICATE</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">ONLYOFFICE_APIJS_URL</span> <span class="o">=</span> <span class="s1">&#39;http</span><span class="si">{s}</span><span class="s1">://{your OnlyOffice server&#39;</span><span class="n">s</span> <span class="n">domain</span> <span class="ow">or</span> <span class="n">IP</span><span class="p">}</span><span class="o">/</span><span class="n">web</span><span class="o">-</span><span class="n">apps</span><span class="o">/</span><span class="n">apps</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">documents</span><span class="o">/</span><span class="n">api</span><span class="o">.</span><span class="n">js</span><span class="s1">&#39;</span>
<span class="n">ONLYOFFICE_FILE_EXTENSION</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;doc&#39;</span><span class="p">,</span> <span class="s1">&#39;docx&#39;</span><span class="p">,</span> <span class="s1">&#39;ppt&#39;</span><span class="p">,</span> <span class="s1">&#39;pptx&#39;</span><span class="p">,</span> <span class="s1">&#39;xls&#39;</span><span class="p">,</span> <span class="s1">&#39;xlsx&#39;</span><span class="p">,</span> <span class="s1">&#39;odt&#39;</span><span class="p">,</span> <span class="s1">&#39;fodt&#39;</span><span class="p">,</span> <span class="s1">&#39;odp&#39;</span><span class="p">,</span> <span class="s1">&#39;fodp&#39;</span><span class="p">,</span> <span class="s1">&#39;ods&#39;</span><span class="p">,</span> <span class="s1">&#39;fods&#39;</span><span class="p">)</span>
<span class="n">ONLYOFFICE_EDIT_FILE_EXTENSION</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;docx&#39;</span><span class="p">,</span> <span class="s1">&#39;pptx&#39;</span><span class="p">,</span> <span class="s1">&#39;xlsx&#39;</span><span class="p">)</span>
<span class="c1"># Enable force save to let user can save file when he/she press the save button on OnlyOffice file edit page.</span>
<span class="n">ONLYOFFICE_FORCE_SAVE</span> <span class="o">=</span> <span class="kc">True</span>
<span class="c1"># if JWT enabled</span>
<span class="n">ONLYOFFICE_JWT_SECRET</span> <span class="o">=</span> <span class="s1">&#39;your-secret-string&#39;</span>
</code></pre></div>
<p>Then restart the Seafile Server</p>
<div class="codehilite"><pre><span></span><code>./seafile.sh restart
./seahub.sh restart
# or
service seafile-server restart
service seahub-server restart
</code></pre></div>
<p>When you click on a document you should see the new preview page.</p>
<h2 id="config-seafile-and-onlyoffice-in-the-same-machine">Config Seafile and OnlyOffice in the same machine<a class="headerlink" href="#config-seafile-and-onlyoffice-in-the-same-machine" title="Permanent link">&para;</a></h2>
<p>When you want to deploy OnlyOffice and Seafile on the same server, Seafile should be deployed at the root URL while OnlyOffice should be deployed using a subfolder URL.</p>
<p>URL example for OnlyOffice: <a href="https://seafile.example.com/onlyofficeds">https://seafile.example.com/onlyofficeds</a></p>
<p><strong>Do NOT CHANGE the SUBFOLDER if not absolutely required for some reason!</strong></p>
<p><strong>The subfolder page is only important for communication between Seafile and the DocumentServer, there is nothing except the welcome page (e.g. no overview or settings). Users will need access to it though for the OnlyOffice document server editor to work properly.</strong></p>
<p><strong><code>/onlyoffice/</code></strong> cannot be used as subfolder as this path is used for communication between Seafile and Document Server !</p>
<h3 id="configure-webserver">Configure Webserver<a class="headerlink" href="#configure-webserver" title="Permanent link">&para;</a></h3>
<h4 id="configure-nginx">Configure Nginx<a class="headerlink" href="#configure-nginx" title="Permanent link">&para;</a></h4>
<p><strong>Variable mapping</strong></p>
<p>Add the following configuration to your seafile nginx conf file (e.g. <code>/etc/ngnix/conf.d/seafile.conf</code>) out of the <code>server</code> directive. These variables are to be defined for the DocumentServer to work in a subfolder.</p>
<div class="codehilite"><pre><span></span><code><span class="gh">#</span> Required for only office document server
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
&quot;&quot; $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
&quot;&quot; $host;
}
map $http_upgrade $proxy_connection {
default upgrade;
&quot;&quot; close;
}
</code></pre></div>
<p><strong>Proxy server settings subfolder</strong></p>
<p>Add the following configuration to your seafile nginx .conf file (e.g. <code>/etc/ngnix/conf.d/seafile.conf</code>) within the <code>server</code> directive.</p>
<div class="codehilite"><pre><span></span><code><span class="o">...</span><span class="w"> </span>
<span class="nt">location</span><span class="w"> </span><span class="o">/</span><span class="nt">onlyofficeds</span><span class="o">/</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="err">THIS</span><span class="w"> </span><span class="err">ONE</span><span class="w"> </span><span class="err">IS</span><span class="w"> </span><span class="err">IMPORTANT</span><span class="w"> </span><span class="err">!</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="err">Trailing</span><span class="w"> </span><span class="err">slash</span><span class="w"> </span><span class="err">!</span>
<span class="w"> </span><span class="err">proxy_pass</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="err">{</span><span class="n">your</span><span class="w"> </span><span class="n">Seafile</span><span class="w"> </span><span class="n">server</span><span class="err">&#39;</span><span class="n">s</span><span class="w"> </span><span class="n">domain</span><span class="w"> </span><span class="n">or</span><span class="w"> </span><span class="n">IP</span><span class="p">}:</span><span class="nd">88</span><span class="o">/;</span>
<span class="w"> </span><span class="nt">proxy_http_version</span><span class="w"> </span><span class="nt">1</span><span class="p">.</span><span class="nc">1</span><span class="o">;</span>
<span class="w"> </span><span class="nt">client_max_body_size</span><span class="w"> </span><span class="nt">100M</span><span class="o">;</span><span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="nt">Limit</span><span class="w"> </span><span class="nt">Document</span><span class="w"> </span><span class="nt">size</span><span class="w"> </span><span class="nt">to</span><span class="w"> </span><span class="nt">100MB</span>
<span class="w"> </span><span class="nt">proxy_read_timeout</span><span class="w"> </span><span class="nt">3600s</span><span class="o">;</span>
<span class="w"> </span><span class="nt">proxy_connect_timeout</span><span class="w"> </span><span class="nt">3600s</span><span class="o">;</span>
<span class="w"> </span><span class="nt">proxy_set_header</span><span class="w"> </span><span class="nt">Upgrade</span><span class="w"> </span><span class="o">$</span><span class="nt">http_upgrade</span><span class="o">;</span>
<span class="w"> </span><span class="nt">proxy_set_header</span><span class="w"> </span><span class="nt">Connection</span><span class="w"> </span><span class="o">$</span><span class="nt">proxy_connection</span><span class="o">;</span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="nt">THIS</span><span class="w"> </span><span class="nt">ONE</span><span class="w"> </span><span class="nt">IS</span><span class="w"> </span><span class="nt">IMPORTANT</span><span class="w"> </span><span class="o">!</span><span class="w"> </span><span class="nt">-</span><span class="w"> </span><span class="nt">Subfolder</span><span class="w"> </span><span class="nt">and</span><span class="w"> </span><span class="nt">NO</span><span class="w"> </span><span class="nt">trailing</span><span class="w"> </span><span class="nt">slash</span><span class="w"> </span><span class="o">!</span>
<span class="w"> </span><span class="nt">proxy_set_header</span><span class="w"> </span><span class="nt">X-Forwarded-Host</span><span class="w"> </span><span class="o">$</span><span class="nt">the_host</span><span class="o">/</span><span class="nt">onlyofficeds</span><span class="o">;</span>
<span class="w"> </span><span class="nt">proxy_set_header</span><span class="w"> </span><span class="nt">X-Forwarded-Proto</span><span class="w"> </span><span class="o">$</span><span class="nt">the_scheme</span><span class="o">;</span>
<span class="w"> </span><span class="nt">proxy_set_header</span><span class="w"> </span><span class="nt">X-Forwarded-For</span><span class="w"> </span><span class="o">$</span><span class="nt">proxy_add_x_forwarded_for</span><span class="o">;</span>
<span class="w"> </span><span class="err">}</span>
<span class="o">...</span>
</code></pre></div>
<h4 id="configure-apache">Configure Apache<a class="headerlink" href="#configure-apache" title="Permanent link">&para;</a></h4>
<p><em>BETA - Requires further testing!</em></p>
<p>Add the following configuration to your seafile apache config file (e.g. <code>sites-enabled/seafile.conf</code>) <strong>outside</strong> the <code>&lt;VirtualHost &gt;</code> directive.</p>
<div class="codehilite"><pre><span></span><code>...
LoadModule<span class="w"> </span>authn_core_module<span class="w"> </span>modules/mod_authn_core.so
LoadModule<span class="w"> </span>authz_core_module<span class="w"> </span>modules/mod_authz_core.so
LoadModule<span class="w"> </span>unixd_module<span class="w"> </span>modules/mod_unixd.so
LoadModule<span class="w"> </span>proxy_module<span class="w"> </span>modules/mod_proxy.so
LoadModule<span class="w"> </span>proxy_http_module<span class="w"> </span>modules/mod_proxy_http.so
LoadModule<span class="w"> </span>proxy_wstunnel_module<span class="w"> </span>modules/mod_proxy_wstunnel.so
LoadModule<span class="w"> </span>headers_module<span class="w"> </span>modules/mod_headers.so
LoadModule<span class="w"> </span>setenvif_module<span class="w"> </span>modules/mod_setenvif.so
<span class="nt">&lt;IfModule</span><span class="w"> </span><span class="err">unixd_module</span><span class="nt">&gt;</span>
<span class="w"> </span>User<span class="w"> </span>daemon
<span class="w"> </span>Group<span class="w"> </span>daemon
<span class="nt">&lt;/IfModule&gt;</span>
...
</code></pre></div>
<p>Add the following configuration to your seafile apache config file (e.g. <code>sites-enabled/seafile.conf</code>) <strong>inside</strong> the <code>&lt;VirtualHost &gt;</code> directive at the end.</p>
<div class="codehilite"><pre><span></span><code>...
Define<span class="w"> </span>VPATH<span class="w"> </span>/onlyofficeds
Define<span class="w"> </span>DS_ADDRESS<span class="w"> </span>{your<span class="w"> </span>Seafile<span class="w"> </span>server&#39;s<span class="w"> </span>domain<span class="w"> </span>or<span class="w"> </span>IP}:88
...
<span class="nt">&lt;Location</span> <span class="err">${VPATH}</span><span class="nt">&gt;</span>
<span class="w"> </span>Require<span class="w"> </span>all<span class="w"> </span>granted
<span class="w"> </span>SetEnvIf<span class="w"> </span>Host<span class="w"> </span>&quot;^(.*)$&quot;<span class="w"> </span>THE_HOST=$1
<span class="w"> </span>RequestHeader<span class="w"> </span>setifempty<span class="w"> </span>X-Forwarded-Proto<span class="w"> </span>http
<span class="w"> </span>RequestHeader<span class="w"> </span>setifempty<span class="w"> </span>X-Forwarded-Host<span class="w"> </span>%{THE_HOST}e
<span class="w"> </span>RequestHeader<span class="w"> </span>edit<span class="w"> </span>X-Forwarded-Host<span class="w"> </span>(.*)<span class="w"> </span>$1<span class="cp">${</span><span class="n">VPATH</span><span class="cp">}</span>
<span class="w"> </span>ProxyAddHeaders<span class="w"> </span>Off
<span class="w"> </span>ProxyPass<span class="w"> </span>&quot;http://<span class="cp">${</span><span class="n">DS_ADDRESS</span><span class="cp">}</span>/&quot;
<span class="w"> </span>ProxyPassReverse<span class="w"> </span>&quot;http://<span class="cp">${</span><span class="n">DS_ADDRESS</span><span class="cp">}</span>/&quot;
<span class="nt">&lt;/Location&gt;</span>
...
</code></pre></div>
<h3 id="test-that-documentserver-is-running-via-subfolder">Test that DocumentServer is running via SUBFOLDER<a class="headerlink" href="#test-that-documentserver-is-running-via-subfolder" title="Permanent link">&para;</a></h3>
<p>After the installation process is finished, visit this page to make sure you have deployed OnlyOffice successfully: <code>http{s}://{your Seafile Server's domain or IP}/{your subdolder}/welcome</code>, you will get <strong>Document Server is running</strong> info at this page.</p>
<h3 id="configure-seafile-server-for-subfolder">Configure Seafile Server for SUBFOLDER<a class="headerlink" href="#configure-seafile-server-for-subfolder" title="Permanent link">&para;</a></h3>
<p>Add the following config option to <code>seahub_settings.py</code>:</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Enable Only Office</span>
<span class="n">ENABLE_ONLYOFFICE</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">VERIFY_ONLYOFFICE_CERTIFICATE</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">ONLYOFFICE_APIJS_URL</span> <span class="o">=</span> <span class="s1">&#39;http</span><span class="si">{s}</span><span class="s1">://{your Seafile server&#39;</span><span class="n">s</span> <span class="n">domain</span> <span class="ow">or</span> <span class="n">IP</span><span class="p">}</span><span class="o">/</span><span class="p">{</span><span class="n">your</span> <span class="n">subdolder</span><span class="p">}</span><span class="o">/</span><span class="n">web</span><span class="o">-</span><span class="n">apps</span><span class="o">/</span><span class="n">apps</span><span class="o">/</span><span class="n">api</span><span class="o">/</span><span class="n">documents</span><span class="o">/</span><span class="n">api</span><span class="o">.</span><span class="n">js</span><span class="s1">&#39;</span>
<span class="n">ONLYOFFICE_FILE_EXTENSION</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;doc&#39;</span><span class="p">,</span> <span class="s1">&#39;docx&#39;</span><span class="p">,</span> <span class="s1">&#39;ppt&#39;</span><span class="p">,</span> <span class="s1">&#39;pptx&#39;</span><span class="p">,</span> <span class="s1">&#39;xls&#39;</span><span class="p">,</span> <span class="s1">&#39;xlsx&#39;</span><span class="p">,</span> <span class="s1">&#39;odt&#39;</span><span class="p">,</span> <span class="s1">&#39;fodt&#39;</span><span class="p">,</span> <span class="s1">&#39;odp&#39;</span><span class="p">,</span> <span class="s1">&#39;fodp&#39;</span><span class="p">,</span> <span class="s1">&#39;ods&#39;</span><span class="p">,</span> <span class="s1">&#39;fods&#39;</span><span class="p">)</span>
<span class="n">ONLYOFFICE_EDIT_FILE_EXTENSION</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;docx&#39;</span><span class="p">,</span> <span class="s1">&#39;pptx&#39;</span><span class="p">,</span> <span class="s1">&#39;xlsx&#39;</span><span class="p">)</span>
<span class="c1"># Enable force save to let user can save file when he/she press the save button on OnlyOffice file edit page.</span>
<span class="n">ONLYOFFICE_FORCE_SAVE</span> <span class="o">=</span> <span class="kc">True</span>
<span class="c1"># if JWT enabled</span>
<span class="n">ONLYOFFICE_JWT_SECRET</span> <span class="o">=</span> <span class="s1">&#39;your-secret-string&#39;</span>
</code></pre></div>
<p>Then restart the Seafile Server</p>
<div class="codehilite"><pre><span></span><code>./seafile.sh restart
./seahub.sh restart
# or
service seafile-server restart
service seahub-server restart
</code></pre></div>
<p>When you click on a document you should see the new preview page.</p>
<h3 id="complete-nginx-config-example">Complete Nginx config EXAMPLE<a class="headerlink" href="#complete-nginx-config-example" title="Permanent link">&para;</a></h3>
<p>Complete nginx config file (e.g. <code>/etc/nginx/conf.d/seafile.conf</code>) based on Seafile Server V6.1 including OnlyOffice DocumentServer via subfolder.</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># Required for OnlyOffice DocumentServer</span>
<span class="n">map</span><span class="w"> </span><span class="o">$</span><span class="n">http_x_forwarded_proto</span><span class="w"> </span><span class="o">$</span><span class="n">the_scheme</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">default</span><span class="w"> </span><span class="o">$</span><span class="n">http_x_forwarded_proto</span><span class="p">;</span>
<span class="w"> </span><span class="s2">&quot;&quot;</span><span class="w"> </span><span class="o">$</span><span class="n">scheme</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">map</span><span class="w"> </span><span class="o">$</span><span class="n">http_x_forwarded_host</span><span class="w"> </span><span class="o">$</span><span class="n">the_host</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">default</span><span class="w"> </span><span class="o">$</span><span class="n">http_x_forwarded_host</span><span class="p">;</span>
<span class="w"> </span><span class="s2">&quot;&quot;</span><span class="w"> </span><span class="o">$</span><span class="n">host</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">map</span><span class="w"> </span><span class="o">$</span><span class="n">http_upgrade</span><span class="w"> </span><span class="o">$</span><span class="n">proxy_connection</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">default</span><span class="w"> </span><span class="n">upgrade</span><span class="p">;</span>
<span class="w"> </span><span class="s2">&quot;&quot;</span><span class="w"> </span><span class="n">close</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">server</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">listen</span><span class="w"> </span><span class="mi">80</span><span class="p">;</span>
<span class="w"> </span><span class="n">server_name</span><span class="w"> </span><span class="n">seafile</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="p">;</span>
<span class="w"> </span><span class="n">rewrite</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="n">https</span><span class="p">:</span><span class="o">//$</span><span class="n">http_host</span><span class="o">$</span><span class="n">request_uri</span><span class="err">?</span><span class="w"> </span><span class="n">permanent</span><span class="p">;</span><span class="w"> </span><span class="c1"># force redirect http to https</span>
<span class="w"> </span><span class="n">server_tokens</span><span class="w"> </span><span class="n">off</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">server</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">listen</span><span class="w"> </span><span class="mi">443</span><span class="w"> </span><span class="n">http2</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl</span><span class="w"> </span><span class="n">on</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl_certificate</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">cacert</span><span class="o">.</span><span class="n">pem</span><span class="p">;</span><span class="w"> </span><span class="c1"># path to your cacert.pem</span>
<span class="w"> </span><span class="n">ssl_certificate_key</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">privkey</span><span class="o">.</span><span class="n">pem</span><span class="p">;</span><span class="w"> </span><span class="c1"># path to your privkey.pem</span>
<span class="w"> </span><span class="n">server_name</span><span class="w"> </span><span class="n">seafile</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">For</span><span class="w"> </span><span class="o">$</span><span class="n">remote_addr</span><span class="p">;</span>
<span class="w"> </span><span class="n">add_header</span><span class="w"> </span><span class="n">Strict</span><span class="o">-</span><span class="n">Transport</span><span class="o">-</span><span class="n">Security</span><span class="w"> </span><span class="s2">&quot;max-age=31536000; includeSubDomains&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">server_tokens</span><span class="w"> </span><span class="n">off</span><span class="p">;</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="c1"># seahub</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">proxy_pass</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8000</span><span class="o">/</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_read_timeout</span><span class="w"> </span><span class="mi">310</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Host</span><span class="w"> </span><span class="o">$</span><span class="n">http_host</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Forwarded</span><span class="w"> </span><span class="s2">&quot;for=$remote_addr;proto=$scheme&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">For</span><span class="w"> </span><span class="o">$</span><span class="n">proxy_add_x_forwarded_for</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">Proto</span><span class="w"> </span><span class="o">$</span><span class="n">scheme</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Real</span><span class="o">-</span><span class="n">IP</span><span class="w"> </span><span class="o">$</span><span class="n">remote_addr</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_http_version</span><span class="w"> </span><span class="mf">1.1</span><span class="p">;</span>
<span class="w"> </span><span class="n">client_max_body_size</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w"> </span><span class="n">access_log</span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="nb">log</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">seahub</span><span class="o">.</span><span class="n">access</span><span class="o">.</span><span class="n">log</span><span class="w"> </span><span class="n">seafileformat</span><span class="p">;</span>
<span class="w"> </span><span class="n">error_log</span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="nb">log</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">seahub</span><span class="o">.</span><span class="n">error</span><span class="o">.</span><span class="n">log</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="c1"># seafile</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="n">seafhttp</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">rewrite</span><span class="w"> </span><span class="o">^/</span><span class="n">seafhttp</span><span class="p">(</span><span class="o">.*</span><span class="p">)</span><span class="o">$</span><span class="w"> </span><span class="o">$</span><span class="mi">1</span><span class="w"> </span><span class="k">break</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_pass</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8082</span><span class="p">;</span>
<span class="w"> </span><span class="n">client_max_body_size</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_connect_timeout</span><span class="w"> </span><span class="mi">36000</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_read_timeout</span><span class="w"> </span><span class="mi">36000</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_send_timeout</span><span class="w"> </span><span class="mi">36000</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">send_timeout</span><span class="w"> </span><span class="mi">36000</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="n">media</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">user</span><span class="o">/</span><span class="n">haiwen</span><span class="o">/</span><span class="n">seafile</span><span class="o">-</span><span class="n">server</span><span class="o">-</span><span class="n">latest</span><span class="o">/</span><span class="n">seahub</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="c1"># seafdav (webdav)</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="n">seafdav</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">proxy_pass</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">8080</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Host</span><span class="w"> </span><span class="o">$</span><span class="n">host</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Real</span><span class="o">-</span><span class="n">IP</span><span class="w"> </span><span class="o">$</span><span class="n">remote_addr</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">For</span><span class="w"> </span><span class="o">$</span><span class="n">proxy_add_x_forwarded_for</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">Host</span><span class="w"> </span><span class="o">$</span><span class="n">server_name</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">Proto</span><span class="w"> </span><span class="o">$</span><span class="n">scheme</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_read_timeout</span><span class="w"> </span><span class="mi">1200</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">client_max_body_size</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w"> </span><span class="n">access_log</span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="nb">log</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">seafdav</span><span class="o">.</span><span class="n">access</span><span class="o">.</span><span class="n">log</span><span class="w"> </span><span class="n">seafileformat</span><span class="p">;</span>
<span class="w"> </span><span class="n">error_log</span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="nb">log</span><span class="o">/</span><span class="n">nginx</span><span class="o">/</span><span class="n">seafdav</span><span class="o">.</span><span class="n">error</span><span class="o">.</span><span class="n">log</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="c1"># onlyofficeds</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="n">onlyofficeds</span><span class="o">/</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1"># IMPORTANT ! - Trailing slash !</span>
<span class="w"> </span><span class="n">proxy_pass</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="mf">127.0</span><span class="o">.</span><span class="mf">0.1</span><span class="p">:</span><span class="mi">88</span><span class="o">/</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_http_version</span><span class="w"> </span><span class="mf">1.1</span><span class="p">;</span>
<span class="w"> </span><span class="n">client_max_body_size</span><span class="w"> </span><span class="mi">100</span><span class="n">M</span><span class="p">;</span><span class="w"> </span><span class="c1"># Limit Document size to 100MB</span>
<span class="w"> </span><span class="n">proxy_read_timeout</span><span class="w"> </span><span class="mi">3600</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_connect_timeout</span><span class="w"> </span><span class="mi">3600</span><span class="n">s</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Upgrade</span><span class="w"> </span><span class="o">$</span><span class="n">http_upgrade</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="o">$</span><span class="n">proxy_connection</span><span class="p">;</span>
<span class="w"> </span><span class="c1"># IMPORTANT ! - Subfolder and NO trailing slash !</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">Host</span><span class="w"> </span><span class="o">$</span><span class="n">the_host</span><span class="o">/</span><span class="n">onlyofficeds</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">Proto</span><span class="w"> </span><span class="o">$</span><span class="n">the_scheme</span><span class="p">;</span>
<span class="w"> </span><span class="n">proxy_set_header</span><span class="w"> </span><span class="n">X</span><span class="o">-</span><span class="n">Forwarded</span><span class="o">-</span><span class="n">For</span><span class="w"> </span><span class="o">$</span><span class="n">proxy_add_x_forwarded_for</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="complete-apache-config-example">Complete Apache config EXAMPLE<a class="headerlink" href="#complete-apache-config-example" title="Permanent link">&para;</a></h3>
<p><em>BETA - Requires further testing!</em></p>
<div class="codehilite"><pre><span></span><code>LoadModule<span class="w"> </span>authn_core_module<span class="w"> </span>modules/mod_authn_core.so
LoadModule<span class="w"> </span>authz_core_module<span class="w"> </span>modules/mod_authz_core.so
LoadModule<span class="w"> </span>unixd_module<span class="w"> </span>modules/mod_unixd.so
LoadModule<span class="w"> </span>proxy_module<span class="w"> </span>modules/mod_proxy.so
LoadModule<span class="w"> </span>proxy_http_module<span class="w"> </span>modules/mod_proxy_http.so
LoadModule<span class="w"> </span>proxy_wstunnel_module<span class="w"> </span>modules/mod_proxy_wstunnel.so
LoadModule<span class="w"> </span>headers_module<span class="w"> </span>modules/mod_headers.so
LoadModule<span class="w"> </span>setenvif_module<span class="w"> </span>modules/mod_setenvif.so
LoadModule<span class="w"> </span>ssl_module<span class="w"> </span>modules/mod_ssl.so
<span class="nt">&lt;IfModule</span> <span class="err">unixd_module</span><span class="nt">&gt;</span>
<span class="w"> </span>User<span class="w"> </span>daemon
<span class="w"> </span>Group<span class="w"> </span>daemon
<span class="nt">&lt;/IfModule&gt;</span>
<span class="nt">&lt;VirtualHost</span> <span class="err">*:80</span><span class="nt">&gt;</span>
<span class="w"> </span>ServerName<span class="w"> </span>seafile.example.com
<span class="w"> </span>ServerAlias<span class="w"> </span>example.com
<span class="w"> </span>Redirect<span class="w"> </span>permanent<span class="w"> </span>/<span class="w"> </span>https://seafile.example.com
<span class="nt">&lt;/VirtualHost&gt;</span>
<span class="nt">&lt;VirtualHost</span> <span class="err">*:443</span><span class="nt">&gt;</span>
<span class="w"> </span>ServerName<span class="w"> </span>seafile.example.com
<span class="w"> </span>DocumentRoot<span class="w"> </span>/var/www
<span class="w"> </span>SSLEngine<span class="w"> </span>On
<span class="w"> </span>SSLCertificateFile<span class="w"> </span>/etc/ssl/cacert.pem
<span class="w"> </span>SSLCertificateKeyFile<span class="w"> </span>/etc/ssl/privkey.pem
<span class="w"> </span>##<span class="w"> </span>Strong<span class="w"> </span>SSL<span class="w"> </span>Security
<span class="w"> </span>##<span class="w"> </span>https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
<span class="w"> </span>SSLCipherSuite<span class="w"> </span>EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
<span class="w"> </span>SSLProtocol<span class="w"> </span>All<span class="w"> </span>-SSLv2<span class="w"> </span>-SSLv3
<span class="w"> </span>SSLCompression<span class="w"> </span>off
<span class="w"> </span>SSLHonorCipherOrder<span class="w"> </span>on
<span class="w"> </span>Alias<span class="w"> </span>/media<span class="w"> </span>/home/user/haiwen/seafile-server-latest/seahub/media
<span class="w"> </span><span class="nt">&lt;Location</span> <span class="err">/media</span><span class="nt">&gt;</span>
<span class="w"> </span>Require<span class="w"> </span>all<span class="w"> </span>granted
<span class="w"> </span><span class="nt">&lt;/Location&gt;</span>
<span class="w"> </span>RewriteEngine<span class="w"> </span>On
<span class="w"> </span>#
<span class="w"> </span>#<span class="w"> </span>seafile<span class="w"> </span>fileserver
<span class="w"> </span>#
<span class="w"> </span>ProxyPass<span class="w"> </span>/seafhttp<span class="w"> </span>http://127.0.0.1:8082
<span class="w"> </span>ProxyPassReverse<span class="w"> </span>/seafhttp<span class="w"> </span>http://127.0.0.1:8082
<span class="w"> </span>RewriteRule<span class="w"> </span>^/seafhttp<span class="w"> </span>-<span class="w"> </span>[QSA,L]
<span class="w"> </span>#
<span class="w"> </span>#<span class="w"> </span>seahub
<span class="w"> </span>#
<span class="w"> </span>SetEnvIf<span class="w"> </span>Request_URI<span class="w"> </span>.<span class="w"> </span>proxy-fcgi-pathinfo=unescape
<span class="w"> </span>SetEnvIf<span class="w"> </span>Authorization<span class="w"> </span>&quot;(.*)&quot;<span class="w"> </span>HTTP_AUTHORIZATION=$1
<span class="w"> </span>ProxyPreserveHost<span class="w"> </span>On
<span class="w"> </span>ProxyPass<span class="w"> </span>/<span class="w"> </span>fcgi://127.0.0.1:8000/
<span class="w"> </span>#
<span class="w"> </span>#<span class="w"> </span>onlyofficeds
<span class="w"> </span>#
<span class="w"> </span>Define<span class="w"> </span>VPATH<span class="w"> </span>/onlyofficeds
<span class="w"> </span>Define<span class="w"> </span>DS_ADDRESS<span class="w"> </span>{your<span class="w"> </span>Seafile<span class="w"> </span>server&#39;s<span class="w"> </span>domain<span class="w"> </span>or<span class="w"> </span>IP}:88
<span class="w"> </span><span class="nt">&lt;Location</span> <span class="err">${VPATH}</span><span class="nt">&gt;</span>
<span class="w"> </span>Require<span class="w"> </span>all<span class="w"> </span>granted
<span class="w"> </span>SetEnvIf<span class="w"> </span>Host<span class="w"> </span>&quot;^(.*)$&quot;<span class="w"> </span>THE_HOST=$1
<span class="w"> </span>RequestHeader<span class="w"> </span>setifempty<span class="w"> </span>X-Forwarded-Proto<span class="w"> </span>http
<span class="w"> </span>RequestHeader<span class="w"> </span>setifempty<span class="w"> </span>X-Forwarded-Host<span class="w"> </span>%{THE_HOST}e
<span class="w"> </span>RequestHeader<span class="w"> </span>edit<span class="w"> </span>X-Forwarded-Host<span class="w"> </span>(.*)<span class="w"> </span>$1<span class="cp">${</span><span class="n">VPATH</span><span class="cp">}</span>
<span class="w"> </span>ProxyAddHeaders<span class="w"> </span>Off
<span class="w"> </span>ProxyPass<span class="w"> </span>&quot;http://<span class="cp">${</span><span class="n">DS_ADDRESS</span><span class="cp">}</span>/&quot;
<span class="w"> </span>ProxyPassReverse<span class="w"> </span>&quot;http://<span class="cp">${</span><span class="n">DS_ADDRESS</span><span class="cp">}</span>/&quot;
<span class="w"> </span><span class="nt">&lt;/Location&gt;</span>
<span class="nt">&lt;/VirtualHost&gt;</span>
</code></pre></div>
<h2 id="faq">FAQ<a class="headerlink" href="#faq" title="Permanent link">&para;</a></h2>
<h3 id="encountering-download-failed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-74-or-later">Encountering <code>Download failed.</code> problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.4 or later.<a class="headerlink" href="#encountering-download-failed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-74-or-later" title="Permanent link">&para;</a></h3>
<p>Firstly, run <code>docker logs -f your-onlyoffice-container-id</code>, then open an office file. After the "Download failed." error appears on the page, observe the logs for the following error:</p>
<div class="codehilite"><pre><span></span><code><span class="o">==&gt;</span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="nb">log</span><span class="o">/</span><span class="n">onlyoffice</span><span class="o">/</span><span class="n">documentserver</span><span class="o">/</span><span class="n">converter</span><span class="o">/</span><span class="n">out</span><span class="o">.</span><span class="n">log</span><span class="w"> </span><span class="o">&lt;==</span>
<span class="o">...</span>
<span class="n">Error</span><span class="p">:</span><span class="w"> </span><span class="n">DNS</span><span class="w"> </span><span class="n">lookup</span><span class="w"> </span><span class="p">{</span><span class="n">local</span><span class="w"> </span><span class="n">IP</span><span class="p">}</span><span class="w"> </span><span class="p">(</span><span class="n">family</span><span class="p">:</span><span class="n">undefined</span><span class="p">,</span><span class="w"> </span><span class="n">host</span><span class="p">:</span><span class="n">undefined</span><span class="p">)</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">allowed</span><span class="o">.</span><span class="w"> </span><span class="n">Because</span><span class="p">,</span><span class="w"> </span><span class="n">It</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">private</span><span class="w"> </span><span class="n">IP</span><span class="w"> </span><span class="n">address</span><span class="o">.</span>
<span class="o">...</span>
</code></pre></div>
<p>If it shows this error message and you haven't enabled JWT while using a local network, then it's likely due to an error triggered proactively by OnlyOffice server for enhanced security. (https://github.com/ONLYOFFICE/DocumentServer/issues/2268#issuecomment-1600787905)</p>
<p>So, as mentioned in the post, we highly recommend you enabling JWT in your integrations to fix this problem.</p>
<h3 id="encountering-the-document-security-token-is-not-correctly-formed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-72-or-later">Encountering <code>The document security token is not correctly formed.</code> problem on webpage after upgrade OnlyOffice Docker-DocumentServer to 7.2 or later.<a class="headerlink" href="#encountering-the-document-security-token-is-not-correctly-formed-problem-on-webpage-after-upgrade-onlyoffice-docker-documentserver-to-72-or-later" title="Permanent link">&para;</a></h3>
<p>Starting from OnlyOffice Docker-DocumentServer version 7.2, JWT is enabled by default on OnlyOffice server.</p>
<p>So, for security reason, please <strong>Configure OnlyOffice to use JWT Secret</strong>.</p>
</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>