树莓派4B使用

Article Directory
  1. 1. 在macOS系统下烧录树莓派系统到sd卡
  2. 2. 修改hostname
  3. 3. 更改Wi-Fi密码
  4. 4. 安装docker
  5. 5. 一、小项目:树莓派alist+infuse,搭建阿里云盘分享(非自己的阿里云盘,其他的也行)
    1. 5.1. 1 树莓派docker搭建alist
      1. 5.1.1. 更新镜像
    2. 5.2. 2 然后添加资源库(目前操作已更改,见上面官网)
    3. 5.3. 3 电脑或者手机上infuse挂载
    4. 5.4. 4 易搜来搜索阿里云盘分享的各种资源
  6. 6. 二、小项目:(不推荐)树莓派+infuse,搭建自己的阿里云盘的影视库
    1. 6.1. 1 登陆树莓派,docker安装阿里云driver-wevdav
    2. 6.2. 2 infuse挂载
  7. 7. 基于树莓派4B构建支持透明代理的辅助路由器
    1. 7.1. clash 「yaml文件」配置文件下载方法
  8. 8. 使用官网烧录器,进行烧录
  9. 9. 修改密码
  10. 10. 登陆
  11. 11. 更换清华源,成功
  12. 12. 安装vim,需要先更换源
  13. 13. 安装中文字体库和中文输入法,未
  14. 14. 更换apt源码,未,成功的见上面
  15. 15. 230421,重新烧录,还是树莓派基于Debian版本。
  16. 16. 230420未换源,直接指令就行。
  17. 17. 树莓派alist+infuse,搭建阿里云盘分享(非自己的阿里云盘,其他的也行)(见上)
  18. 18. 树莓派+infuse,搭建自己的阿里云盘的影视库(见上)
  19. 19. 三、小项目:搭建DLAN
  20. 20. 四、小项目:搭建Samba
  21. 21. 五、ibeacon
    1. 21.1. 然后制作开机启动
  22. 22. 六、小项目:MQTT
  23. 23. 七、小项目:搭建owncloud私有云
  24. 24. 八、小项目:内网穿透
  25. 25. 九、小项目:OpenVpn
  26. 26. 树莓派,设置开机自启程序
  27. 27. 精华!Docker 常用命令大全
  28. 28. Docker换源

以下记录我的树莓派4B使用过程

在macOS系统下烧录树莓派系统到sd卡

Raspbian - 基于macOS烧录树莓派4系统

官网下载,macOS系统的镜像烧录软件,然后烧录到sd卡即可,不需要用上面的网址

用户名dinosaur、密码(六个星号)、wifi密码等等,在使用烧录软件的时候就能够设置的。

修改hostname

修改树莓派的hostname,省去了使用ip查找的麻烦

查看 hostname

1、修改 sudo nano /etc/hostname,dinosaur-pi4b1

2、然后修改 sudo nano /etc/hosts,127.0.0.1 dinosaur-pi4b1

使用ssh连接可以:ssh dinosaur@dinosaur-pi4b1.local

更改Wi-Fi密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 扫描Wi-Fi
sudo iwlist wlan0 scan

wpa_passphrase "TP-LINK_9A27" "***********"

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
# 然后可以将生成的以ASCII码显示的psk复制下来。

# 去该文件下面增加Wi-Fi信息
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

network={
ssid="TP-LINK_9A27"
#psk=""***********""
psk=****************************************
priority=1
}

安装docker

1
2
3
4
5
sudo curl -sSL https://get.docker.com | sh

sudo systemctl enable docker

sudo systemctl start docker

一、小项目:树莓派alist+infuse,搭建阿里云盘分享(非自己的阿里云盘,其他的也行)

更新,现在这个貌似不能使用阿里云网盘分享的了,必须得知道有refreshtoken的。阿里云Open,然后得到自己的网盘的token。

1 树莓派docker搭建alist

alist官网

alist-org/alist

alist官网,使用 Docker安装alist

alist官网,添加存储阿里云盘 Open(注意以前的方式不能获取token了)

token也可以用这个?

解决 alist 报错 can’t find storage with rawPath: /

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest


sudo docker run -d --restart=always \
-v /etc/alist:/opt/alist/data \
-p 5244:5244 \
--name="alist" xhofe/alist:latest \
--registry-mirror=https://docker.mirrors.ustc.edu.cn

# 查看管理员信息,得到账号密码
sudo docker exec -it alist ./alist admin
# username: dinosaur(这是我修改后的)
# password: ******(这是我修改后的)

# 然后通过 http://dinosaur-pi4b1.local:5244 访问

更新镜像

Docker更新容器镜像的三种方法

2023年5月3号,alist已经更新了,获取refreshtoken的方式变了,需要更新image才能重新使用。

先停止之前的容器,并且删除。

然后拉取新的镜像,并且运行即可。因为此处的数据我是映射出来的,所以不需要干啥,是在有需要的话,可以备份一下。

1
2
3
4
5
6
7
8
9
sudo docker stop 475045bb196a
sudo docker rm 475045bb196a
sudo docker rmi xhofe/alist

sudo docker run -d --restart=always \
-v /etc/alist:/opt/alist/data \
-p 5244:5244 \
-e PUID=0 -e PGID=0 -e UMASK=022 \
--name="alist" xhofe/alist:latest

2 然后添加资源库(目前操作已更改,见上面官网)

注:现在已经推荐使用阿里云Open了,貌似分享不行了。

添加资源库步骤

上面的token,去alist官网里面找到添加存储,阿里网盘,然后获取。

3 电脑或者手机上infuse挂载

注意,ip,name和password

然后路径**/dav**(注意这个路径,不写的话会出错的),端口5244

nDRGbl

4 易搜来搜索阿里云盘分享的各种资源

易搜网址

二、小项目:(不推荐)树莓派+infuse,搭建自己的阿里云盘的影视库

个人觉得这个其实不用做,因为在项目一里面找到自己的文件夹,然后添加就行了。

确实感觉这个没必要,而且现在项目一毛四不能用分享的了,只能用自己的了。

docker部署aliyundrive-webdav实现阿里云盘WebDAV服务

群晖/极空间Docker挂载阿里云盘到本地infuse教程

messense/aliyundrive-webdav

1 登陆树莓派,docker安装阿里云driver-wevdav

注意里面的REFRESH_TOKEN,可能会每隔一段时间更新,所以每一次新的需要去获取。

然后的话,在web上面获取token的方法已经失效了,需要用别的方法。比如:通过在线工具获取 refresh token

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 1
ssh dinosaur@dinosaur-pi4b1.local


# 2
# --name=aliyundrive-webdav 设置容器的名字为:aliyundrive-webdav
# messense/aliyundrive-webdav 设置拉取的镜像名称,不设置版本的话默认是最新版本,指定版本
# 如:messense/aliyundrive-webdav:1.2.5
# 左边是宿主机的,右边是容器的,容器的默认路径就是/etc/aliyundrive-webdav/,端口事8080,我映射到了8888
# 宿主机的存储目录:用户目录/docker/aliyundrive-webdav/

# 参数信息放在里面了,里面的六个星号是我的密码,REFRESH_TOKEN是网页登陆可以自己的阿里云盘,F12去找的

sudo docker run -d \
--name=aliyundrive-webdav \
--restart=always \
-p 8888:8080 \
-v $PWD/docker/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
-e REFRESH_TOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjZjNhNWY3YzhlYjE0YmFjYmE1OTgwNDE3ZjJkZDA4NiIsImF1ZCI6IjczZTYxMTgzMWE3YzRkODdhYzQ5Yzg0ODFiZjlmMmM0IiwiZXhwIjoxNjg5OTM0MTIzLCJpYXQiOjE2ODIxNTgxMjN9.j099OkQTZ08q0Q8Q-N-oaE2P6oNtwJ-JcMA44py_b86g_9KTpkN06O9KgAL1t5sPCp3gVOCyuCV-bwhPM3i1Mw' \
-e WEBDAV_AUTH_USER=dinosaur \
-e WEBDAV_AUTH_PASSWORD=971707 \
messense/aliyundrive-webdav \
--registry-mirror=https://docker.mirrors.ustc.edu.cn


# 3,可以进入 http://dinosaur-pi4b1.local:8888 ,然后输入账号密码查看

2 infuse挂载

CXdqjU

基于树莓派4B构建支持透明代理的辅助路由器

Docker+Clash 部署透明“网关”的实现

通过 Docker 做 Clash 跳板,架起梯子代理服务

clash 的 Docker 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ssh dinosaur@dinosaur-pi4b1.local

sudo docker pull dreamacro/clash-premium:latest

# 然后使用了下面的方法拿到的yaml配置文件
# 然后external-controller: '0.0.0.0:9090',做修改
# 然后放到了树莓派里面

sudo chmod 777 /home/dinosaur/docker/clash
#自己电脑上
scp /Users/dinosaur/Downloads/xiaohuojian.yaml dinosaur@dinosaur-pi4b1.local:/home/dinosaur/docker/clash

sudo docker run -d --name=clash -v "/home/dinosaur/docker/clash/xiaohuojian.yaml:/root/.config/clash/config.yaml" -p "10808:10808" -p "9090:9090" --restart=always dreamacro/clash-premium


# 先访问:http://yacd.haishan.me/
# 再输入:http://dinosaur-pi4b1.local:9090 来访问

clash 「yaml文件」配置文件下载方法

获取yaml配置文件,小火箭官网拿到的订阅地址后面加上&flag=clash,放入浏览器,然后下载下来一个文件,改后缀为.yaml即可

树莓派3B

23-0420:重复的不再记录。

使用官网烧录器,进行烧录

烧录之后,文件如下:

1
2
3
4
5
6
7
8
9
10
# cat /etc/hostname
dinosaur-pi3b1

# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

127.0.1.1 dinosaur-pi3b1

修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
wpa_cli -i wlan0 scan              # 扫描附近热点
wpa_cli -i wlan0 scan_result # 打印热点信息

# sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
# priority的数值越高,则表示优先级越高。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

#network={
# ssid="WSN333"
# psk=b3f835bced3aff6a75127440586503973db949630c4cf874985dd24709cfe9df
#}

network={
ssid="WSN333_2.4G"
psk="Wsn333&Wsn333"
key_mgmt=WPA-PSK
priority=7
}
network={
ssid="vivo iQOO"
psk="88888888"
key_mgmt=WPA-PSK
priority=5
}

network={
ssid="jcwang_iPhone12"
psk="22334567"
key_mgmt=WPA-PSK
priority=9
}
network={
ssid="Thunder"
psk="***********"
priority=8
}
network={
ssid="1001717"
psk="***********"
priority=8
}
network={
ssid="1001717_5G"
psk="***********"
priority=6
}

登陆

1
2
ssh dinosaur@dinosaur-pi3b1.local
******

更换清华源,成功

树莓派换源最新教程及注意事项(更换为清华源)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

1、使用 lsb_release -a 命令查看树莓派的版本,使用 uname -m 查看树莓派的架构。
基于debian 11的bullseye版本,为aarch64架构,此时打开树莓派清华源的教程,找到对应的版本和换源教程。

2、有了清华源的教程,我们使用一下命令进入Raspbian源。
sudo nano /etc/apt/sources.list

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

3、使用以下命令进入树莓派基金会维护软件的源。
sudo nano /etc/apt/sources.list.d/raspi.list
# 对于两个架构,编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main

4、最后使用以下两个命令更新一下数据,不出现报错恭喜换源成功。
sudo apt-get update
sudo apt-get upgrade

# 个人建议可以先把树莓派官方的给加#注释掉,以免改错还能原封不动改回来。

基于debian 11的bullseye版本,为aarch64架构,此时打开树莓派清华源的教程,找到对应的版本和换源教程。

安装vim,需要先更换源

1
sudo apt-get install vim

安装中文字体库和中文输入法,未

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo apt-get install ttf-wqy-zenhei # 安装中文字体库
sudo fc-cache # 刷新字体库缓存

sudo raspi-config 或者 sudo dpkg-reconfigure locales

en-GB.UTF-8 UTF-8
zh_CN.GB2312
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

zh_CN.UTF-8 UTF-8

sudo apt-get install scim-pinyin # 安装中文输入法

sudo reboot

更换apt源码,未,成功的见上面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
清华源,网址:https://mirrors.tuna.tsinghua.edu.cn/help/debian/
unama -a
lsb_release -a
lsb_release -si

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

sudo nano /etc/apt/sources.list


# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

# deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# # deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free


sudo apt update

230421,重新烧录,还是树莓派基于Debian版本。

因为安装docker时说curl的cer有问题。解决不了,所以想着直接装一个ubuntu版本。

Docker-从入门到实践

下面所有的原因还是实验室的网有问题,感觉直接指令就是能装好的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
curl: (60) SSL certificate problem: certificate is not yet valid
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.


sudo curl -k -sSL https://get.docker.com | sh




dinosaur@dinosaur-pi3b1:~ $ sudo curl -k -sSL https://get.docker.com | sh
# Executing docker install script, commit: a8a6b338bdfedd7ddefb96fe3e7fe7d4036d945a
+ sudo -E sh -c apt-get update -qq >/dev/null
E: Release file for http://raspbian.raspberrypi.org/raspbian/dists/bullseye/InRelease is not valid yet (invalid for another 59d 2h 54min 40s). Updates for this repository will not be applied.
E: Release file for http://archive.raspberrypi.org/debian/dists/bullseye/InRelease is not valid yet (invalid for another 58d 12h 47min 45s). Updates for this repository will not be applied.


# 说什么证书没有验证,等等问题,是时间不一样导致的。时间不一样可以修改时间,也可以用下面的工具。
# https://stackoverflow.com/questions/21181231/server-certificate-verification-failed-cafile-etc-ssl-certs-ca-certificates-c
# https://forums.raspberrypi.com/viewtopic.php?t=245121
apt-get install ntp

sudo systemctl enable docker
sudo systemctl start docker

230420未换源,直接指令就行。

DaoCloud

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 貌似换了没啥用,还不如最后指令后面加   --registry-mirror=https://docker.mirrors.ustc.edu.cn ?
sudo curl -k -sSL https://get.docker.com | sh

sudo systemctl enable docker
sudo systemctl start docker

# 给docker更换阿里云源,https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
# 好吧,不换源,直接指令后面加 --registry-mirror=https://docker.mirrors.ustc.edu.cn更快。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://b4kotewg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

sudo docker info

树莓派alist+infuse,搭建阿里云盘分享(非自己的阿里云盘,其他的也行)(见上)

树莓派+infuse,搭建自己的阿里云盘的影视库(见上)

三、小项目:搭建DLAN

djdefi/rpi-docker-minidlna

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d --net=host -v <media dir on host>:/media \
-e MINIDLNA_MEDIA_DIR=/media \
-e MINIDLNA_LISTENING_IP=192.168.0.5 \
-e MINIDLNA_PORT=8200 \
-e MINIDLNA_FRIENDLY_NAME=callisto \
djdefi/rpi-minidlna

sudo docker run -d --net=host -v /home/dinosaur/SharingDir/my-minidlan:/media \
-e MINIDLNA_MEDIA_DIR=/media \
-e MINIDLNA_LISTENING_IP=dinosaur-pi3b1.local \
-e MINIDLNA_PORT=8200 \
-e MINIDLNA_FRIENDLY_NAME=my-minidlan \
--restart=always \
djdefi/rpi-minidlna

fmartingr/minidlna-arm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 请注意名字,是dlna,我文件夹创的dlan了。
# 上面这个比较慢,没成功
# 下面这个成功了。
docker run -d --name minidlna \
--net host \
-v /mnt/EXTERNALHDD:/mymedia \
-e "MINIDLNA_FRIENDLY_NAME=My DLNA server" \
-e "MINIDLNA_MEDIA_DIR=V,/mymedia" \
-e "MINIDLNA_ROOT_CONTAINER=B" \
fmartingr/minidlna-arm

sudo docker run -d --name minidlna \
--net host \
-v /home/dinosaur/SharingDir/my-minidlan:/mymedia \
--restart=always \
-e "MINIDLNA_FRIENDLY_NAME=My DLNA server" \
-e "MINIDLNA_MEDIA_DIR=V,/mymedia" \
-e "MINIDLNA_ROOT_CONTAINER=B" \
fmartingr/minidlna-arm

使用infuse软件,点击添加共享,会自动跳出如下。

注:其他app,比如xfangfang/**Macast**,是可以将手机流投屏的mac。会出现在menubar中使用,然后高级设置,可以安装插件。

四、小项目:搭建Samba

trnape/rpi-samba

rpi-samba

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
docker run -d -p <docker_host_ip>:445:445 \
-v /mnt/data:/share/data \
-v /mnt/backups:/share/backups \
--name <container name> trnape/rpi-samba \
-u "alice:abc123" \
-u "bob:secret" \
-u "guest:guest" \
-s "Backup directory:/share/backups:rw:alice,bob" \
-s "Alice (private):/share/data/alice:rw:alice" \
-s "Bob (private):/share/data/bob:rw:bob" \
-s "Documents (readonly):/share/data/documents:ro:guest,alice,bob"

sudo docker run -d -p 445:445 \
-v /home/dinosaur/SharingDir/my-minidlan:/share/data \
-v /home/dinosaur/SharingDir/my-minidlan-backups:/share/backups \
--restart=always \
--name my-samba trnape/rpi-samba \
-u "dinosaur:971707" \
-u "user2:22334567" \
-u "guest:guest" \
-s "Backup directory:/share/backups:rw:dinosaur,user2" \
-s "Dinosaur (private):/share/data:rw:dinosaur" \
-s "User2 (private):/share/data:rw:user2"

# 如果上面有文件,会报错
# chown: cannot access '/share/data/dinosaur': No such file or directory
# chown: cannot access '/share/data/documents': No such file or directory

# This example will bind smbd to docker host ip address and mount two directories on docker host to container. Three users will be created and given various access to four shares.

五、ibeacon

树莓派学习 23. 树霉派启用蓝牙Beacon

树莓派上的蓝牙协议

Setting up Raspberry Pi 3+ to transmit iBeacon signals

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo hciconfig hci0 up

# 树莓派作为Beacon设备
# 把配备了蓝牙模块的树莓派改造成一个Beacon设备。

# step 1:既然Beacon只使用了蓝牙中的广播,那么应该关闭树莓派的扫描,打开广播,并且不接受蓝牙连接:
sudo hciconfig hci0 noscan # 不再扫描
sudo hciconfig hci0 leadv 3 # 开始广播,并且不接受连接

# 下一步,把广播信息改为符合iBeacon协议的内容:
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 00 00 00 C8 00

# 0x08 (OGF) 表示蓝牙命令
# 0x0008 (OCF)广播数据
# 1E 整个payload长度
# 02下一节的长度
# 01数据类型
# 4C 00代表是苹果的产品
# 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 is the visible proximity UUID
# 00 00 00 00 : the doubled zero-pairs from the left represent your Major and Minor values respectively.
# Those are specific variables assigned arbitrarily in order to maintain your devices’ uniqueness.
# C8 00: RSSI power and Tx Power.

# step 2:在iPhone上安装应用Locate Beacon、Owntracks APP来测试。当我进入到树莓派的广播范围时,该应用就会显示出手机距离树莓派的距离。

# 但是感觉树莓派的这个非常不稳定。
1
2
3
4
5
6
hciconfig -h

hciconfig -a # 查看当前所有蓝牙
hciconfig -a hci0

hcitool dev

然后制作开机启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
mkdir /home/dinosaur/my_auto_start_script

sudo nano /home/dinosaur/my_auto_start_script/my_ibeacon.sh
# 下面是写在文档里面的
#!/bin/bash

sudo hciconfig hci0 up
sudo hciconfig hci0 noscan
sudo hciconfig hci0 leadv 3
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 00 00 00 C8 00


sudo nano /usr/lib/systemd/system/my_ibeacon.service
# 下面是写在文档里面的,下面的ExecStartPre=/bin/sleep 20一定要加,否则会No Such Device。
[Unit]
Description=My iBeacon
[Service]
# Type=oneshot
Type=Simple
ExecStartPre=/bin/sleep 20
ExecStart=/home/dinosaur/my_auto_start_script/my_ibeacon.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target

sudo chmod 777 /home/dinosaur/my_auto_start_script/my_ibeacon.sh
ls -l /home/dinosaur/my_auto_start_script/my_ibeacon.sh

# 设置开机自动启动
sudo systemctl enable my_ibeacon.service
# 查看状态
systemctl status my_ibeacon.service
# 查看启动日志
journalctl -u my_ibeacon.service

dburr/**linux-ibeacon**,通过python实现ibeacon

SwiftUI Tutorial: Build an iBeacon detector with object binding and custom modifiers

下面是XCode针对上面的,发送,特定的

1
2
3
let uuid = UUID(uuidString: "636F3F8F-6491-4BEE-95F7-D8CC64A863B5")!
let constraint = CLBeaconIdentityConstraint(uuid: uuid, major: 1234, minor: 5678)
let beaconRegion = CLBeaconRegion(beaconIdentityConstraint: constraint, identifier: "MyBeacon")

六、小项目:MQTT

树莓派系列(十四) 树莓派4B安装 docker并配置为 MQTT服务器

七、小项目:搭建owncloud私有云

树莓派使用docker搭建owncloud私有云–外挂硬盘

1
2
3
4
5
6
7
8
9
 sudo docker run -p 8080:80 -d \
-v /home/dinosaur/SharingDir/my-minidlan:/var/www/html/data \
--restart=always \
owncloud

# dinosaur-pi3b1.local:8888
# 第一次访问会让创建管理员账号,以及设置数据位置,默认为/var/www/html/data 即可,为docker环境中owncloud的目录,此时“/var/www/html/data”已被映射到了“/home/dinosaur/SharingDir/my-minidlan”当中,所有上传的文件都在硬盘下的owncloud目录下

# 然后我创建了dinosaur账号密码后,文件被放在/home/dinosaur/SharingDir/my-minidlan/dinosaur/files下面。

八、小项目:内网穿透

使用Docker搭建NPS内网穿透

ehang-io/nps

nps客户端下载地址

nps官方

ffdfgdfg/nps,服务端

ffdfgdfg/npc,客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
--restart=unless-stopped
# 打开的端口,18080(服务端界面),8024(brage_port?),10001-10010(应用)
# nps server, npc client。


# 服务器,43.142.73.10。
# 下载github上conf下的所有文件
# 上传
scp /Users/dinosaur/Downloads/conf.zip ubuntu@43.142.73.10:/home/ubuntu/nps

ssh ubuntu@43.142.73.10

# 解压,修改nps.conf文件中的端口和账号密码
unzip conf.zip
vim /home/ubuntu/nps/conf/nps.conf

web_username=dinosaur
web_password=971707
web_port = 18080

sudo docker run -d --name=nps \
--restart=always \
--net=host \
-v /home/ubuntu/nps/conf:/conf \
ffdfgdfg/nps

# 访问:43.142.73.10:18080
# 另外,在腾讯云开放了10001-10010端口,供内网穿透。

# 然后首先在腾讯云服务端的界面上,客户端->新增一个dinosaur-pi3b1这个客户端,得到需要在服务端执行的命令。
./npc -server=43.142.73.10:8024 -vkey=vkf5qbos4eo9cap9 -type=tcp
./npc install -server=43.142.73.10:8024 -vkey=vkf5qbos4eo9cap9 -type=tcp # 后台运行
npc start
npc stop
./npc uninstall -server=43.142.73.10:8024 -vkey=vkf5qbos4eo9cap9 -type=tcp# 卸载


# 服务端,添加TCP隧道。见下面图片。

######################################*######################################
# 该客户端是树莓派3b
# 然后客户端也用docker,执行命令。
# dir /home/dinosaur/npc

# 下载相应conf文件,上传。
# /Users/dinosaur/Downloads/conf.zip dinosaur@dinosaur-pi3b1.local:/home/dinosaur/npc

# 修改
# /home/dinosaur/nps
# tar -zxvf linux_arm64_client.tar.gz
# zip conf.zip

# 用配置文件
sudo docker run -d --name npc --net=host -v /home/dinosaur/npc/conf:/conf ffdfgdfg/npc -config=/home/dinosaur/npc/conf/npc.conf

# 客户端可以不用配置文件,直接用下面的指令即可。
sudo docker run -d \
--restart=always \
--name npc \
--net=host ffdfgdfg/npc \
-server=43.142.73.10:8024 \
-vkey=vkf5qbos4eo9cap9 \
-type=tcp


# 然后tcp隧道建立。ssh连接的话,使用:ssh -p 10001 dinosaur@43.142.73.10。
# 然后tcp隧道建立。5244,阿里云其他网盘的分享,访问,http://43.142.73.10:10002。



######################################*######################################
# 上面是树莓派3b的,下面是树莓派4b的。
# 首先去43.142.73.10:18080添加客户端。
# ./npc -server=43.142.73.10:8024 -vkey=vltzdqqa5x5qgzpk -type=tcp

sudo docker run -d \
--restart=always \
--name npc \
--net=host ffdfgdfg/npc \
-server=43.142.73.10:8024 \
-vkey=vltzdqqa5x5qgzpk \
-type=tcp

# 然后tcp隧道建立。ssh连接的话,使用:ssh -p 10010 dinosaur@43.142.73.10。
# 然后tcp隧道建立。5244,阿里云其他网盘的分享,访问,http://43.142.73.10:10009。
######################################*######################################

Screenshot2023-05-03at17.12.39

Screenshot2023-04-25at14.42.47

Screenshot2023-05-03at23.38.57

九、小项目:OpenVpn

除了可以通过内网穿透远程访问内网的服务以外,还可以自己搭建一个VPN虚拟专用网络直接接入到内网的网络。

而且这个VPN,需要内网穿透一个端口来支持。

树莓派打造ALL IN ONE(10):Docker部署OpenVPN服务器访问内网

docker,giggio/openvpn-arm,用这个为准,下面那个star多的,不适配树莓派arm的

giggio/docker-openvpn-arm

docker, kylemanna/openvpn

kylemanna/docker-openvpn

OpenVpn官网

(注意,nps内网穿透udp貌似有问题,我全都改成tcp连接了。然后就成功了。nps的udp貌似确实转发有问题的(我查看了公网服务器的nps的logs,没有任何udp的)。)

Docker 学习笔记(六)– 容器数据卷

1
2
3
4
5
6
7
8
# 创建一个自定义容器卷
$ docker volume create [容器卷名] # 应该在/var/lib/docker/volumes下面?
# 查看所有容器卷
$ docker volume ls
# 查看指定容器卷详情信息
$ docker volume inspect [容器卷名]
# 删除自定义数据卷
$ docker volume rm [容器卷名] # sudo docker volume rm ovpn-data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
######################################*######################################
# 树莓派3b
① ssh -p 10001 dinosaur@43.142.73.10 ,nps内网穿透
② ssh dinosaur@dinosaur-pi3b1.local ,内网
③ ssh dinosaur@192.168.3.115 ,连接外面的网的时候。但是得挂上vpn,挂上vpn了之后也可以进入路由器管理界面查看一下当前的连接设备。注意用vpn的时候,貌似访问不了 dinosaur-pi3b1.local 。

# Step1:连上SSH,拉取镜像
OVPN_DATA="ovpn-data"

# Step2:初始化保存配置文件和证书的容器
sudo docker volume create --name $OVPN_DATA # 这个文件夹创建在哪里的?
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm giggio/openvpn-arm ovpn_genconfig -u tcp://dinosaur-pi3b1.local
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it giggio/openvpn-arm ovpn_initpki nopass # 其中,用户名 --- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:CLIENTNAME,然后有点慢。

# Step3:启动 OpenVPN 服务器进程,主要的是这个。
sudo docker run \
--restart=always \
-v $OVPN_DATA:/etc/openvpn \
-d --name openvpn -p 1194:1194/tcp \
--cap-add=NET_ADMIN \
giggio/openvpn-arm

# Step4:生成没有密码的客户端证书
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it giggio/openvpn-arm easyrsa build-client-full CLIENTNAME nopass

# Step5:使用嵌入式证书检索客户端配置
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm giggio/openvpn-arm ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

# Step6:然后在 43.142.73.10:18080 里面开一条隧道穿透给1194端口。

# Step7:客户端连接服务器,并且在官网下载macOS客户端。
# Step5执行完之后,会生成一个YOUR_CLIENTNAME.ovpn的文件在/home/dinosaur路径下,下载下来记事本。
# 里面的remote dinosaur-pi3b1.local 1194 tcp 是端口和远程地址,注意,我需要修改成内网穿透之后的公网IP,还有内网穿透端口
# remote 43.142.73.10 10008 tcp
cat /home/dinosaur/CLIENTNAME.ovpn # 下载保存下来。

# 导入 dinosaur.ovpn 这个配置


# 查看下容器状态
sudo docker logs -f 301097a9a409
sudo docker inspect 301097a9a409

######################################*######################################
# 树莓派4b
ssh -p 10010 dinosaur@43.142.73.10
ssh dinosaur@dinosaur-pi4b1.local

树莓派,设置开机自启程序

Raspberry开机启动方法

Linux配置service服务

服务重启命令_杂集:centos7中使用systemctl设置自定义服务,以tomcat为例

Linux系统service服务设置延时启动

1
sudo nano /usr/lib/systemd/system/my_ibeacon.service

docker

精华!Docker 常用命令大全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo docker ps
sudo docker ps -a
sudo docker stop
sudo docker rm

sudo docker images
sudo docker image ls
sudo docker rmi

sudo docker logs -f b7f36504647d


free -m

# 开机自动启动
--restart=always
# 刚启动的容器忘记加入开机自动启动了,用下面
sudo docker update --restart=always 容器id

Docker换源

Docker镜像站

阿里云Docker镜像加速器,有用

Author: Jcwang

Permalink: http://example.com/2022/12/19/%E6%A0%91%E8%8E%93%E6%B4%BE4B%E4%BD%BF%E7%94%A8/