🎊 如何拥有一个私人云相册

如何拥有一个私人云相册

如何拥有一个私人云相册

你厌倦了厂商的云盘了嘛?手机厂商5GB的云盘存储能存多少照片?几十块钱的会员才几十GB,你怎么看?上面百度、夸克、阿里每年下来多少钱?SMB、NFS、FTP等都可以传输,但是使用起来真的方便嘛?如果你想要一个备份图片视频的工具,能够随时随地的存储,并且是跨平台,能够通过手机App实现备份,那么我推荐使用immich。如果想要存放多媒体等内容呢Jellyfin也是一个不错的选择。

而成本呢?相对于NAS是比较少的,我们可以使用破烂古董、使用廉政主机、使用电视盒子、使用废弃的笔记本电脑、或者一块一两百的开发版,例如树莓派之类的,我们主要的成本就在于硬盘存储上,其他的成本我们是能压缩就能压缩的,得益于Termux等工具在Android上的发展,我们还可以使用大存储的破旧手机来存储,当然我不建议,涉及到改造成本,比起长期氪金和一次性氪金较多,我们属于节省成本,废物利用。

演示环境:VMware虚拟机+ubuntu desktop【Linux系统没有限制、可以是是ubuntu、fedora等】

现实环境:使用U盘安装Linux系统即可【针对开发版:TF卡烧录插入开发板】

无论选择哪一个系统都有很多问题,还是比较推荐Ubuntu22和Fedora这两个系统,稳定性很好的同时,依赖也比较完整,文章也很多,我这里用Fedora42来演示。

docker安装

首先我们要解决的是上网的问题,docker安装问题,这是非常头疼的问题。使用如下命令查看docke的包有哪些?

sudo dnf list | grep docker

安装docker

sudo dnf install -y docker docker-compose

此时会安装好相关的依赖:

启动docker

# 查看docker的状态,是否启动

sudo systemctl status docker

# 启动

sudo systemctl start docker

# 开机自启动

sudo systemctl enable docker

如果你不想使用国际网络,那么只能换源了

immich安装

首先需要安装wget、curl、vim、openshh-server这些常用工具。

sudo dnf install -y wget curl vim openssh-server

# 可选择,更新所有系统依赖和组件

sudo dnf update

接下来我们需要创建一个目录immach-app,创建的位置可以是用户目录下,也可以是opt目录下

在用户目录下创建[推荐:防止权限问题]:

cd /home/用户名

#使用pwd命令即可查看当前所处目录

# 创建目录

sudo mkdir immich-app

# 切换到immich-app目录

cd immich-app

在opt目录下创建:

cd /opt/

#使用pwd命令即可查看当前所处目录

# 创建目录

sudo mkdir immich-app

# 切换到immich-app目录

cd immich-app

下载 docker-compose.yml and example.env 文件

sudo wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

sudo wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

注意:下载的时候访问的是Github,不会上网的话可能没办法下载成功,建议使用国际网络

成功下载如下图:

配置文件

使用自定义值填充 .env 文件,默认的环境变量内容如下:

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored

UPLOAD_LOCATION=./library

# The location where your database files are stored. Network shares are not supported for the database

DB_DATA_LOCATION=./postgres

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List

# TZ=Etc/UTC

# The Immich version to use. You can pin this to a specific version like "v1.71.0"

IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password

# Please use only the characters `A-Za-z0-9`, without special characters or spaces

DB_PASSWORD=postgres

# The values below this line do not need to be changed

###################################################################################

DB_USERNAME=postgres

DB_DATABASE_NAME=immich

以上内容可以不修改,解释如下:

使用您存储备份资产的首选位置填充 UPLOAD_LOCATION。它应该是服务器上具有足够可用空间的新目录。

考虑将 DB_PASSWORD 更改为自定义值。Postgres 未公开,因此此密码仅用于本地身份验证。为避免 Docker 解析此值时出现问题,最好仅使用字符 A-Za-z0-9。PWGEN 是一个方便的实用程序。

通过取消注释 TZ= 行来设置您的时区。

启动容器安装

使用如下命令进行安装:

sudo docker compose up -d

推荐方案:在国际网络环境下使用安装,网速决定安装是否成功

备用方案:如果不会上网,可以尝试更改docker的镜像源为国内的镜像源。

国内源如下:

https://mirror.ccs.tencentyun.com

https://docker.1panel.live

https://docker.mirrors.ustc.edu.cn

https://dockerhub.usts.edu.cn

编辑 Docker 配置文件(没有则新建):

sudo mkdir -p /etc/docker

sudo vim /etc/docker/daemon.json

添加以下内容(以中科大为例,可以换成你选的其他源):

json复制编辑{

"registry-mirrors": [

"https://docker.mirrors.ustc.edu.cn"

]

}

重启docker服务

sudo systemctl daemon-reexec

sudo systemctl restart docker

如果您收到 unknown shorthand flag: 'd' in -d or open : permission denied 等错误,则您可能运行的是错误的 Docker 版本。(例如,Ubuntu 22.04.3 LTS 中的 docker.io 软件包会发生这种情况。您可以按照发行版的完整 Docker Engine 安装过程来纠正问题,关键的是“卸载旧版本”和“使用 apt/rpm 存储库安装”部分。这些软件包将发行版的 Docker 软件包替换为 Docker 的官方软件包。

检查是否安装成功

sudo docker ps -a

成功如下:

配置网站

关闭防火墙

在Fedora中,一般服务器版本是有专本的web界面来控制防火墙的,工作站版本是没有的。我们需要手动关闭或者开放端口。为了安全考虑我们采用开放端口的操作:

sudo firewall-cmd --permanent --add-port=2283/tcp

重新载入配置让其生效:

sudo firewall-cmd --reload

检查是否放行:

sudo firewall-cmd --list-ports

# 可选操作:详细地查看当前区域的配置

sudo firewall-cmd --zone=public --list-all

# iptables放行

sudo iptables -A INPUT -p udp --dport 2283 -j ACCEPT

sudo service iptables save

输入http://ip:2283 进行访问。如果还是访问不到,就关闭防火墙,

sudo systemctl stop friewalld.service

如果都没有,检查日志,发现是数据库的权限问题:

chown: changing ownership of '/var/lib/postgresql/data': Permission denied

Using SSD storage

chmod: changing permissions of '/var/lib/postgresql/data': Permission denied

chown: changing ownership of '/var/lib/postgresql/data': Permission denied

这是因为feodra作为企业级服务器,面对的客户群体不一样,默认是开启SELinux的,而Ubuntu没有开启,将其关闭即可访问,一般情况下不建议关闭,这回导致一些安全问题。

关闭即可:

sudo setenforce 0

SELINUX=disabled

再次访问看到如下界面:

现在开始注册账号:

然后就是点击下一步,一直点就可以了。

最后是这样的效果:

手机连接

下载immich App,使用手机连接,输入地址,然后登陆

Jellyfin安装

Ubuntu/Debian安装

执行如下命令进行安装,

curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash

Docker安装[推荐]

下载最新的容器映像

sudo docker pull jellyfin/jellyfin

为配置和缓存数据创建持久存储。

sudo mkdir -p /jellyfin/config

sudo mkdir -p /jellyfin/cache

sudo mkdir -p /mnt/jellyfin/data/

sudo chown -R 1000:1000 /jellyfin

或者创建两个持久卷

sudo docker volume create jellyfin-config

sudo docker volume create jellyfin-cache

运行创建容器

sudo docker run -d \

--name jellyfin \

--user 1000:1000 \

-p 8096:8096 \

-p 8920:8920 \

-v /jellyfin/config:/config \

-v /jellyfin/cache:/cache \

--mount type=bind,source=/mnt/jellyfin/data/,target=/media \

--restart=unless-stopped \

jellyfin/jellyfin

配置网站

输入http://ip:8096 进行访问,如图:

设置账户密码:

手机连接

由于是虚拟机演示,手机Ip地址段和虚拟机不在同一个IP段上,所以无法连接

后面的可以不看了,看需求。

其他

需要绑定挂载将文件夹从主机作系统传递到容器作系统,而卷由 Docker 维护,可以认为更容易由外部程序备份和控制。 对于简单的设置,使用 Bind Mounts 而不是 volumes 被认为更容易。 如果需要,可以绑定挂载多个媒体库:

--mount type=bind,source=/path/to/media1,target=/media1

--mount type=bind,source=/path/to/media2,target=/media2,readonly

...etc

可以选择性地绑定挂载自定义服务器端系统字体目录,以便在转码过程中使用这些字体并进行字幕烧录:

--mount type=bind,source=/path/to/fonts,target=/usr/local/share/fonts/custom,readonly

也可以挂载回退字体的目录。在这种情况下,您必须在 Jellyfin 服务器设置面板中将回退字体的目录设置为 :/fallback_fonts

--mount type=bind,source=/path/to/fallback/fonts,target=/fallback_fonts,readonly

Docker Compose安装

创建包含以下内容的文件。添加您希望运行 jellyfin 的 UID 和 GID,如下面的 user 行所示,或删除 user 行以使用默认 (root)。docker-compose.yml

services:

jellyfin:

image: jellyfin/jellyfin

container_name: jellyfin

user: uid:gid

network_mode: 'host'

volumes:

- /path/to/config:/config

- /path/to/cache:/cache

- type: bind

source: /path/to/media

target: /media

- type: bind

source: /path/to/media2

target: /media2

read_only: true

# Optional - extra fonts to be used during transcoding with subtitle burn-in

- type: bind

source: /path/to/fonts

target: /usr/local/share/fonts/custom

read_only: true

restart: 'unless-stopped'

# Optional - alternative address used for autodiscovery

environment:

- JELLYFIN_PublishedServerUrl=http://example.com

# Optional - may be necessary for docker healthcheck to pass if running in host network mode

extra_hosts:

- 'host.docker.internal:host-gateway'

然后,在与运行相同的文件夹中时:docker-compose.yml

docker compose up

要在后台运行容器,请添加到上述命令。-d

🎯 相关推荐

纠结北峰BF-870S对讲机测评怎么样?使用测评
北京去哪里超度婴灵?
bt365官网哪个真的

北京去哪里超度婴灵?

📅 07-29 👀 5100
失效链接
365bet资讯

失效链接

📅 07-28 👀 3194