轻松备份和共享照片的Circled.me

news2024/9/29 3:30:55

在这里插入图片描述

什么是 Circled.me ?

Circled.me 旨在帮助人们在自己的服务器上轻松备份和共享照片、视频、相册。注重性能、低占用空间以及易于实施和使用。支持托管社区所需的一切,能够进行交流和交换照片、想法等,实现通过群聊等方式与您的圈子分享。

软件特点:

  • 快速响应时间和低 CPU 和内存使用
  • iOSAndroid 照片备份(使用移动端 app
  • 支持本地挂载磁盘或 S3 兼容服务 - 这允许不同用户在同一服务器上使用自己的 S3 存储桶
  • 推送通知以获取新的相册照片等
  • 相册了添加本地服务器的发布者和查看者
  • 通过“秘密”链接与任何人分享相册
  • 按年份、月份、位置等筛选照片
  • 时刻 - 自动按时间和位置对照片进行分组
  • 对所有资产进行逆地理编码
  • 自动将视频转换为 web 兼容的 H.264 格式

如果您使用默认的 SQLite DB 引擎,则应用程序不依赖于任何其他服务。目前支持 SQLiteMySQL 用于元数据存储。

安装

建数据库

老苏用了群晖自带的 MariaDB 10 数据库。当然你也可以用 SQLite

phpMyAdmin 中创建名为 circled 的空数据库。

为便于说明,假设数据库密码为 123456

所以根据上面的设置,最后得到的数据库相关的参数如下:

  • 数据库主机:192.168.0.197,与群晖主机 IP 一致;
  • 数据库端口:3307,如果用 MariaDB 5 就是 3306,但老苏没测;
  • 数据库用户:circled
  • 数据库密码:123456
  • 数据库库名:circled,因为勾选了与用户同名;

安装镜像

在群晖上以 Docker 方式安装。

在注册表中搜索 circled-server ,选择第一个 gubble/circled-server,版本选择 latest

本文写作时, latest 版本对应为 0.9.5.1

docker 文件夹中,创建一个新文件夹 circled,并在其中建一个子文件夹 data

文件夹装载路径说明
docker/circled/data/mnt/data1存放数据库和上传文件等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
82888080

默认没有对外暴露端口

需要点 + 号自行添加

环境

可变
MYSQL_DSN数据源名称
BIND_ADDRESS绑定到的 IP 和端口
DEFAULT_BUCKET_DIR默认存储桶的目录
DEFAULT_ASSET_PATH_PATTERN默认路径模式
  • MYSQL_DSN:格式参考:https://github.com/go-sql-driver/mysql#dsn-data-source-name,一个完整的 DSN示例:
# 示例
username:password@protocol(address)/dbname?param=value

# 老苏的设置
circled:123456@tcp(192.168.0.197:3307)/circled?charset=utf8mb4&parseTime=True&loc=Local"

对照示例,我们可以拆解为:

  • username:数据库用户:circled
  • password:数据库用户对应的密码:123456
  • protocol:协议为 tcp
  • address:数据库服务的地址,包含了主机和端口:192.168.0.197:3307
  • dbname:数据库库名:circled
  • param:为参数,包括了字符集等:charset=utf8mb4&parseTime=True&loc=Local

所以除了参数照抄外,其他的都是和前面 MariaDB 数据库的设置保持一致的

  • BIND_ADDRESS :绑定到的 IP 和端口(与 TLS_DOMAINS 不兼容)。如果您的服务器位于反向代理之后,这将非常有用。例如:0.0.0.0:8080,如果这里改了端口,前面的容器端口也要跟着变。
  • DEFAULT_BUCKET_DIR:如果不存在其他存储桶(即第一次运行服务器),则将用作默认存储桶的目录。例如:/mnt/data1
  • DEFAULT_ASSET_PATH_PATTERN:根据资产信息创建子目录和文件名的默认路径模式。默认为<year>/<month>/<id>

但是看图片保存的路径,怎么像是 <id>/<year>/<month> 😂

更多环境变量,请参考官方文档:https://github.com/circled-me/server#compiling-and-running-the-server

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 circled 和 子目录
mkdir -p /volume1/docker/circled/data

# 进入 circled 目录
cd /volume1/docker/circled

# 运行容器
docker run -d \
  --name circled-server \
  --restart always \
  -p 8288:8080 \
  -v $(pwd)/data:/mnt/data1 \
  -e MYSQL_DSN="circled:123456@tcp(192.168.0.197:3307)/circled?charset=utf8mb4&parseTime=True&loc=Local" \
  -e BIND_ADDRESS="0.0.0.0:8080" \
  -e DEFAULT_BUCKET_DIR="/mnt/data1" \
  -e DEFAULT_ASSET_PATH_PATTERN="<year>/<month>/<id>" \
  gubble/circled-server:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '2'

services:
  circled-server:
    image: gubble/circled-server:latest
    container_name: circled-server
    restart: always
    ports:
      - "8288:8080"
    volumes:
      - ./data:/mnt/data1
    environment:
      MYSQL_DSN: "circled:123456@tcp(192.168.0.197:3307)/circled?charset=utf8mb4&parseTime=True&loc=Local"
      BIND_ADDRESS: 0.0.0.0:8080
      DEFAULT_BUCKET_DIR: "/mnt/data1"
      DEFAULT_ASSET_PATH_PATTERN: "<year>/<month>/<id>"

然后执行下面的命令

# 新建文件夹 circled 和 子目录
mkdir -p /volume1/docker/circled/data

# 进入 circled 目录
cd /volume1/docker/circled

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8288 ,你只会看到报错的界面

404 page not found

因为我们安装的只是接口服务,业务需要是通过移动端 app 来实现的

移动端 app

在官方的主页上提供了 App StoreGoogle Play 的下载地址

Google Play 因为老苏的手机没有 GMS,所以找到另一个源:https://apkpure.com/circled-me/me.circled.app

第一次打开 app ,需要点 Or create first user? 创建一个用户

填写完之后,点 Create User

  • Server:填服务器地址,http://群晖IP:8288
  • Username:用户名
  • Password:密码,长度不能少于 8
  • Confirm Password:再次输入密码

进入设置项 Setting,第一次需要授权

Start 开始备份

会看到上传信息

上传一会儿,在 Library 中就能看到照片和视频

注意事项

项目尚处于开发阶段,所以官方提示:

⚠️ 注意:请注意,该项目仍在开发中,可能会引入重大变化。

⚠️ 警告:请勿将其用作主要/唯一的备份解决方案。

参考文档

circled-me/server at selfh.st
地址:https://github.com/circled-me/server

circled-me/app: This repository holds the source code for the circled.me app available on the AppStore and Google Play. Please see more details in https://github.com/circled-me/server
地址:https://github.com/circled-me/app

Welcome to the circled.me community
地址:https://app.circled.me/

circled.me: just open-sourced my self-hosted community server and app : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/176un72/circledme_just_opensourced_my_selfhosted/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑资料被删除怎么办?这些方法帮你轻松找回!

在日常工作和生活中&#xff0c;电脑资料的安全存储至关重要。然而&#xff0c;有时我们可能会因为误操作或其他原因不小心删除了重要资料。这时&#xff0c;我们该如何应对呢&#xff1f;本文将为你提供几种有效的恢复方法&#xff0c;帮你轻松找回被删除的电脑资料。 一、撤…

MySQL如何判断一个字段里面是否包含汉字

SQL查询中&#xff0c;length() 和 char_length() 都是用来获取字符串长度的函数 在单字节字符集下&#xff08;如ASCII&#xff09;&#xff1a;每个字符通常占用1个字节&#xff0c;因此length()和char_length()在这类字符集中给出的结果是一样 在多字节字符集下&#xff0…

湖北省各市各地两化融合贯标、3A级认定申报奖补补助、申报条件材料、流程指南

盘点湖北省各市各地两化融合贯标、3A级认定申报奖补补助、申报条件材料、流程等内容&#xff0c;武汉市、黄石市、十堰市、宜昌市、襄阳市、鄂州市、荆门市、孝感市、荆州市、黄冈市、咸宁市、随州市,恩施土家族苗族自治州、仙桃市、潜江市、天门市、神农架林区有需要具体了解的…

OPPO手机短信删除了怎么恢复?三大解决办法助你找回

在快节奏的生活中&#xff0c;手机短信作为我们日常沟通的重要工具之一&#xff0c;往往承载着许多重要的信息&#xff0c;如验证码、银行通知、会议安排等。然而&#xff0c;不小心误删短信的情况时有发生&#xff0c;特别是对于OPPO手机用户而言&#xff0c;短信一旦删除&…

谷粒商城实战笔记-240~243-商城业务-购物车-页面环境搭建

文章目录 一&#xff0c;页面调整1&#xff0c;详情页增加“加入购物车”按钮 二&#xff0c;添加购物车后台实现详细步骤异步处理的优点 三&#xff0c;解决加购重复提交问题 这部分的主要内容&#xff1a; 从product模块的详情页点击加入购物车&#xff0c;发送请求到cart购物…

Kubernetes服务发布基础

一、Service 1.service基本介绍 service为一组提供服务的pod提供抽象的稳定的网络访问地址&#xff0c;主要用于网络服务&#xff0c;通过service定义&#xff0c;为客户端提供访问地址和负载均衡&#xff0c;屏蔽endport的变化。 在 kubernetes 中,pod 的IP 地址是动态变…

大数据面试-Zookeeper

你对Zookeeper的选举机制了解吗&#xff1f;为什么zk节点个数推荐奇数台&#xff1f;zk第一次启动的选举的细节了解吗&#xff1f; ‌ZooKeeper的选举机制‌是基于Paxos算法的一种分布式选举算法&#xff0c;用于在ZooKeeper集群中选择一个节点作为Leader&#xff0c;负责处理…

做外贸如何判断国外采购商公司规模

判断客户公司的规模&#xff0c;对于业务员来说很重要&#xff0c;这样在谈价格以及其他条款的时候才能掌握主动。一般要怎么去判断客户公司的规模呢?我们都是做实事的&#xff0c;实际经验很重要&#xff0c;做过和没做过的看多了就知道。最基本的信息是公司的注册时间及相关…

【python】Python中通过WHL文件离线安装需要的包最全面讲解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【oracle】工具访问oracle提示-IO 错误: Got minus one from a read call

问题描述&#xff1a; 使用工具访问数据库时&#xff0c;提示IO 错误: Got minus one from a read call&#xff0c;在服务器上检查数据库正常&#xff0c;监听正常&#xff0c;连接数合理&#xff0c;防火墙没限制。最后定位sqlnet.ora配置限制了客户端访问。 解决&#xf…

四川财谷通信息技术有限公司解锁抖音小店新机遇

在数字经济蓬勃发展的今天&#xff0c;电商平台已成为推动商业创新、促进消费升级的重要力量。其中&#xff0c;抖音小店凭借其庞大的用户基础、精准的算法推荐以及高度活跃的社区氛围&#xff0c;迅速崛起为众多商家青睐的创业与营销新阵地。四川财谷通信息技术有限公司&#…

Groovy DSL从入门到项目实战(一)

Groovy是一门很灵活的Java扩展语言&#xff0c;支持弱类型、闭包、函数式编程等脚本语言的高级特性。因为小卷所在公司的船申报系统需要重构&#xff0c;对原先java硬编码的各种表单数据校验、后台业务校验使用规则脚本的形式进行剥离出来。而市面上像Jboss Drools这样的规则引…

docker-compose安装sentry

官方文档 https://develop.sentry.dev/self-hosted/ 一、前提 服务器配置至少4C16G&#xff0c;否则起不来 二、安装docker https://blog.csdn.net/weixin_45112997/article/details/134532660 三、安装docker-compose docker-compose版本有要求&#xff0c;必须大于2.…

ISO7841标准数字隔离器在现代电子系统中的作用

在快速发展的电子领域&#xff0c;隔离元件在确保各种系统的安全性、可靠性和性能方面发挥着关键作用。其中&#xff0c;光耦合器是提供电气隔离同时允许电路不同部分之间进行信号传输的关键设备。ISO7841数字隔离器尤其体现了现代电子设计所需的先进功能和多功能性。 ISO7841数…

刷题刷题刷题

89. 格雷编码 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> grayCode(int n) {vector<int> res;res.push_back(0);int head 1;for (int i 0; i < n; i) {for (int j res.size() - 1; j > 0; j--) {res.push_back(head r…

电脑录屏怎么录?强烈推荐这5款高清录屏软件

现在电脑录屏作为数字化生活的一项实用技能&#xff0c;正逐渐走进越来越多人的视野&#xff0c;无论是想要录制游戏直播的高光时刻&#xff0c;还是制作教学视频分享知识&#xff0c;亦或是记录会议内容以备不时之需&#xff0c;电脑录屏都能轻松满足我们的需求。 今天就给大家…

Leetcode 876.141.142.143 环形链表 C++实现

Leetcode 876. 链表的中间结点 问题&#xff1a;给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 、 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct L…

【MySQL进阶之路】oracle 9i的经典测试雇员信息表案例——多表查询

目录 引言 笛卡尔积 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 在数据库的实际开发中&#xff0c;多表查询是一项非常基础且重要的技能。它允许你将来自不同表的数据结合…

【git bash编码错误解决方案】启动conda环境时报错,其他terminal却正常

&#x1f50e;嘿&#xff0c;这里是慰慰&#x1f469;&#x1f3fb;‍&#x1f393;&#xff0c;会发各种类型的文章&#xff0c;智能专业&#xff0c;从事前端&#x1f43e; &#x1f389;如果有帮助的话&#xff0c;就点个赞叭&#xff0c;让我开心一下&#xff01;&#x1f…

Java中的IO流-最全最基础的IO流概述和简介

IO流简介 IO是什么 Java中的IO流是用于处理数据输入和输出的核心机制。通过应用IO流可以使Java程序能够与外部世界&#xff08;如磁盘文件、网络、硬件设备等&#xff09;进行数据交互。IO流的全称为输入/输出流&#xff08;Input/Output Stream&#xff09;&#xff0c;它是…