A basic Docker image for FHEM house automation system, based on Debian Stretch.
Pre-build images are available on Docker Hub. We recommend pulling from the main repository to allow automatic download of the correct image for your system platform:
docker pull fhem/fhem
To start your container right away:
docker run -d --name fhem -p 8083:8083 fhem/fhem
Usually you want to keep your FHEM setup after a container was destroyed (or re-build) so it is a good idea to provide an external directory on your Docker host to keep that data:
docker run -d --name fhem -p 8083:8083 -v /some/host/directory:/opt/fhem fhem/fhem
After starting your container, you may now start your favorite browser to open one of FHEM's web interface variants:
http://xxx.xxx.xxx.xxx:8083/
You may want to have a look to the FHEM documentation sources for further information.
This image provides 2 different variants:
latest
(default)dev
You can use one of those variants by adding them to the docker image name like this:
docker pull fhem/fhem:latest
If you do not specify any variant, latest
will always be the default.
latest
will give you the current stable Docker image, including up-to-date FHEM.
dev
will give you the latest development Docker image, including up-to-date FHEM.
This is a multi-platform image, providing support for the following platforms:
Linux:
Windows:
- currently not supported
The main repository will allow you to install on any of these platforms. In case you would like to specifically choose your platform, go to the platform-related repository by clicking on the respective link above.
The platform repositories will also allow you to choose more specific build tags beside the rolling tags latest or dev.
-
Find out the USB device path/address from your Docker host machine first:
lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null
-
You may then derive the device path from it and add the following parameter to your container run command:
--device=/dev/bus/usb/001/002
-
Change FHEM logfile format: To set a different logfile path and format (default is ./log/fhem-%Y-%m.log):
-e LOGFILE=./log/fhem-%Y-%m.log
-
Change FHEM local Telnet port for health check: To set a different Telnet port for local connection during health check (default is 7072):
-e TELNETPORT=7072
-
Change FHEM system user ID: To set a different UID for the user 'fhem' (default is 6061):
-e FHEM_UID=6061
-
Change FHEM group ID: To set a different GID for the group 'fhem' (default is 6061):
-e FHEM_GID=6061
-
Change Bluetooth group ID: To set a different GID for the group 'bluetooth' (default is 6001):
-e BLUETOOTH_GID=6001
-
Change GPIO group ID: To set a different GID for the group 'gpio' (default is 6002):
-e GPIO_GID=6002
-
Change I2C group ID: To set a different GID for the group 'i2c' (default is 6003):
-e I2C_GID=6003
-
Change shutdown timeout: To set a different setting for the timer during FHEM shutdown handling, you may add this environment variable:
-e TIMEOUT=10
-
Set timezone: Set a specific timezone in POSIX format:
-e TZ=Europe/Berlin
-
Using configDB: Should you be using FHEM config type
configDB
, you need to change the FHEM configuration source for correct startup by setting the following environment variable:-e CONFIGTYPE=configDB
-
Starting the demo: To start the demo environment:
-e CONFIGTYPE=fhem.cfg.demo
Prerequisites on your Docker host:
- Ensure docker-compose is installed: See Install Docker Compose
- Ensure Git command is installed, e.g. run
sudo apt install git
Follow initial setup steps:
-
Put docker-compose.yml and .gitignore into an empty sub-folder, e.g. /docker/home
sudo mkdir -p /docker/home sudo curl -o /docker/home/docker-compose.yml https://raw.githubusercontent.com/fhem/fhem-docker/master/docker-compose.yml sudo curl -o /docker/home/.gitignore https://raw.githubusercontent.com/fhem/fhem-docker/master/.gitignore
Note that the sub-directory "home" will be the base prefix name for all your Docker containers (e.g. resulting in home_SERVICE_1). This will also help to run multiple instances of your Stack on the same host, e.g. to separate production environment in /docker/home from development in /docker/home-dev.
-
Being in /docker/home, run command to start your Docker stack:
cd /docker/home; sudo docker-compose up -d
All FHEM files including your individual configuration and changes will be stored in ./fhem/ . You may also put an existing FHEM installation into ./fhem/ before the initial start, it will be automatically updated for compatibility with fhem-docker.
-
Create a local Git repository and add all files as an initial commit:
cd /docker/home sudo git init sudo git add -A sudo git commit -m "Initial commit"
Run the following command whenever you would like to mark changes as permanent:
cd /docker/home; sudo git add -A; sudo git commit -m "FHEM update"
Note: This will also add any new files within your whole Docker Stack outside of the ./fhem/ folder. Please see Git documentation for details and further commands.
-
Optional - Add remote repository for external backup. Using BitBucket is recommended because it supports private repositories:
sudo git remote add origin [email protected]:user/repo.git sudo git push --force --set-upstream origin master
Note that after updating your local repository as described above, you also want to push those changes to the remote server:
cd /docker/home; sudo git push
To restore your Docker Stack from remote Git backup on a fresh Docker host installation:
sudo mkdir -p /docker cd /docker; sudo git clone [email protected]:user/repo.git cd /docker/home; sudo docker-compose up -d