首先,什么是Seafile?Seafile是一个自托管的文件同步程序,使用客户端/服务器模型,即你有多个设备,比如笔记本电脑和手机,可以连接到一个中央服务器。与Nextcloud或ownCloud等更流行的替代方案不同,Seafile试图遵循“只做一件事,但要做好”的理念。此外,Seafile没有内置的附加功能,如联系人或日历聚合。相反,Seafile只专注于文件同步、共享和与之相关的东西,仅此而已。但正因为如此,它最终做得非常好。使用Docker和NGINX高级教程部署Seafile服务器我们的许多教程都是针对初学者的。另一方面,这个是为经常修改DIY项目并喜欢自托管的高级用户设计的。本教程假定您熟悉使用命令行,并且至少对我们将要使用的程序有一定的了解。虽然整个过程不使用NGINX也可以完成,但是使用NGINX更容易配置,将来自托管更多服务也更容易。如果您想使用完整的Docker环境,您还可以在Docker中设置NGINX,但这会使事情变得更加复杂并且没有提供太多好处。同样,本教程不会涵盖这些内容。安装设置 NGINX在本教程中,我将使用Ubuntu,因此我将使用apt来安装包。如果您使用Fedora或其他一些非Debian发行版,请使用您的发行版的包管理器。NGINX既是网络浏览器又是代理服务器。它将充当Seafile服务器和互联网之间的网络连接,同时也使一些任务更容易处理。要安装NGINX,请使用以下命令:sudoaptinstallnginx如果你想使用HTTPS(又名浏览器中的小挂锁),你需要安装Certbot:sudoaptinstallcertbotpython3-certbot-nginx接下来,你需要NGINX被设置为连接到我们稍后将设置的Seafile实例。首先,运行以下命令:sudonano/etc/nginx/sites-available/seafile.conf在文件中键入以下文本:server{server_namelocalhost;位置/{proxy_passhttp://localhost:8080;proxy_set_header主机$host;proxy_set_headerX-Real-IP$remote_addr;}}重要提示:将server_name行中的localhost替换为您的服务器地址(例如seafile.example.com或192.168.0.0)。不确定要输入什么?如果您只是为了测试,请使用localhost。此设置将只允许您从您的计算机访问服务器,仅此而已。如果您想通过本地Wi-Fi连接(与您在同一个Wi-Fi网络上)使用Seafile,您应该输入您的计算机IP地址。您也可以考虑设置静态IP地址,但这不是必需的。如果您知道指向系统的公共IP地址,请使用该地址。如果您有域名(例如example.com、example.org)和公共IP地址,请更改您的DNS设置以将域名指向您系统的IP地址。这还需要将公共IP指向您的系统。现在您需要将配置文件复制到NGINX搜索目录,然后重新启动NGINX:sudoln-s/etc/nginx/sites-available/seafile.conf/etc/nginx/sites-enabled/seafile.confsudosystemctlrestartnginx如果要安装Cerbot,还需要通过运行以下命令设置HTTPS:sudocertbot如果要将HTTP流量重定向到HTTPS,请选择2。现在是时候确认我们到目前为止设置的一切是否正常工作了。如果您访问您的网站,您应该会看到一个显示502BadGateway的屏幕。安装Docker和DockerCompose现在到了有趣的部分!首先,您需要安装Docker和DockerCompose。DockerCompose利用docker-compose.yml文件,这将使管理多个Docker容器的Seafile需求变得更加容易。可以使用以下命令安装Docker和DockerCompose:sudoaptinstalldocker.iodocker-compose要检查Docker是否已安装并正在运行,请运行以下命令:sudodockerrun--rmhello-world如果安装成功,你应该在终端可以看到这些行:如果你想避免在docker命令的开头添加sudo,你可以运行以下命令将自己添加到docker组:sudogroupadddockersudousermod-aGdocker$USER本教程的其余部分假设您已经运行了上述两个命令。如果您还没有将sudo添加到所有docker或docker-compose命令。安装Seafile服务器的部分比之前的要容易得多。您需要做的就是在文件中输入一些文本,然后运行一些命令。打开一个终端,然后创建一个Seafile服务器存储内容的目录,并进入该目录:mkdir~/seafile-server&&cd~/seafile-server进入您创建的目录并运行以下命令:nanodocker-compose。yml接下来,在弹出窗口中输入以下文本:version:'2.0'services:db:image:mariadbcontainer_name:seafile-mysqlenvironment:-MYSQL_ROOT_PASSWORD=password-MYSQL_LOG_CONSOLE=truevolumes:-./data/mariadb:/var/lib/mysql网络:-seafile-netmemcached:图像:memcached容器名称:seafile-memcached入口点:memcached-m256网络:-seafile-netseafile:图像:seafileltd/seafile-mc容器名称:seafile端口:-"8080:80"卷:-./data/app:/shared环境:-DB_HOST=db-DB_ROOT_PASSWD=密码-TIME_ZONE=Etc/UTC-SEAFILE_ADMIN_EMAIL=me@example.com-SEAFILE_ADMIN_PASSWORD=密码-SEAFILE_SERVER_LETSENCRYEA=FILEAPT=fdocs.seafile.comdepends_on:-db-memcachednetworks:-seafile-networks:seafile-net:保存文件之前需要更改一些参数:MYSQL_ROOT_PASSWORD:替换一个强密码,你不必记住它,所以不要试图选择一个简单的如果您需要帮助生成密码,请使用密码生成器。我建议使用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-composeup-d可能需要一两分钟,具体取决于你的网速,因为你需要拉下几个需要运行容器的Seafiles。完成后,需要几分钟才能完成。也可以通过以下命令查看运行状态:dockerlogsseafile完成后,你会看到如下输出:接下来,你只需要在浏览器中输入你设置的SEAFILE_SERVER_HOSTNAME地址,你应该会看到一个登录屏幕的页面。就这样!现在一切都功能齐全,可供客户使用。安装Seafile客户端Seafile移动客户端可在GooglePlay、F-Droid和AppleStore中使用。Seafile还提供Linux、Windows和Mac桌面客户端,可在此处找到。通过seafile-gui包在Ubuntu系统上很容易获得Seafile:通过seafile-client包sudoaptinstallseafile-guiSeafile也包含在Arch用户的AUR包管理器中。结论随意探索客户端及其所提供的一切。我将在以后的文章中详细介绍Seafile客户端的所有功能。(敬请关注
