如何使用 Docker 部署 Seafile 服务器来托管您自己的文件同步和共享解决方案

首先,什么是 Seafile?

海文件 是一个自托管文件同步程序,可与服务器-客户端模型一起使用,因为您有多个设备(如笔记本电脑和手机)连接到中央服务器。

与 Nextcloud 或 ownCloud 等一些更流行的替代方案不同,Seafile 试图遵循“只做一件事,但要做好”的理念。 同样,Seafile 没有内置额外的好东西,如联系人或日历集成。

相反,Seafile 只专注于文件同步、共享和围绕它的事情,仅此而已。 结果,它最终做得非常好。

使用 Docker 和 NGINX 部署 Seafile 服务器

进阶教程

大多数关于 It’s FOSS 的教程都针对初学者。 这个不是。 它适用于经常修改 DIY 项目并喜欢自托管的高级用户。
本教程假定您熟悉使用命令行,并且您至少对我们将使用的程序有一定的了解。

虽然整个过程可以在完全不使用 NGINX 的情况下完成,但使用 NGINX 将使设置更容易,并且在未来更容易自托管更多服务。

如果你想使用一个完整的 Docker 设置,你可以设置 Docker 中的 NGINX 同样,但它只会使事情变得更复杂,并不会增加太多好处,同样不会在本教程中介绍。

安装和设置 NGINX

我将在本教程中使用 Ubuntu,因此将使用 apt 来安装软件包。 如果你使用 Fedora 或其他非 Debian 发行版,请使用您的发行版的包管理器。

NGINX,以及作为网络服务器,就是所谓的代理。 它将作为 Seafile 服务器和互联网之间的连接,同时也使一些任务更容易处理。

要安装 NGINX,请使用以下命令:

sudo apt install nginx

如果您想使用 HTTPS(浏览器中的那个小挂锁),您还需要安装 证书机器人

sudo apt install certbot python3-certbot-nginx

接下来,您需要配置 NGINX 以连接到我们稍后设置的 Seafile 实例。

首先,运行以下命令:

sudo nano /etc/nginx/sites-available/seafile.conf

Enter 将以下文本写入文件:

server {   server_name localhost;   location / {     proxy_pass https://localhost:8080;     proxy_set_header Host $host;     proxy_set_header X-Real-IP $remote_addr;   } }

重要的: 代替 本地主机服务器名称 与您将从中访问服务器的地址一致(即 seafile.example.com 或者 192.168.0.0)。 不知道该放什么?

  • 如果您只是为了测试而进行测试,请使用 localhost。 此设置将 只允许您从您的计算机访问服务器,就是这样。
  • 如果您想通过本地 WiFi 连接(与您位于同一 WiFi 网络上的任何设备)使用 Seafile,您应该输入您计算机的 IP 地址。 您可能还想考虑设置静态 IP 地址,尽管这不是必需的。
  • 如果您有一个已知指向系统的公共 IP 地址,请使用该地址。
  • 如果您有域名(即 例子.com, 例子.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

如果您设置了 Certbot,您还需要运行以下命令来设置 HTTPS:

sudo certbot

如果要求将 HTTP 流量重定向到 HTTPS,请选择 2.

现在是确保我们迄今为止设置的一切正常工作的好时机。 如果您访问您的网站,您应该会看到一个屏幕,上面写着 502 Bad Gateway.

安装 Docker 和 Docker Compose

现在进入有趣的东西!

首先,你需要有 码头工人Docker 撰写 安装。 Docker Compose 需要使用 docker-compose.yml 文件,这将使管理各种 Docker 集装箱 Seafile 需要更容易。

可以使用以下命令安装 Docker 和 Docker Compose:

sudo apt install docker.io docker-compose

要检查 Docker 是否已安装并正在运行,请运行以下命令:

sudo docker run --rm hello-world

如果成功完成,您应该在终端中看到类似的内容:

如果您想避免添加 sudo 到开始 docker 命令,您可以运行以下命令将自己添加到 docker 团体:

sudo groupadd docker sudo usermod -aG docker $USER

本教程的其余部分假设您运行了上述两个命令。 如果没有,请添加 sudo 以开头的所有命令 docker 或者 docker-compose.

安装 Seafile 服务器

这部分比之前的部分要容易得多。 您需要做的就是将一些文本放入文件并运行一些命令。

打开一个终端。 然后创建一个您希望存储 Seafile 服务器内容的目录并进入该目录:

mkdir ~/seafile-server && cd ~/seafile-server

转到您创建的目录并运行以下命令:

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       - [email protected]       - 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: 换一个更强的密码,这个不需要记住,所以不要随便选。 如果您需要帮助制作密码,请使用密码生成器。 我建议长度为 20 个字符并避免任何特殊字符(所有 [email protected]#$%^&* 符号)。
  • DB_ROOT_PASSWD:更改为您设置的值 MYSQL_ROOT_PASSWORD.
  • SEAFILE_ADMIN_EMAIL:设置电子邮件地址 admin 帐户。
  • SEAFILE_ADMIN_PASSWORD: 设置密码 admin 帐户。 避免使这与 MYSQL_ROOT_PASSWORD 或者 DB_ROOT_PASSWD.
  • SEAFILE_SERVER_HOSTNAME: 设置为你在 NGINX 配置中设置的地址。

完成后,您可以提出整件事 docker-compose

docker-compose up -d

这可能需要一两分钟,具体取决于您的互联网连接,因为它必须拉下 Seafile 需要运行的几个容器。

完成后,再给它几分钟来完成。 您还可以通过运行以下命令来检查它的状态:

docker logs seafile

完成后,您将看到以下输出:

接下来,只需输入您设置的地址 SEAFILE_SERVER_HOSTNAME 进入您的浏览器,您应该在登录屏幕上。

登录

你去吧! 现在一切功能齐全,可以与客户一起使用。

安装 Seafile 客户端

移动版 Seafile 可在 谷歌播放, F-Droid,并且在 iOS应用商店. Seafile 也有适用于 Linux、Windows 和 Mac 的桌面客户端,可用 这里.

Seafile 在 Ubuntu 系统上很容易通过 seafile-gui 包裹:

sudo apt install seafile-gui

Seafile 也在 AUR 中供 Arch 用户通过 seafile-client 包裹。

关闭

随意探索客户和他们所提供的一切。 我将在以后的文章中介绍 Seafile 客户端的所有功能(敬请期待?)。

如果出现问题,或者您只是有一般问题,请随时将其留在下面的评论中——我会尽量回复!