{"id":49249317,"url":"https://github.com/senzing-garage/senzinggo","last_synced_at":"2026-04-24T23:35:33.963Z","repository":{"id":38331991,"uuid":"424682392","full_name":"senzing-garage/senzinggo","owner":"senzing-garage","description":"Quickly and easily start the Senzing REST API server, demo web app \u0026 Swagger in containers.","archived":false,"fork":false,"pushed_at":"2026-02-13T18:49:32.000Z","size":2992,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-13T23:58:50.965Z","etag":null,"topics":["demonstration","g2tool","senzing-cleanup","senzing-g2-python","top-pick","utility"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/senzing-garage.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2021-11-04T17:29:25.000Z","updated_at":"2026-02-13T18:49:35.000Z","dependencies_parsed_at":"2024-01-29T16:16:50.576Z","dependency_job_id":"361ae2fb-5798-4dd8-8543-5bbc47b06b61","html_url":"https://github.com/senzing-garage/senzinggo","commit_stats":null,"previous_names":["senzing-garage/senzinggo"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/senzing-garage/senzinggo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/senzing-garage%2Fsenzinggo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/senzing-garage%2Fsenzinggo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/senzing-garage%2Fsenzinggo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/senzing-garage%2Fsenzinggo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/senzing-garage","download_url":"https://codeload.github.com/senzing-garage/senzinggo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/senzing-garage%2Fsenzinggo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32245150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":["demonstration","g2tool","senzing-cleanup","senzing-g2-python","top-pick","utility"],"created_at":"2026-04-24T23:35:32.692Z","updated_at":"2026-04-24T23:35:33.946Z","avatar_url":"https://github.com/senzing-garage.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SenzingGo\n\nIf you are beginning your journey with [Senzing],\nplease start with [Senzing Quick Start guides].\n\nYou are in the [Senzing Garage] where projects are \"tinkered\" on.\nAlthough this GitHub repository may help you understand an approach to using Senzing,\nit's not considered to be \"production ready\" and is not considered to be part of the Senzing product.\nHeck, it may not even be appropriate for your application of Senzing!\n\n## QuickStart\n\nSenzingGo is included in a bare metal install from V3. Follow the [Senzing Quickstart], from the same shell within the project directory:\n\n```\npython3 -m pip install docker\n./python/SenzingGo.py\n```\n\n## Overview\n\nThe SenzingGo utility provides rapid deployment of the following Docker containers on a bare metal Linux installation of the Senzing APIs:\n\n- [Senzing REST API Server]\n- [Senzing Entity Search App (sample demo application)]\n- [Swagger UI]\n\nSenzingGo is intended to be easy to use and deploy resources quickly to aid in getting started with the Senzing APIs; without requiring Docker skills. Due to its rapid deployment and ease of use, it is targeted at testing, development and education.\n\nSenzingGo is not intended for production use, it does not provide authentication or secure transport of communications. Such topics are outside the intended scope of SenzingGo.\n\n### Contents\n\n1. [Prerequisites]\n2. [Installation]\n3. [Usage Overview]\n4. [Usage]\n5. [Options]\n   1. [Docker Networking]\n   1. [Specifying Ports]\n   1. [Starting Specific Containers]\n   1. [Cleaning Up Containers]\n   1. [Information and Logs]\n   1. [Packaging and Deploying the Docker Images]\n   1. [Starting REST Server in Admin Mode]\n   1. [Change Container Name Suffix]\n   1. [Db2 CLI Drivers Path]\n\n### Legend\n\n1. :thinking: - A \"thinker\" icon means that a little extra thinking may be required.\n     Perhaps you'll need to make some choices.\n     Perhaps it's an optional step.\n1. :pencil2: - A \"pencil\" icon means that the instructions may need modification before performing.\n1. :warning: - A \"warning\" icon means that something tricky is happening, so pay attention.\n\n### Prerequisites\n\n- [Supported Linux operating system]\n- [Senzing APIs installation and project creation]\n- [Docker]\n- Internet access (for initial pull of Docker images)\n- Python Docker module\n\n  ```console\n  pip3 install docker\n  ```\n\n- sudo access or user added to the Linux docker group\n  - SenzingGo executes API calls against Docker and [privileges] to use it are required\n\n:warning: Recent versions of Red Hat systems use Podman in place of Docker. Podman is not currently supported, see the Docker link above for installation of Docker if you don't rely on Podman.\n\n:warning: MS SQL Server and Oracle are currently not supported as a Senzing repository when using SenzingGo, please contact [support] if this is a requirement.\n\n### Installation\n\nSenzingGo is included in V3+ of the Senzing APIs.\n\n### Usage Overview\n\n```console\nusage: SenzingGo.py [-h] [-c INIFILE] [-ap PORT] [-wp PORT] [-sp PORT] [-nwa] [-nsw] [-s | -r] [-i] [-l [STRING]] [-si [IMAGE [IMAGE ...]]] [-sip PATH] [-li FILE] [-aa] [-n [NAME]]\n                    [-du URL] [-ho [HOST]] [-ps SUFFIX] [-db2c DB2CLIPATH] [-wh] [-u]\n\nUtility to rapidly deploy Docker containers for REST API server, Entity Search App and Swagger UI\n\nAdditional information: https://github.com/senzing-garage/senzinggo\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c INIFILE, --iniFile INIFILE\n                        Path and file name of optional G2Module.ini to use.\n\n  -ap PORT, --apiHostPort PORT\n                        Port number of the REST API server, default=8250\n\n  -wp PORT, --webAppHostPort PORT\n                        Port number of the Search Web App demo, default=8251\n\n  -sp PORT, --swaggerHostPort PORT\n                        Port number of Swagger UI, default=9180\n\n  -nwa, --noWebApp      Don't deploy the Search Web App demo\n\n  -nsw, --noSwagger     Don't deploy the Swagger UI\n\n  -s, --contStop        Stop any Docker containers named *3_2_0_22234\n\n  -r, --contRemove      Stop and remove any Docker containers named *3_2_0_22234\n\n  -i, --info            Display info for running containers for this project\n\n  -l [STRING], --logs [STRING]\n                        Display logs for running container(s), use partial string to match multiple containers, default=SzGo\n\n  -si [IMAGE [IMAGE ...]], --saveImages [IMAGE [IMAGE ...]]\n                        Save SenzingGo Docker images for loading on another machine, e.g. air gapped systems\n\n                        Unless instructed by Senzing support no arguments are required.\n\n  -sip PATH, --saveImagesPath PATH\n                        Path for saving a Docker images package to, default=/home/ant/senzprojs/3.2.0.22234/var\n\n  -li FILE, --loadImages FILE\n                        File to load SenzingGo Docker images from to this machine, e.g. air gapped systems\n\n  -aa, --apiAdmin       Enable admin mode on the API Server\n\n  -n [NAME], --dockNet [NAME]\n                        Name of a Docker network to create or use, default=szgo-network\n\n  -du URL, --dockUrl URL\n                        URL for Docker server, default=unix://var/run/docker.sock\n\n  -ho [HOST], --host [HOST]\n                        Hostname, only use if tool can't determine correctly\n\n  -ps SUFFIX, --projectSuffix SUFFIX\n                        Suffix to use for container names, default=3_2_0_22234\n\n  -db2c DB2CLIPATH, --db2CliPath DB2CLIPATH\n                        Path to Db2 client CLI driver when using a Db2 database as the Senzing repository\n\n  -wh, --waitHealth     Wait for health checking on containers starting, use if errors are reported during a run\n\n  -u, --update          Update check\n\n```\n\n### Usage\n\nAlthough SenzingGo has many arguments, it is executed in its simplest form with no arguments.\n\n```\n./SenzingGo.py\n```\n\nUpon execution the script will:\n\n1. Perform checks to ensure Docker is installed and the current user has privileges to execute Docker commands\n2. Check for the latest versions of Docker images utilized\n3. Check if there are updates to SenzingGo\n4. Pull the required Docker images (if not already locally available)\n5. Run the Docker images and instantiate running containers for the previously described assets\n6. Print URL information for each of the services provided by the Docker containers\n\n![SenzingGo Run]\n\nOnce complete, access to each of the services is available at the URL and port detailed at the end of the output. For example, in the above output the Senzing demo entity search application is accessible from a browser at http://ant76.anthome:8251.\n\nSenzingGo is designed to be run from within a previously created Senzing project. This facilitates having multiple projects (dev, test, stage or different versions of the Senzing APIs) and distinct containers for the above services serving a single project. A consideration for running multiple projects and instances of the containers started by SenzingGo is specifying different ports than those used by default. See [Specifying Ports]\n\n![Multiple Projects]\n\nUpon startup, and if an internet connection is available, SenzingGo will check for the latest version of the Docker images and attempt to pull them for use. Although an internet connection is usually expected by SenzingGo, and is initially required to pull the Docker images it uses, SenzingGo can work in an 'offline' mode. When offline and an internet connection isn't available, SenzingGo will check the locally available Docker images to determine if the images it needs to start are available. This allows SenzingGo to continue to operate without an internet connection.\n\nThere is another use case where it is useful for SenzingGo to be able to run offline: air gaped systems. In this use case SenzingGo can be used on an internet connected machine to package the required Docker images together. This package can be moved to an air gapped system where SenzingGo can deploy the Docker images for use without needing to pull them directly from the internet, see [Packaging and Deploying the Docker Images]\n\n### Options\n\n#### Docker Networking\n\nIf you have set `\"userland-proxy\": false` in your Docker configuration file (/etc/docker/daemon.json) and your Senzing database is also using a Docker container, SenzingGo will fail with connection issues. SenzingGo uses a network (the default is szgo-network) for the containers it starts. Your database container will not be using the same network.\n\nTo start the database container in the default SenzingGo network:\n\n```console\ndocker run --net szgo-network ...\n```\n\nThe other option is if your database container is specifying a Docker network to use, instruct SenzingGo to use that network instead:\n\n```console\n./SenzingGo.py -n \u003cnetwork_name\u003e\n```\n\nNote, the containers cannot use the default Docker bridge network or they cannot discover each other by service name; this is by design for this network.\n\n#### Specifying Ports\n\nEach of the three services will use default ports - 8250, 8251 and 9180 - there are a couple of cases where you may need to specify different port numbers:\n\n1. The ports 8250, 8251 or 9180 are already in use on the system\n2. There are multiple Senzing API projects on a single system and SenzingGo is to be used with each\n\nIn the instance a port is already in use, the following error message (or similar) is displayed and SenzingGo cannot continue.\n\n```\nERROR: 500 Server Error for http+docker://localhost/v1.41/containers/0e229d2fbf4676a2d8dc5ded8a00dc3c75a7cb44fc189dcf9e43a3aba576a94b/start: Internal Server Error (\"driver failed programming external connectivity on endpoint SzGo-API-2_7_0-Release (37b781741cc80ff1bc45c02646272443f91b54171c58890e2814dafb21c444a4): Bind for 0.0.0.0:8250 failed: port is already allocated\")\n```\n\nTo launch SenzingGo and use alternative port numbers, specify one or more of:\n\n```\n./SenzingGo.py --apiHostPort 8252 --webAppHostPort 8253 --swaggerHostPort 9181\n```\n\n#### Starting Specific Containers\n\nRunning SenzingGo without any params will start all three of the default containers: Senzing REST API Server, Senzing Entity Search App and the Swagger UI. There may be situations where you don't intend to use all 3 and don't wish to use resources starting them. To choose not to start either the Senzing Entity Search App or the Swagger UI the `--noWebApp` and `--noSwagger` options can be used. Note: the REST API Server always starts and is the minimum requirement.\n\nStart the Senzing REST API Server and the Senzing Entity Search App:\n\n`./SenzingGo.py --noSwagger`\n\nStart only the Senzing REST API Server:\n\n`./SenzingGo.py --noWebApp --noSwagger`\n\n#### Cleaning up Containers\n\nWhen you no longer require the use of any of the services provided by the containers, you can stop and/or clean up the containers:\n\n- `--contStop`\n  - Stop any containers for the currently active Senzing project\n- `--contRemove`\n  - Stop any containers for the currently active Senzing project, and remove the containers\n\n#### Information and Logs\n\nUpon completion of execution, SenzingGo displays information relating to the URL and port for each service. If this information is lost sight of from the terminal it can be recalled again by using the `--info` option. The info option displays the URL and port information along with other pertinent information for the running containers.\n\n![SenzingGo Info]\n\nThe `--logs` option is used to display each of the logs for currently running containers started by SenzingGo. This can be useful in helping determine problems with starting the containers and will be of use to Senzing support:\n\n`./SenzingGo.py --logs`\n\n#### Packaging and Deploying the Docker Images\n\nIn situations where the Senzing APIs are being utilized on systems with no internet connection, and there is a requirement to use SenzingGo, SenzingGo can be used on an internet connected machine to package the required Docker images for deployment on the non-internet connected machine. This is typically useful in environments that have air gapped systems. The sequence of events in such a situation would be:\n\n1. On the internet connected machine ensure the Prerequisites are met\n\n   1. :thinking: Installation of the Senzing APIs and creation of a project is not required. SenzingGo can be run standalone when using `--saveImages` or `--loadImages`\n\n2. Run SenzingGo with the `--saveImages` option\n   1. No arguments are required to `--saveImages`\n\n![Save Images]\n\n3. Move the created package to the non-internet connected machine\n\n   1. :thinking: If you don't have the Senzing API installation package or SenzingGo.py on the target machine already, transfer them to the target machine now\n\n4. Run SenzingGo with the `--loadImages` option, specifying the name of the package, on the non-internet connected machine\n\n![Load Images]\n\nAt this point the 3 required Docker images should be available on the local machine. Assuming the Senzing APIs have been installed, a Senzing project created and SenzingGo.py is available, SenzingGo will detect there is no internet connection but the required images are available to use as normal.\n\n:thinking: Anytime one of the Docker images is updated and the update required on the non-internet connected machine the same process can be repeated to update the images.\n\nWhen saving the images, a default location will be used (either /tmp or \u003cproject_path\u003e/var/), to specify the location to save the package to use the `--saveImagesPath` option.\n\n`./SenzingGo.py --saveImages --saveImagesPath /home/ant`\n\n#### Starting REST Server in Admin Mode\n\nTo enable additional functionality in the Senzing REST API Server and Entity Search App the REST Server needs to be started in admin mode. The additional functionality includes making configuration changes via the REST Server and loading data from the Entity Search App. To start the REST server in admin mode:\n\n`./SenzingGo.py --apiAdmin`\n\n#### Change Container Name Suffix\n\nBy default, SenzingGo will use the name of the project as a suffix when creating the container names to distinguish from containers used by other projects. In the following Docker output note the name of each of the containers created by SenzingGo have the suffix '2_8_3-Release', this is the name of the active Senzing project.\n\n```\n--\u003e docker ps -a --format \"{{.ID}}    {{.State}}    {{.Names}}\"\n10308ec5b7a6    running    SzGo-Swagger-2_8_3-Release\nf24ce403b526    running    SzGo-WEB-2_8_3-Release\n2012006ef60b    running    SzGo-API-2_8_3-Release\n```\n\nUsing the project name helps to identify the containers used by a project. If however, you wanted to use a different suffix the `--projectSuffix` option can be used:\n\n```\n./SenzingGo.py --projectSuffix My_Sample_Demo\n```\n\nNote the new suffix:\n\n```\n--\u003e docker ps -a --format \"{{.ID}}    {{.State}}    {{.Names}}\"\n9a12e9d225a9    running    SzGo-Swagger-My_Sample_Demo\n60de596a90b4    running    SzGo-WEB-My_Sample_Demo\n3030d07b2652    running    SzGo-API-My_Sample_Demo\n```\n\nWhen using `--projectSuffix`, be aware it is required to be used with other command options. For example, to remove the 3 containers with the `--contRemove` option, the `--projectSuffix` option must also be used to specify the suffix.\n\n#### Db2 CLI Drivers Path\n\nWhen using Db2 as the Senzing repository you will have already installed the Db2 CLI client and drivers. To mount the drivers into the REST API container for use, SenzingGo must be informed of the location of these drivers on the host system. The path specified for this option should be the location of the Db2 client CLI drivers where the directories such as /cfg and /lib are located, for example /opt/IBM/db2_cli_odbc_driver/odbc_cli/clidriver\n\n`./SenzingGo.py --db2CliPath /opt/IBM/db2_cli_odbc_driver/odbc_cli/clidriver`\n\n[Change Container Name Suffix]: #change-container-name-suffix\n[Cleaning Up Containers]: #cleaning-up-containers\n[Db2 CLI Drivers Path]: #db2-cli-drivers-path\n[Docker Networking]: #docker-networking\n[Docker]: https://docs.docker.com/engine/install/\n[Information and Logs]: #information-and-logs\n[Installation]: #installation\n[Load Images]: /docs/img/LoadImages.png\n[Multiple Projects]: /docs/img/MultiInstance.png\n[Options]: #options\n[Packaging and Deploying the Docker Images]: #packaging-and-deploying-the-docker-images\n[Prerequisites]: #prerequisites\n[privileges]: https://docs.docker.com/engine/install/linux-postinstall/\n[Save Images]: /docs/img/SaveImages.png\n[Senzing APIs installation and project creation]: https://senzing.zendesk.com/hc/en-us/articles/115001579954-API-Quickstart-Roadmap\n[Senzing Entity Search App (sample demo application)]: https://github.com/senzing-garage/entity-search-web-app\n[Senzing Garage]: https://github.com/senzing-garage\n[Senzing Quick Start guides]: https://docs.senzing.com/quickstart/\n[Senzing Quickstart]: https://senzing.zendesk.com/hc/en-us/articles/115001579954-API-Quickstart-Roadmap\n[Senzing REST API Server]: https://github.com/senzing-garage/senzing-api-server\n[Senzing]: https://senzing.com/\n[SenzingGo Info]: /docs/img/SenzingGoInfo.png\n[SenzingGo Run]: /docs/img/SenzingGoRun.png\n[Specifying Ports]: #specifying-ports\n[Starting REST Server in Admin Mode]: #starting-rest-server-in-admin-mode\n[Starting Specific Containers]: #starting-specific-containers\n[support]: https://senzing.zendesk.com/hc/en-us/requests/new\n[Supported Linux operating system]: https://senzing.zendesk.com/hc/en-us/articles/115010259947\n[Swagger UI]: https://swagger.io/tools/swagger-ui/\n[Usage Overview]: #usage-overview\n[Usage]: #usage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsenzing-garage%2Fsenzinggo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsenzing-garage%2Fsenzinggo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsenzing-garage%2Fsenzinggo/lists"}