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

什么是 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 存放数据库和上传文件等

端口

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

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8288 8080

默认没有对外暴露端口

需要点 + 号自行添加

环境

可变
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示例:
1
2
3
4
5
# 示例
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 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建文件夹 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 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>"

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 circled 和 子目录
mkdir -p /volume1/docker/circled/data

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

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

# 一键启动
docker-compose up -d

运行

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

1
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/