基于树莓派-piwigo/apache2 的家庭云相册搭建

背景

近期由于拍摄了很多我和胡小蕊在一起的照片,包括生活照片和出去游玩的照片,所以想搞一个家庭云相册,可以用于实时同步手机中的照片到云相册上。因为考虑到公有云相册的隐私安全保障问题,以及我想自己DIY一些功能。还有就是自己的手机内存问题以及手机自带的云相册需要付费申请更大的空间,我不想付费。因此我想可以利用树莓派作为服务器,寻找一个开源的云相册管理系统自己部署到服务器上,最好是带有软件的开源云相册。找来找去发现了这款PiWigo云相册,详细请见: PIWIGO 官网,这里是github地址: PIWIGO github仓库

1、介绍

这篇博客介绍如何在树莓派4上安装PiWigo作为一个web server。 Piwigo是一个开源的相册管理软件,可以轻松的管理我们的照片和相册。我们可以在PC端或者安卓端以及iphone上进行浏览和同步。

2、要求

下面这些是必须需要提前准备好的:

  • 树莓派4B 以及安装好Raspberry Pi OS 这个不在本教程之内
  • 树莓派4B的终端,这个一般安装好树莓派OS就会有,但是最好打开SSH连接,远程操作,一般树莓派也就是当作一个服务器
  • 3、配置树莓派4B作为一个WEB 服务器

    3.1 确认 Raspberry Pi 4 OS 是最新的

    在执行该命令之前,若是中国大陆用户需要将apt源更换,具体更换流程: 如何更换树莓派OS软件源

    1
    
    sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
    

    3.2 安装WEB服务 (Apache)

    我们知道web服务有很多选择,例如nginx apache,我们这里选择Apache

    1
    
    sudo apt install apache2 -y
    

    等待终端打印字符结束,可以打开本地树莓派ip地址,看到以下网页显示即安装成功 Apache2-start-page.webp

    3.3 安装PHP相关依赖

    1
    
    sudo apt install php-imagick php-gd ffmpeg php-mbstring php-xml -y
    

    3.4 安装数据库

    我们使用MariaDB 代替Mysql, MariaDB是Mysql的一个子分支,但是更小更轻便

    1、输入以下代码安装mariadb

    1
    
    sudo apt install mariadb-server php-mysql -y
    

    2、等待安装完成之后,输入以下命令配置数据库相关信息及环境变量

    1
    
    sudo mysql_secure_installation
    

    执完命令之后,终端将会显示如下 Raspberry-Pi-4-Securing-MariaDB-database-environment.webp

    3、依次回答终端上显示的问题如下:

  • As no password has been set yet press enter.
  • Switch to unix_socket authentication [Y/n] –> n
  • Change the root password? [Y/n] –> Y
  • New password: –> type your new root password Make sure you remember/store is for example with the Keepass password manager.
  • Re-enter new password: –> type again your new root password
  • Remove anonymous users? [Y/n] –> Y Info displayed in Terminal window: By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
  • Disallow root login remotely? [Y/n] –> Y Info displayed in Terminal window: Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.
  • Remove test database and access to it? [Y/n] –> Y Info displayed in Terminal window: By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
  • Reload privilege tables now? [Y/n] –> Y Info displayed in Terminal window: Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
  • 4、为了更好的管理我们的数据库我们安装一个phpMyAdmin

    1
    
    sudo apt install phpmyadmin -y
    

    Pasted-2.webp

    5、在终端显示的设置中,我们进行以下设置: a、使用空格键选择apache2(选择到后会显示一个*号),然后我们使用TAB键选择OK,ENTER,继续下一步: b、选择yes to configure the database for phpmyadmin with dbconfig-common.

    Pasted-3.webp

    c、下一个终端显示的配置中,配置我们数据库用户phpmyadmin的密码 Pasted-4.webp

    6、给予 phpMyAdmin 用户权限 a、使用root用户登录 MariaDB

    1
    
    sudo mysql -uroot -p
    

    给予权限

    1
    2
    3
    
    grant all privileges on *.* to 'phpmyadmin'@'localhost';
    flush privileges;
    quit
    

    7、重启树莓派

    1
    
    sudo reboot
    

    8、打开树莓派对应局域网ip:for example http://192.168.2.148/phpmyadmin, 可以见到以下页面 Pasted-5.png

    9、使用 phpmyadmin作为用户名,密码为刚刚设置的密码进行登录

    4、安装Piwigo

    在安装PiWiGo之前,数据库需要初始化,新建库表等操作

    4.1 设置数据库

    1、以root用户名登录数据库

    1
    
    sudo mariadb -u root
    

    2、创建数据库 piwigo_13_dev, 你可以用你喜欢的名称

    1
    
    create database piwigo_13_dev;
    

    3、将 Piwigo 数据库的所有权限授予您将在后续步骤中在 Piwigo 中配置的用户(带密码)

    1
    2
    
    
    grant all privileges on piwigo_13_dev.* to piwigo_13_dev_user@localhost identified by '********';
    

    4、刷新权限表以使更改生效,然后退出

    1
    2
    
    flush privileges;
    exit;
    

    4.2 安装Piwigo

    我们使用手动方法来安装Piwigo。

    1、直接在树莓派中下载安装包并解压

    1
    2
    
    curl http://piwigo.org/download/dlcounter.php?code=latest -o piwigo.zip
    unzip piwigo.zip
    

    2、现在必须将包含解压缩的 Piwigo 文件的文件夹的内容移至 Apache 公共文件夹中。将“PIWIGO”文件夹替换为您喜欢的名称(小写),记住在 URL 和以下命令中都使用您的文件夹名称:

    1
    2
    
    sudo mkdir /var/www/html/PIWIGO
    sudo mv piwigo/{.,}* /var/www/html/PIWIGO/
    

    就我而言,我使用了

    1
    2
    
    sudo mkdir /var/www/html/piwigo13dev
    sudo mv piwigo/{.,}* /var/www/html/piwigo13dev/
    

    move命令mv会给出警告,;设备或资源繁忙,无法移动…等, 可以忽略,我们可以直接到目标文件夹中查看,发现已经全部移动过去了

    3、为公共文件夹分配正确的权限,以便 Piwigo 安装程序能够执行其任务:

    1
    
    sudo chown -R www-data:www-data /var/www/html/
    

    4、删除用于解压 piwigo 文件的文件夹

    1
    
    rmdir piwigo/
    

    5、我们现在使用浏览器来完成安装步骤。输入您的 Raspberry PI 的 IP 地址作为 URL,后跟步骤 2 中使用的“piwigo”文件夹名称。所以在我的例子中,它变成 http://192.168.2.148/piwigo13dev 将显示 Piwigo 安装页面。 Pasted-7.webp

    6、添加您的数据库名称、数据库用户和数据库用户密码。将主机变量设置为“localhost”。

    7、选择 piwigo 管理员用户名、密码和电子邮件地址。这些将是您用来访问网络仪表板的。就我而言,我输入了以下内容:

    Pasted-8.webp 8、单击“开始安装”。

    5、安装成功后的一些设置

    微信图片_20240218230050.png

    通过照片管理可以进行添加照片等操作,相册管理可以进行相册的增加与删除修改。可以下载相应的APP与该服务端进行交互,设置同步相册可以进行定时同步操作.

    在实际使用中我也遇到了一些问题,比如在ios端设置自动同步相册的时候,不能选择多久同步一次,但是在安卓端就有这个功能,然后在IOS端和安卓端都不能设置多个相册同步,只能选择单个相册同步,在这个项目的issue里好像也没有看到有人吐槽过这个问题,不过这些问题都不属于bug,吐槽了作者估计也不会搭理,后续看看有时间自己fork过来改进一下…

    微信图片_20240221224942.jpg

    微信图片_20240221224933.png

    自动上传这块可设置的东西太少了! 微信图片_20240221224939.png

    6、参考文章:

    1、 How to install Piwigo on a Raspberry Pi 4?
    2、 How to Install and Use Piwigo on Your Raspberry Pi
    3、Piwigo and Raspberry PI: a Private Open Source Photo Management Platform