惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

GeekPlux

一代人的博客,一代人的青春注脚 那些年我打过的日结工 来美国的两年后 2023 一蓑烟雨 在美国拥有一辆 Tesla 的成本 我的 Workspaces 十年进化史 How to Sync Logseq Plugins, Themes and Settings Across Multiple Devices Setting Up Umami as Your Google Analytics Alternative: A Step-by-Step Guide 迁移豆瓣读书记录到 goodreads Enhance Your Internet Privacy in 2023 Refactor your blog comments system with Webmention.io 来美国之后,如何快速安顿下来 Three Levels of Information Perception 疫情三年 与人聊天的美好 我获取信息的方法 2022 版 我是如何学会编程的 Legacy code best practice: how to take over an existing project smoothly 2020 恍如隔世 接外包的一些坑和小技巧 论交友 往返香港隔离指南 即将失明,还能继续做程序员吗 小谈我对新技术的态度 How to use tailwindcss with AMP in a Next.js project 远程工作如何提高效率 复式记账、财报、量化与图论 我为什么从阿里巴巴离职 2019 柳暗花明 YouTube 观看历史数据分析 投资被动型指数基金正在造成下一次金融泡沫? 三种主流的网赚套利,躺着赚钱? 色盲的世界 我是如何管理 21 张信用卡的 薅羊毛的最大意义:保持对规则的敏感度 来香港的两个月 数据可视化技术实现的关键点 不需要扫描仪,数字化归档自己的文件 如何找到时薪 80 美元的远程工作(二) 如何找到时薪 80 美元的远程工作(一) 如何打造真正的简历 浅思图数据可视化 舍本逐末的学习方式 给想转行作程序员的人泼一盆冷水 算法优化人生之 —— 调度算法 杭州最适合闲来溜达的几条路线 2018 平淡无奇 突闻金庸先生逝世有感 十年博客折腾历史 数据可视化之 Sankey 桑基图的实现 研究生生涯总结 如何在不规则多边形内均匀撒点的算法 Web 前端中的增强现实(AR)开发技术 参加 Google Summer of Code 的体验 netjsongraph.js – Google Summer of Code (GSoC) 2017 summary 如何在 GitHub 上获得数百 stars Markvis - 在 markdown 中生成可视化图表 D3 force layout and WebGL integration 文本数据可视化(下)——一图胜千言 文本数据可视化(上)——从 Wordle 谈起 我获取信息的渠道 数据可视化基础——视觉编码 数据可视化基础——数据模型 数据可视化基础——可视化流程 为什么要用 Emacs Vega-Lite: A Grammar of Interactive Graphics 如何阅读一篇学术论文 超过十个人的微信群根本没有价值 毕业后的两年 建立索引式的学习方法 为什么我喜欢写代码 写文章的小技巧 为什么文章写得好的人都很厉害 人总要有点盲目的自信 如何管理好自己的密码 Backbone View 之间通信的三种方式 Vim - 适合自己的,才是最好的 轻松玩转 Ukulele 告别社交网络有多难 双拼学习记 CoffeeScript 编码风格指南(译) CoffeeScript 笔记 CSS 最核心的几个概念 响应式设计简易指南(译) 初识 TDD Collapsing margins——合并的外边距 菜鸟级 Mac 配置(二) 菜鸟级 Mac 配置(一) CSS 编写原则 Goodbye,我的大学 如何新建一个 Cocos2d-x 项目 Windows8.1 下 Cocos2d-x 环境搭建 Android 开发如何入门 如何绑定独立域名 写博客就用 FarBox 尝试改变微信公众账号消息的推送方式 情似流水 操作系统总结——存储器管理 操作系统总结——处理机管理 操作系统总结——引论
如何搭建一个私人网盘
GeekPlux · 2016-10-25 · via GeekPlux

文章主要讲了为什么要搭建私有网盘,以及如何用 docker + ownCloud 搭建。原文地址:https://geekplux.com/2016/10/25/how-to-setup-a-personal-cloud

前两天,360 云盘宣布将停止个人服务。一石激起千层浪,关于如何选择网盘,如何应对网盘关闭的讨论一下子又变得此起彼伏。没办法,目前的现状是,网盘很难有大的盈利空间,还面对严苛的内容审查和隐私保护,虽然于用户来说提供了便利,但于公司来说实在是一件出力不讨好的事情。

之前的网盘方案

国外的网盘我一直是三家一起用,分别是 Dropbox 存储代码和一些重要或私密文件;Google Drive 存储一些大文件和私密文件;OneDrive 存储一些电子书(同步太慢了)。国内的网盘我之前只用两家,一是坚果云,放一些个人常用的小文件,包括一些文档和软件配置文件;另一个是百毒云,放一些各处转存来的大文件、自己的照片和学习资料,一方面因其空间大,另一方面因其同步流畅。然而,百毒云前段时间把我的网盘全面封掉了,丢失了很多大学时的照片(其它文件要不不重要,要不有备份),申诉无果,实属无奈。

搭建一个只属于自己的网盘

所以我决定搭建一个只属于自己的网盘。考察了几种方案(包括买 RAID 或 NAS 等),发现已有人在这方面做了努力,提供了像 SeafileownCloud 这样的产品。接下来对比了两个软件,我决定选择用 ownCloud,主要出于以下几点考虑:

  • 可以设置是否加密,保证数据安全。
  • ownCloud 可以用于同步日程、联系人、浏览器书签等,最重要的是密码管理,这对于目前有无数密码需要记的我们非常实用。ownCloud 还有个应用商店,大家可以自行发现有用的应用。
  • ownCloud 提供网页和各种设备、系统的客户端(Windows、Mac、Linux、iOS、Android 皆有)进行访问你的网盘。
  • ownCloud 能将外部存储(如 FTP、WebDAV、Amazon S3,甚至 Dropbox 和 Google Drive)的文件挂载到 ownCloud 上,实现无缝存储和分享。
  • 文件支持版本管理,还有回收站,所以不必担心误删。

搭建方法

首先你得先有一个自己的 VPS。。没错,要不然你的数据往哪放,ownCloud 在哪运行。

有了 VPS 之后,就可以按照官网教程一步一步安装搭建了。然而,步骤相当繁琐,你得先安装 PHP、MySQL、 Apache 等等,所以我们要祭出神器 —— docker(这里就不介绍 docker 的用法了,以下内容默认大家对 docker 的基本使用有所了解)。这样一来,之前冗长的步骤,就化成了三步:

  1. 安装 docker、docker-compose,下载 ownCloud 的 image
  2. 配置 docker-compose.yml
  3. 配置完毕,启动,打开 ownCloud 主界面配置数据库、管理员等

下面是对上面三步的详细讲解,嫌太长的话可以不看。只需要把下面用到的两个 docker images (owncloud、postgres)下载好,安装 docker-compose 并拷贝 docker-compose.yml 文件到你想要存储 ownCloud 数据的文件夹,然后运行 docker-compose up 就好,一气呵成。

使用 docker

安装好 docker 之后,直接下载 owncloud image 运行

docker run --name owncloud -p 80:80 owncloud

其实就可以看到 ownCloud 已经运行起来了,访问你的 VPS 地址,就可以看到 ownCloud 的界面。

但这时的 ownCloud 还没有数据库,所以我们还需要用 docker --link 来添加一个数据库存储 ownCloud 的数据,这里用到了 postgres 这个 image(数据库你可以自己定,不一定要用 postgreSQL)。

docker run --name owncloud-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker run --rm --link owncloud-postgres:owncloud-db --name owncloud -p 80:80 owncloud

第一条命令会启动一个 postgreSQL 数据库,默认的用户是 postgres,密码设为了 mysecretpassword,host 是 owncloud-db。

但这时我们运行的 docker container 一旦删掉,我们的数据就没有了,所以我们需要用 docker 中的 volumes (或 docker data volumes)来把 ownCloud 的数据持久化。

配置 docker compose

这样一来,我们得启动两个 container 作为 data-only container,然后再启动 owncloud 和 postgres 关联这两个 data-only container,非常繁杂,幸亏我们有 docker-compose 帮忙。先安装它:

pip install docker-compose

然后配置 docker-compose.yml,下面配置中的 volumes 就是在配置数据持久化的目录结构。由于我把 docker-compose.yml 存在了 VPS 的~/owncloud文件夹下,所以底下 volumes 配置中,冒号前面的宿主目录是那样写的,而冒号后面的是 container 中的目录,具体:

  • /etc/postgresql 存储数据库的配置
  • /var/lib/postgresql 存储数据库中的数据
  • /var/www/html/app 存储 ownCloud APP 的数据
  • /var/www/html/data 存储 ownCloud 的数据
  • /var/www/html/config 存储 ownCloud 的配置
# Composition of the containers

postgres-data:
  image: postgres
  command: /bin/true
  volumes:
    - ~/owncloud/etc/postgresql:/etc/postgresql
    - ~/owncloud/var/lib/postgresql:/var/lib/postgresql

owncloud-data:
  image: owncloud
  # This is a data container, so we want to exit as soon as the container is created
  # BUT we will have to fix permissions issues first (33 is the ID of the www-data user)
  command: /bin/bash -c "/bin/chown -R 33 /var/www/html/data && /bin/chown -R 33 /var/www/html/config"
  volumes:
    - ~/owncloud/var/www/html/apps:/var/www/html/apps
    - ~/owncloud/var/www/html/data:/var/www/html/data
    - ~/owncloud/var/www/html/config:/var/www/html/config

owncloud:
  image: owncloud
  ports:
    - 8080:80
  volumes_from:
    - owncloud-data
  links:
    - postgres:postgres
  hostname: cloud
  domainname: cloud.example.org # Change to the hostname you will use

postgres:
  image: postgres
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=mypostgrespassword
  volumes_from:
    - postgres-data

把 docker-compose.yml 配置好之后,只需运行

docker-compose up

就可以把 ownCloud 运行起来了,上一步中的很多操作,这里一步就搞定了。不过切记!owncloud-datapostgres-data两个 container 和 volume 千万不要删。删之前请备份

ownCloud 配置

访问你 VPS 的 8080 端口(刚才配置文件里写了)打开 ownCloud 主页,需要做两件事

  1. 输入管理员的账号和密码
  2. 选择数据库用哪个,且输入数据库配置,这里对照我们刚才 docker-compose 里的写的输入就好

点击完成,一切 OK,进入文件页面尽情探索吧!

参考&延伸阅读