## Getting started
-Homer is a full static html/js dashboard, generated from the source in `/src` using webpack. It's meant to be served by an HTTP server, **it will not work if you open dist/index.html directly over file:// protocol**.
+Homer is a full static html/js dashboard, based on a simple yaml configuration file. See [documentation](docs/configuration.md) for information about the configuration (`assets/config.yml`) options.
-See [documentation](docs/configuration.md) for information about the configuration (`assets/config.yml`) options.
+It's meant to be served by an HTTP server, **it will not work if you open the index.html directly over file:// protocol**.
### Using docker
b4bz/homer:latest
```
-Environment variables:
+The container will run using a user uid and gid 1000. Add `--user <your-UID>:<your-GID>` to the docker command to adjust it. Make sure this match the ownership of your assets directory.
+
+**Environment variables:**
* **`INIT_ASSETS`** (default: `1`)
Install example configuration file & assets (favicons, ...) to help you get started.
* **`SUBFOLDER`** (default: `null`)
If you would like to host Homer in a subfolder, (ex: *http://my-domain/**homer***), set this to the subfolder path (ex `/homer`).
+#### With docker-compose
-### Using docker-compose
-
-The `docker-compose.yml` file must be edited to match your needs.
-You probably want to set the port mapping and volume binding (equivalent to `-p` and `-v` arguments):
-
-```yaml
-volumes:
- - /your/local/assets/:/www/assets
-ports:
- - 8080:8080
-```
+A [`docker-compose.yml`](docker-compose.yml) file is available as an example. It must be edited to match your needs. You probably want to adjust the port mapping and volume binding (equivalent to `-p` and `-v` arguments).
Then launch the container:
# Troubleshooting
+## My docker container refuse to start / is stuck at restarting.
+
+You might be facing a permission issue. First of all, check your container logs (adjust the container name if necessary):
+
+```sh
+$ docker logs homer
+[...]
+Assets directory not writable. Check assets directory permissions & docker user or skip default assets install by setting the INIT_ASSETS env var to 0
+```
+
+In this case you need to make sure your mounted assests directory have the same GID / UID the container user have (default 1000:1000), and that the read and write permission is granted for the user or the group.
+
+You can either:
+- Update your assets directory permissions (ex: `chown -R 1000:1000 /your/assets/folder/`, `chmod -R u+rw /your/assets/folder/`)
+- Change the docker user by using the `--user` arguments with docker cli or `user: 1000:1000` with docker compose.
+
+⚠️ Notes:
+
+- **Do not** use env var to set the GID / UID of the user running container. Use the Docker `user` option.
+- **Do not** use 0:0 as a user value, it would be a security risk, and it's not guaranty to work.
+
+Check this [thread](https://github.com/bastienwirtz/homer/issues/459) for more information about debugging
+permission issues.
+
## My custom service card doesn't work, nothing appears or offline status is displayed (pi-hole, sonarr, ping, ...)
-You might by facing a [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Request Sharing) issue.
+You might be facing a [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Request Sharing) issue.
It happens when the targeted service is hosted on a different domain or port.
Web browsers will not allow to fetch information from a different site without explicit permissions (the targeted service
must include a special `Access-Control-Allow-Origin: *` HTTP headers).