Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ A [pastebin](https://en.wikipedia.org/wiki/Pastebin) is a type of online content

- [YOURLS](examples/yourls) - The de-facto standard self hosted URL shortener in PHP.
- [Kutt](examples/kutt) - Kutt is a modern URL shortener with support for custom domains, link editing, statistics, users management and more.
- [QRDock](examples/qrdock) - Self-hosted QR code generator where codes double as retargetable short links with scan analytics, built on FastAPI + SQLite.

### Blogging Platforms and Homepages

Expand Down
17 changes: 17 additions & 0 deletions examples/qrdock/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# References

- https://github.com/seyitwb-svg/qrdock
- https://seyitwb-svg.github.io/qrdock/

# Notes

QRDock is a self-hosted QR code generator where every code is a short link you control. Printed codes stay retargetable — change the destination URL anytime without reprinting. It includes per-link scan analytics, a 14-day scan chart, PNG/SVG export, an instant anonymous QR endpoint (`/qr.png?text=...`), and Pro custom colors (`?fg=`). Runs on Python + FastAPI + SQLite in ~50 MB RAM.

### Spawning up QRDock

1. Start the stack: `docker compose up -d` — the image builds from the GitHub repo on first run (~1 min).
2. Open `http://localhost:8128` (or `qrdock.example.com` with Traefik), register an account, and create your first link.
3. Print the PNG/SVG QR code; retarget its destination later from the dashboard.

> [!NOTE]
> No build context needed locally — Compose pulls the Dockerfile straight from the repo. To pin a release, replace the `build:` context with `https://github.com/seyitwb-svg/qrdock.git#v1.0.0`.
24 changes: 24 additions & 0 deletions examples/qrdock/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
services:

qrdock:
image: qrdock
build:
context: https://github.com/seyitwb-svg/qrdock.git
container_name: qrdock
restart: always
ports:
- 8128:8000/tcp # web ui
expose:
- 8000
volumes:
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/qrdock:/data
environment:
- TZ=Europe/Berlin
labels:
- traefik.enable=true
- traefik.http.routers.qrdock.rule=Host(`qrdock.example.com`)
- traefik.http.routers.qrdock.entrypoints=websecure
- traefik.http.routers.qrdock.tls.certresolver=cloudflare
- traefik.http.routers.qrdock.services.qrdock.loadbalancer.server.port=8000
- traefik.http.services.qrdock.loadbalancer.server.port=8000