标签 文件共享 下的文章

首先,什么是 Seafile ?

Seafile 是一个自托管文件同步程序,采用客户端/服务器模式,即你有笔记本、手机等多个设备,能够连接到一个中心服务器。

不像类似 Nextcloud 或 ownCloud 这些更流行的替代品一样,Seafile 试图遵循 “只做一件事,但是要做好” 的理念。同样,Seafile 没有内置额外的类似联系人或者日历聚合的功能。

相反,Seafile 只专注于文件同步、共享及与之相关的事情,仅此而已。但正因为如此,它最终做的非常好。

使用 Docker 和 NGINX 部署 Seafile 服务器

高级教程

我们的许多教程都是针对初学者的。这篇则不然,它是为那些经常鼓捣 DIY 项目和喜欢自托管的高级用户设计的。这个教程假定你可以熟练的使用命令行,而且你至少对我们将要使用的程序有一定的了解。

虽然整个过程完全可以不使用 NGINX ,但是使用 NGINX 更加容易配置,而且在将来更加容易的自托管更多的服务。

如果你想完全使用 Docker 环境,你也可以 在 Docker 内部设置 NGINX ,但是它这会使事情变得更加复杂,并且不能够带来太多好处。同样,在本教程里也不会涉及这些。

安装设置 NGINX

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

NGINX 既是一个网页浏览器,又是一个代理服务器。它将起到 Seafile 服务器和互联网之间网络连接的作用,同时也使一些任务更容易处理。

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

sudo apt install nginx

如果你想使用 HTTPS(也就是浏览器中的小挂锁),你需要安装 Certbot

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 地址。你也可以考虑 设置一个静态 IP 地址,尽管这不是必须的。
  • 如果你有一个公网 IP 地址,你知道它指向你的系统,就使用它。
  • 如果你有一个域名(比如 example.comexample.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 字样。

安装 Docker 和 Docker Compose

现在要进入有趣的部分了!

首先,你需要安装 DockerDocker Compose 。Docker Compose 需要利用 docker-compose.yml 文件,这将使管理多个 Docker 容器 的 Seafile 需求变得更加容易。

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

sudo apt install docker.io docker-compose

检查 Docker 是否安装并运行,运行以下命令:

sudo docker run --rm hello-world

如果你完全安装成功,你应该在终端能看到这几行文字:

如果你想避免在 docker 命令的开始添加 sudo 的话,你可以运行以下的命令将你自己添加到 docker 组:

sudo groupadd docker
sudo usermod -aG docker $USER

这个教程的其余部分假定你已经运行了以上两个命令。如果你没有运行,在所有 dockerdocker-compose 的命令都添加 sudo

安装 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 位字符长度并且避免使用任何的特殊字符(!@#$%^&* 等符号)。
  • 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

当完成了,你将会看到如下输出:

下一步,你只需要在你的浏览器里键入你设置的 SEAFILE_SERVER_HOSTNAME 的地址,然后你应该看到登录屏幕的页面。

就这样!现在一切功能齐全,准备用客户端来使用。

安装 Seafile 客户端

Seafile 移动客户端在 Google PlayF-Droid苹果商店 都是可用的。Seafile 也有 Linux、Windows 和 Mac 桌面客户端可用,可在 此处 找到。

通过 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 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不久之前,我们编写了一个指南,内容是一个文件共享实用程序,名为 transfer.sh,它是一个免费的 Web 服务,允许你在 Internet 上轻松快速地共享文件,还有 PSiTransfer,一个简单的开源自托管文件共享解决方案。今天,我们将看到另一个名为 “iWant” 的文件共享实用程序。它是一个基于命令行的自由开源的去中心化点对点文件共享应用程序。

你可能想知道,它与其它文件共享应用程序有什么不同?以下是 iWant 的一些突出特点。

  • 它是一个命令行应用程序。这意味着你不需要消耗内存来加载 GUI 实用程序。你只需要一个终端。
  • 它是去中心化的。这意味着你的数据不会在任何中心位置存储。因此,不会因为中心点失败而失败。
  • iWant 允许中断下载,你可以在以后随时恢复。你不需要从头开始下载,它会从你停止的位置恢复下载。
  • 共享目录中文件所作的任何更改(如删除、添加、修改)都会立即反映在网络中。
  • 就像种子一样,iWant 从多个节点下载文件。如果任何节点离开群组或未能响应,它将继续从另一个节点下载。
  • 它是跨平台的,因此你可以在 GNU/Linux、MS Windows 或者 Mac OS X 中使用它。

安装 iWant

iWant 可以使用 PIP 包管理器轻松安装。确保你在 Linux 发行版中安装了 pip。如果尚未安装,参考以下指南。

如何使用 Pip 管理 Python 包

安装 pip 后,确保你有以下依赖项:

  • libffi-dev
  • libssl-dev

比如说,在 Ubuntu 上,你可以使用以下命令安装这些依赖项:

$ sudo apt-get install libffi-dev libssl-dev

安装完所有依赖项后,使用以下命令安装 iWant:

$ sudo pip install iwant

现在我们的系统中已经有了 iWant,让我们来看看如何使用它来通过网络传输文件。

用法

首先,使用以下命令启动 iWant 服务器:

(LCTT 译注:虽然这个软件是叫 iWant,但是其命令名为 iwanto,另外这个软件至少一年没有更新了。)

$ iwanto start

第一次启动时,iWant 会询问想要分享和下载文件夹的位置,所以需要输入两个文件夹的位置。然后,选择要使用的网卡。

示例输出:

Shared/Download folder details looks empty..
Note: Shared and Download folder cannot be the same
SHARED FOLDER(absolute path):/home/sk/myshare
DOWNLOAD FOLDER(absolute path):/home/sk/mydownloads
Network interface available
1. lo => 127.0.0.1
2. enp0s3 => 192.168.43.2
Enter index of the interface:2
now scanning /home/sk/myshare
[Adding] /home/sk/myshare 0.0
Updating Leader 56f6d5e8-654e-11e7-93c8-08002712f8c1
[Adding] /home/sk/myshare 0.0
connecting to 192.168.43.2:1235 for hashdump

如果你看到类似上面的输出,你可以立即开始使用 iWant 了。

同样,在网络中的所有系统上启动 iWant 服务,指定有效的分享和下载文件夹的位置,并选择合适的网卡。

iWant 服务将继续在当前终端窗口中运行,直到你按下 CTRL+C 退出为止。你需要打开一个新选项卡或新的终端窗口来使用 iWant。

iWant 的用法非常简单,它的命令很少,如下所示。

  • iwanto start – 启动 iWant 服务。
  • iwanto search <name> – 查找文件。
  • iwanto download <hash> – 下载一个文件。
  • iwanto share <path> – 更改共享文件夹的位置。
  • iwanto download to <destination> – 更改下载文件夹位置。
  • iwanto view config – 查看共享和下载文件夹。
  • iwanto –version – 显示 iWant 版本。
  • iwanto -h – 显示帮助信息。

让我向你展示一些例子。

查找文件

要查找一个文件,运行:

$ iwanto search <filename>

请注意,你无需指定确切的名称。

示例:

$ iwanto search command

上面的命令将搜索包含 “command” 字符串的所有文件。

我的 Ubuntu 系统会输出:

Filename Size Checksum
------------------------------------------- ------- --------------------------------
/home/sk/myshare/THE LINUX COMMAND LINE.pdf 3.85757 efded6cc6f34a3d107c67c2300459911

下载文件

你可以在你的网络上的任何系统下载文件。要下载文件,只需提供文件的哈希(校验和),如下所示。你可以使用 iwanto search 命令获取共享的哈希值。

$ iwanto download efded6cc6f34a3d107c67c2300459911

文件将保存在你的下载位置,在本文中是 /home/sk/mydownloads/ 位置。

Filename: /home/sk/mydownloads/THE LINUX COMMAND LINE.pdf
Size: 3.857569 MB

查看配置

要查看配置,例如共享和下载文件夹的位置,运行:

$ iwanto view config

示例输出:

Shared folder:/home/sk/myshare
Download folder:/home/sk/mydownloads

更改共享和下载文件夹的位置

你可以更改共享文件夹和下载文件夹。

$ iwanto share /home/sk/ostechnix

现在,共享位置已更改为 /home/sk/ostechnix

同样,你可以使用以下命令更改下载位置:

$ iwanto download to /home/sk/Downloads

要查看所做的更改,运行命令:

$ iwanto view config

停止 iWant

一旦你不想用 iWant 了,可以按下 CTRL+C 退出。

如果它不起作用,那可能是由于防火墙或你的路由器不支持多播。你可以在 ~/.iwant/.iwant.log 文件中查看所有日志。有关更多详细信息,参阅最后提供的项目的 GitHub 页面。

差不多就是全部了。希望这个工具有所帮助。下次我会带着另一个有趣的指南再次来到这里。

干杯!

资源

-iWant GitHub


via: https://www.ostechnix.com/iwant-decentralized-peer-peer-file-sharing-commandline-application/

作者:SK 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

寻找一个不会破坏你的安全、自由或银行资产的文件共享应用。

Dropbox 在文件共享应用中是个 800 磅的大猩猩。尽管它是个极度流行的工具,但你可能仍想使用一个软件去替代它。

也行你出于各种好的理由,包括安全和自由,这使你决定用开源方式。亦或是你已经被数据泄露吓坏了,或者定价计划不能满足你实际需要的存储量。

幸运的是,有各种各样的开源文件共享应用,可以提供给你更多的存储容量,更好的安全性,并且以低于 Dropbox 很多的价格来让你掌控你自己的数据。有多低呢?如果你有一定的技术和一台 Linux 服务器可供使用,那尝试一下免费的应用吧。

这里有 5 个最好的可以代替 Dropbox 的开源应用,以及其他一些,你可能想考虑使用。

ownCloud

ownCloud 发布于 2010 年,是本文所列应用中最老的,但是不要被这件事蒙蔽:它仍然十分流行(根据该公司统计,有超过 150 万用户),并且由由 1100 个参与者的社区积极维护,定期发布更新。

它的主要特点——文件共享和文档写作功能和 Dropbox 的功能相似。它们的主要区别(除了它的开源协议)是你的文件可以托管在你的私人 Linux 服务器或云上,给予用户对自己数据完全的控制权。(自托管是本文所列应用的一个普遍的功能。)

使用 ownCloud,你可以通过 Linux、MacOS 或 Windows 的客户端和安卓、iOS 的移动应用程序来同步和访问文件。你还可以通过带有密码保护的链接分享给其他人来协作或者上传和下载。数据传输通过端到端加密(E2EE)和 SSL 加密来保护安全。你还可以通过使用它的 市场 中的各种各样的第三方应用来扩展它的功能。当然,它也提供付费的、商业许可的企业版本。

ownCloud 提供了详尽的文档,包括安装指南和针对用户、管理员、开发者的手册。你可以从 GitHub 仓库中获取它的源码

NextCloud

NextCloud 在 2016 年从 ownCloud 分裂出来,并且具有很多相同的功能。 NextCloud 以它的高安全性和法规遵从性作为它的一个独特的推崇的卖点。它具有 HIPAA (医疗) 和 GDPR (隐私)法规遵从功能,并提供广泛的数据策略约束、加密、用户管理和审核功能。它还在传输和存储期间对数据进行加密,并且集成了移动设备管理和身份验证机制 (包括 LDAP/AD、单点登录、双因素身份验证等)。

像本文列表里的其他应用一样, NextCloud 是自托管的,但是如果你不想在自己的 Linux 上安装 NextCloud 服务器,该公司与几个提供商达成了伙伴合作,提供安装和托管,并销售服务器、设备和服务支持。在市场中提供了大量的apps 来扩展它的功能。

NextCloud 的文档为用户、管理员和开发者提供了详细的信息,并且它的论坛、IRC 频道和社交媒体提供了基于社区的支持。如果你想贡献或者获取它的源码、报告一个错误、查看它的 AGPLv3 许可,或者想了解更多,请访问它的GitHub 项目主页

Seafile

与 ownCloud 或 NextCloud 相比,Seafile 或许没有花里胡哨的卖点(app 生态),但是它能完成任务。实质上, 它充当了 Linux 服务器上的虚拟驱动器,以扩展你的桌面存储,并允许你使用密码保护和各种级别的权限(即只读或读写) 有选择地共享文件。

它的协作功能包括文件夹权限控制,密码保护的下载链接和像 Git 一样的版本控制和记录。文件使用双因素身份验证、文件加密和 AD/LDAP 集成进行保护,并且可以从 Windows、MacOS、Linux、iOS 或 Android 设备进行访问。

更多详细信息, 请访问 Seafile 的 GitHub 仓库服务手册wiki论坛。请注意, Seafile 的社区版在 GPLv2 下获得许可,但其专业版不是开源的。

OnionShare

OnionShare 是一个很酷的应用:如果你想匿名,它允许你安全地共享单个文件或文件夹。不需要设置或维护服务器,所有你需要做的就是下载和安装,无论是在 MacOS, Windows 还是 Linux 上。文件始终在你自己的计算机上; 当你共享文件时,OnionShare 创建一个 web 服务器,使其可作为 Tor 洋葱服务访问,并生成一个不可猜测的 .onion URL,这个 URL 允许收件人通过 Tor 浏览器获取文件。

你可以设置文件共享的限制,例如限制可以下载的次数或使用自动停止计时器,这会设置一个严格的过期日期/时间,超过这个期限便不可访问(即使尚未访问该文件)。

OnionShare 在 GPLv3 之下被许可;有关详细信息,请查阅其 GitHub 仓库,其中还包括文档,介绍了这个易用的文件共享软件的特点。

Pydio Cells

Pydio Cells 在 2018 年 5 月推出了稳定版,是对 Pydio 共享应用程序的核心服务器代码的彻底大修。由于 Pydio 的基于 PHP 的后端的限制,开发人员决定用 Go 服务器语言和微服务体系结构重写后端。(前端仍然是基于 PHP 的)。

Pydio Cells 包括通常的共享和版本控制功能,以及应用程序中的消息接受、移动应用程序(Android 和 iOS),以及一种社交网络风格的协作方法。安全性包括基于 OpenID 连接的身份验证、rest 加密、安全策略等。企业发行版中包含着高级功能,但在社区(家庭)版本中,对于大多数中小型企业和家庭用户来说,依然是足够的。

您可以 在 Linux 和 MacOS 里下载 Pydio Cells。有关详细信息, 请查阅 文档常见问题源码库AGPLv3 许可证

其他

如果以上选择不能满足你的需求,你可能想考虑其他开源的文件共享型应用。

  • 如果你的主要目的是在设备间同步文件而不是分享文件,考察一下 Syncthing
  • 如果你是一个 Git 的粉丝而不需要一个移动应用。你可能更喜欢 SparkleShare
  • 如果你主要想要一个地方聚合所有你的个人数据, 看看 Cozy
  • 如果你想找一个轻量级的或者专注于文件共享的工具,考察一下 Scott Nesbitt's review——一个罕为人知的工具。

哪个是你最喜欢的开源文件共享应用?在评论中让我们知悉。


via: https://opensource.com/alternatives/dropbox

作者:Opensource.com 选题:lujun9972 译者:distant1219 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

家庭文件共享曾经是一个噩梦,即使在不同的Windows版本之间—— 甚至不考虑Mac和Linux!但现在这些操作系统可以相互通信并且无需特殊软件就可共享文件。

我们之前使用SMB协议来做到这点。Windows使用SMB来做文件共享,同时Mac和Linux发行版都内置支持SMB。Microsoft甚至给开源Samba项目提交过补丁来改进它!

在Windows上共享文件夹

既然其他操作系统不能访问家庭组,您需要启用Windows老式的文件共享。要做到这点,打开控制面板进入网络和共享> 更改高级共享设置。启用“网络发现”和“文件与打印共享”。

如果你想要无需密码访问共享文件夹你还需要微调一下其它选项。

在Windows Explorer或者File Explorer中找到你想共享的文件夹,右键点击,选择属性。点击共享标签,并使用这里的选项来共享和配置文件夹的权限。

在Windows上访问共享文件夹

在Windows Explorer或者File Explorer中访问网络面板来浏览其他计算机共享给你的文件。你会看到正确配置后的Mac和Linux计算机在Windows PC机附近出现了。双击一台计算机来查看它的共享文件。

如果你知道计算机名或者IP地址,你同样可以直接连接到这台计算机上,只需要在Windows Explorer或者File Explorer中输入\计算名后按下回车就可以了。如果你希望直接通过IP地址连接,只需要将计算机名换成IP地址就可以了

在Mac OS X 上共享文件夹

你需要在你的Mac上启用网络文件共享来共享文件。点击桌面左上角的苹果logo,并选择系统偏好。点击共享图标并启用文件共享。点击选项按钮,并确认“使用SMB共享文件和文件夹”已经启用。

在共享文件夹那列中选择添加要共享的文件夹。使用用户列来选择哪些用户和组可以访问和写入它们

在 Mac OS X 访问共享目录

打开Finder,在屏幕顶部的菜单中点击Go,选择连接到服务器,输入下面的地址,用Windows计算机名代替COMPUTERNAME:smb://COMPUTERNAME。你同样可以输入计算机IP来代替计算机名。

你会被提醒你应该用相应的凭证来验证或者以访客方式登录。连接完成后,在Finder的侧边栏的共享列中就会出现这台计算机,

要在你每次登录后自动链接到共享文件夹,打开系统偏好窗口并进入用户与组 > 登录项。从finder中的共享列中的网络共享拖拽到登录项列表中

在 Linux 中共享文件夹

在Linux上使用你桌面文件管理器来共享文件夹。这里,我们使用Ubuntu 14.04上的Nautilus,不过其他文件管理器上的过程应该是相似的。

打开文件管理器,在想要共享的文件上右键,选择属性。点击本地网络共享标签并对这个文件启用共享。如果这是你第一次启用共享,你会被提示要求安装Samba软件——这在你提供密码的时候会自动显示。

在安装完Samba软件后配置共享设置- 确认点击创建共享按钮来开始共享文件夹。

在 Linux 上访问共享文件夹

你的Linux桌面文件管理器可能包含了一个网络浏览器,它可以用来定位并访问在本地网络的共享文件夹。

在文件管理器的侧边栏点击浏览网络选项。接着双击Windows网络选项,双击你的工作组(默认是WORKFROUP),双击邻近的计算机来浏览它的共享文件。

要直接连接到一台计算机,选中Nautilus中的“连接到服务器”选项,并输入像这样的远程计算机地址:smb://COMPUTERNAME

不过在你连接时,你可能需要使用具有访问远程计算机权限的用户名和密码来验证。这依赖于你是否启用了访客访问以及你如何设置你的文件夹共享权限。


via: http://www.howtogeek.com/191116/how-to-share-files-between-windows-mac-and-linux-pcs-on-a-network/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出