mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2026-02-24 01:46:21 +00:00
Some checks are pending
Bump Version / Bump Version Workflow (push) Waiting to run
docker-build / platform-excludes (push) Waiting to run
docker-build / build (push) Blocked by required conditions
docker-build / merge (push) Blocked by required conditions
pre-commit / pre-commit (push) Waiting to run
Run Pytest on Pull Request / test (push) Waiting to run
Home Assistant expects versioning always increases numbers. Add a date component to the development version to comply with this expectation. The scheme is now 0.0.0.dev<date><hash>. Use uv for creating and managing the virtual environment for developement. This enourmously speeds up dependency updates. For this change dependency requirements are now solely handled in pyproject.toml. requirements.tx and requirements-dev.txt are deleted. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
400 lines
8.3 KiB
Markdown
400 lines
8.3 KiB
Markdown
% SPDX-License-Identifier: Apache-2.0
|
||
(install-page)=
|
||
|
||
# Installation Guide
|
||
|
||
This guide provides different methods to install Akkudoktor-EOS:
|
||
|
||
- Installation from Source (GitHub) (M1)
|
||
- Installation from Release Package (GitHub) (M2)
|
||
- Installation with Docker (DockerHub) (M3)
|
||
- Installation with Docker (docker-compose) (M4)
|
||
- Installation in Home Assistant (M5)
|
||
|
||
Choose the method that best suits your needs.
|
||
|
||
:::{admonition} Tip
|
||
:class: Note
|
||
If you need to update instead, see the [Update Guideline](update-page). For reverting to a previous
|
||
release see the [Revert Guideline](revert-page).
|
||
:::
|
||
|
||
## Installation Prerequisites
|
||
|
||
Before installing, ensure you have the following:
|
||
|
||
### For Source / Release Installation (M1/M2)
|
||
|
||
- Python 3.11+
|
||
- uv (recommended)
|
||
- Git (only for source)
|
||
- Tar/Zip (for release package)
|
||
|
||
### For Docker Installation (M3/M4)
|
||
|
||
- Docker Engine 20.10 or higher
|
||
- Docker Compose (optional, recommended)
|
||
|
||
:::{admonition} Tip
|
||
:class: Note
|
||
See [Install Docker Engine](https://docs.docker.com/engine/install/) on how to install docker on
|
||
your Linux distro.
|
||
:::
|
||
|
||
### For Installation in Home Assistant (M5)
|
||
|
||
- [Home Assistant Operating System](https://www.home-assistant.io/installation/)
|
||
|
||
:::{admonition} Warning
|
||
:class: Warning
|
||
Akkudoktor-EOS is a [Home Assistant add-on](https://www.home-assistant.io/addons/).
|
||
[Home Assistant Container](https://www.home-assistant.io/installation/) installations don’t
|
||
have access to add-ons.
|
||
:::
|
||
|
||
## Install uv (one-time setup)
|
||
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
irm https://astral.sh/uv/install.ps1 | iex
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
```
|
||
|
||
## Installation from Source (GitHub) (M1)
|
||
|
||
Recommended for developers or users wanting the latest updates.
|
||
|
||
### 1) Clone the Repository (M1)
|
||
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
git clone https://github.com/Akkudoktor-EOS/EOS.git
|
||
cd EOS
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
git clone https://github.com/Akkudoktor-EOS/EOS.git
|
||
cd EOS
|
||
```
|
||
|
||
### 2) Create a Virtual Environment and install dependencies (M1)
|
||
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
uv sync --extra dev
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
uv sync --extra dev
|
||
|
||
```
|
||
|
||
### 3) Run EOS (M1)
|
||
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
uv run python -m akkudoktoreos.server.eos
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
uv run python -m akkudoktoreos.server.eos
|
||
|
||
```
|
||
|
||
EOS is now available at:
|
||
|
||
- API: [http://localhost:8503/docs](http://localhost:8503/docs)
|
||
- EOSdash: [http://localhost:8504](http://localhost:8504)
|
||
|
||
If you want to make EOS and EOSdash accessible from outside of your machine or container at this
|
||
stage of the installation provide appropriate IP addresses on startup.
|
||
|
||
<!-- pyml disable line-length -->
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
uv run python -m akkudoktoreos.server.eos --host 0.0.0.0 --eosdash-host 0.0.0.0
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
uv run python -m akkudoktoreos.server.eos --host 0.0.0.0 --eosdash-host 0.0.0.0
|
||
|
||
```
|
||
<!-- pyml enable line-length -->
|
||
|
||
### 4) Configure EOS (M1)
|
||
|
||
Use EOSdash at [http://localhost:8504](http://localhost:8504) to configure EOS.
|
||
|
||
## Installation from Release Package (GitHub) (M2)
|
||
|
||
This method is recommended for users who want a stable, tested version.
|
||
|
||
### 1) Download the Latest Release (M2)
|
||
|
||
Visit the [Releases page](https://github.com/Akkudoktor-EOS/EOS/tags) and download the latest
|
||
release package (e.g., `akkudoktoreos-v0.2.0.tar.gz` or `akkudoktoreos-v0.2.0.zip`).
|
||
|
||
### 2) Extract the Package (M2)
|
||
|
||
```bash
|
||
tar -xzf akkudoktoreos-v0.2.0.tar.gz # For .tar.gz
|
||
# or
|
||
unzip akkudoktoreos-v0.2.0.zip # For .zip
|
||
|
||
cd akkudoktoreos-v0.2.0
|
||
```
|
||
|
||
### 3) Create a virtual environment and run and configure EOS (M2)
|
||
|
||
Follow Step 2), 3) and 4) of method M1. Start at
|
||
`2) Create a Virtual Environment and install dependencies`
|
||
|
||
### 4) Update the source code (M2)
|
||
|
||
To extract a new release to a new directory just proceed with method M2 step 1) for the new release.
|
||
|
||
You may remove the old release directory afterwards.
|
||
|
||
## Installation with Docker (DockerHub) (M3)
|
||
|
||
This method is recommended for easy deployment and containerized environments.
|
||
|
||
### 1) Pull the Docker Image (M3)
|
||
|
||
```bash
|
||
docker pull akkudoktor/eos:latest
|
||
```
|
||
|
||
For a specific version:
|
||
|
||
```bash
|
||
docker pull akkudoktor/eos:v<version>
|
||
```
|
||
|
||
### 2) Run the Container (M3)
|
||
|
||
**Basic run:**
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name akkudoktoreos \
|
||
-p 8503:8503 \
|
||
-p 8504:8504 \
|
||
-e OPENBLAS_NUM_THREADS=1 \
|
||
-e OMP_NUM_THREADS=1 \
|
||
-e MKL_NUM_THREADS=1 \
|
||
-e EOS_SERVER__HOST=0.0.0.0 \
|
||
-e EOS_SERVER__PORT=8503 \
|
||
-e EOS_SERVER__EOSDASH_HOST=0.0.0.0 \
|
||
-e EOS_SERVER__EOSDASH_PORT=8504 \
|
||
--ulimit nproc=65535:65535 \
|
||
--ulimit nofile=65535:65535 \
|
||
--security-opt seccomp=unconfined \
|
||
akkudoktor/eos:latest
|
||
```
|
||
|
||
### 3) Verify the Container is Running (M3)
|
||
|
||
```bash
|
||
docker ps
|
||
docker logs akkudoktoreos
|
||
```
|
||
|
||
EOS should now be accessible at [http://localhost:8503/docs](http://localhost:8503/docs) and EOSdash
|
||
should be available at [http://localhost:8504](http://localhost:8504).
|
||
|
||
### 4) Configure EOS (M3)
|
||
|
||
Use EOSdash at [http://localhost:8504](http://localhost:8504) to configure EOS. In the dashboard,
|
||
go to:
|
||
|
||
```bash
|
||
Config
|
||
```
|
||
|
||
## Installation with Docker (docker-compose) (M4)
|
||
|
||
### 1) Get the akkudoktoreos source code (M4)
|
||
|
||
You may use either method M1 or method M2 to get the source code.
|
||
|
||
### 2) Build and run the container (M4)
|
||
|
||
```{eval-rst}
|
||
.. tabs::
|
||
|
||
.. tab:: Windows
|
||
|
||
.. code-block:: powershell
|
||
|
||
docker compose up --build
|
||
|
||
.. tab:: Linux
|
||
|
||
.. code-block:: bash
|
||
|
||
docker compose up --build
|
||
|
||
```
|
||
|
||
### 3) Verify the Container is Running (M4)
|
||
|
||
```bash
|
||
docker ps
|
||
docker logs akkudoktoreos
|
||
```
|
||
|
||
EOS should now be accessible at [http://localhost:8503/docs](http://localhost:8503/docs) and EOSdash
|
||
should be available at [http://localhost:8504](http://localhost:8504).
|
||
|
||
The configuration file is in `${HOME}/.local/share/net.akkudoktor.eos/config/EOS.config.json`.
|
||
|
||
### 4) Configure EOS (M4)
|
||
|
||
Use EOSdash at [http://localhost:8504](http://localhost:8504) to configure EOS. In the dashboard,
|
||
go to:
|
||
|
||
```bash
|
||
Config
|
||
```
|
||
|
||
You may edit the configuration file directly at
|
||
`${HOME}/.local/share/net.akkudoktor.eos/config/EOS.config.json`.
|
||
|
||
## Installation in Home Assistant (M5)
|
||
|
||
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FAkkudoktor-EOS%2FEOS)
|
||
|
||
### 1) Add the repository URL (M5)
|
||
|
||
In Home Assistant, go to:
|
||
|
||
```bash
|
||
Settings → Add-ons → Add-on Store → ⋮ (top-right menu) → Repositories
|
||
```
|
||
|
||
and enter the URL of this Git repository:
|
||
|
||
```bash
|
||
https://github.com/Akkudoktor-EOS/EOS
|
||
```
|
||
|
||
### 2) Install the add-on (M5)
|
||
|
||
After adding the repository, the add-on will appear in the Add-on Store. Click `Install`.
|
||
|
||
### 3) Start the add-on (M5)
|
||
|
||
Once installed, click `Start` in the add-on panel.
|
||
|
||
### 4) Access the dashboard (M5)
|
||
|
||
Click `Open Web UI` in the add-on panel.
|
||
|
||
### 5) Configure EOS (M5)
|
||
|
||
In the dashboard, go to:
|
||
|
||
```bash
|
||
Config
|
||
```
|
||
|
||
## Helpful Docker Commands
|
||
|
||
### View logs
|
||
|
||
```bash
|
||
docker logs -f akkudoktoreos
|
||
```
|
||
|
||
### Stop the container
|
||
|
||
```bash
|
||
docker stop akkudoktoreos
|
||
```
|
||
|
||
### Start the container
|
||
|
||
```bash
|
||
docker start akkudoktoreos
|
||
```
|
||
|
||
### Remove the container
|
||
|
||
```bash
|
||
docker rm -f akkudoktoreos
|
||
```
|
||
|
||
### Update to latest version
|
||
|
||
```bash
|
||
docker pull Akkudoktor-EOS/EOS:latest
|
||
docker stop akkudoktoreos
|
||
docker rm akkudoktoreos
|
||
# Then run the container again with the run command
|
||
```
|
||
|
||
### Solve docker DNS not working
|
||
|
||
Switch Docker to use the real resolv.conf, not the stub.
|
||
|
||
1️⃣ Replace /etc/resolv.conf symlink
|
||
|
||
```bash
|
||
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
|
||
```
|
||
|
||
This file contains the actual upstream DNS servers (e.g. your Fritz!Box).
|
||
|
||
2️⃣ Restart Docker
|
||
|
||
```bash
|
||
sudo systemctl restart docker
|
||
```
|
||
|
||
3️⃣ Verify
|
||
|
||
```bash
|
||
docker run --rm busybox nslookup registry-1.docker.io
|
||
```
|
||
|
||
You should now see a valid IP address.
|