GPTLink: a self-hosted AI chat site with users, orders and paid plans
10分钟搭建可免费商用的AI对话环境,搭建简单,包含用户,订单,任务,付费等功能
At a glance
- What is it?
- GPTLink is a PHP (Hyperf) and Vue project for standing up your own AI chat front end with account, order and payment features. The deployment story is Docker-first, the admin panel is not open source yet, and the README is honest about that gap.
- Who is it for?
- Adopt GPTLink if you want a self-hosted chat front end where accounts, plans and orders are part of the product rather than something you build yourself, and if Docker plus a PHP Hyperf stack fits your operations. Do not adopt it if you need the admin panel as source, if you need AI image generation, distribution or statistics views, or if you cannot accept that the newest tagged release, v1.3.4, dates from 2024-03-27 while the default branch saw its last push on 2026-08-14.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 33 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What GPTLink actually solves, and for whom
Running a chat interface on top of a model API is a weekend of work. Running one that takes money is not. GPTLink targets that second problem. The repository description states it covers a chat environment plus users, orders, tasks and payment, and the README's feature list names a console that works out of the box, a mobile layout, custom paid plans, one-click conversation export and a task mechanism for acquiring users.
The intended operator is someone who wants a branded chat site rather than a private tool. The README links a demo address and screenshots, and it points at WeChat applications (website login, official account, WeChat Pay) as optional pieces. That tells you the design centre of gravity is the Chinese market: the payment path described in the README is offline collection configuration and redemption codes, not a card processor.
It is a poor fit for a single developer who just wants a private chat client. The user, order and plan machinery is the product here, and you carry its operational weight whether or not you charge anyone.
The Hyperf plus Vue split, and where the admin source went
The stack is PHP on Hyperf with Vue on the front end, and the Dockerfile confirms it: the image starts from hyperf/hyperf:8.0-alpine-v3.11-swoole, installs nginx, then copies three directories into /app: gptweb, gptadmin and gptserver. Nginx is configured from conf/nginx-default.conf. The server process is launched by /app/gptserver/start.sh, which is the image's CMD.
That layout gives you three surfaces. The chat front end is served at the root path, the admin page at /admin, and API documentation at /api/docs/default for users and /api/docs/admin for administrators. The README states the admin panel source is still in development, so gptadmin in this repository is the deployed artefact, not the source you can fork and modify. Treat that as a real boundary: you can run and configure the admin, but the README does not offer you its code.
Configuration lives in gptserver/.env. The README says that if the file does not exist, you rename gptserver/.env.example to .env, and that detailed configuration notes live in docs/ENV.md. The README describes the permission control in the project as limited, which is worth taking at face value before you put it in front of paying users.
Building the GPTLink image and reaching the console
The README recommends Docker and points deployment documentation at the separate gptlink-deploy repository, which lists PHP environment deployment, Docker deployment and Docker Compose deployment as options. The repository you are reading also ships its own Dockerfile, and that file is the only concrete build recipe available here.
The Dockerfile copies gptweb, gptadmin and gptserver from the build context, so those three directories must be present in the repository root when you build. It then runs composer install with --no-dev --optimize-autoloader --ignore-platform-reqs inside /app/gptserver, and the image's CMD is bash /app/gptserver/start.sh. The README does not give a docker build or docker run command line, and neither does the Dockerfile, so the commands below are the repository's own artefacts rather than a published recipe.
FROM hyperf/hyperf:8.0-alpine-v3.11-swoole
ENV TIMEZONE="Asia/Shanghai" \
APP_ENV=prod \
SCAN_CACHEABLE=(true)
RUN apk update && apk add nginx vim
COPY gptweb /app/gptweb
COPY gptadmin /app/gptadmin
COPY gptserver /app/gptserver
COPY conf/nginx-default.conf /etc/nginx/conf.d/default.conf
CMD ["bash", "/app/gptserver/start.sh"]Before any of this, prepare an API Key. The README recommends a GPTLINK Key, obtained by registering and applying in the personal centre as a developer; it describes that process as requiring no review and no proxy for the API. An OpenAI official Key is the alternative it names. Configuration goes in gptserver/.env, or in gptserver/.env.example renamed to .env, with detailed notes in docs/ENV.md.
Once the container is running, the README gives two entry points: http://your-domain-or-ip for the chat page and http://your-domain-or-ip/admin for the admin page. Log in with the values you set for ADMIN_USERNAME, or with admin and admin888 if nothing was passed. The README does not name the container port or the nginx listen directive, so read conf/nginx-default.conf in the repository before publishing anything.
Where GPTLink gets in your way
The admin panel is the clearest limitation. The version plan in the README marks front-end open source as done and admin open source as unchecked, and the repository section states the admin source is under development. If your plan depends on modifying how plans, orders or users are managed, this release does not give you that.
The same version plan leaves AI image generation, distribution and statistics views unchecked. Statistics in particular is a gap for anyone selling plans: the README lists order and payment features but does not describe a reporting surface, so budget for exporting data yourself.
The permission model is another constraint. The README's own words are that the project provides limited permission control. Combined with a default admin password of admin888 when ADMIN_USERNAME is not passed, that is a configuration you must change before the site is reachable from the internet.
The release cadence deserves attention too. The newest tagged release listed for this repository is v1.3.4 from 2024-03-27, while the default branch received its last push on 2026-08-14. Tags and branch activity are not moving together, so if you need a versioned artefact, verify what v1.3.4 contains against master before you pin to it. The README also does not document rollback or upgrade steps between versions.
GPTLink against wiring your own front end to a model API
The obvious alternative is not another product but the do-it-yourself route: a small front end that calls a model API directly, with your own database for accounts and whatever payment integration your market uses. The difference is where the work sits. GPTLink hands you the user, order, plan and redemption-code model already assembled, plus an admin surface and API documentation at /api/docs/default and /api/docs/admin. You spend your time on configuration and on the parts the README marks unfinished.
The DIY route gives you the admin source by definition, because you wrote it, and it lets you pick a permission model that matches your risk. What it costs you is the order and plan logic, the mobile layout, conversation export and the task-based acquisition feature, all of which GPTLink ships as features. If none of those matter to you, GPTLink's main value disappears and you are carrying a Hyperf and Swoole stack for a chat box.
A middle path exists in the repository structure itself: the front end is a separate repository, gptlink-web, so you can read and adapt the chat client while running the server as shipped.
Maintenance cost, licensing and what to check before you commit
The repository's open source agreement section states Apache License Version 2.0 and links to the Apache text. That is the statement the README makes; the repository metadata does not carry a licence identifier, so if licence terms matter to your organisation, confirm the LICENSE situation in the tree rather than relying on the README line. Nothing here is legal advice.
Operationally, you inherit a PHP 8.0 Alpine image with Swoole and nginx, composer dependencies installed at build time, and a .env file that carries your API Key and admin credentials. Upgrades mean rebuilding the image and re-running the configuration steps the README describes, because it does not describe a migration path. The gap between the last tagged release and the last push on the default branch means you should decide explicitly whether you run a tag or master, and record that decision somewhere your future self will find it.
The README points at docs/FAQ.md for common problems and at the gptlink-deploy repository for deployment variants, including Docker Compose. Those two files are where to look first when the container starts but the site does not answer.
Editorial conclusion
Adopt GPTLink if you want a self-hosted chat front end where accounts, plans and orders are part of the product rather than something you build yourself, and if Docker plus a PHP Hyperf stack fits your operations. Do not adopt it if you need the admin panel as source, if you need AI image generation, distribution or statistics views, or if you cannot accept that the newest tagged release, v1.3.4, dates from 2024-03-27 while the default branch saw its last push on 2026-08-14. Before you commit, verify three things: that gptserver/.env exists (or that you have renamed gptserver/.env.example), that your API Key source is one of the two the README names, and that the admin credentials you set through ADMIN_USERNAME are not left at the default admin888.
Frequently asked questions
What is GPTLink?
GPTLink is a project for building an AI chat site, written in PHP with Hyperf on the server and Vue on the front end. The repository description says it covers a chat environment plus users, orders, tasks and payment, and the README lists Docker deployment, an out-of-the-box console, custom paid plans and conversation export as features.
How do I use GPTLink after deploying it?
The README gives two entry points: the chat page at the domain or IP root, and the admin page at /admin. You log in as an administrator with the ADMIN_USERNAME value from the configuration, or with admin and admin888 if nothing was passed. You also need an API Key, either a GPTLINK Key or an OpenAI official Key.
Does GPTLink need an API Key before it works?
Yes. The README's start steps say to prepare an API Key first, recommending a GPTLINK Key obtained by registering and applying as a developer, with an OpenAI official Key as the alternative. Configuration lives in gptserver/.env, or in gptserver/.env.example renamed to .env.
Is the GPTLink admin panel open source?
No. The README's version plan marks front-end open source as complete and admin open source as unchecked, and the repository section says the admin source is under development. The gptadmin directory in the repository is what gets deployed, not the source you can modify.
How is GPTLink licensed?
The README's open source agreement section states Apache License Version 2.0 and links to the Apache licence text. The repository metadata does not list a licence identifier, so verify the licence files in the tree if the terms matter to you.
Community notes