{"id":22671723,"url":"https://github.com/lancard/nginx-webui","last_synced_at":"2025-04-12T12:23:52.396Z","repository":{"id":65671532,"uuid":"595914689","full_name":"lancard/nginx-webui","owner":"lancard","description":"WebUI for Nginx","archived":false,"fork":false,"pushed_at":"2024-12-06T00:27:19.000Z","size":5391,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-06T01:24:43.046Z","etag":null,"topics":["dns-challenge","gui","lets-encrypt","letsencrypt","nginx","nginx-ui","nginx-web-ui","nginx-webui","nodejs","self-hosted","ui","webui"],"latest_commit_sha":null,"homepage":"https://github.com/lancard/nginx-webui","language":"HTML","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/lancard.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}},"created_at":"2023-02-01T04:06:08.000Z","updated_at":"2024-12-06T00:26:16.000Z","dependencies_parsed_at":"2024-05-09T10:48:32.587Z","dependency_job_id":"501d4e07-7384-4d15-a097-32e98bc3c9d7","html_url":"https://github.com/lancard/nginx-webui","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lancard%2Fnginx-webui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lancard%2Fnginx-webui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lancard%2Fnginx-webui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lancard%2Fnginx-webui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lancard","download_url":"https://codeload.github.com/lancard/nginx-webui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228920510,"owners_count":17992005,"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":["dns-challenge","gui","lets-encrypt","letsencrypt","nginx","nginx-ui","nginx-web-ui","nginx-webui","nodejs","self-hosted","ui","webui"],"created_at":"2024-12-09T16:16:14.148Z","updated_at":"2024-12-09T16:16:16.375Z","avatar_url":"https://github.com/lancard.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/lancard/nginx-webui/actions/workflows/build-docker.yml/badge.svg)](https://github.com/lancard/nginx-webui/actions/workflows/build-docker.yml)\n![GitHub repo size](https://img.shields.io/github/repo-size/lancard/nginx-webui)\n![GitHub repo file count](https://img.shields.io/github/directory-file-count/lancard/nginx-webui)\n![Docker pulls](https://img.shields.io/docker/pulls/lancard/nginx-webui)\n![Docker image size](https://img.shields.io/docker/image-size/lancard/nginx-webui)\n\n\nThis project aims to create a UI that wrap nginx.\nWe developed a program that makes it easy for companies and people with multiple domains to manage nginx through UI.\nAnd, it implemented a function that easily updates through Let's encrypt.\n\n## Screenshot\n![screenshot1](./screenshot/screenshot1.png)\n![screenshot2](./screenshot/screenshot2.png)\n![screenshot3](./screenshot/screenshot3.png)\n![screenshot4](./screenshot/screenshot4.png)\n\n# Youtube Setting tutorial (Click to watch)\n- Install process and set load-balancer\n- [![Let's encrypt cert renewal](https://img.youtube.com/vi/3SEdU_Jj5IM/0.jpg)](https://www.youtube.com/watch?v=3SEdU_Jj5IM)\n- Non-disruptive deployment with jenkins\n- [![Let's encrypt cert renewal](https://img.youtube.com/vi/UaJF-s2AuZo/0.jpg)](https://www.youtube.com/watch?v=UaJF-s2AuZo)\n- Let's encrypt cert renewal\n- [![Let's encrypt cert renewal](https://img.youtube.com/vi/O12f2PYPCpU/0.jpg)](https://www.youtube.com/watch?v=O12f2PYPCpU)\n\n\n## Project Goal\n\nBasically, a program was written to make it easy to use reverse proxy.\nmain goal is management for 'upstream' / 'server' / certificates nginx configuration.\n\n## Features\n\n- Auto renewal Let's encrypt cert.\n- enable/disable API for backend upstream (useful for CI/CD integration)\n- modify reverse proxy and multiple upstream settings with web UI.\n- modify logrotate config.\n- Easily create services and locations.\n- Advanced Nginx configuration available for super users.\n- Let's encrypt DNS challenge.\n\n## Quick Setup\n\n1. Install Docker and Docker-Compose\n\n- [Docker Install documentation](https://docs.docker.com/install/)\n- [Docker-Compose Install documentation](https://docs.docker.com/compose/install/)\n\n2. Create a docker-compose.yml file similar to this:\n\n```yml\nversion: '3.7'\nservices:\n  nginx-webui:\n    image: lancard/nginx-webui\n    container_name: nginx-webui\n    environment:\n      - TZ=Asia/Seoul\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n    restart: always\n    ports:\n      - 80:80\n      - 81:81\n      - 443:443\n    volumes:\n      - nginx-webui-data:/data\n      - nginx-webui-cert:/etc/letsencrypt\n      - nginx-webui-session:/session\n      - nginx-webui-log:/var/log/nginx\n      - logrotate-config:/etc/logrotate.d\n\nvolumes:\n  nginx-webui-data:\n  nginx-webui-cert:\n  nginx-webui-session:\n  nginx-webui-log:\n  logrotate-config:\n```\n\n3. Run docker-compose\n\n```bash\ndocker-compose up -d\ndocker-compose logs # for check admin password\n```\n\n4. Log in to the Admin UI\n\nThe 'administrator' user password is randomly generated by first time.\nyou can check it by 'docker-compose logs'\n\nWhen your docker container is running, connect to it on port `81` for the admin interface.\n(The connection is secured with a self-signed certificate. If you receive a security warning message, ignore it and continue)\n\n[https://127.0.0.1:81](http://127.0.0.1:81)\n\nDefault Admin User:\n```\nid: administrator\npassword: (get it from docker-compose logs)\n```\n\n5. Setup Config\n\nRefer Screenshot 4\n\n6. Use API for CI/CD\n\n```\ncurl --insecure -H \"Authorization: Bearer ${token}\" \"https://localhost:81/api/upstream/${upstream-name}/${backend-address}/enable\"\ncurl --insecure -H \"Authorization: Bearer ${token}\" \"https://localhost:81/api/upstream/${upstream-name}/${backend-address}/disable\"\n```\n\n## Built With\n\n- server side: npm, nodejs, express\n- client side: bower, sbadmin2 (bootstrap), jquery, moment, chart.js\n\n\n## Contributing\n\nFeel free to make PR!\nDon't forget to give the project a star! Thank you!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## Contributor License Agreement\n\nFor easy license management and legal dispute avoidance, the contributing codes are attributed to the author and all rights are attributed to the author. In addition, the MIT license is maintained. If you don't want it, please don't make PR.\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flancard%2Fnginx-webui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flancard%2Fnginx-webui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flancard%2Fnginx-webui/lists"}