閒置手機發揮餘熱:代替樹莓派,安裝HA(homeAssistant)

一個好土豆 發佈 2022-07-01T04:11:49.755814+00:00

本教程我已經在小米手機上調試幾遍了,也是我目前已知最 可靠、簡單 的方案。為成功下載安裝程序,手機里最好提前安裝VPN(比如GreenNet, 我可以免費提供)。沒有安裝VPN,則需要後面更改Docker 源。1.

本教程我已經在小米手機上調試幾遍了,也是我目前已知最 可靠、簡單 的方案。

為成功下載安裝程序,手機里最好提前安裝VPN(比如GreenNet, 我可以免費提供)。沒有安裝VPN,則需要後面更改Docker 源。

1. 下載 Alpine Term:(Alpine的中文是阿爾卑斯山,這裡是一種Linux系統)

為啥選它,因為它已經內置了docker, 而且,本身是Apk,手機上直接安裝,簡直太方便了。

網頁地址: https://github.com/FakeRajbhx/alpine-term/releases/tag/New

當前最新版的連結(578M):

https://link.zhihu.com/?target=https%3A//github.com/FakeRajbhx/alpine-term/releases/download/New/alpine-term-v16.0-release.apk

手機下載完成後,安裝它。

要求:

  • · Android 7.0+
  • · 至少2G 手機空間.
  • · 網絡

2. 登錄Alpine

安裝,打開,登錄系統,用戶 alpine 密碼: alpine
然後切換到
root帳戶,輸入sudo -s 密碼:alpine

如果您希望用SSH遠程手機,需要,本例程不需要遠程。

A. 修改root密碼, 輸入 passwd ,再輸入兩次新密碼,比如 123456。

B. 因為系統默認是禁止ssh密碼登錄的,如果需要,先開啟它,輸入:

sed -I s/PasswordAuthentication no/PasswordAuthentication yes/g』 /etc/ssh/sshd_config

如果還需要開機root用戶登錄的話,輸入下面一行

sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config

C. 然後重啟sshd服務,輸入 service sshd restart
重啟後,就配置好了。

D. 映射埠:見後面內容

3. 配置APK源和DNS(如果安裝了VPN,可以忽略這步,個人建議安裝VPN,因為換源步驟手工輸入太多,太麻煩裝上VPN反倒簡單。)

因為Alpine默認的都是國外的源和DNS,所以這裡都需要改成國內的。

更換為阿里雲的資源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

更換為114 的DNS,兩條都換

sed -i 's/nameserver 185.120.22.15/nameserver 223.5.5.5/g' /etc/resolv.conf

sed -i 's/nameserver 94.16.114.254/nameserver 119.29.29.29/g' /etc/resolv.conf

這樣網絡就正常可以使用了,接下來設置時區

setup-timezone

等待提示 Which timezone are you in? (『?』 for list) [UTC],然後輸入 Asia/Shanghai

修改完成後執行date查看時間,沒時差就Ok.

4. 手動運行Docker:

service docker start

註:因為手機不同,性能不同,加載Docker需要的時間可能很長,輸入後面步驟可能會提示錯誤,因此,可以多等一會,然後試試docker version,顯示版本號則表明啟動成功。

題外話:關於Docker 命令,常用的有:

列出所有正在運行的容器:docker container ls 或者 docker ps

5. 安裝 Home Assistant,後面簡稱HA

輸入命令: docker run -d --name="hass" -v /root/hass:/config -p 8123:8123 -e TZ="Asia/Shanghai" homeassistant/home-assistant

解釋一下命令的意思:

-d:表示在後台運行

–name:給容器設置別名(不然會隨機生成,為了方便管理)

-v:配置數據卷(容器內的數據直接映射到本地主機環境

-p:映射埠(容器內的埠直接映射到本地主機埠)

最後便是剛才下載的鏡像了。

這個過程可能很長,取決於網速和手機性能。需要耐心等待。有可能需要兩三個小時。

6. 啟動HA,

執行: docker ps

如果屏幕如下,最後一行看到了 hass, 則本步驟不執行,本步驟適用於後面重啟後手工執行

7. 開通埠映射:

屏幕左上角,手指右滑,調出上面菜單,選用箭頭處的QEMU:

輸入:

hostfwd_add tcp::8123-:8123 (用於瀏覽器打開HA)

hostfwd_add tcp::2222-:22 (用於SSH連接手機,不需要則不輸入)

8. 查看當前手機在區域網內的地址

通過手機的頂部下拉菜單,找到WIFI連接,查找本手機IP。

9. 登錄HA

  • 當前手機瀏覽器訪問 127.0.0.1:8123
  • 電腦或手機瀏覽器內輸入: IP:8123 (IP為你剛查到的IP),啟動可能需要一段時間才能打開, 請耐心等待。打開後界面如下,需要創建用戶名和密碼

10. 每次重啟後,需要重複下面的操作

  • 登錄到alpine用戶,帳號密碼默認alpine
  • 輸入 sudo -i 默認 alpine
  • 輸入 service docker start 運行 docker
  • 輸入docker start hass ,啟動 HA
  • 左上角手指滑動,調出 QEMU 菜單,進入環境後,輸入 hostfwd_add tcp::8123-:8123

註: HA重啟後的3-5分鐘內,瀏覽器訪問不到HA屬於正常現象。

11. 設置自啟動

  • 執行rc-update add docker boot app每次啟動時,docker都會自動啟動
  • 在HA運行狀態下執行 docker update --restart=always hass 每次docker啟動後,HA都會自動運行

但是,但是,你還是需要每次重啟Alpine-term後,在QEMU環境裡開放埠,方法是手工輸入 hostfwd_add tcp::8123-:8123

12. 其它說明

  • 遇到網絡超時timeout錯誤,就多試幾次問題不大,不需要換源啥的。
  • 遇到HA啟動報錯的話就多執行兩次
  • 如果經過前面兩步仍存在奇怪的問題,建議修改時區,再不行就手機恢復出廠設置重新來一遍防止有髒數據,防止有髒數據殘留
  • 本教程安裝的HA,不包含Supervisor,請用HACS代替。
  • 每次啟動app,持續幾分鐘到十幾分鐘不等,若想HA長時間在線,建議開啟app的後台運行權限。防止息屏或者後台被殺掉。
  • 在我測試過程中, 曾幾次升級Alpine環境(apk update; apk upgrade),每次升級後,都會導致Docker不正常,所以,不用升級環境了。再說,HA本身是能夠自動升級的,HA好用就行了。或者,乾脆卸載自帶的Docker,另外安裝新的。(需要諮詢請聯繫我)

測試很多遍,編寫不易,順手點個讚吧。

關鍵字: