2023-01-31 23:27:59 +00:00
|
|
|
Bit.ly alternative that looks more modern and nicer than YOURLS
|
|
|
|
https://kutt.it
|
|
|
|
|
|
|
|
This is not a full tutorial but more of a reference.
|
|
|
|
|
|
|
|
### Minimum File Structure
|
|
|
|
```
|
|
|
|
/home/
|
|
|
|
└── ~/
|
|
|
|
└── docker/
|
|
|
|
└── kutt/
|
2023-02-03 16:56:13 +00:00
|
|
|
├── .env
|
2023-01-31 23:27:59 +00:00
|
|
|
├── docker-compose.yml
|
|
|
|
```
|
|
|
|
### Add to Caddyfile (from ~/docker/caddy)
|
|
|
|
Remember to `docker exec -w /etc/caddy caddy caddy reload` after editing your Caddyfile.
|
|
|
|
|
|
|
|
```
|
|
|
|
urls.YOURDOMAIN.com {
|
|
|
|
reverse_proxy kutt:80
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
### docker-compose.yml
|
|
|
|
Change YOURDATABASEPASSWORD in 2 lines and change YOURADMINUSERPASSWORD in one line from the yml below.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
version: "3"
|
|
|
|
|
|
|
|
services:
|
|
|
|
kutt:
|
|
|
|
image: kutt/kutt
|
|
|
|
container_name: kutt
|
|
|
|
restart: unless-stopped
|
|
|
|
depends_on:
|
|
|
|
- kutt-db
|
|
|
|
- kutt-redis
|
|
|
|
command: ["./wait-for-it.sh", "kutt-db:5432", "--", "npm", "start"]
|
|
|
|
# ports:
|
|
|
|
# - "3000:3000"
|
|
|
|
env_file:
|
|
|
|
- .env
|
|
|
|
environment:
|
|
|
|
DB_HOST: kutt-db
|
|
|
|
DB_NAME: kutt
|
|
|
|
DB_USER: user
|
|
|
|
DB_PASSWORD: pass
|
|
|
|
REDIS_HOST: kutt-redis
|
|
|
|
|
|
|
|
kutt-redis:
|
|
|
|
image: redis:6.0-alpine
|
|
|
|
container_name: kutt-redis
|
|
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
|
|
- ./redis_data:/data
|
|
|
|
|
|
|
|
kutt-db:
|
|
|
|
image: postgres:12-alpine
|
|
|
|
container_name: kutt-db
|
|
|
|
restart: unless-stopped
|
|
|
|
environment:
|
|
|
|
POSTGRES_USER: user
|
|
|
|
POSTGRES_PASSWORD: pass
|
|
|
|
POSTGRES_DB: kutt
|
|
|
|
volumes:
|
|
|
|
- ./postgres_data:/var/lib/postgresql/data
|
|
|
|
|
|
|
|
networks:
|
|
|
|
default:
|
|
|
|
external:
|
|
|
|
name: caddy_net
|
|
|
|
```
|
|
|
|
|
|
|
|
### .env file
|
|
|
|
Quick Notes
|
|
|
|
You need to set ADMIN_EMAILS= to your email address that you plan to use as your admin account.
|
|
|
|
You also need to set up the MAIL_ section otherwise registration with the admin account will fail.
|
|
|
|
After creating the admin account and succesfully registering.
|
|
|
|
For private use only set DISALLOW_REGISTRATION=false and keep DISALLOW_ANONYMOUS_LINKS=true
|
|
|
|
To allow the public use your service set DISALLOW_ANONYMOUS_LINKS=false
|
|
|
|
|
|
|
|
```
|
|
|
|
# App port to run on
|
|
|
|
PORT=3000
|
|
|
|
|
|
|
|
# The name of the site where Kutt is hosted
|
|
|
|
SITE_NAME=Kutt
|
|
|
|
|
|
|
|
# The domain that this website is on
|
|
|
|
DEFAULT_DOMAIN=urls.YOURDOMAIN.com
|
|
|
|
|
|
|
|
# Generated link length
|
|
|
|
LINK_LENGTH=6
|
|
|
|
|
|
|
|
# Postgres database credential details. Don't fill out if using docker-compose.
|
|
|
|
DB_HOST=kutt-db
|
|
|
|
DB_PORT=5432
|
|
|
|
DB_NAME=postgres
|
|
|
|
DB_USER=
|
|
|
|
DB_PASSWORD=
|
|
|
|
DB_SSL=false
|
|
|
|
|
|
|
|
# Redis host and port. Don't fill out if using docker-compose.
|
|
|
|
REDIS_HOST=kutt-redis
|
|
|
|
REDIS_PORT=6379
|
|
|
|
REDIS_PASSWORD=
|
|
|
|
REDIS_DB=
|
|
|
|
|
|
|
|
# Disable registration
|
|
|
|
DISALLOW_REGISTRATION=false
|
|
|
|
|
|
|
|
# Disable anonymous link creation
|
|
|
|
DISALLOW_ANONYMOUS_LINKS=true
|
|
|
|
|
|
|
|
# The daily limit for each user
|
|
|
|
USER_LIMIT_PER_DAY=1000
|
|
|
|
|
|
|
|
# Create a cooldown for non-logged in users in minutes
|
|
|
|
# Set 0 to disable
|
|
|
|
NON_USER_COOLDOWN=0
|
|
|
|
|
|
|
|
# Max number of visits for each link to have detailed stats
|
|
|
|
DEFAULT_MAX_STATS_PER_LINK=100000
|
|
|
|
|
|
|
|
# Use HTTPS for links with custom domain
|
|
|
|
CUSTOM_DOMAIN_USE_HTTPS=true
|
|
|
|
|
|
|
|
# A passphrase to encrypt JWT. Use a long and secure key.
|
|
|
|
JWT_SECRET=securekey
|
|
|
|
|
|
|
|
# Admin emails so they can access admin actions on settings page
|
|
|
|
# Comma seperated
|
|
|
|
ADMIN_EMAILS=
|
|
|
|
|
|
|
|
# Invisible reCaptcha secret key
|
|
|
|
# Create one in https://www.google.com/recaptcha/intro/
|
|
|
|
RECAPTCHA_SITE_KEY=
|
|
|
|
RECAPTCHA_SECRET_KEY=
|
|
|
|
|
|
|
|
# Google Cloud API to prevent from users from submitting malware URLs.
|
|
|
|
# Get it from https://developers.google.com/safe-browsing/v4/get-started
|
|
|
|
GOOGLE_SAFE_BROWSING_KEY=
|
|
|
|
|
|
|
|
# Your email host details to use to send verification emails.
|
|
|
|
# More info on http://nodemailer.com/
|
|
|
|
# Mail from example "Kutt <support@kutt.it>". Leave empty to use MAIL_USER
|
|
|
|
MAIL_HOST=
|
|
|
|
MAIL_PORT=
|
|
|
|
MAIL_SECURE=false
|
|
|
|
MAIL_USER=
|
|
|
|
MAIL_FROM=
|
|
|
|
MAIL_PASSWORD=
|
|
|
|
|
|
|
|
# The email address that will receive submitted reports.
|
|
|
|
REPORT_EMAIL=
|
|
|
|
|
|
|
|
# Support email to show on the app
|
|
|
|
CONTACT_EMAIL=
|
|
|
|
|
2023-02-03 16:56:13 +00:00
|
|
|
```
|