{"id":29068640,"url":"https://github.com/heysupratim/npmsync","last_synced_at":"2026-06-28T21:31:15.222Z","repository":{"id":300659904,"uuid":"1006746348","full_name":"heysupratim/npmsync","owner":"heysupratim","description":"A simple automation tool to add/edit proxy hosts to nginx proxy manager using a config json file","archived":false,"fork":false,"pushed_at":"2025-06-22T23:47:10.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-23T00:29:16.103Z","etag":null,"topics":["nginx-proxy","nginx-proxy-manager","poetry","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/heysupratim.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,"zenodo":null}},"created_at":"2025-06-22T23:14:43.000Z","updated_at":"2025-06-22T23:47:13.000Z","dependencies_parsed_at":"2025-06-23T00:29:17.424Z","dependency_job_id":"eaab32ec-3119-4abc-b332-25bc788fe8f3","html_url":"https://github.com/heysupratim/npmsync","commit_stats":null,"previous_names":["heysupratim/npmsync"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/heysupratim/npmsync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heysupratim%2Fnpmsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heysupratim%2Fnpmsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heysupratim%2Fnpmsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heysupratim%2Fnpmsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heysupratim","download_url":"https://codeload.github.com/heysupratim/npmsync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heysupratim%2Fnpmsync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34905180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"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":["nginx-proxy","nginx-proxy-manager","poetry","python"],"created_at":"2025-06-27T11:08:54.318Z","updated_at":"2026-06-28T21:31:15.216Z","avatar_url":"https://github.com/heysupratim.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e ⚠️ **Warning:** This project is a work in progress. **Do not use it in production environments.**\n\n# NPM Sync\n\nA tool to automate configuration of Nginx Proxy Manager hosts.\n\n## Installation\n\nAdd the following service to your `docker-compose.yml`:\n\n```yaml\nservices:\n  npmsync:\n    image: \"ghcr.io/heysupratim/npmsync:latest\"\n    container_name: npmsync\n    restart: unless-stopped\n    environment:\n      - name=value\n      - NPM_URL=${NPM_URL}\n      - NPM_USERNAME=${NPM_USERNAME}\n      - NPM_PASSWORD=${NPM_PASSWORD}\n    volumes:\n      - ./config:/app/config:z\n```\n\n## Configuration\n\nCreate a `.env` file in the project root:\n\n```\nNPM_URL=https://your-npm-instance\nNPM_USERNAME=your_username\nNPM_PASSWORD=your_password\n```\n\nCreate a directory named `config` in your project root, and add a file called either `proxy_hosts.json` or `proxy_hosts.yaml` inside it:\n\n```sh\nmkdir -p config\ntouch config/proxy_hosts.json  # or proxy_hosts.yaml\n```\n\n\u003e ⚠️ **Note:** The config directory must contain either `proxy_hosts.json` OR `proxy_hosts.yaml`, not both simultaneously. The application will only process one configuration file.\n\n## Configuration File Format\n\nThe configuration file should be either a JSON or YAML array of proxy host configurations that you want to commit to version control.\n\n### JSON Format (`proxy_hosts.json`)\n\n```json\n[\n  {\n    \"domain_names\": [\n      \"subdomain1.domain.com\"\n    ],\n    \"forward_host\": \"192.168.1.64\",\n    \"forward_port\": 9898, \n    \"forward_scheme\": \"http\",\n    \"caching_enabled\": false,\n    \"block_exploits\": false,\n    \"allow_websocket_upgrade\": true,\n    \"ssl_forced\": true,\n    \"http2_support\": true,\n    \"hsts_enabled\": true,\n    \"hsts_subdomains\": false,\n    \"enabled\": true,\n    \"meta\": {\n      \"letsencrypt_agree\": true,\n      \"dns_challenge\": false\n    },\n    \"advanced_config\": \"\",\n    \"locations\": []\n  },\n  {\n    \"domain_names\": [\n      \"subdomain2.domain.com\"\n    ],\n    \"forward_host\": \"192.168.1.64\",\n    \"forward_port\": 9898, \n    \"forward_scheme\": \"http\",\n    \"caching_enabled\": false,\n    \"block_exploits\": false,\n    \"allow_websocket_upgrade\": true,\n    \"ssl_forced\": true,\n    \"http2_support\": true,\n    \"hsts_enabled\": true,\n    \"hsts_subdomains\": false,\n    \"enabled\": true,\n    \"meta\": {\n      \"letsencrypt_agree\": true,\n      \"dns_challenge\": false\n    },\n    \"advanced_config\": \"\",\n    \"locations\": []\n  }\n]\n```\n\n### YAML Format (`proxy_hosts.yaml`)\n\n```yaml\n- domain_names:\n  - subdomain1.domain.com\n  forward_host: 192.168.1.64\n  forward_port: 9898\n  forward_scheme: http\n  caching_enabled: false\n  block_exploits: false\n  allow_websocket_upgrade: true\n  ssl_forced: true\n  http2_support: true\n  hsts_enabled: true\n  hsts_subdomains: false\n  enabled: true\n  meta:\n    letsencrypt_agree: true\n    dns_challenge: false\n  advanced_config: \"\"\n  locations: []\n\n- domain_names:\n  - subdomain2.domain.com\n  forward_host: 192.168.1.64\n  forward_port: 9898\n  forward_scheme: http\n  caching_enabled: false\n  block_exploits: false\n  allow_websocket_upgrade: true\n  ssl_forced: true\n  http2_support: true\n  hsts_enabled: true\n  hsts_subdomains: false\n  enabled: true\n  meta:\n    letsencrypt_agree: true\n    dns_challenge: false\n  advanced_config: \"\"\n  locations: []\n```\n\n\u003e 💡 **Tip:** Ensure that your Nginx Proxy Manager already has SSL certificates set up for the domains you plan to use with these entries.\n\n## Configration Values\n\n| Key                     | Description                                   |\n|-------------------------|-----------------------------------------------|\n| domain_names            | List of domain names for the proxy host       |\n| forward_host            | Target host IP or hostname                    |\n| forward_port            | Target port number                            |\n| forward_scheme          | Protocol to use (http/https)                  |\n| caching_enabled         | Enable or disable caching (true/false)        |\n| block_exploits          | Block common exploits (true/false)            |\n| allow_websocket_upgrade | Allow WebSocket upgrade (true/false)          |\n| ssl_forced              | Force SSL redirection (true/false)            |\n| http2_support           | Enable HTTP/2 support (true/false)            |\n| hsts_enabled            | Enable HSTS (true/false)                      |\n| hsts_subdomains         | Apply HSTS to subdomains (true/false)         |\n| enabled                 | Enable or disable the proxy host (true/false) |\n| meta                    | Additional metadata (object)                  |\n| advanced_config         | Advanced Nginx configuration (string)         |\n| locations               | Custom location blocks (array)                |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheysupratim%2Fnpmsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheysupratim%2Fnpmsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheysupratim%2Fnpmsync/lists"}