TranslateProject/published/202204/20210419 How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution.md
2022-05-01 09:19:38 +08:00

280 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

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

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.

[#]: subject: (How to Deploy Seafile Server with Docker to Host Your Own File Synchronization and Sharing Solution)
[#]: via: (https://itsfoss.com/deploy-seafile-server-docker/)
[#]: author: (Hunter Wittenborn https://itsfoss.com/author/hunter/)
[#]: collector: (lujun9972)
[#]: translator: (hwlife)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-14468-1.html)
怎样用 Docker 部署 Seafile 服务器来托管你自己的文件同步和共享解决方案
======
![](https://img.linux.net.cn/data/attachment/album/202204/13/141808f7fo7444ozv75z5s.jpg)
首先,什么是 Seafile
[Seafile][1] 是一个自托管文件同步程序,采用客户端/服务器模式,即你有笔记本、手机等多个设备,能够连接到一个中心服务器。
不像类似 [Nextcloud 或 ownCloud][2] 这些更流行的替代品一样Seafile 试图遵循 “只做一件事,但是要做好” 的理念。同样Seafile 没有内置额外的类似联系人或者日历聚合的功能。
相反Seafile 只专注于文件同步、共享及与之相关的事情,仅此而已。但正因为如此,它最终做的非常好。
### 使用 Docker 和 NGINX 部署 Seafile 服务器
> **高级教程**
>
> 我们的许多教程都是针对初学者的。这篇则不然,它是为那些经常鼓捣 DIY 项目和喜欢自托管的高级用户设计的。这个教程假定你可以熟练的使用命令行,而且你至少对我们将要使用的程序有一定的了解。
虽然整个过程完全可以不使用 NGINX ,但是使用 NGINX 更加容易配置,而且在将来更加容易的自托管更多的服务。
如果你想完全使用 Docker 环境,你也可以 [在 Docker 内部设置 NGINX][3] ,但是它这会使事情变得更加复杂,并且不能够带来太多好处。同样,在本教程里也不会涉及这些。
#### 安装设置 NGINX
在这个教程中,我会使用 Ubuntu因此会使用 `apt` 来安装软件包。如果你使用 Fedora 或者一些其他非 Debian 发行版,请使用你的发行版的 [包管理器][4]。
[NGINX][5] 既是一个网页浏览器,又是一个代理服务器。它将起到 Seafile 服务器和互联网之间网络连接的作用,同时也使一些任务更容易处理。
要安装 NGINX ,使用以下命令:
```
sudo apt install nginx
```
如果你想使用 HTTPS也就是浏览器中的小挂锁你需要安装 [Certbot][6]
```
sudo apt install certbot python3-certbot-nginx
```
下一步,你需要设置 NGINX 来连接我们之后将要设置的 Seafile 实例。
首先,运行以下命令:
```
sudo nano /etc/nginx/sites-available/seafile.conf
```
键入下方的文本到文件中:
```
server {
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
**重要**: 将 `server_name` 一行的 `localhost` 替换为你要访问你的服务器的地址(比如 `seafile.example.com` 或者 `192.168.0.0`)。不确定要输入什么吗?
* 如果你只是为了测试,使用 `localhost` 。这个设置将 **只允许你从你的电脑访问服务器** ,仅此而已。
* 如果你想通过你的本地 Wi-Fi 连接使用 Seafile与你在同一 Wi-Fi 网络上),你应该键入 [你的计算机 IP 地址][7]。你也可以考虑 [设置一个静态 IP 地址][8],尽管这不是必须的。
* 如果你有一个公网 IP 地址,你知道它指向你的系统,就使用它。
* 如果你有一个域名(比如 `example.com`、`example.org`)和公网 IP 地址,更改你的 DNS 设置,将域名指向你的系统的 IP 地址。这也需要将公网 IP 指向你的系统。
现在你需要复制配置文件到 NGINX 的查找目录中,然后重启 NGINX
```
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
sudo systemctl restart nginx
```
如果你要安装 Cerbot你也需要运行以下命令来设置 HTTPS
```
sudo certbot
```
如果要重定向 HTTP 流量 到 HTTPS ,选择 `2`
现在可以来确认我们目前设置的一切都是否正常工作。如果你访问你的站点,你应该看到一个屏幕上写着 `502 Bad Gateway` 字样。
![][9]
#### 安装 Docker 和 Docker Compose
现在要进入有趣的部分了!
首先,你需要安装 [Docker][10] 和 [Docker Compose][11] 。Docker Compose 需要利用 `docker-compose.yml` 文件,这将使管理多个 Docker [容器][12] 的 Seafile 需求变得更加容易。
Docker 和 Docker Compose 可以用以下的命令来安装:
```
sudo apt install docker.io docker-compose
```
检查 Docker 是否安装并运行,运行以下命令:
```
sudo docker run --rm hello-world
```
如果你完全安装成功,你应该在终端能看到这几行文字:
![][13]
如果你想避免在 `docker` 命令的开始添加 `sudo` 的话,你可以运行以下的命令将你自己添加到 `docker` 组:
```
sudo groupadd docker
sudo usermod -aG docker $USER
```
这个教程的其余部分假定你已经运行了以上两个命令。如果你没有运行,在所有 `docker``docker-compose` 的命令都添加 `sudo`
#### 安装 Seafile 服务器
这部分比之前部分明显容易的多。你所需要做的是输入一些文本到文件,然后运行一些命令。
打开一个终端,然后创建一个 Seafile 服务器用来储存内容的目录,并进入目录中:
```
mkdir ~/seafile-server && cd ~/seafile-server
```
![][14]
转到你创建的目录然后运行以下命令:
```
nano docker-compose.yml
```
下一步,在弹出的窗口中键入以下文本内容:
```
version: '2.0'
services:
db:
image: mariadb
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_LOG_CONSOLE=true
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- seafile-net
memcached:
image: memcached
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc
container_name: seafile
ports:
- "8080:80"
volumes:
- ./data/app:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=password
- TIME_ZONE=Etc/UTC
- SEAFILE_ADMIN_EMAIL=me@example.com
- SEAFILE_ADMIN_PASSWORD=password
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
```
在保存文件之前,一些参数需要更改:
* `MYSQL_ROOT_PASSWORD`:更换强壮的密码,你不必记住它,所以不要尝试挑选简单的密码。如果你需要帮助生成一个,请使用 [密码生成器][15] 。我建议使用 20 位字符长度并且避免使用任何的特殊字符(`!@#$%^&*` 等符号)。
* `DB_ROOT_PASSWD`:更改你为 `MYSQL_ROOT_PASSWORD` 设置的值 。
* `SEAFILE_ADMIN_EMAIL`:设置管理员帐户的电子邮件地址。
* `SEAFILE_ADMIN_PASSWORD`:设置管理员帐户密码。避免与`MYSQL_ROOT_PASSWORD` 或者 `DB_ROOT_PASSWD` 密码相同。
* `SEAFILE_SERVER_HOSTNAME`:在 NGINX 配置中设置 Seafile 的服务器主机名。
完成之后,你可以运行 `docker-compose` 整个运行起来:
```
docker-compose up -d
```
可能需要花一到两分钟,取决于你的网速,因为需要拉下几个 Seafile 需要运行的几个容器。
完成以后,还需要几分钟来完成。你也可以通过以下命令来检查运行状态:
```
docker logs seafile
```
当完成了,你将会看到如下输出:
![][17]
下一步,你只需要在你的浏览器里键入你设置的 `SEAFILE_SERVER_HOSTNAME` 的地址,然后你应该看到登录屏幕的页面。
![][18]
就这样!现在一切功能齐全,准备用客户端来使用。
#### 安装 Seafile 客户端
Seafile 移动客户端在 [Google Play][19]、[F-Droid][20] 和 [苹果商店][21] 都是可用的。Seafile 也有 Linux、Windows 和 Mac 桌面客户端可用,可在 [此处][22] 找到。
通过 `seafile-gui` 软件包,可以在 Ubuntu 系统轻松获得 Seafile
```
sudo apt install seafile-gui
```
通过 `seafile-client` 软件包 Seafile 也包含在 Arch 用户的 AUR 包管理器中。
### 结语
请尽情探索客户端及其所能提供的一切。我将在未来的一篇文章中详细阐述 Seafile 客户端的所有功能。(敬请期待 😃)
总的来说,如果有什么错误,或者你有什么问题,请在下方评论 我会尽我所能回应。
--------------------------------------------------------------------------------
via: https://itsfoss.com/deploy-seafile-server-docker/
作者:[Hunter Wittenborn][a]
选题:[lujun9972][b]
译者:[hwlife](https://github.com/hwlife)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/hunter/
[b]: https://github.com/lujun9972
[1]: https://www.seafile.com/en/home/
[2]: https://itsfoss.com/nextcloud-vs-owncloud/
[3]: https://linuxhandbook.com/nginx-reverse-proxy-docker/
[4]: https://itsfoss.com/package-manager/
[5]: https://www.nginx.com/
[6]: https://certbot.eff.org/
[7]: https://itsfoss.com/check-ip-address-ubuntu/
[8]: https://itsfoss.com/static-ip-ubuntu/
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/nginx_bad_gateway.png?resize=489%2C167&ssl=1
[10]: https://www.docker.com/
[11]: https://docs.docker.com/compose/
[12]: https://www.docker.com/resources/what-container
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-docker-helloworld.png?resize=752%2C416&ssl=1
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-dir.png?resize=731%2C174&ssl=1
[15]: https://itsfoss.com/password-generators-linux/
[16]: https://itsfoss.com/cdn-cgi/l/email-protection
[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-running.png?resize=752%2C484&ssl=1
[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/04/seafile-login.jpg?resize=800%2C341&ssl=1
[19]: https://play.google.com/store/apps/details?id=com.seafile.seadroid2
[20]: https://f-droid.org/repository/browse/?fdid=com.seafile.seadroid2
[21]: https://itunes.apple.com/cn/app/seafile-pro/id639202512?l=en&mt=8
[22]: https://www.seafile.com/en/download/