{"id":39881984,"url":"https://github.com/materialdigital/ontodocker","last_synced_at":"2026-01-18T14:31:52.660Z","repository":{"id":207790884,"uuid":"705629949","full_name":"materialdigital/ontodocker","owner":"materialdigital","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-08T13:44:35.000Z","size":35440,"stargazers_count":2,"open_issues_count":15,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-08T14:38:34.278Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/materialdigital.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-16T11:47:30.000Z","updated_at":"2025-02-24T08:46:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"28a8e93b-dff0-41f3-8df0-9a2d119ac07b","html_url":"https://github.com/materialdigital/ontodocker","commit_stats":null,"previous_names":["materialdigital/ontodocker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/materialdigital/ontodocker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialdigital%2Fontodocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialdigital%2Fontodocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialdigital%2Fontodocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialdigital%2Fontodocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/materialdigital","download_url":"https://codeload.github.com/materialdigital/ontodocker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialdigital%2Fontodocker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28537631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T14:31:52.470Z","updated_at":"2026-01-18T14:31:52.629Z","avatar_url":"https://github.com/materialdigital.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ontodocker\n\nPrerequisites: Docker and docker compose \n\n### Ontodocker installation\n\nThe keycloak part below is optional and can be skipped if usage is local only or a keycloak instance already exists.\n\nCreate a `.env` file in the ontodocker parent directory with the following contents and fill or change them accordingly.\n```\nONTODOCKER_RUN_PORT=8000\nJWT_SECRET_KEY=\nJWT_DEFAULT_DAYS_VALID=90\nJWT_MIN_DAYS_VALID=1\nJWT_MAX_DAYS_VALID=90\nMAX_SESSION_TIME_IN_DAYS=14\nFUSEKI_ADMIN_USER=admin\nFUSEKI_ADMIN_PW=changeme\nALLOW_UNAUTHORIZED_READONLY_API_ACCESS=false\nALLOW_UNAUTHORIZED_READONLY_UI_ACCESS=true\nANONYMOUS_IS_ADMIN=false\n```\n\nCreate a random key for `JWT_SECRET_KEY` by excecuting\n```\nopenssl rand -hex 36\n```\nin a command line and append it to the line `JWT_SECRET_KEY=` in the `.env` file.\n\nImportant: If you start the application for the first time set `ANONYMOUS_IS_ADMIN` to `true` and `ALLOW_UNAUTHORIZED_READONLY_UI_ACCESS` to `true`. That will give you administration access to configure local users or SSO Providers (like Keycloak (description below)) in the Administration interface.\nIf you only need a local developing instance you can also fully use the anonymous user except for saving SPARQL queries.\n\nEdit the Fuseki admin password (`FUSEKI_ADMIN_PW=`) in the `.env` as well (e.g. execute `openssl rand -hex 36` again).\n\nCreate a symlink to `docker-compose-dev.yml` by using\n```\nln -s docker-compose-dev.yml docker-compose.yml\n```\n\nBuild the docker container with\n```bash\ndocker compose build\n```\n\nStart the docker container with\n```bash\ndocker compose up -d \n```\n\nWatch the logs with\n```bash\ndocker compose logs -f\n```\nNow you may go to http://localhost:8000\n\n### Keycloak installation and configurations (optional)\n\nGo to the keycloak directory, edit password in `Dockerfile` and `docker-compose.yml`. And watch for the KC_HOSTNAME_URL if you plan to access keycloaks admin interface from a different IP.\n\nStart Keycloak container with\n```bash\ndocker compose up -d --build\n```\nin the terminal (cmd)\n\ncheck the status\n```bash\ndocker compose logs -f keycloak\n```\n\nAfter the start, (You have to wait until Keycloak is completely ready and you'll see the line `Running the server in development mode. DO NOT use this configuration in production.` in terminal.)\n\ngo to http://localhost:8080 (or your IP where you installed the keycloak), enter the admin password set in the `Dockerfile`, then you'll see the homepage of Keycloak\n\n![Keycloak Homepage](source/images/keycloak_homepage.PNG \"Keycloak Homepage\")\n\nNow we need to create a client for our application.\n\n\n1. Create client for your application (in screenshot the client id is `glass` but you can name it whatever you want).\nAlso be sure that the valid redirect URL contains the port (default e.g. 8000, like `http://{yourip}:8000/*`)\n![Keycloak Create Client](source/images/keycloak_client.PNG \"Keycloak Create Client\")\n![Keycloak Create Client2](source/images/keycloak_client2.PNG \"Keycloak Create Client2\")\n![Keycloak Create Client3](source/images/keycloak_client3.PNG \"Keycloak Create Client3\")\n3. Get client secret\n![Keycloak Client Secret](source/images/keycloak_client_secret.PNG \"Keycloak Client Secret\")\n\nThe .well-known URL is normally `http://{your_keycloak_ip}:8080/realms/master/.well-known/openid-configuration`\nApparently we only use the realm roles, but it can't hurt to set client roles together\n\n\n**Now you have done the Keycloak configuration!**\n\n\n### Known Issues\n\nIf the container is accessed via a nginx reverse proxy and the login redirect does not work, try to add the following lines to its .conf \n```\nproxy_set_header    Host               $host;\nproxy_set_header    X-Real-IP          $remote_addr;\nproxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;\nproxy_set_header    X-Forwarded-Host   $host;\nproxy_set_header    X-Forwarded-Server $host;\nproxy_set_header    X-Forwarded-Port   $server_port;\nproxy_set_header    X-Forwarded-Proto  $scheme;\nproxy_set_header    ssl-client-cert    $ssl_client_escaped_cert;\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialdigital%2Fontodocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterialdigital%2Fontodocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialdigital%2Fontodocker/lists"}