{"id":38644308,"url":"https://github.com/actinia-org/actinia-docker","last_synced_at":"2026-03-05T17:39:10.384Z","repository":{"id":38453913,"uuid":"456868654","full_name":"actinia-org/actinia-docker","owner":"actinia-org","description":"Various Dockerimages and docker-compose configs for actinia (see also https://hub.docker.com/r/mundialis/actinia/tags and https://hub.docker.com/r/mundialis/actinia-core/tags)","archived":false,"fork":false,"pushed_at":"2026-01-14T15:02:03.000Z","size":267,"stargazers_count":2,"open_issues_count":4,"forks_count":4,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-31T16:08:47.494Z","etag":null,"topics":["actinia","docker","docker-compose","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/actinia-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-08T09:39:21.000Z","updated_at":"2026-01-14T15:01:48.000Z","dependencies_parsed_at":"2024-01-25T12:05:07.022Z","dependency_job_id":"9793c669-ee2c-41d4-9d6d-43657c0d43c9","html_url":"https://github.com/actinia-org/actinia-docker","commit_stats":null,"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/actinia-org/actinia-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actinia-org%2Factinia-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actinia-org%2Factinia-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actinia-org%2Factinia-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actinia-org%2Factinia-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/actinia-org","download_url":"https://codeload.github.com/actinia-org/actinia-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actinia-org%2Factinia-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29120484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T10:47:47.471Z","status":"ssl_error","status_checked_at":"2026-02-05T10:45:08.119Z","response_time":65,"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":["actinia","docker","docker-compose","hacktoberfest"],"created_at":"2026-01-17T09:11:41.517Z","updated_at":"2026-02-05T11:10:09.736Z","avatar_url":"https://github.com/actinia-org.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Installation\n\nRequirements: docker and docker-compose\n\nTo build and deploy actinia, run\n\n```\ngit clone https://github.com/actinia-org/actinia-docker.git\ncd actinia-docker\ndocker-compose -f docker-compose.yml up\n```\nNow you have a running actinia instance locally! Check with\n```\ncurl http://127.0.0.1:8088/api/v3/version\n```\n\n* Having __trouble__? See [How to fix common startup errors](#startup-errors) below.\n* Want to __start developing__? Look for [Local dev-setup with docker](#local-dev-setup) below.\n* For __production deployment__, see [Production deployment](#production-deployment) below.\n\nOn startup, some GRASS GIS projects are created by default but they are still empty. How to get some geodata to start processing, see in [Testing GRASS GIS inside a container](#grass-gis)  below.\n\n# General\n\nThis repository is a set of Dockerimages and docker-compose configs.\n\nReady to use Dockerimages are available at https://hub.docker.com/r/mundialis/actinia-core\n\n__actinia-alpine__\n* build and pushed to [`mundialis/actinia`](https://hub.docker.com/repository/docker/mundialis/actinia)\n* includes actinia-plugins\n* includes GRASS GIS addons\n* includes snappy\n\n__actinia-dev__\n* useful for local dev setup for actinia and plugins\n\n__actinia-prod__\n* example configuration for production deployment (overwrites default config)\n\n__actinia-ubuntu__\n* Ubuntu Dockerimage with snappy and some actinia plugins\n\n__actinia-data__\n* Shared by all containers, contains common configs and data\n\n\n\u003ca id=\"startup-errors\"\u003e\u003c/a\u003e\n# How to fix common startup errors\n* if a valkey db is running locally this will fail. Run and try again:\n```\n/etc/init.d/valkey-server stop\n```\n* if you see an error like \"max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\", run\n```\nsudo sysctl -w vm.max_map_count=262144\n```\n  this is only valid on runtime. To change permanently, set vm.max_map_count in /etc/sysctl.conf\n\n\n\u003ca id=\"local-dev-setup\"\u003e\u003c/a\u003e\n# Local dev-setup with docker\n\nFor a dev setup where no actinia plugins are involved, simply follow the [steps explained in actinia-core](https://github.com/actinia-org/actinia-core/tree/main/docker#local-dev-setup-with-docker) directly. Instead of from `actinia_core/docker` run the steps from `actinia-docker`.\n\n\n## Local dev-setup for actinia-core plugins\nFor a local dev setup for actinia-core and actinia-core plugins\n(eg. actinia-actinia-metadata-plugin or actinia-module-plugin), uninstall them\nin `actinia-dev/Dockerfile` (see outcommented code) and mount local checkouts in the\ncontainer via `docker-compose-dev.yml` file (also see outcommented code).\nBuild and run like described below and rebuild from your mounted source code:\n```\ndocker compose -f docker-compose-dev.yml build\ndocker compose -f docker-compose-dev.yml run --rm --service-ports --entrypoint sh actinia\n\n(cd /src/actinia_core \u0026\u0026 python3 setup.py install)\n\n# for installing plugins, following two commands have to be executed additionally\n# Note: the second one have to be modified, depending on the module\nexport SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0\ngit config --global --add safe.directory /src/actinia-module-plugin\n\n(cd /src/actinia-metadata-plugin \u0026\u0026 python3 setup.py install)\n(cd /src/actinia-module-plugin \u0026\u0026 python3 setup.py install)\n\n# you can also run tests here, eg.\n(cd /src/actinia-module-plugin \u0026\u0026 python3 setup.py test)\n\n# Includes creation of actinia-gdi user\nsh /src/start.sh\n# gunicorn -b 0.0.0.0:8088 -w 1 --access-logfile=- -k gthread actinia_core.main:flask_app\n```\n\nTo avoid cache problems, remove the packaged actinia_core (already done in Dockerfile)\n```\npip3 uninstall actinia_core -y\n```\nIf you have other problems with cache, run\n```\npython3 setup.py clean --all\n```\n\n## Local dev-setup for actinia-core plugins with vscode\n\n\nFor a local dev setup for actinia-core and actinia-core plugins with\n[vscode](https://code.visualstudio.com/), you need to have the actinia\nrepositories checked out next to each other, e.g.\n```\nrepos/actinia/\n├── actinia-api\n├── actinia_core\n├── actinia-docker\n├── actinia-metadata-plugin\n├── actinia-module-plugin\n```\nThen move the `.vscode` folder from this repository one level up and\nopen the whole actinia folder as workspace in vscode. This can be done by eg. typing `code $PATH_TO_MY_ACTINIA_CHECKOUTS` in a terminal. Then press `F5` and after a few seconds, a browser window should be opened pointing to the version endpoint. For debugging tips, [read the docs](https://code.visualstudio.com/Docs/editor/debugging#_debug-actions).\n\n## Local dev-setup for actinia-core with Keycloak\n**\u003cspan style=\"color:red\"\u003eFor deployment change passwords in .env file!\u003c/span\u003e**\n\nAdd to the `actinia.cfg` the configuration for Keycloak:\n```\n[KEYCLOAK]\nconfig_path = /etc/default/keycloak.json\ngroup_prefix = /actinia-user/\n```\nwhere the `config_path` is the file to the Keycloak OIDC JSON from the actinia client in Keykloak (for the DEV setup it is in `actinia-dev/keycloak.json`).\n\nThen you can start the docker DEV setup as in [local dev-setup with docker](https://github.com/actinia-org/actinia-core/tree/main/docker#local-dev-setup-with-docker).\n```\ndocker compose -f docker-compose-dev.yml build\n# start first postgis\ndocker compose -f docker-compose-dev.yml up -d postgis\n# then start keycloak\ndocker compose -f docker-compose-dev.yml up -d keycloak\n```\n\nBy **first Keycloak setup** you have to load the inital keycloak data:\n1. **\u003cspan style=\"color:red\"\u003eProblem:\u003c/span\u003e** `accessible_datasets` and `accessible_modules` can get to long so that `org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255)` occurs.\n    To fix this you can change in PostgreSQL the value type to text:\n    ```\n    docker exec -it actinia-docker_postgis_1 sh\n\n    psql -h localhost -U keycloak\n    \\c keycloak\n    \\d user_attribute\n    ALTER TABLE user_attribute ALTER COLUMN value type text;\n    ```\n    After the change you have to restart keycloak\n    ```\n    docker restart actinia-docker_keycloak_1\n    ```\n2. Import inital Keycloak data:\n  ```\n  docker cp ./actinia-keycloak/init_data/keycloak_export_dev.json actinia-docker_keycloak_1:/tmp/keycloak_export.json\n\n  docker exec -it actinia-docker_keycloak_1 /opt/jboss/keycloak/bin/standalone.sh -Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.usersExportStrategy=REALM_FILE -Dkeycloak.migration.file=/tmp/keycloak_export.json\n  ```\n  Wait until finished (look out for Import finished successfully in the logs) and exit the container.\n  After the change you have to restart keycloak\n  ```\n  docker restart actinia-docker_keycloak_1\n  ```\n3. now you can access keycloak via http://localhost:8080 (admin:keycloak)\n  * Admin console: http://localhost:8080/auth/admin\n  * User console: http://localhost:8080/auth/realms/testrealm/account/#/\n\nThen you can start actinia:\n```\ndocker-compose -f docker-compose-dev.yml run --rm --service-ports --entrypoint sh actinia\npython3 setup.py install\nsh /src/start.sh\n```\nAnd test it, e.g. with getting the token via Python3:\n```python3\nfrom keycloak import KeycloakOpenID\n\nkeycloak_url = \"http://localhost:8080/auth/\"\nrealm = \"actinia-realm\"\nclient_id = \"actinia-client\"\nclient_secret_key = \"KCXeHuJCLfd8qIhwIYkWZLrkauzBkLAb\"\n\nkeycloak_openid = KeycloakOpenID(server_url=keycloak_url, client_id=client_id, realm_name=realm, client_secret_key=client_secret_key)\n\n# superadmin\nuser = \"actinia-superadmin\"\npw = \"actinia-superadmin\"\n\ntoken = keycloak_openid.token(user, pw)\nprint(token[\"access_token\"])\n```\nRequest actinia via Keycloak token:\n```\nTOKEN=xxx\ncurl -H 'Accept: application/json' -H \"Authorization: Bearer ${TOKEN}\" http://localhost:8088/api/v3/version | jq\n# request mapsets\ncurl -H 'Accept: application/json' -H \"Authorization: Bearer ${TOKEN}\" http://localhost:8088/api/v3/projects/nc_spm_08/mapsets | jq\n```\n\n\n\u003ca id=\"grass-gis\"\u003e\u003c/a\u003e\n# Testing GRASS GIS inside a container\n\nSee this [README](https://github.com/actinia-org/actinia-core/tree/main/docker#testing-grass-gis-inside-a-container) for more information.\n\n\u003ca id=\"production-deployment\"\u003e\u003c/a\u003e\n# Production deployment\n\nTo run actinia_core in production systems, you can use the docker-compose-prod.yml. Please change before the default valkey password in valkey_data/config/.valkey and inside the actinia.cfg. Also incomment the `build` block in the `docker-compose.yml`. Additional change the keycloak and postgis passwords in `.env` file.\n\nTo start the server, run:\n\n```\ndocker-compose -f docker-compose.yml build\ndocker-compose -f docker-compose.yml up -d\n```\nThen actinia runs at 'http://127.0.0.1:8088' and depending on your server settings might be accessible from outside. Because of this the start.sh is overwritten to not create any user to avoid security vulnerability. You will have to use a clean key-value database to avoid stored actinia credentials from previous runs. You have to create the user by yourself by using the built-in actinia-user cli. __Please change below username (-u) and password (-w)__:\n```\n# list help about the cli tool:\ndocker-compose -f docker-compose.yml exec actinia \\\n    actinia-user --help\n\n# create a user and grant permissions to mapsets:\ndocker-compose -f docker-compose.yml exec actinia \\\n    actinia-user create -u actinia-core -w actinia-core -r user -g user -c 100000000 -n 1000 -t 6000\ndocker-compose -f docker-compose.yml exec actinia \\\n    actinia-user update -u actinia-core -d nc_spm_08/PERMANENT\n```\nRead more about user roles here: https://actinia.mundialis.de/tutorial/actinia_concepts.html#user-user-roles-and-user-groups\n\n# Testing the actinia server\n\nAfter deployment, you should be able to access the endpoints.\n\nExamples:\n\n* https://actinia.mundialis.de/latest/version\n* https://actinia.mundialis.de/latest/health_check\n* requires authorization (actinia user):\n    * https://actinia.mundialis.de/api/v3/projects\n\n# Cloud deployment with multiple actinia_core instances\n\nFor cloud deployment, you can use the `docker-swarm.sh` script as a starting point.\n\nShutdown current actinia swarm:\n```\ndocker stack rm actinia_swarm\ndocker swarm leave --force\n```\nStart new actinia swarm:\n```\nbash docker-swarm.sh\n```\nSee the scripts for hints.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factinia-org%2Factinia-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factinia-org%2Factinia-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factinia-org%2Factinia-docker/lists"}