{"id":20284077,"url":"https://github.com/ccao-data/service-shiny-proxy","last_synced_at":"2026-04-19T19:02:25.313Z","repository":{"id":178813094,"uuid":"662394724","full_name":"ccao-data/service-shiny-proxy","owner":"ccao-data","description":"ShinyProxy-based backend for launching CCAO Shiny applications","archived":false,"fork":false,"pushed_at":"2023-07-27T00:25:10.000Z","size":265,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-13T15:40:50.606Z","etag":null,"topics":["docker","r","service","shiny"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccao-data.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}},"created_at":"2023-07-05T03:39:10.000Z","updated_at":"2023-10-17T02:56:38.000Z","dependencies_parsed_at":"2023-10-03T10:27:44.564Z","dependency_job_id":null,"html_url":"https://github.com/ccao-data/service-shiny-proxy","commit_stats":{"total_commits":90,"total_committers":8,"mean_commits":11.25,"dds":0.5777777777777777,"last_synced_commit":"ecfc2c89b447dc2fff0f736f504eaa049872f717"},"previous_names":["ccao-data/service-shiny-proxy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ccao-data/service-shiny-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccao-data%2Fservice-shiny-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccao-data%2Fservice-shiny-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccao-data%2Fservice-shiny-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccao-data%2Fservice-shiny-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccao-data","download_url":"https://codeload.github.com/ccao-data/service-shiny-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccao-data%2Fservice-shiny-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32018764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":["docker","r","service","shiny"],"created_at":"2024-11-14T14:18:15.725Z","updated_at":"2026-04-19T19:02:25.277Z","avatar_url":"https://github.com/ccao-data.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data Department Application Server Backend\n\nThis repository hosts the Docker and config files that run the CCAO's application server backend. We use a free, open source package called [ShinyProxy](https://www.shinyproxy.io/) to deploy containerized applications using Docker.\n\n- For a brief primer on Docker and its benefits, see [here](https://medium.com/@kelvin_sp/docker-introduction-what-you-need-to-know-to-start-creating-containers-8ffaf064930a).\n- For help documentation and configuration related to ShinyProxy, see [here](https://www.shinyproxy.io/getting-started/).\n\n## Dependencies\n\nThe server depends on Docker for building and deployment and Docker Compose for configuration. Both of these must be installed on your system in order to run the server.\n\n- [Docker installation instructions](https://docs.docker.com/install/)\n- [Docker Compose installation instructions](https://docs.docker.com/compose/install/)\n\n## Overview / Structure\n\nThe server uses ShinyProxy as a frontend application launcher. When a user first visits the server's web address, they see a screen with a list of applications. These applications are the individual Shiny apps that a user can launch. Upon clicking an application, ShinyProxy will connect to the host machine's Docker socket and create a new container specifically for that application. This allows multiple users to run the same Shiny app concurrently.\n\nThe server has the following general structure:\n\n```\n+-------------------------------------------------------+\n|                                                       |\n|  Host Machine                                         |\n|                                                       |\n|  +-------------------------------+                    |      +-----------------------+\n|  |                               |                    |      |                       |\n|  |                               +--------------------------\u003e+   External Website    |\n|  |  ShinyProxy Docker Container  |                    |      |                       |\n|  |                               +\u003c--------------------------+  10.129.122.29:8080   |\n|  |                               |                    |      |                       |\n|  +-------------------------------+                    |      +------+------+-----+---+\n|                           ||                          |             |      |     |\n|                           ++                          |        +----+      |     +----+\n|                  Docker System Daemon                 |        |           |          |\n|                            +                          |        |           |          |\n|         +------------------------------------+        |        |           |          |\n|         |                  |                 |        |   +----+---+  +----+---+  +---+----+\n|         |                  |                 |        |   |        |  |        |  |        |\n|  +------+------+  +--------+------+  +-------+-----+  |   | User 1 |  | User 2 |  | User 3 |\n|  |             |  |               |  |             |  |   |        |  |        |  |        |\n|  |   Docker +  |  |    Docker +   |  |   Docker +  |  |   +--------+  +--------+  +--------+\n|  | Shiny App 1 |  |  Shiny App 1  |  | Shiny App 2 |  |\n|  |             |  |               |  |             |  |\n|  |             |  |               |  |             |  |\n|  +-------------+  +---------------+  +-------------+  |\n|                                                       |\n+-------------------------------------------------------+\n```\n\n## Configuration\n\nFiles in this directory have the following structure and functions:\n\n```\nservice-shiny-proxy/  # Top-level dir for hosting ShinyProxy config files\n├ application.yml     # Configures the actual ShinyProxy app, which apps to launch, logins, etc.\n├ docker-compose.yaml # Launches ShinyProxy with the necessary Docker config options/secrets\n├ Dockerfile          # Builds the environment and container dependencies for running ShinyProxy\n├ .env                # File containing environmental variables used in docker-compose.yaml\n├ README.md\n└ secrets             # Folder that must be manually created after cloning, contains login credentials\n    └ ENV_FILE        # Text file containing ODBC connection strings passed as env variables\n```\n\nConfiguration of the server is split into two parts:\n\n### Part 1\n\nPart 1 builds the container and environment necessary to run ShinyProxy. This includes a `Dockerfile`, which downloads the dependencies and image needed to run ShinyProxy, and `docker-compose.yaml` which specifies the ports, networks, sockets, secrets, and directories necessary to connect everything together.\n\n### Part 2\n\nPart 2 specifies the actual configuration options for ShinyProxy. All ShinyProxy configuration is handled via editing the included `application.yml` file. ShinyProxy allows configuration of the name of the server, the apps it launches, and various login options. For a full list of ShinyProxy configuration options, see [here](https://www.shinyproxy.io/documentation/configuration/).\n\n## Starting the Server\n\nTo run the server, simply run the Docker Compose command inside of this repository. On Linux, this command will be:\n\n```\ndocker-compose up -d\n```\n\nThe `-d` flag runs Docker Compose in detached mode, meaning you do not have to keep your SSH session open in order for the server to continue running.\n\nThe URL of the app launcher will be the IP address of the server with port 8080 appended. For example, if the server IP is 192.168.1.12, then ShinyProxy's IP will be 192.168.1.12:8080.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccao-data%2Fservice-shiny-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccao-data%2Fservice-shiny-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccao-data%2Fservice-shiny-proxy/lists"}