树莓派家庭服务器的搭建以 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 的安装,因此我们可以直接使用下面的指令验证一下是否安装:
如果没有安装的话,可以去官方的下载页面 下载对应的预编译包,然后进行安装即可。
1 2 3 4 5 6 wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz tar -zxvf sqlite-autoconf-3420000.tar.gzcd sqlite-autoconf-3420000 ./configure --prefix=/usr/local make make install
这里也提供使用 Docker-compose 安装的方式,但实际上看该数据库的特性,用 docker 安装的并不是推荐的选择。
参考资料:SQLite 3 Docker Compose – Mustafa Bugra 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 version: '3' services: sqlite3: container_name: sqlite3_container image: nouchka/sqlite3:latest stdin_open: true tty: true volumes: - path-to/your/databases/sqlite3:/root/db/ ports: - '9000:9000' restart: unless-stopped
如果是树莓派的 ARM64,可能需要使用另一个镜像 。
1 docker run --rm -it -v "$(pwd) :/workspace" -w /workspace keinos/sqlite3
但是该镜像的使用方式,实际上就是将其当成一个命令来用,所以还是建议本机安装。
redis 使用 docker-compose 拉取指定的镜像进行安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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"
设置对应的配置文件:
1 2 3 4 5 6 7 8 9 10 11 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 中测试远程连接是否正常:
1 2 3 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,启用服务,设置配置文件来完成基础设置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 便于局域网访问
1 2 3 4 5 6 7 8 9 [mysqld] user =mysqldefault-storage-engine =INNODBcharacter-set-server =utf8bind-address =0.0 .0.0 [client] default-character-set =utf8[mysql] default-character-set =utf8
启动服务后,进入 mysql 初始化用户密码(未设置密码前使用 mysql 命令)
初始化用户脚本,其中%为允许局域网,默认是 LocalHost,密码的引号不要删除。
1 ALTER USER 'root' @'%' IDENTIFIED WITH mysql_native_password BY 'Aa123456' ;
可以执行 show 查看当前所有的数据表,并通过 use 进入 mysql 表中,提升用户权限 ;
1 2 SHOW databases; USE mysql
具体提升权限的命令如下:
1 2 3 CREATE USER 'root' @'%' IDENTIFIED BY 'PASSWORD' ;GRANT ALL PRIVILEGES ON * .* TO 'root' @'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
完成后可以通过 mysql 表中查看各用户的权限是否正确
1 SELECT host, user ,authentication_string FROM user ;
配置完成后即可在局域网内测试远程连接:
1 mysql -u root -ppassword -h 192.168.31.108 -P 29006
这里需要注意的是-p 和密码之间不要有空格,否则可能会提示你在输入一次密码,并表示数据表不存在。
树莓派性能检测 除了 Docker 的一系列应用之外,这里推荐移动端/mac 端的应用 ServerCat 来对 SSH 终端和 Linux 来进行性能监控,该监控无论是可视化还是连接各方面都做的十分完备。推荐。