How to Install Seafile Pro and Use Caddy Proxy Fronted on Ubuntu 18.04

读完这篇文章，你应该能完成安装以下软件：

python & python-pip

caddy

mysql-server

jre

seafile-pro ```

注意：如果你想流程的跑 Seafile，机器配置建议：

Copy
1. 内存 >= 2GB
2. CPU >= 2 Core

环境准备

以下只针对 ubuntu 18.04 系统，在下一个 LTS 版本出来之前，应该都不会更新。

以下命令没有特殊说明，请不要直接使用 root 用户执行。

Copy
# 系统更新
sudo apt update
sudo apt upgrade

# Python 2.7 及其依赖安装
apt-get install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache
pip install pillow moviepy

# 注意，在执行 pip install pillow moviepy 的时候，我这边报了一个无法安装的错误，是因为 setuptools 版本过低导致的，如果你也有类似的提示，可以尝试先执行以下代码：
pip install —upgrade setuptools

# install
sudo apt install default-jre

# mysql install
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

基本环境依赖到此就完成了。

注：数据库安装详细内容可以点击这里前往： 「如何在 Ubuntu 18.04 安装 MySQL」

Seafile 安装

下载 Seafile 安装文件

一、下载地址：社区版
二、下载地址：专业版

需要注册账号，专业版没有 license 文件的情况下，可以支持 3 个账号的长期试用。

差别如图，感兴趣的可以看一下。

来源：Seafile 功能对照说明

部署和目录设计

注：这里下载的文件名是 seafile-pro-server_7.0.9_x86-64_Ubuntu.tar.gz，实际操作中因为版本和系统的不同有所差异，请注意替换。

因为 systemd 服务有 ProtectHome 的配置，所以为了遵循相关约定，把 seafile 的目录放在外部，如 /data/fun2ex

Copy
sudo mkdir -p /data/fun2ex
cd /data/fun2ex
# 移动安装文件到安装目录下
mv ~/download/seafile-pro-server_* /data/fun2ex
# 将 seafile-pro-server_* 移动到 fun2ex 目录下后
tar -xzfv seafile-pro-server_*
mkdir installed
mv seafile-pro-server_* installed

现在，你的目录结构大致如下：

Copy
# tree /data/fun2ex -L 2
/data/fun2ex
├── installed
│ └── seafile-pro-server_7.0.9_x86-64_Ubuntu.tar.gz
└── seafile-pro-server-7.0.9
├── reset-admin.sh
├── runtime
├── seafile
├── seafile.sh
├── seahub
├── seahub.sh
├── setup-seafile.sh
└── upgrade

以下为官方说明：

这样设计目录的好处在于
1、和 seafile 相关的配置文件都可以放在 /data/fun2ex 目录下，便于集中管理.
2、后续升级时，你只需要解压最新的安装包到 /data/fun2ex 目录下.

seafile 服务安装

Copy
cd seafile-pro-server-*
./setup-seafile-mysql.sh #运行安装脚本并回答预设问题

安装脚本会检测是否有遗漏的软件包，只需要根据提示一步一步操作过去就 OK 了。

安装完成之后目录看起来如下：

Copy
/data/fun2ex
├── ccnet
│   ├── ccnet.sock
│   ├── misc
│   ├── mykey.peer
│   └── seafile.ini
├── conf
│   ├── ccnet.conf
│   ├── gunicorn.conf
│   ├── seafdav.conf
│   ├── ...
├── installed
│   └── seafile-pro-server_7.0.9_x86-64_Ubuntu.tar.gz
├── pro-data
├── seafile-data
├── seafile-pro-server-7.0.9
│   ├── ...
│   ├── seafile-background-tasks.sh
│   ├── seafile.sh
│   ├── seaf-import.sh
│   ├── seafobj_migrate.py
│   ├── seahub
│   ├── seahub-extra
│   ├── seahub.sh
│   ├── setup-seafile-mysql.py
│   ├── setup-seafile-mysql.sh
│   ├── setup-seafile.sh
│   ├── sql
│   └── upgrade
├── seafile-server-latest -> seafile-pro-server-7.0.9
└── seahub-data

seafile 服务管理

Copy
cd /data/fun2ex/seafile-server-lates
./seafile.sh { start | stop | restart } # Seafile 服务管理
./seahub.sh { start | stop | restart } # 管理 Seahub 网站 （默认运行在8000端口上）

注意: 你第一次启动 seahub 时，seahub.sh 脚本会提示你创建一个 seafile 管理员帐号。

seafile 配置完毕。

Caddy 服务器配置

安装请直接查看这篇文章 Caddy 安装配置指南 (LCMP)

Caddyfile 配置如下：

Copy
example.com {
proxy / localhost:8000 {
transparent
}
gzip
}

example.com/seafhttp {

proxy / localhost:8082 {
without /seafhttp
transparent
}
gzip
}

example.com/media {
root /data/fun2ex/seafile-server-lates/seahub/media
gzip
}

然后重新启动 caddy 服务就可以了。

Copy
sudo systemctl restart caddy

如果这里使用的是 /root/fun2ex/seafile-server-lates/seahub/media 的话，caddy 重启会报没有权限的错误。

如果使用的是 /home/someuser/fun2ex/seafile-server-lates/seahub/media 的目录，caddy 重启则会报告 ProtectHome 的错误。

解决方法有两个，第一个是修改 caddy.service 的配置。
第二种是把 sefile data 目录迁移出去，强烈推荐使用这个方法。

—EOF—