# LinkStack: a self-hosted Linktree alternative with multi-user support

> LinkStack is a PHP and Laravel link-sharing platform you host yourself, with themes, multi-user registration and an admin panel. Here is how it is configured, what the AGPL-3.0 licence means for forks, and where it stops being the right tool.

**LinkStackOrg/LinkStack** — LinkStack - the ultimate solution for creating a personalized & professional profile page. Showcase all your important links in one place, forget the limitation of one link on social media. Set up your personal site on your own server with just a few clicks.

- Repository: https://github.com/LinkStackOrg/LinkStack
- Website: https://linkstack.org
- Stars: 3,889 · Forks: 439
- Language: PHP
- License: AGPL-3.0
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/linkstackorg-linkstack

## The problem LinkStack solves, and who it is built for

Social profiles usually allow one link in the bio. A link page works around that by giving followers a single address that fans out to everything else. Commercial services do this well, but they own the page, the analytics and the account. LinkStack's pitch, in the README's own words, is a "free and privacy-focused solution for managing and sharing links online", with a self-hosted option so the data stays on your server.

The audience is broader than the usual self-hoster. Two features separate LinkStack from a single-page link list. First, other users can register and build their own pages, and an admin panel lets you manage their links. That makes it usable as a small community service or an internal directory, not just a personal page. Second, themes are installed from the admin panel rather than by editing templates, and the project collects community submissions on linkstack.org/themes. Someone who wants a link page but does not want to touch CSS is squarely in scope. The README also points people who cannot self-host at community-hosted instances, so the project has an answer for both groups.

## Laravel underneath: the actual mechanism

The repository is a Laravel application. The top level holds artisan, composer.json, routes/, resources/, config/, database/ and a themes/ directory, with Blade templates under resources/ and a webpack.mix.js build driven by laravel-mix. Front-end dependencies in package.json are Alpine.js, Tailwind CSS and axios. That stack explains the drag-and-drop claim: the README says LinkStack "can be easily implemented through a simple drag and drop process, eliminating the need for complex terminal commands", which describes dropping the release archive onto a web host rather than running a build pipeline.

Data flow is conventional for Laravel. A request hits index.php, routes resolve to controllers, Blade renders the page, and persistent state lives in a database. The .env.example file defaults to mysql on 127.0.0.1:3306, with file-based cache, file sessions and a sync queue. The sync queue matters: background jobs run inline during the request unless you change QUEUE_CONNECTION, so a slow job is a slow page. The themes/ directory at the repository root is where theme assets live, which is consistent with installing themes from the admin panel instead of editing application code.

One caveat about the codebase. The package.json devDependencies pin Tailwind CSS ^2.0.2 and Alpine.js ^2.7.3, both several major versions behind current releases. That does not break anything, but it means front-end contributions start on an older toolchain, and a theme written against current Tailwind utilities may not compile as-is.

## What you set in the environment file before the first page

The README's primary path is the release archive. It links a linkstack.zip download from the latest release and describes a drag-and-drop deployment, and the repository ships an INSTALLING file alongside .env.example and web.config. The values below are copied from .env.example: APP_KEY is empty there and has to be filled before the application can start, and the database block is the part most likely to need editing, since the example assumes MySQL on the local host with a database named laravel and the root user.

```bash
APP_KEY=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
```

The same file also carries the cache, session and queue settings that shape how the site behaves. CACHE_DRIVER and SESSION_DRIVER are both file, and QUEUE_CONNECTION is sync, which means queued work runs inside the request rather than in a worker.

```bash
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
```

For a Docker deployment, the README has a dedicated Docker section, and the related searches around linkstack docker compose suggest that is a common route. The README does not spell out the compose file in the text available here, so treat the Docker section itself as the source of truth rather than improvising a stack. Once the site loads, the admin panel is where you add links, pick a theme and, if you want it, enable registration so other people can create pages. The README does not document the exact first-run sequence beyond this.

## Where LinkStack is the wrong tool

The database requirement is the first boundary. A link page is a small amount of content that changes rarely, and LinkStack serves it from MySQL through a full Laravel request cycle. If all you want is a static page with a handful of links, a plain HTML file or a static site generator gives you the same result with no PHP runtime, no database to back up and no upgrade cycle. Choosing LinkStack for that case buys you maintenance work you did not need.

The second boundary is the multi-user model. Registration is a feature, not a default you can ignore, and the README frames LinkStack as "an ideal solution for businesses and organizations looking to manage multiple links". If you run a public instance with registration open, you are operating a small hosting service: you own the abuse reports, the content and the database growth. The README does not describe moderation tooling beyond admin access to other users' links.

Release cadence is worth checking before you commit. The published releases include v4.8.6 on 2026-02-17, v4.8.5 on 2026-01-26 and v4.8.4 on 2024-12-10. The gap between v4.8.4 and v4.8.5 is roughly thirteen months. The last push to the repository was on 2026-07-21, so the project is not archived and work continues, but a long quiet stretch between releases is a real consideration if you need predictable upgrade windows. The README documents an Updating section; it does not document rollback.

## LinkStack compared with LittleLink and Linktree

The two comparisons people actually search for are linkstack vs littlelink and linkstack vs linktree, and the differences are structural rather than cosmetic.

LittleLink is a static HTML and CSS project: you edit a file, drop in your links, and deploy the result anywhere that serves static files. There is no database, no login, no admin panel and no per-user accounts. LinkStack is the opposite trade. You get a database-backed application, an admin panel, theme installation from the browser and multi-user registration, and in exchange you take on a PHP runtime, a MySQL instance and application upgrades. If your goal is one page for one person, LittleLink is less machinery for the same visible result. If you need accounts for several people or you want to change appearance without editing files, LinkStack is the one that has the feature.

Linktree is the hosted commercial service. The difference is ownership, not features. LinkStack runs on your server, the README states the project "will never sell user data", and you control the data. The cost is that you also control the uptime, the backups and the security patches. Linktree's free tier removes that work; LinkStack's self-hosted model removes the dependency.

## Licence, forks and the cost of staying current

LinkStack is licensed AGPL-3.0. For a personal instance this is unremarkable. For a modified deployment that other people reach over a network, the AGPL's network clause is the part to understand before you fork: running a modified version as a service is not the same as running it privately. This is not legal advice, and if you plan to distribute a modified LinkStack or offer it to third parties, read the LICENSE file in the repository and get proper advice.

The fork structure is a related point. The README has a Fork structure section, and the project's history runs through a repository that was previously named LittleLink-Custom, which is still visible in the release badge URLs. If you are tracking upstream changes, confirm which repository and branch you are following before you build a workflow around it.

Upgrade cost is ordinary Laravel work: pull the release, update dependencies, run migrations, clear caches. The README's Updating section is the authority on the exact steps. What the README does not cover is how to get back to a previous version if an upgrade goes wrong, so a database and file backup before each upgrade is the practical safeguard. On the front-end side, the pinned Tailwind 2 and Alpine 2 versions mean a theme built with current utility classes may need adjustment.

## Conclusion

Adopt LinkStack if you want a link page on hardware you control, you are comfortable with PHP and MySQL, and you either need multi-user registration or want themes without writing CSS. Do not adopt it if you want a static page with no database, or if you cannot take on AGPL-3.0 obligations for a modified public deployment. Before installing, confirm which release you are pulling, check the INSTALLING file for your target environment, and read the Updating section, because the README does not document rollback.

## FAQ

### How do I install LinkStack?

The README's primary route is the linkstack.zip archive from the latest release, deployed by drag and drop to a web host. You copy .env.example to .env and fill in the database and application key values it leaves blank. The README also has a separate Docker section.

### How do I use LinkStack?

After installation you create the first account, which is the administrator, and manage the site from the admin panel. Links, themes and other users' pages are handled there; themes are added from the Themes tab rather than by editing templates.

### Is LinkStack free?

The software is open source under AGPL-3.0 and the README describes a free, privacy-focused solution. Self-hosting still costs whatever your server or hosting provider charges. The project also lists community-hosted instances for people who do not want to run their own.

### How does LinkStack compare with LittleLink?

LittleLink is a static HTML and CSS page you edit and deploy as files. LinkStack is a Laravel application with a MySQL database, an admin panel, installable themes and multi-user registration. LinkStack gives you more features at the cost of a runtime, a database and upgrades.

### How does LinkStack compare with Linktree?

Linktree is a hosted commercial service, so the vendor runs the infrastructure and holds the data. LinkStack is self-hosted, which means you own the data and the uptime, and the README states the project will never sell user data. The trade is operational work versus dependency.

## Sources

- [License: AGPL-3.0](https://github.com/LinkStackOrg/LinkStack/blob/main/LICENSE)
- [LinkStackOrg/LinkStack on GitHub](https://github.com/LinkStackOrg/LinkStack)
- [Project website](https://linkstack.org)
- [README](https://github.com/LinkStackOrg/LinkStack/blob/main/README.md)
- [Releases](https://github.com/LinkStackOrg/LinkStack/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/linkstackorg-linkstack
