Your own "Link in Bio" page (like Linktree), but on your own server.
./local/deploy.sh linkstack --ssh=ALIAS --domain-type=cloudflare --domain=links.example.com
# or locally (SSH tunnel):
./local/deploy.sh linkstack --ssh=ALIAS --domain-type=local --yes- RAM: ~256MB (container limit: 256MB)
- Disk: ~550MB (Docker image)
- Port: 8090
Open the URL and go through the setup wizard.
Solopreneur / single profile? Choose SQLite — zero configuration, works out of the box.
Company with multiple employees editing profiles simultaneously? Choose MySQL — handles concurrent edits better.
Technical details
| Scenario | Recommendation |
|---|---|
| One profile (personal branding) | SQLite |
| A few profiles, occasional edits | SQLite |
| 500+ users with their own profiles | MySQL |
| Frequent simultaneous edits | MySQL |
SQLite handles up to 100K visits/day. The official LinkStack hosting only uses MySQL for 500+ user instances.
When using MySQL you must back up the database yourself (with SQLite, backups include the database automatically).
- Admin credentials — save securely, you will need them to log in
- App Name — name displayed on the page
- App URL — full URL with https:// (e.g.
https://links.your-domain.com)
| Feature | LinkStack | LittleLink |
|---|---|---|
| Admin panel | Yes | No |
| Edit from phone | Yes | No |
| Click stats | Yes | No |
| RAM usage | ~256MB | ~30MB |
| Configuration | Wizard | HTML editing |
Choose LinkStack if you want a convenient panel and stats. Choose LittleLink if you prefer a super-lightweight static page.
/opt/stacks/linkstack/
+-- data/ # All app data (back up this folder!)
| +-- database/ # SQLite database
| +-- .env # Configuration
| +-- ... # App files
+-- docker-compose.yaml
# Logs
ssh ALIAS "docker logs -f linkstack-linkstack-1"
# Restart
ssh ALIAS "cd /opt/stacks/linkstack && docker compose restart"
# Update
ssh ALIAS "cd /opt/stacks/linkstack && docker compose pull && docker compose up -d"
# Backup
ssh ALIAS "tar -czf linkstack-backup.tar.gz -C /opt/stacks/linkstack data"