{"id":14563632,"url":"https://github.com/wireadmin/wireadmin","last_synced_at":"2025-09-04T06:32:35.732Z","repository":{"id":197172586,"uuid":"693288087","full_name":"wireadmin/wireadmin","owner":"wireadmin","description":"🐉 WireGuard VPN Server with an web-based admin UI + TOR","archived":false,"fork":false,"pushed_at":"2024-09-09T23:44:17.000Z","size":6929,"stargazers_count":313,"open_issues_count":3,"forks_count":14,"subscribers_count":7,"default_branch":"canary","last_synced_at":"2024-12-30T15:16:26.159Z","etag":null,"topics":["dnsmasq","tor","web-ui","wireguard"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/shahradel/wireadmin","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wireadmin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-09-18T18:15:14.000Z","updated_at":"2024-12-14T09:15:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"a11346a1-13cb-4d6d-a008-ebbf910ad8d6","html_url":"https://github.com/wireadmin/wireadmin","commit_stats":null,"previous_names":["shahradelahi/wireadmin","wireadmin/wireadmin"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireadmin%2Fwireadmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireadmin%2Fwireadmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireadmin%2Fwireadmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireadmin%2Fwireadmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wireadmin","download_url":"https://codeload.github.com/wireadmin/wireadmin/tar.gz/refs/heads/canary","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231940608,"owners_count":18449183,"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":["dnsmasq","tor","web-ui","wireguard"],"created_at":"2024-09-07T02:04:18.665Z","updated_at":"2024-12-31T03:31:02.846Z","avatar_url":"https://github.com/wireadmin.png","language":"Svelte","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"# WireGuard (Easy Admin UI)\n\n[![CI](https://github.com/wireadmin/wireadmin/actions/workflows/ci.yml/badge.svg)](https://github.com/wireadmin/wireadmin/actions/workflows/ci.yml)\n[![GPL-3.0 Licensed](https://img.shields.io/badge/License-GPL3.0-blue.svg?style=flat)](https://opensource.org/licenses/GPL-3.0)\n\n![Screenshot](assets/screenshot-1.png)\n\n|                                                                                            |                                                                                            |                                                                                            |\n| :----------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: |\n| \u003cimg src=\"assets/screenshot-2.png\" alt=\"screenshot\" style=\"width:100%;max-height:300px;\"/\u003e | \u003cimg src=\"assets/screenshot-4.png\" alt=\"screenshot\" style=\"width:100%;max-height:300px;\"/\u003e | \u003cimg src=\"assets/screenshot-3.png\" alt=\"screenshot\" style=\"width:100%;max-height:300px;\"/\u003e |\n\n---\n\n- [Features](#features)\n- [Build locally](#build-locally)\n- [Image](#image)\n- [Ports](#ports)\n- [Usage](#usage)\n  - [Docker Compose](#docker-compose)\n  - [Command line](#command-line)\n  - [Persistent Data](#persistent-data)\n  - [Environment variables](#environment-variables)\n- [Upgrade](#upgrade)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\n- Simple and friendly UI\n- Support for multiple users and servers\n- Support for **Tor for anonymized connections**\n- Server connection statistics\n- List, create, delete, or modify any server or user\n- Create QR codes\n- Easily download the client configurations.\n- Automatic Light/Dark Mode\n\n## Image\n\n| Registry                                                                                                | Image                         |\n| ------------------------------------------------------------------------------------------------------- | ----------------------------- |\n| [Docker Hub](https://hub.docker.com/r/shahradel/wireadmin/)                                             | `shahradel/wireadmin`         |\n| [GitHub Container Registry](https://github.com/users/shahradelahi/packages/container/package/cfw-proxy) | `ghcr.io/wireadmin/wireadmin` |\n\n## Ports\n\n- `53`: Dnsmasq\n- `3000`: WebUI\n\nAnd for any additional ports of WireGuard instance, should be exposed through Docker.\n\n## Usage\n\n### Docker Compose\n\nDocker compose is the recommended way to run this image. You can use the following\n[docker compose template](docker-compose.yml), then run the container:\n\n```bash\ndocker compose up -d\ndocker compose logs -f\n```\n\n### Command line\n\n```shell\n$ docker run -d \\\n  --name wireadmin \\\n  -e WG_HOST=\"\u003cYOUR_SERVER_IP\u003e\" \\\n  -e ADMIN_PASSWORD=\"\u003cADMIN_PASSWORD\u003e\" \\\n  -p \"3000:3000/tcp\" \\\n  -p \"51820:51820/udp\" \\\n  --cap-add=NET_ADMIN \\\n  --cap-add=SYS_MODULE \\\n  --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" \\\n  --sysctl=\"net.ipv4.ip_forward=1\" \\\n  ghcr.io/wireadmin/wireadmin\n```\n\n\u003e 💡 Replace `\u003cYOUR_SERVER_IP\u003e` with the IP address of your server.\n\n\u003e 💡 Replace `\u003cADMIN_PASSWORD\u003e` with the password for the admin UI.\n\nThe Web UI will now be available on `http://0.0.0.0:3000`.\n\n### Persistent Data\n\nIt's important to mount a volume to ensure that your data is not lost during container restarts or updates. Here is the list of required volumes:\n\n- `wireadmin-data`: `/data`\n- `tor-data`: `/var/lib/tor`\n\nTo create a docker volume, use the following command:\n\n```bash\n$ docker volume create \"\u003cvolume\u003e\" --driver local\n```\n\n\u003e 💡 Replace `\u003cvolume\u003e` with the name of the volume.\n\nFinally, to mount the volumes with `-v` flag in the `docker run` command:\n\n```bash\n$ docker run -d \\\n  -v wireadmin-data:/data \\\n  -v tor-data:/var/lib/tor \\\n  ghcr.io/wireadmin/wireadmin\n```\n\n### Environment variables\n\nThese options can be configured by setting environment variables using `-e KEY=\"VALUE\"` in the `docker run` command.\n\n| Option            | Description                                                                         | Default             | Optional |\n| ----------------- | ----------------------------------------------------------------------------------- | ------------------- | -------- |\n| `WG_HOST`         | The public IP address of the WireGuard server.                                      | -                   |          |\n| `ADMIN_PASSWORD`  | The password for the web UI.                                                        | `insecure-password` |          |\n| `HOST`            | The hostname for the WebUI.                                                         | `127.0.0.1`         | ✔️       |\n| `PORT`            | The port for the WebUI.                                                             | `3000`              | ✔️       |\n| `TOR_USE_BRIDGES` | Set this to `1` and then mount the bridges file at `/etc/tor/torrc.d/bridges.conf`. | -                   | ✔️       |\n| `TOR_*`           | The `Torrc` proxy configuration. (e.g. `SocksPort` as `TOR_SOCKS_PORT=\"9050\"`)      | -                   | ✔️       |\n\n## Upgrade\n\nRecreate the container whenever I push an update:\n\n```bash\n$ docker compose pull\n$ docker compose up -d\n```\n\n## Contributing\n\nWant to contribute? Awesome! To show your support is to star the project, or to raise issues\non [GitHub](https://github.com/wireadmin/wireadmin)\n\nThanks again for your support, it is much appreciated! 🙏\n\n## License\n\n[GPL-3.0](/LICENSE) © [Shahrad Elahi](https://github.com/shahradelahi)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireadmin%2Fwireadmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwireadmin%2Fwireadmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireadmin%2Fwireadmin/lists"}