{"id":13852607,"url":"https://github.com/express42/vagrant-foodshow","last_synced_at":"2025-08-20T02:32:21.737Z","repository":{"id":13680260,"uuid":"16374007","full_name":"express42/vagrant-foodshow","owner":"express42","description":"Vagrant plugin for ngrok","archived":false,"fork":false,"pushed_at":"2023-04-17T19:02:09.000Z","size":78,"stargazers_count":66,"open_issues_count":0,"forks_count":4,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-12-09T04:22:33.781Z","etag":null,"topics":["plugin","ruby","vagrant"],"latest_commit_sha":null,"homepage":"http://express42.github.io/vagrant-foodshow/","language":"Ruby","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/express42.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-01-30T10:13:15.000Z","updated_at":"2024-01-08T06:36:29.000Z","dependencies_parsed_at":"2024-01-18T11:03:51.640Z","dependency_job_id":"98f24c3d-8d7c-4e46-8d2e-3234a4ac03cc","html_url":"https://github.com/express42/vagrant-foodshow","commit_stats":{"total_commits":34,"total_committers":3,"mean_commits":"11.333333333333334","dds":0.08823529411764708,"last_synced_commit":"aa01cf4a4b400a3a35f422ebd7ef42bafed3a52a"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fvagrant-foodshow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fvagrant-foodshow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fvagrant-foodshow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fvagrant-foodshow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/express42","download_url":"https://codeload.github.com/express42/vagrant-foodshow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230388129,"owners_count":18217755,"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","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":["plugin","ruby","vagrant"],"created_at":"2024-08-04T22:01:28.394Z","updated_at":"2024-12-19T06:08:34.396Z","avatar_url":"https://github.com/express42.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# Foodshow: Share your [Vagrant](http://vagrantup.com) virtual machine\n\n[![Code Climate](https://codeclimate.com/github/express42/vagrant-foodshow.png)](https://codeclimate.com/github/express42/vagrant-foodshow) [![express42/vagrant-foodshow API Documentation](https://www.omniref.com/github/express42/vagrant-foodshow.png)](https://www.omniref.com/github/express42/vagrant-foodshow)\n\nVagrant-Foodshow plugin allows you to share tcp ports of your virtual machine via the Internet.\n\nWith this plugin you may show your web application to your colleague, present new feature for your customer and give ssh access to your ops guy.\n\nAll tunneling job performed by [Ngrok](http://ngrok.com) backend.\nNgrok tunnel can operate in TCP and HTTP modes. In HTTP tunnel mode `ngrok` provides access to HTTP requests and response from server to help you analyze the traffic. In TCP mode you can tunnel any binary protocol like `ssh`, `postgresql` or whatever you want, but there is no introspection in TCP tunnel.\n\n## Vagrant-foodshow and vagrant-share\n\nVagrant-foodshow unlike vagrnat-share an opensource product. Ngrok client and server part is also opensource. Ngrok server and server-side part of vagrant-share both available as SAAS solutions, but you can setup your own ngrok server for free. This is a good solution if you don't want send tunneled traffic through third-party servers.\n\n## Installation\n\n### Ngrok installation\n\nYou should go to [ngrok.com](http://ngrok.com) and download ngrok binary for your system. Vagrant-foodshow will search ngrok binary in PATH. `~/bin/ngrok` will be used if no ngrok binary in PATH. To disable search you may set `foodshow.ngrok_bin` option (See [Advanced tunnel example](#advanced-tunnel-example)).\n\n### Plugin installation\n\nTo install this plugin just execute:\n\n```bash\nvagrant plugin install vagrant-foodshow\n```\n\n## Usage\u0026Configuration\n\nFirst of all you should enable plugin in your `Vagrantfile`:\n```ruby\nconfig.foodshow.enabled = true\n```\n\n### There are two ways to create a tunnel\n\n##### Call method `foodshow.tunnel` :\n\n```ruby\n...\nconfig.foodshow.tunnel \u003chost_port\u003e, \u003cprotocol\u003e, [options hash]\n...\n```\n\n##### Add `ngrok_proto` parameter to `vm.network` :\n\n```ruby\n...\nconfig.vm.network :forwarded_port, guest: \u003cguest_port\u003e, host: \u003chost_port\u003e, ngrok_proto: \"\u003cprotocol\u003e\"\n...\n```\n\nDefault tunnel protocol is `http+https`. Ngrok supports `http`, `https`, `http+https` and `tcp`. For tcp protocol authtoken is required.\n\n### Simple tunnel example\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  #Enable foodshow\n  config.foodshow.enabled = true\n  ...\n  # Define vm\n  config.vm.define :web01 do |conf|\n    ...\n    #Just add ngrok_proto parameter to your port forwarding entry\n    conf.vm.network :forwarded_port, guest: 80, host: 8080, ngrok_proto: \"http+https\"\n    ...\n    end\nend\n```\n\n### Advanced tunnel example\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  #Enable foodshow\n  config.foodshow.enabled = true\n  # Change ngrok binary location\n  config.foodshow.ngrok_bin = \"/usr/local/bin/ngrok\"\n  # Automaticly search ssh port and create tcp tunnel\n  config.foodshow.forward_ssh = true\n  ...\n  # Define vms\n  config.vm.define :web01 do |conf|\n    ...\n    conf.vm.network :forwarded_port, guest: 80, host: 8080, ngrok_proto: \"http+https\"\n    # Don't tunnel ssh for this vm\n    config.foodshow.forward_ssh = false\n    # For this vm we use another token\n    conf.foodshow.authtoken = \u003csometoken_2\u003e\n    ...\n  end\n  config.vm.define :web02 do |conf|\n    ...\n    conf.vm.network :forwarded_port, guest: 80, host: 8081\n    conf.vm.network :forwarded_port, guest: 389, host: 3389\n    # You may pass some params as tunnel options\n    # This code creates a tunnel http://mycopmanyllc.ngrok.com with basic auth\n    conf.foodshow.tunnel 8081, \"http\", :httpauth =\u003e \"foodshow:ngrok\" :subdomain =\u003e \"mycopmanyllc\"\n    # And sure you may tunnel any tcp port\n    conf.foodshow.tunnel 3389, \"tcp\"\n    ...\n  end\nend\n```\n\n### Self-hosted tunnel example\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  #Enable foodshow\n  config.foodshow.enabled = true\n  # Set your ngrokd server\n  config.foodshow.server_addr = \"127.0.0.1:4443\"\n  # Allow host root certificate\n  config.foodshow.trust_host_root_certs = true\n  ...\n  # Define vm\n  config.vm.define :web01 do |conf|\n    ...\n    #Just add ngrok_proto parameter to your port forwarding entry\n    conf.vm.network :forwarded_port, guest: 80, host: 8080, ngrok_proto: \"http+https\"\n    ...\n    end\nend\n```\nRead this document if you want to start self-hosted server https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md\n### Options\n\n- Scope *config* means that this option can be set only via `foodshow.\u003coptions\u003e`\n- Scope *config+tunnel* means that this option can be set via `foodshow.\u003coptions\u003e` and can be can be passed to the `foodshow.tunnel` method as options hash.\n- Scope *tunnel* means that this option can be passed to the `foodshow.tunnel` method\n\nConfiguration options for **ngrok v1.x**\n\nOption | Default | Scope | Purpose\n-------|---------|---------|--------\n`enabled` | `false` |  config | Enable foodshow plugin\n`ngrok_bin` | `nil` | config+tunnel |  By default vagrant-foodshow will search ngrok binary in PATH, then at ~/bin/ngrok. You may override this behavior by setting this option\n`forward_ssh` | `false` | config | Automatically search and forward vagrant ssh guest port (authtoken required)\n`timeout` | `10` | config | Max waiting time for establishing tunnel\n`authtoken` | `nil` | config+tunnel | Auth token. Required for TCP tunnels and some functions (Go to [ngrok.com](http://ngrok.com) to get authkey)\n`httpauth` | `nil` | config+tunnel | You may set basic auth for http/https tunnel. Format: `user:password`\n`subdomain` | `nil` | config+tunnel | Custom subdomain for http/https tunnel. URL will be like a http://\\\u003csubdomain\\\u003e.ngrok.com\n`hostname` | `nil` | config+tunnel | Custom domain for http/https tunnel (Paid feature, see [Pricing \u0026 Features](http://ngrok.com/features) on ngrok website )\n`host_ip` | `127.0.0.1` | tunnel | Custom destination ip for tunnel\n`inspect_addr` | `127.0.0.1` | config | Address for traffic inspection\n`inspect_pbase` | `4040` | config | Base port for traffic inspection, other ngrok  processes will use the next available port\n`server_addr` | `nil` | config+tunnel | Server address for self-hosted ngrokd, see [Self-hosted tunnels example](#self-hosted-tunnel-example)\n`trust_host_root_certs` | `nil` | config+tunnel | Allow ngrok accept root server certificate. Must be `true` if you using self-hosted ngrokd\n\nChanges in config options for **ngrok v2.x**\n\nv1.x option | | v2.x option\n------------|-|------------\nhttpauth | =\u003e | auth\ninspect_addr | =\u003e | web_addr\ninspect_pbase | =\u003e | web_pbase\n\n\u003e If you are using ngrok v2.x authtoken option could be automatically filled from ngrok configuration\n\n# Authors\n\n* Nikita Borzykh (\u003csample.n@gmail.com\u003e)\n\n## Contributing\n\n1. Fork it ( http://github.com/express42/vagrant-foodshow/fork )\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fvagrant-foodshow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpress42%2Fvagrant-foodshow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fvagrant-foodshow/lists"}