{"id":28528407,"url":"https://github.com/dokku/dokku-typesense","last_synced_at":"2025-08-02T13:39:21.300Z","repository":{"id":38376551,"uuid":"483899915","full_name":"dokku/dokku-typesense","owner":"dokku","description":"a typesense plugin for dokku","archived":false,"fork":false,"pushed_at":"2025-06-30T21:31:43.000Z","size":183,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-25T07:38:44.111Z","etag":null,"topics":["dokku","dokku-plugin","dokku-service","paas","typesense"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dokku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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},"funding":{"github":"dokku","open_collective":"dokku","patreon":"dokku"}},"created_at":"2022-04-21T04:02:07.000Z","updated_at":"2025-06-30T21:31:47.000Z","dependencies_parsed_at":"2023-02-19T17:15:27.605Z","dependency_job_id":"3dd3debe-5a06-42ed-b174-daccdd2cae6d","html_url":"https://github.com/dokku/dokku-typesense","commit_stats":{"total_commits":128,"total_committers":3,"mean_commits":"42.666666666666664","dds":0.484375,"last_synced_commit":"6c98b1884631e915f2577ab3ea9cb69275d7b16e"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/dokku/dokku-typesense","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokku%2Fdokku-typesense","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokku%2Fdokku-typesense/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokku%2Fdokku-typesense/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokku%2Fdokku-typesense/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dokku","download_url":"https://codeload.github.com/dokku/dokku-typesense/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokku%2Fdokku-typesense/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268400589,"owners_count":24244445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["dokku","dokku-plugin","dokku-service","paas","typesense"],"created_at":"2025-06-09T12:41:43.510Z","updated_at":"2025-08-02T13:39:21.288Z","avatar_url":"https://github.com/dokku.png","language":"Shell","funding_links":["https://github.com/sponsors/dokku","https://opencollective.com/dokku","https://patreon.com/dokku"],"categories":[],"sub_categories":[],"readme":"# dokku typesense [![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-typesense/ci.yml?branch=master\u0026style=flat-square \"Build Status\")](https://github.com/dokku/dokku-typesense/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square \"IRC Libera\")](https://webchat.libera.chat/?channels=dokku)\n\nOfficial typesense plugin for dokku. Currently defaults to installing [typesense/typesense 29.0](https://hub.docker.com/r/typesense/typesense/).\n\n## Requirements\n\n- dokku 0.19.x+\n- docker 1.8.x\n\n## Installation\n\n```shell\n# on 0.19.x+\nsudo dokku plugin:install https://github.com/dokku/dokku-typesense.git --name typesense\n```\n\n## Commands\n\n```\ntypesense:app-links \u003capp\u003e                          # list all typesense service links for a given app\ntypesense:backup-schedule-cat \u003cservice\u003e            # cat the contents of the configured backup cronfile for the service\ntypesense:backup-set-public-key-encryption \u003cservice\u003e \u003cpublic-key-id\u003e # set GPG Public Key encryption for all future backups of typesense service\ntypesense:backup-unset-public-key-encryption \u003cservice\u003e # unset GPG Public Key encryption for future backups of the typesense service\ntypesense:clone \u003cservice\u003e \u003cnew-service\u003e [--clone-flags...] # create container \u003cnew-name\u003e then copy data from \u003cname\u003e into \u003cnew-name\u003e\ntypesense:create \u003cservice\u003e [--create-flags...]     # create a typesense service\ntypesense:destroy \u003cservice\u003e [-f|--force]           # delete the typesense service/data/container if there are no links left\ntypesense:enter \u003cservice\u003e                          # enter or run a command in a running typesense service container\ntypesense:exists \u003cservice\u003e                         # check if the typesense service exists\ntypesense:expose \u003cservice\u003e \u003cports...\u003e              # expose a typesense service on custom host:port if provided (random port on the 0.0.0.0 interface if otherwise unspecified)\ntypesense:info \u003cservice\u003e [--single-info-flag]      # print the service information\ntypesense:link \u003cservice\u003e \u003capp\u003e [--link-flags...]   # link the typesense service to the app\ntypesense:linked \u003cservice\u003e \u003capp\u003e                   # check if the typesense service is linked to an app\ntypesense:links \u003cservice\u003e                          # list all apps linked to the typesense service\ntypesense:list                                     # list all typesense services\ntypesense:logs \u003cservice\u003e [-t|--tail] \u003ctail-num-optional\u003e # print the most recent log(s) for this service\ntypesense:pause \u003cservice\u003e                          # pause a running typesense service\ntypesense:promote \u003cservice\u003e \u003capp\u003e                  # promote service \u003cservice\u003e as TYPESENSE_URL in \u003capp\u003e\ntypesense:restart \u003cservice\u003e                        # graceful shutdown and restart of the typesense service container\ntypesense:set \u003cservice\u003e \u003ckey\u003e \u003cvalue\u003e              # set or clear a property for a service\ntypesense:start \u003cservice\u003e                          # start a previously stopped typesense service\ntypesense:stop \u003cservice\u003e                           # stop a running typesense service\ntypesense:unexpose \u003cservice\u003e                       # unexpose a previously exposed typesense service\ntypesense:unlink \u003cservice\u003e \u003capp\u003e                   # unlink the typesense service from the app\ntypesense:upgrade \u003cservice\u003e [--upgrade-flags...]   # upgrade service \u003cservice\u003e to the specified versions\n```\n\n## Usage\n\nHelp for any commands can be displayed by specifying the command as an argument to typesense:help. Plugin help output in conjunction with any files in the `docs/` folder is used to generate the plugin documentation. Please consult the `typesense:help` command for any undocumented commands.\n\n### Basic Usage\n\n### create a typesense service\n\n```shell\n# usage\ndokku typesense:create \u003cservice\u003e [--create-flags...]\n```\n\nflags:\n\n- `-c|--config-options \"--args --go=here\"`: extra arguments to pass to the container create command (default: `None`)\n- `-C|--custom-env \"USER=alpha;HOST=beta\"`: semi-colon delimited environment variables to start the service with\n- `-i|--image IMAGE`: the image name to start the service with\n- `-I|--image-version IMAGE_VERSION`: the image version to start the service with\n- `-m|--memory MEMORY`: container memory limit in megabytes (default: unlimited)\n- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to\n- `-p|--password PASSWORD`: override the user-level service password\n- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation\n- `-r|--root-password PASSWORD`: override the root-level service password\n- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start\n- `-s|--shm-size SHM_SIZE`: override shared memory size for typesense docker container\n\nCreate a typesense service named lollipop:\n\n```shell\ndokku typesense:create lollipop\n```\n\nYou can also specify the image and image version to use for the service. It *must* be compatible with the typesense/typesense image.\n\n```shell\nexport TYPESENSE_IMAGE=\"typesense/typesense\"\nexport TYPESENSE_IMAGE_VERSION=\"${PLUGIN_IMAGE_VERSION}\"\ndokku typesense:create lollipop\n```\n\nYou can also specify custom environment variables to start the typesense service in semicolon-separated form.\n\n```shell\nexport TYPESENSE_CUSTOM_ENV=\"USER=alpha;HOST=beta\"\ndokku typesense:create lollipop\n```\n\n### print the service information\n\n```shell\n# usage\ndokku typesense:info \u003cservice\u003e [--single-info-flag]\n```\n\nflags:\n\n- `--config-dir`: show the service configuration directory\n- `--data-dir`: show the service data directory\n- `--dsn`: show the service DSN\n- `--exposed-ports`: show service exposed ports\n- `--id`: show the service container id\n- `--internal-ip`: show the service internal ip\n- `--initial-network`: show the initial network being connected to\n- `--links`: show the service app links\n- `--post-create-network`: show the networks to attach to after service container creation\n- `--post-start-network`: show the networks to attach to after service container start\n- `--service-root`: show the service root directory\n- `--status`: show the service running status\n- `--version`: show the service image version\n\nGet connection information as follows:\n\n```shell\ndokku typesense:info lollipop\n```\n\nYou can also retrieve a specific piece of service info via flags:\n\n```shell\ndokku typesense:info lollipop --config-dir\ndokku typesense:info lollipop --data-dir\ndokku typesense:info lollipop --dsn\ndokku typesense:info lollipop --exposed-ports\ndokku typesense:info lollipop --id\ndokku typesense:info lollipop --internal-ip\ndokku typesense:info lollipop --initial-network\ndokku typesense:info lollipop --links\ndokku typesense:info lollipop --post-create-network\ndokku typesense:info lollipop --post-start-network\ndokku typesense:info lollipop --service-root\ndokku typesense:info lollipop --status\ndokku typesense:info lollipop --version\n```\n\n### list all typesense services\n\n```shell\n# usage\ndokku typesense:list\n```\n\nList all services:\n\n```shell\ndokku typesense:list\n```\n\n### print the most recent log(s) for this service\n\n```shell\n# usage\ndokku typesense:logs \u003cservice\u003e [-t|--tail] \u003ctail-num-optional\u003e\n```\n\nflags:\n\n- `-t|--tail [\u003ctail-num\u003e]`: do not stop when end of the logs are reached and wait for additional output\n\nYou can tail logs for a particular service:\n\n```shell\ndokku typesense:logs lollipop\n```\n\nBy default, logs will not be tailed, but you can do this with the --tail flag:\n\n```shell\ndokku typesense:logs lollipop --tail\n```\n\nThe default tail setting is to show all logs, but an initial count can also be specified:\n\n```shell\ndokku typesense:logs lollipop --tail 5\n```\n\n### link the typesense service to the app\n\n```shell\n# usage\ndokku typesense:link \u003cservice\u003e \u003capp\u003e [--link-flags...]\n```\n\nflags:\n\n- `-a|--alias \"BLUE_DATABASE\"`: an alternative alias to use for linking to an app via environment variable\n- `-q|--querystring \"pool=5\"`: ampersand delimited querystring arguments to append to the service link\n- `-n|--no-restart \"false\"`: whether or not to restart the app on link (default: true)\n\nA typesense service can be linked to a container. This will use native docker links via the docker-options plugin. Here we link it to our `playground` app.\n\n\u003e NOTE: this will restart your app\n\n```shell\ndokku typesense:link lollipop playground\n```\n\nThe following environment variables will be set automatically by docker (not on the app itself, so they won’t be listed when calling dokku config):\n\n```\nDOKKU_TYPESENSE_LOLLIPOP_NAME=/lollipop/DATABASE\nDOKKU_TYPESENSE_LOLLIPOP_PORT=tcp://172.17.0.1:8108\nDOKKU_TYPESENSE_LOLLIPOP_PORT_8108_TCP=tcp://172.17.0.1:8108\nDOKKU_TYPESENSE_LOLLIPOP_PORT_8108_TCP_PROTO=tcp\nDOKKU_TYPESENSE_LOLLIPOP_PORT_8108_TCP_PORT=8108\nDOKKU_TYPESENSE_LOLLIPOP_PORT_8108_TCP_ADDR=172.17.0.1\n```\n\nThe following will be set on the linked application by default:\n\n```\nTYPESENSE_URL=typesense://:SOME_PASSWORD@dokku-typesense-lollipop:8108\n```\n\nThe host exposed here only works internally in docker containers. If you want your container to be reachable from outside, you should use the `expose` subcommand. Another service can be linked to your app:\n\n```shell\ndokku typesense:link other_service playground\n```\n\nIt is possible to change the protocol for `TYPESENSE_URL` by setting the environment variable `TYPESENSE_DATABASE_SCHEME` on the app. Doing so will after linking will cause the plugin to think the service is not linked, and we advise you to unlink before proceeding.\n\n```shell\ndokku config:set playground TYPESENSE_DATABASE_SCHEME=typesense2\ndokku typesense:link lollipop playground\n```\n\nThis will cause `TYPESENSE_URL` to be set as:\n\n```\ntypesense2://:SOME_PASSWORD@dokku-typesense-lollipop:8108\n```\n\n### unlink the typesense service from the app\n\n```shell\n# usage\ndokku typesense:unlink \u003cservice\u003e \u003capp\u003e\n```\n\nflags:\n\n- `-n|--no-restart \"false\"`: whether or not to restart the app on unlink (default: true)\n\nYou can unlink a typesense service:\n\n\u003e NOTE: this will restart your app and unset related environment variables\n\n```shell\ndokku typesense:unlink lollipop playground\n```\n\n### set or clear a property for a service\n\n```shell\n# usage\ndokku typesense:set \u003cservice\u003e \u003ckey\u003e \u003cvalue\u003e\n```\n\nSet the network to attach after the service container is started:\n\n```shell\ndokku typesense:set lollipop post-create-network custom-network\n```\n\nSet multiple networks:\n\n```shell\ndokku typesense:set lollipop post-create-network custom-network,other-network\n```\n\nUnset the post-create-network value:\n\n```shell\ndokku typesense:set lollipop post-create-network\n```\n\n### Service Lifecycle\n\nThe lifecycle of each service can be managed through the following commands:\n\n### enter or run a command in a running typesense service container\n\n```shell\n# usage\ndokku typesense:enter \u003cservice\u003e\n```\n\nA bash prompt can be opened against a running service. Filesystem changes will not be saved to disk.\n\n\u003e NOTE: disconnecting from ssh while running this command may leave zombie processes due to moby/moby#9098\n\n```shell\ndokku typesense:enter lollipop\n```\n\nYou may also run a command directly against the service. Filesystem changes will not be saved to disk.\n\n```shell\ndokku typesense:enter lollipop touch /tmp/test\n```\n\n### expose a typesense service on custom host:port if provided (random port on the 0.0.0.0 interface if otherwise unspecified)\n\n```shell\n# usage\ndokku typesense:expose \u003cservice\u003e \u003cports...\u003e\n```\n\nExpose the service on the service's normal ports, allowing access to it from the public interface (`0.0.0.0`):\n\n```shell\ndokku typesense:expose lollipop 8108\n```\n\nExpose the service on the service's normal ports, with the first on a specified ip address (127.0.0.1):\n\n```shell\ndokku typesense:expose lollipop 127.0.0.1:8108\n```\n\n### unexpose a previously exposed typesense service\n\n```shell\n# usage\ndokku typesense:unexpose \u003cservice\u003e\n```\n\nUnexpose the service, removing access to it from the public interface (`0.0.0.0`):\n\n```shell\ndokku typesense:unexpose lollipop\n```\n\n### promote service \u003cservice\u003e as TYPESENSE_URL in \u003capp\u003e\n\n```shell\n# usage\ndokku typesense:promote \u003cservice\u003e \u003capp\u003e\n```\n\nIf you have a typesense service linked to an app and try to link another typesense service another link environment variable will be generated automatically:\n\n```\nDOKKU_TYPESENSE_BLUE_URL=typesense://:ANOTHER_PASSWORD@dokku-typesense-other-service:8108/other_service\n```\n\nYou can promote the new service to be the primary one:\n\n\u003e NOTE: this will restart your app\n\n```shell\ndokku typesense:promote other_service playground\n```\n\nThis will replace `TYPESENSE_URL` with the url from other_service and generate another environment variable to hold the previous value if necessary. You could end up with the following for example:\n\n```\nTYPESENSE_URL=typesense://:ANOTHER_PASSWORD@dokku-typesense-other-service:8108/other_service\nDOKKU_TYPESENSE_BLUE_URL=typesense://:ANOTHER_PASSWORD@dokku-typesense-other-service:8108/other_service\nDOKKU_TYPESENSE_SILVER_URL=typesense://:SOME_PASSWORD@dokku-typesense-lollipop:8108/lollipop\n```\n\n### start a previously stopped typesense service\n\n```shell\n# usage\ndokku typesense:start \u003cservice\u003e\n```\n\nStart the service:\n\n```shell\ndokku typesense:start lollipop\n```\n\n### stop a running typesense service\n\n```shell\n# usage\ndokku typesense:stop \u003cservice\u003e\n```\n\nStop the service and removes the running container:\n\n```shell\ndokku typesense:stop lollipop\n```\n\n### pause a running typesense service\n\n```shell\n# usage\ndokku typesense:pause \u003cservice\u003e\n```\n\nPause the running container for the service:\n\n```shell\ndokku typesense:pause lollipop\n```\n\n### graceful shutdown and restart of the typesense service container\n\n```shell\n# usage\ndokku typesense:restart \u003cservice\u003e\n```\n\nRestart the service:\n\n```shell\ndokku typesense:restart lollipop\n```\n\n### upgrade service \u003cservice\u003e to the specified versions\n\n```shell\n# usage\ndokku typesense:upgrade \u003cservice\u003e [--upgrade-flags...]\n```\n\nflags:\n\n- `-c|--config-options \"--args --go=here\"`: extra arguments to pass to the container create command (default: `None`)\n- `-C|--custom-env \"USER=alpha;HOST=beta\"`: semi-colon delimited environment variables to start the service with\n- `-i|--image IMAGE`: the image name to start the service with\n- `-I|--image-version IMAGE_VERSION`: the image version to start the service with\n- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to\n- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation\n- `-R|--restart-apps \"true\"`: whether or not to force an app restart (default: false)\n- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start\n- `-s|--shm-size SHM_SIZE`: override shared memory size for typesense docker container\n\nYou can upgrade an existing service to a new image or image-version:\n\n```shell\ndokku typesense:upgrade lollipop\n```\n\n### Service Automation\n\nService scripting can be executed using the following commands:\n\n### list all typesense service links for a given app\n\n```shell\n# usage\ndokku typesense:app-links \u003capp\u003e\n```\n\nList all typesense services that are linked to the `playground` app.\n\n```shell\ndokku typesense:app-links playground\n```\n\n### create container \u003cnew-name\u003e then copy data from \u003cname\u003e into \u003cnew-name\u003e\n\n```shell\n# usage\ndokku typesense:clone \u003cservice\u003e \u003cnew-service\u003e [--clone-flags...]\n```\n\nflags:\n\n- `-c|--config-options \"--args --go=here\"`: extra arguments to pass to the container create command (default: `None`)\n- `-C|--custom-env \"USER=alpha;HOST=beta\"`: semi-colon delimited environment variables to start the service with\n- `-i|--image IMAGE`: the image name to start the service with\n- `-I|--image-version IMAGE_VERSION`: the image version to start the service with\n- `-m|--memory MEMORY`: container memory limit in megabytes (default: unlimited)\n- `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to\n- `-p|--password PASSWORD`: override the user-level service password\n- `-P|--post-create-network NETWORKS`: a comma-separated list of networks to attach the service container to after service creation\n- `-r|--root-password PASSWORD`: override the root-level service password\n- `-S|--post-start-network NETWORKS`: a comma-separated list of networks to attach the service container to after service start\n- `-s|--shm-size SHM_SIZE`: override shared memory size for typesense docker container\n\nYou can clone an existing service to a new one:\n\n```shell\ndokku typesense:clone lollipop lollipop-2\n```\n\n### check if the typesense service exists\n\n```shell\n# usage\ndokku typesense:exists \u003cservice\u003e\n```\n\nHere we check if the lollipop typesense service exists.\n\n```shell\ndokku typesense:exists lollipop\n```\n\n### check if the typesense service is linked to an app\n\n```shell\n# usage\ndokku typesense:linked \u003cservice\u003e \u003capp\u003e\n```\n\nHere we check if the lollipop typesense service is linked to the `playground` app.\n\n```shell\ndokku typesense:linked lollipop playground\n```\n\n### list all apps linked to the typesense service\n\n```shell\n# usage\ndokku typesense:links \u003cservice\u003e\n```\n\nList all apps linked to the `lollipop` typesense service.\n\n```shell\ndokku typesense:links lollipop\n```\n### Backups\n\nDatastore backups are supported via AWS S3 and S3 compatible services like [minio](https://github.com/minio/minio).\n\nYou may skip the `backup-auth` step if your dokku install is running within EC2 and has access to the bucket via an IAM profile. In that case, use the `--use-iam` option with the `backup` command.\n\nBackups can be performed using the backup commands:\n\n### set GPG Public Key encryption for all future backups of typesense service\n\n```shell\n# usage\ndokku typesense:backup-set-public-key-encryption \u003cservice\u003e \u003cpublic-key-id\u003e\n```\n\nSet the `GPG` Public Key for encrypting backups:\n\n```shell\ndokku typesense:backup-set-public-key-encryption lollipop\n```\n\n### unset GPG Public Key encryption for future backups of the typesense service\n\n```shell\n# usage\ndokku typesense:backup-unset-public-key-encryption \u003cservice\u003e\n```\n\nUnset the `GPG` Public Key encryption for backups:\n\n```shell\ndokku typesense:backup-unset-public-key-encryption lollipop\n```\n\n### cat the contents of the configured backup cronfile for the service\n\n```shell\n# usage\ndokku typesense:backup-schedule-cat \u003cservice\u003e\n```\n\nCat the contents of the configured backup cronfile for the service:\n\n```shell\ndokku typesense:backup-schedule-cat lollipop\n```\n\n### Disabling `docker image pull` calls\n\nIf you wish to disable the `docker image pull` calls that the plugin triggers, you may set the `TYPESENSE_DISABLE_PULL` environment variable to `true`. Once disabled, you will need to pull the service image you wish to deploy as shown in the `stderr` output.\n\nPlease ensure the proper images are in place when `docker image pull` is disabled.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokku%2Fdokku-typesense","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdokku%2Fdokku-typesense","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokku%2Fdokku-typesense/lists"}