Standalone with https
This commit is contained in:
@@ -11,21 +11,60 @@ Home Assistant Addon to control an AirSend device in a local network.
|
|||||||
|
|
||||||
## Manual Installation
|
## Manual Installation
|
||||||
|
|
||||||
1. Into the terminal, run `wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend-addon/master/install | bash -`
|
#### 1. Install the Add-on
|
||||||
OR copy the `airsend` folder into your [addon folder](https://developers.home-assistant.io/docs/creating_integration_file_structure/#where-home-assistant-looks-for-integrations).
|
Run the following command in your terminal:
|
||||||
2. In Supervisor -> Add-on store -> Local add-ons, refresh, install and start AirSend addon
|
```bash
|
||||||
|
wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend-addon/master/install bash -
|
||||||
|
```
|
||||||
|
**OR**
|
||||||
|
Manually copy the `airsend` folder into your [Home Assistant addons directory](https://developers.home-assistant.io/docs/creating_integration_file_structure/#where-home-assistant-looks-for-integrations).
|
||||||
|
|
||||||
|
#### 2. Start the Add-on
|
||||||
|
1. Go to **Supervisor** → **Add-on Store** → **Local add-ons**.
|
||||||
|
2. Refresh the list, then install and start the **AirSend** add-on.
|
||||||
|
|
||||||
|
|
||||||
## Install on an external machine
|
## Install on an external machine
|
||||||
1. Clone repository
|
#### 1. Clone the Repository
|
||||||
2. Generate your API key: [link to your profile](https://my.home-assistant.io/redirect/profile/) (security tab, long-lived access tokens)
|
```bash
|
||||||
3. Go to addons/airsend folder
|
git clone https://github.com/devmel/hass_airsend-addon
|
||||||
4. Depending on your machine architecture, run in a terminal. Example with amd64: `docker build --build-arg "BUILD_FROM=ghcr.io/home-assistant/amd64-base:3.22" -t hass_airsend-addon .`
|
cd hass_airsend-addon/addons/airsend
|
||||||
5. Depending on your home assistant server and your token, run in a terminal. Example with homeassistant.local:8123:
|
```
|
||||||
|
|
||||||
|
#### 2. Generate a Home Assistant API Key
|
||||||
|
1. Go to your [Home Assistant profile](https://my.home-assistant.io/redirect/profile/).
|
||||||
|
2. Navigate to the **Security** tab.
|
||||||
|
3. Generate a **long-lived access token** (use this as `HASS_TOKEN`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 3. Build the Docker Image
|
||||||
|
Replace `amd64` with your machine's architecture if needed (`armhf`, `armv7`, `aarch64`, etc.):
|
||||||
|
```bash
|
||||||
|
docker build --build-arg "BUILD_FROM=ghcr.io/home-assistant/amd64-base:3.22" -t hass_airsend-addon .
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 4. Run the Docker Container
|
||||||
|
Adjust the environment variables according to your setup:
|
||||||
```bash
|
```bash
|
||||||
docker run -dp 33863:33863 \
|
docker run -dp 33863:33863 \
|
||||||
|
-e HTTPS=1 \
|
||||||
-e HASS_HOST='homeassistant.local:8123' \
|
-e HASS_HOST='homeassistant.local:8123' \
|
||||||
-e HASS_TOKEN='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiZDg1MWJlNjE1NmM0Zjc4YTRiNzhjZjRlMDc4MWZiMCIsImlhdCI6MTY5MTIyOTg5MCwiZXhwIjoyMDA2NTg5ODkwfQ._ECys-uPkM8fn1W2wvjzIJ9HLJcI7RHmZmix_2C9QgU' \
|
-e HASS_TOKEN='your_token_here' \
|
||||||
-e HASS_AUTOINCLUDE=0 \
|
-e HASS_AUTOINCLUDE=0 \
|
||||||
hass_airsend-addon
|
hass_airsend-addon
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Environment Variables:
|
||||||
|
- HTTPS=1: Enables HTTPS. Use HTTPS=0 if you cannot handle self-signed certificates.
|
||||||
|
- HASS_HOST: Your Home Assistant server address and port (e.g., homeassistant.local:8123).
|
||||||
|
- HASS_TOKEN: The long-lived access token you generated.
|
||||||
|
- HASS_AUTOINCLUDE: Set to 0 to disable auto-inclusion of the add-on in Home Assistant.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Important Notes
|
||||||
|
- **Security**: Never share your `HASS_TOKEN`.
|
||||||
|
- **HTTPS**: If `HTTPS=0`, ensure your network is secure.
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ FROM $BUILD_FROM
|
|||||||
ENV HASS_HOST=
|
ENV HASS_HOST=
|
||||||
ENV HASS_TOKEN=
|
ENV HASS_TOKEN=
|
||||||
ENV HASS_AUTOINCLUDE=0
|
ENV HASS_AUTOINCLUDE=0
|
||||||
|
ENV HTTPS=1
|
||||||
|
|
||||||
# Copy data for add-on
|
# Copy data for add-on
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
COPY hassapi.class.php /home
|
COPY hassapi.class.php /home
|
||||||
COPY hass_cb.php /home
|
COPY hass_cb.php /home
|
||||||
COPY state_post.sh /home
|
COPY state_post.sh /home
|
||||||
@@ -18,7 +20,16 @@ RUN chmod a+x /run.sh
|
|||||||
# Install AirSendWebService
|
# Install AirSendWebService
|
||||||
RUN mkdir -p /home && cd /home && wget http://devmel.com/dl/AirSendWebService.tgz && tar -zxvf AirSendWebService.tgz && chmod -R 777 bin
|
RUN mkdir -p /home && cd /home && wget http://devmel.com/dl/AirSendWebService.tgz && tar -zxvf AirSendWebService.tgz && chmod -R 777 bin
|
||||||
|
|
||||||
RUN apk add php php-curl
|
# Install Services
|
||||||
|
RUN apk add php php-curl nginx openssl
|
||||||
|
|
||||||
|
# Generate self-signed certificate
|
||||||
|
RUN mkdir -p /etc/nginx/ssl
|
||||||
|
RUN openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||||
|
-subj "/C=FR/ST=France/L=Paris/O=AirSendWebService/CN=localhost" \
|
||||||
|
-keyout /etc/nginx/ssl/selfsigned.key \
|
||||||
|
-out /etc/nginx/ssl/selfsigned.crt
|
||||||
|
|
||||||
# Start AirSendWebService
|
# Start AirSendWebService
|
||||||
CMD [ "/run.sh" ]
|
CMD [ "/run.sh" ]
|
||||||
EXPOSE 33863
|
EXPOSE 33863
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
events {}
|
||||||
|
http {
|
||||||
|
server {
|
||||||
|
listen 33863 ssl;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/selfsigned.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/selfsigned.key;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:33864;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+20
-4
@@ -9,11 +9,8 @@ case "$arch" in \
|
|||||||
amd64) arch='x86_64' ;; \
|
amd64) arch='x86_64' ;; \
|
||||||
i386) arch='x86' ;; \
|
i386) arch='x86' ;; \
|
||||||
esac;
|
esac;
|
||||||
echo "AirSendWebService arch: ${arch}"
|
|
||||||
|
|
||||||
# Start AirSendWebService
|
|
||||||
ulimit -n 4096
|
ulimit -n 4096
|
||||||
./bin/unix/${arch}/AirSendWebService 99399
|
echo "AirSendWebService arch: ${arch}"
|
||||||
|
|
||||||
CALLBACK_PID=
|
CALLBACK_PID=
|
||||||
if [ -n "${SUPERVISOR_TOKEN:-}" ]
|
if [ -n "${SUPERVISOR_TOKEN:-}" ]
|
||||||
@@ -21,14 +18,33 @@ then
|
|||||||
hname="$(hostname -i)"
|
hname="$(hostname -i)"
|
||||||
echo "internal_url: http://${hname}:33863/"
|
echo "internal_url: http://${hname}:33863/"
|
||||||
echo $(bashio::config 'auto_include') > auto_include.cfg
|
echo $(bashio::config 'auto_include') > auto_include.cfg
|
||||||
|
# Start AirSendWebService
|
||||||
|
./bin/unix/${arch}/AirSendWebService 99399
|
||||||
# Start hass callback service
|
# Start hass callback service
|
||||||
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
||||||
elif [ -n "${HASS_HOST:-}" ] && [ -n "${HASS_TOKEN:-}" ]
|
elif [ -n "${HASS_HOST:-}" ] && [ -n "${HASS_TOKEN:-}" ]
|
||||||
then
|
then
|
||||||
|
# Start AirSendWebService
|
||||||
|
if [ "${HTTPS:-0}" -eq 1 ]; then
|
||||||
|
./bin/unix/${arch}/AirSendWebService 33864
|
||||||
|
nginx
|
||||||
|
echo "internal_url: https://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||||
|
else
|
||||||
|
./bin/unix/${arch}/AirSendWebService 99399
|
||||||
echo "internal_url: http://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
echo "internal_url: http://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||||
|
fi
|
||||||
# Start hass callback service
|
# Start hass callback service
|
||||||
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
||||||
else
|
else
|
||||||
|
# Start AirSendWebService
|
||||||
|
if [ "${HTTPS:-0}" -eq 1 ]; then
|
||||||
|
./bin/unix/${arch}/AirSendWebService 33864
|
||||||
|
nginx
|
||||||
|
echo "example: curl -k https://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||||
|
else
|
||||||
|
./bin/unix/${arch}/AirSendWebService 99399
|
||||||
|
echo "example: curl http://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||||
|
fi
|
||||||
echo "Running the AirSendWebService only..."
|
echo "Running the AirSendWebService only..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user