Docker Home Assistant

Set up Docker’s apt repository.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Install the Docker packages.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Install Home Assistant

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Asia/Seoul \
  -v /home/nanbean/home-assistant:/config \
  -v /run/dbus:/run/dbus:ro \
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable

Change configuration.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# reverse proxy
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - ::1
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Restart docker container

docker restart <container_name_or_ID>

oracle cloud instance 살리기

잘 동작하던 오라클 클라우드 인스턴스가 어느날 갑자기 부팅되지 않아서 상당히 난감했었는데, 아래 방법을 통해서 살릴 수 있었다.

Instances -> [dead instance] -> Boot volume -> [dead boot volume] -> Boot Volume Backups -> Create Boot Volume Backup

create new instance and new boot volume

Instances -> [new instance] -> Attached block volumes -> Attach block volume -> Select volume -> select [backup boot volume]

새로운 instance 의 shell 로 접속해서 sudo fdisk -l 하면 /dev/sdb1에 backup boot volume이 보임

mkdir /media/olddisk
sudo mount /dev/sdb1 /media/olddisk

/media/olddisk로 접속해서 데이터 살리기

sudo umount /media/olddisk

Instances -> [new instance] -> Attached block volumes -> detatch [backup boot volume]

참고. mysql 살리기

cp /media/olddisk/usr/sbin/mysqld /usr/sbin/
cp /media/olddisk/usr/bin/mysql* /usr/bin/
cp -r /media/olddisk/var/lib/mysql /var/lib/
cp -r mysql-files /var/lib/
cp -r mysql-keyring /var/lib/
cp -r mysql-upgrade /var/lib/
sudo apt install mysql-server

How to use localtunnel in PM2

$ vi pm2-lt.yaml
apps:
  - name : 'localtunnel'
    script: 'lt'
    args: '-p <port> -s <subdomain>'
    instances: '1'
    autorestart: true
    max_restarts: 10
    max_memory_restart: '500M'
    watch : false
    error_file: 'err-prod.log'
    out_file: 'out-prod.log'
    log_file: 'combined-prod.log'
// replace <port>, <subdomain> as you want
$ pm2 start pm2-lt.yaml
$ pm2 save