{"id":20083626,"url":"https://github.com/lucasl0st/ipv4-for-ipv6_only-http-proxy","last_synced_at":"2026-03-05T18:01:54.740Z","repository":{"id":189735745,"uuid":"680950772","full_name":"lucasl0st/ipv4-for-ipv6_only-http-proxy","owner":"lucasl0st","description":"Transparent HTTP Proxy for IPv4 to IPv6-only Services with Wildcard TLS","archived":false,"fork":false,"pushed_at":"2025-11-26T22:35:57.000Z","size":117,"stargazers_count":10,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-29T17:36:59.654Z","etag":null,"topics":["http","ipv6","proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","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/lucasl0st.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,"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":"2023-08-20T23:26:38.000Z","updated_at":"2025-11-26T22:25:08.000Z","dependencies_parsed_at":"2023-11-13T15:31:28.890Z","dependency_job_id":"b3603272-81c5-4d43-9454-1374e50c7ffd","html_url":"https://github.com/lucasl0st/ipv4-for-ipv6_only-http-proxy","commit_stats":null,"previous_names":["lucasl0st/ipv4-for-ipv6_only-http-proxy"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/lucasl0st/ipv4-for-ipv6_only-http-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasl0st%2Fipv4-for-ipv6_only-http-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasl0st%2Fipv4-for-ipv6_only-http-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasl0st%2Fipv4-for-ipv6_only-http-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasl0st%2Fipv4-for-ipv6_only-http-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasl0st","download_url":"https://codeload.github.com/lucasl0st/ipv4-for-ipv6_only-http-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasl0st%2Fipv4-for-ipv6_only-http-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30141288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T16:58:46.102Z","status":"ssl_error","status_checked_at":"2026-03-05T16:58:45.706Z","response_time":93,"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":["http","ipv6","proxy"],"created_at":"2024-11-13T15:48:05.973Z","updated_at":"2026-03-05T18:01:54.729Z","avatar_url":"https://github.com/lucasl0st.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IPv4 to IPv6 Proxy\n\nProxy your IPv6-only HTTP infrastructure transparently using a single IPv4 host.\n\n## Overview\n\nThe IPv4 to IPv6 Proxy is a solution for scenarios where endpoints are configured with IPv6-only networking,\nbut there's a need to accommodate IPv4 clients that cannot directly communicate with IPv6 endpoints.\nThis proxy acts as a bridge, translating incoming IPv4 requests to IPv6 requests, forwarding them to the target endpoint,\nand returning the responses back to the clients.\nThe proxy uses dynamic hostname-based routing with wildcard SSL/TLS certificates.\n\n## Prerequisites\n\nBefore you begin, ensure you have the following prerequisites:\n\n- docker / docker-compose\n- A server which can host a webserver on IPv4\n\n## Usage\n\n## Configuration\n\nThe proxy can be configured using environment variables. Available configuration options are:\n\n- `HTTP_PORT`: The HTTP port the proxy should listen on. Default: `80`.\n- `HTTPS_PORT`: The HTTPS port the proxy should listen on. Default: `443`.\n- `CERT_DIR`: The directory containing the SSL/TLS certificate files. The `cert-file` and `key-file` need to be stored together in subdirectories. Default: `/etc/letsencrypt/live/`.\n- `CERT_FILE_NAME`: The wildcard SSL/TLS certificate file for dynamic hostname-based routing. Default: `fullchain.pem`.\n- `KEY_FILE_NAME`: The private key file corresponding to the wildcard certificate. Default: `privkey.pem`.\n- `ALLOWED_HOSTS` Regex pattern for allowed hosts. Default: `.*`.\n\n## Obtaining a Wildcard Certificate\n\nTo enable dynamic hostname-based routing with wildcard SSL/TLS certificates, you can use [Certbot](https://certbot.eff.org/)\nto obtain a wildcard certificate from Let's Encrypt. The following steps outline the process:\n\n1. Install Certbot on your system if it's not already installed:\n\n   Run:\n\n   ```sh\n   sudo apt-get install certbot\n   ```\n\n2. Obtain a wildcard certificate using the DNS-01 challenge method. Replace `YOUR_EMAIL` with your email address and `YOUR_DOMAIN` with your actual domain:\n  \n   Run:\n\n   ```sh\n   sudo certbot certonly --manual --preferred-challenges=dns --email YOUR_EMAIL --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.YOUR_DOMAIN\n   ```\n   This command will prompt you to add a DNS TXT record to your domain's DNS settings to prove domain ownership. Follow the instructions provided by Certbot.\n\n3. Once you've added the DNS TXT record and the domain ownership is verified, Certbot will issue a wildcard certificate and save it in the default Let's Encrypt path.\n\n4. You can now use the obtained wildcard certificate by placing them into `CERT_DIR` and by setting `CERT_FILE_NAME` and `KEY_FILE_NAME` accordingly (see [Configuration](#configuration)).\n   Remember to renew the certificate before it expires. You can set up a cronjob to automatically renew the certificate using the following command:\n\n   ```sh\n   sudo certbot renew\n   ```\nFor more detailed instructions and troubleshooting, refer to the [Certbot documentation](https://certbot.eff.org/docs/intro.html).\n\n## Docker\n\nRun use the [docker-compose.yaml](docker-compose.yaml) and run `docker-compose up -d` to start the latest version of the proxy.\n\n### Configuring Docker for IPv6\n\nTo facilitate communication between containers and IPv6-only services within an IPv6-only environment,\nDocker needs to be configured for IPv6 networking. Here's how to configure Docker for IPv6:\n\n#### Configuration Steps\n\n1. Open the Docker daemon configuration file in a text editor. On Linux, use the following command to open the file:\n\n    ```sh\n    sudo nano /etc/docker/daemon.json\n    ```\n\n2. Add the following configuration lines to enable IPv6 support and define an IPv6 CIDR block:\n\n    ```json\n    {\n      \"ipv6\": true,\n      \"fixed-cidr-v6\": \"fd4c:f221::/64\",\n      \"experimental\": true,\n      \"ip6tables\": true,\n      \"default-address-pools\": [\n        { \"base\": \"172.17.0.0/16\", \"size\": 16 },\n        { \"base\": \"172.18.0.0/16\", \"size\": 16 },\n        { \"base\": \"172.19.0.0/16\", \"size\": 16 },\n        { \"base\": \"172.20.0.0/14\", \"size\": 16 },\n        { \"base\": \"172.24.0.0/14\", \"size\": 16 },\n        { \"base\": \"172.28.0.0/14\", \"size\": 16 },\n        { \"base\": \"192.168.0.0/16\", \"size\": 20 },\n        { \"base\": \"fd4c:f222::/104\", \"size\": 112}\n      ]\n    }\n    ```\n   \n3. Restart the Docker daemon to apply the changes\n    \n    ```sh\n    sudo systemctl restart docker\n    ```\n\u003e [!WARNING]  \n\u003e In some cases a full system reboot might be required.\n\nThe docker-compose file in this repository includes the additionally necessary configuration for IPv6 networking, when using anything else you are on your own.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasl0st%2Fipv4-for-ipv6_only-http-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasl0st%2Fipv4-for-ipv6_only-http-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasl0st%2Fipv4-for-ipv6_only-http-proxy/lists"}