树莓派家庭服务器的搭建以 docker 为核心,通过 docker 统一管理家庭服务,目前搭建的服务还在持续完善中,主要目的是为了方便日常使用、满足学习和探索的需求。
Docker 的安装这里不再赘述,参考 Docker Configuration01 Install on Linux 一文进行安装即可;本篇主要侧重于介绍部署的镜像和服务,以及简单介绍使用方式。
一些 Docker 容器推荐
这里推荐一些 Docker 容器:Alist、XiaoYa、PiDashboard、redis、mysql、portainer、memos、wikijs
相关的 Docker-Compose 文件会上传到AikenH/aikenh-DockerComposeYML (github.com)
数据库部署与远程连接测试
sqlite 3
Sqlite 与 Mysql 等不同,是一个无服务器、零配置的数据库,其更像是一个解析特定数据库文件的命令接口(CLI 工具),其将数据完全存储于一个单一的跨平台磁盘文件中;
由于 sqlite3 的特性,决定了其是一个轻量级且不需要额外配置的数据库,但是在远程访问方面,只能通过文件共享来实现远程操作数据库。
大多数的 Linux 系统版本都会附带 SQLite 的安装,因此我们可以直接使用下面的指令验证一下是否安装:
sqlite3
如果没有安装的话,可以去官方的下载页面 下载对应的预编译包,然后进行安装即可。
wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz
tar -zxvf sqlite-autoconf-3420000.tar.gz
cd sqlite-autoconf-3420000
./configure --prefix=/usr/local
make
make install
这里也提供使用 Docker-compose 安装的方式,但实际上看该数据库的特性,用 docker 安装的并不是推荐的选择。
参考资料:SQLite 3 Docker Compose – Mustafa Bugra 。
version: '3'
services:
sqlite3:
container_name: sqlite3_container
image: nouchka/sqlite3:latest
stdin_open: true
tty: true
volumes:
#Modify following line
- path-to/your/databases/sqlite3:/root/db/
ports:
- '9000:9000' # expose ports - HOST:CONTAINER
restart: unless-stopped
如果是树莓派的 ARM64,可能需要使用另一个镜像 。
docker run --rm -it -v "$(pwd):/workspace" -w /workspace keinos/sqlite3
但是该镜像的使用方式,实际上就是将其当成一个命令来用,所以还是建议本机安装。
redis
使用 docker-compose 拉取指定的镜像进行安装:
version: '3.9'
services:
redis:
image: redis:6.2.5
container_name: docker_redis
privileged: true
volumes:
- ./data:/data
- ./conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./logs:/logs
command: ["redis-server","/usr/local/etc/redis/redis.conf"]
ports:
- 29005:6379
environment:
- TZ="Asia/Shanghai"
设置对应的配置文件:
bind 0.0.0.0
# Allow Lan should be 0,0,0,0
# requirepass 123456
# need password or not
port 6379
timeout 0
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data
logfile "redis.log"
这里为了方便远程连接,不设置密码,同时将 bind 设置为 0.0.0.0 允许局域网访问。
在 Python 中测试远程连接是否正常:
import redis
r = redis.Redis(host="192.168.31.111", port=1234, decode_resonses=True)
r.set("key", "balue")
mysql
参考文献:docker-compose 安装mysql - 掘金 (juejin.cn) | 配置MySQL 远程连接 | myfreax
使用 Docker-Compose 安装 mysql 的 docker,启用服务,设置配置文件来完成基础设置。
version: "3.3"
services:
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_USER: 'extra-user'
MYSQL_PASS: "extra-password"
restart: unless-stopped
volumes:
- ./data:/var/lib/mysql
- ./config/my.cnf:/etc/my.cnf
- ./init:/docker-entrypoint-initdb.d/
ports:
- '29006:3306'
随便设置一个基础配置文件如下,将 Bind 地址改为 0.0.0.0 便于局域网访问
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
bind-address=0.0.0.0
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
启动服务后,进入 mysql 初始化用户密码(未设置密码前使用 mysql 命令)
mysql
# mysql -u root -p
初始化用户脚本,其中%为允许局域网,默认是 LocalHost,密码的引号不要删除。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Aa123456';
可以执行 show 查看当前所有的数据表,并通过 use 进入 mysql 表中,提升用户权限 ;
SHOW databases;
USE mysql
具体提升权限的命令如下:
CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
完成后可以通过 mysql 表中查看各用户的权限是否正确
SELECT host, user,authentication_string FROM user;
配置完成后即可在局域网内测试远程连接:
mysql -u root -ppassword -h 192.168.31.108 -P 29006
这里需要注意的是-p 和密码之间不要有空格,否则可能会提示你在输入一次密码,并表示数据表不存在。
树莓派性能检测
除了 Docker 的一系列应用之外,这里推荐移动端/mac 端的应用 ServerCat 来对 SSH 终端和 Linux 来进行性能监控,该监控无论是可视化还是连接各方面都做的十分完备。推荐。