From b5bf977402c4bedd7c2ca771592635ac8dd07dca Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Wed, 29 Jun 2022 23:02:10 +0200 Subject: [PATCH] Adding permissions configuration information. --- README.md | 21 +++++++-------------- docs/troubleshooting.md | 26 +++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 5a08483..ea93f4f 100644 --- a/README.md +++ b/README.md @@ -65,9 +65,9 @@ ## 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 @@ -79,7 +79,9 @@ docker run -d \ b4bz/homer:latest ``` -Environment variables: +The container will run using a user uid and gid 1000. Add `--user :` 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. @@ -87,18 +89,9 @@ Install example configuration file & assets (favicons, ...) to help you get star * **`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: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 10d6c2d..33b8fb7 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,8 +1,32 @@ # 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). -- 2.41.0