Discover the power of Snapp, your self-hostable URL shortening service. Effortlessly shorten links, and with Snapp's self-hosting capability, you have complete control. Create concise, shareable links on your terms with Snapp's user-friendly platform.
Snapp provides a user-friendly interface for seamless link shortening. Read how to get started!
Enjoy a secure experience with authentication sessions and hashed passwords. Your information is in safe hands.
Create personalized short codes for your links to make them memorable and easy to share.
Control the lifespan of your links with expiration dates. Set expiry dates for added security or let them stay active indefinitely.
Add an extra layer of protection with secret links. Choose to share links with a selected audience using unique secrets.
Empower yourself with detailed analytics for every link you create. Snapp gathers metrics anonymously, providing insights into link engagements.
Snapp is a self-hostable open source platform.
You need to have Node.js.
.env and fill it properly.
npm install --legacy-peer-deps
npx prisma db push
npm run dev
npm run build then
node dotenv/config build
Most requested feature, the ability to create and retrieve Snapps via REST API.
Read more here. (Generated with Redoc)
As simple as typing this in your terminal
docker run -p 3000:3000 uraniadev/snapp:latest
If you ran into CORS, set
docker run \
-p 3000:3000 \
-e ORIGIN=https://example.com \
-e PUBLIC_URL=https://example.com \
Snapp uses Lucia Auth, and requires to be hosted behind a
Secure HTTPS Protocol.
If self-hosting without a
Secure HTTPS Protocol set
NODE_ENV=development to allow Lucia handle sessions.
Let's say for example that you want to host Snapp on an old salvaged homelab with hostname:
refurbished on port
docker run \
-p 8000:3000 \
-e ORIGIN=http://refurbished:8000 \
-e PUBLIC_URL=http://refurbished:8000 \
-e NODE_ENV=development \
Be aware that this setting will disable secure cookies.
This demo is set as a multi users instance of Snapp.
The demo DB will be reset every 24H.
By default Snapp is set as a private service. It can be set as a multi users instance with variable
ENABLE_MULTIUSER set to
DISABLE_HOME set to
true Snapp will redirect to
Mount docker volume at
You can generate a DB Compliant to Prisma Client with schema in repository.
By default the app will not create any admin user, you should setup your own by signin up on the front-end. First user registered get marked as Admin.
You can set up variables to create admin if not already existing by the same username at platform launch.
You can setup email for your account, and so recover password if forgotten
Here a resend / generic smtp example of using the SMTP for password recovery. It checks username and email before sending.