开源轻量级文件分享服务Go File本地Docker部署与远程访问
???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。??? 欢迎订阅本专栏
博客目录
-
- 前言
- 1. 安装 Docker
- 2. Go File 使用演示
- 3. 安装 cpolar 内网穿透
- 4. 配置 Go File 公网地址
- 5. 配置 Go File 固定公网地址
前言
今天和大家分享一款超好用的开源轻量级文件分享工具 Go File,如何在本地 Ubuntu 使用 Docker 快速部署,并结合 cpolar 内网穿透工具一键发布公网,轻松实现随时随地远程访问分享文件。
无论是办公还是日常生活中,我们都会遇到使用 PC 设备和安卓设备之间进行文件传输的时候。最近找到的这款 Go File 就是一款非常不错的文件传输工具。可用于局域网内分享文件和文件夹,直接跑满本地带宽。由于 Go 语言本身具有跨平台特性,Go-File 也能够在不同的操作系统上运行,如 Windows、Linux 和 macOS 等。
Go File 的应用场景非常多,无论是团队协作,学习资料分享,个人文件备份都可以轻松搞定。Go File 不仅无需复杂的配置和安装,而且功能非常强大,除了正常的上传和下载文件,还支持文件夹分享,方便一次性分享多个文件。内置图床,支持图片上传和 API 接口,方便用户将图片资源上传到本地服务器,并用于博客、网站等场景。不仅如此,Go File 还内置视频播放页面,支持在线播放本地视频文件,方便用户在不同设备上观看视频。
而在安全方面,Go File 允许对不同类型的用户设置文件访问权限限制,确保文件安全。支持设置访问频率限制,防止恶意访问和滥用资源。还支持 Token API 验证,方便与其他系统整合,实现更高级的文件管理和访问控制。
在本例中,也将使用在 Ubuntu 通过 Docker 的方式快速部署,过程非常简单,下面就来进行具体演示。
1. 安装 Docker
本例使用 Docker 进行部署,如果没有安装 Docker,可以查看这篇教程进行安装:《Docker 安装教程——Linux、Windows、MacOS》
首先打开终端输入这行命令拉取镜像:
sudo docker pull justsong/go-file
然后执行这行命令启动容器即可:
sudo docker run -d --restart always -p 3000:3000 -eTZ=Asia/Shanghai -v /home/ubuntu/data/go-file:/data justsong/go-file
本例数据将会保存在宿主机的
/home/ubuntu/data/go-file目录,大家可自行修改路径。

现在就已经部署完毕了。
2. Go File 使用演示
现在您打开 Web 浏览器输入 localhost:3000,就可以访问到 Go File 的登录页面了,可以看到界面非常简洁明了。

登录账号:用户名为 admin,密码为 123456

成功登录:

点击上传按钮后,可以选择文件夹中的文件或者直接拖拽文件进行上传:


上传成功:

上传视频同样可以在线预览:

点击主页,可以看到刚才上传的文件,有链接分享和二维码分享两种方式:

点击帮助可以查看更多功能介绍与使用教程:

3. 安装 cpolar 内网穿透
不过我们目前只能在本地局域网内访问刚刚部署的 Go File 进行文件分享,如果想不在同一局域网内时,也能在外部网络环境远程访问本地部署的 Go File,应该怎么办呢?我们可以使用 cpolar 内网穿透工具来实现远程访问的需求。无需公网 IP,也不用设置路由器那么麻烦。
下面是安装 cpolar 步骤:
Cpolar 官网地址: https://www.cpolar.com
使用一键脚本安装命令
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看 cpolar 服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar

Cpolar 安装和成功启动服务后,在浏览器上输入 ubuntu 主机 IP 加 9200 端口即:【http://localhost:9200】访问 Cpolar 管理界面,使用 Cpolar 官网注册的账号登录,登录后即可看到 cpolar web 配置界面,接下来在 web 界面配置即可:

4. 配置 Go File 公网地址
登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了: gofile,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:3000
- 域名类型:随机域名
- 地区:选择 China Top
点击创建:

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在浏览器中访问即可。

如下图所示,成功实现使用公网地址异地远程访问本地部署的 Go File 文件分享服务啦。

小结
为了方便演示,我们在上边的操作过程中使用 cpolar 生成的 HTTP 公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。
如果有长期使用 Go File 文件分享服务,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置公网地址。
5. 配置 Go File 固定公网地址
由于以上使用 cpolar 所创建的隧道使用的是随机公网地址,24 小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择 china top,然后设置一个二级子域名名称,填写备注信息,点击保留。

保留成功后复制保留的二级子域名地址:

登录 cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。

修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址访问 Go File 可以看到访问成功,这样一个永久不会变化的二级子域名网址即设置好了。

最后需要注意:
- 默认配置下访客可以上传和下载文件,可在
管理->系统设置中修改权限配置。 - 如果是公网部署,务必记得第一时间更改默认密码!
接下来就可以随时随地远程访问管理 Go File 了,把公网地址分享给身边的人,还可以方便团队协作。自己用的话,无需云服务器,还可以实现异地远程访问!以上就是如何在 Linux Ubuntu 系统 Docker 本地部署 Go File 并实现异地远程访问进行文件分享的全部过程,感谢观看!
觉得有用的话点个赞
????呗。
本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!??????如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!?? ?? ??
???Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!???
相关文章:
开源轻量级文件分享服务Go File本地Docker部署与远程访问
???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...
异步背后的奥秘:事件循环
异步背后的奥秘:事件循环 复习环节 JavaScript运行时 我们都知道,JavaScript本身是一个单线程的,那JavaScript是如何处理同时发生的多个任务的呢? 首先JavaScript引擎运行在一个容器中,这个容器可能是浏览器或者nod…...
Springboot使用RabbitMQ实现关闭超时订单的一个简单示例
1.maven中引入rabbitmq的依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置: # rabbit…...
小程序基础 —— 07 创建小程序项目
创建小程序项目 打开微信开发者工具,左侧选择小程序,点击 号即可新建项目: 在弹出的新页面,填写项目信息(后端服务选择不使用云服务,开发模式为小程序,模板选择为不使用模板)&…...
【Golang 面试题】每日 3 题(十五)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
Docker命令(用法说明详解)
一、常见Docker容器命令 #根据image创建一个新容器并运行(即使该image已经存在容器,也会再创建一个新容器) docker run IMAGE_NAME #根据image创建一个新容器并运行。 #选项-d:指定容器为后台运行,--name自定义该容器…...
leetcode 热题100(131. 分割回文串)c++
链接:131. 分割回文串 - 力扣(LeetCode) 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1: 输入:s "aab" 输出ÿ…...
vs2022编译opencv 4.10.0
参考:Windosw下Visual Studio2022编译OpenCV与参考区别在于,没有用cmake GUI,也没有创建build目录,直接用vs2022打开了C:\code\opencv目录,即CMakeLists.txt所在根目录。没有修改默认下载地址,采用手动下载…...
Bash 中的 2>1 | tee 命令详解
Bash 中的 2>&1 | tee 命令详解 在 Linux 和 Unix 系统中,命令行提供了强大的输出控制功能,能够灵活地处理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。本文将详…...
MySQL数据库的日志
一、概论 日志(log)是一种记录系统运行时各种状态和事件的文件。 它通常用于系统监控、故障排查、安全审计和性能分析。日志文件可以记录用户操作、系统错误、应用程序行为等信息。日志文件通常包含时间戳、事件类型、事件描述等关键信息,以…...
DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级
尊敬的 DataCap 用户: DataCap 2024.4.1 版本现已正式发布。本次更新包含多项重要功能升级和性能优化,现将主要更新内容公布如下: 核心功能升级 数据库功能增强 (实现功能) 新增数据库管理功能:支持创建、删除和切换数据库完善表…...
二十三种设计模式-单例模式
单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 单例模式两种实现方法:懒汉式和饿汉式。 懒汉式(Lazy Initialization) 懒汉式单例模式在第一次被使用时才创建实例&…...
【微服务】SpringBoot 国际化适配方案使用详解
目录 一、前言 二、国际化概述 2.1 微服务中的国际化是什么 2.1.1 国际化概念 2.1.2 为什么需要国际化 2.2 微服务中常用的国际化方法 2.2.1 资源文件分离 2.2.2 使用国际化框架 2.2.3 使用动态模板 2.2.4 使用数据库存储 2.2.5 API设计结合配置中心 三、SpringBoot…...
太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片
太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片 以下是该项目的一些用例: 太阳能发电厂监控:该模型可用于自动化检查和识别大型…...
客户案例:基于慧集通平台集成打通小满CRM+金蝶云星空+钉钉
一、引言 本案例原型公司是一家生物科技公司,公司自开创以来专注于体外诊断生物活性原材料的研究、生产、销售和服务,致力于为全球体外诊断试剂生产企业提供领先且具有竞争力的核心原料和相关辅助产品服务。公司以卓越的产品和优质的服务赢得了客户的广…...
ubuntu 如何使用vrf
在Ubuntu或其他Linux系统中,您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的,这意味着在系统重启后这些配置会丢失。为了将这些配置持久化,您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由,您可以将这些配…...
Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)
系统版本:Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对,也可以自己在客户端或者服务器上生成, 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa,可以在交互中指定路径,也可…...
K8S详解(5万字详细教程)
目录 编辑 一、集群管理命令 二、命名空间 1. 获取命名空间列表 2. 创建命名空间 3. 删除命名空间 4. 查看命名空间详情 三、Pod 1. Pod概述 2. Pod相位状态 3. 管理命令 3.1 获取命名空间下容器(pod)列表 3.2 查看pod的详细信息 3.3 创建 && 运行 3.4 …...
Redis6为什么引入了多线程?
大家好,我是锋哥。今天分享关于【Redis6为什么引入了多线程?】面试题。希望对大家有帮助; Redis6为什么引入了多线程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入了多线程的主要目的是提高性能&#…...
KMP 2024 年总结,Kotlin 崛起的一年
2024 Google I/O 上正式官宣了 KMP(Kotlin Multiplatform)项目,它是 Google Workspace 团队的一项长期「投资」项目,由 JetBrains 开发维护和开源的项目,简单来说,JetBrains 主导,Google Worksp…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

