1 changed files with 163 additions and 0 deletions
@ -0,0 +1,163 @@ |
|||||||
|
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/ |
||||||
|
├── .env |
||||||
|
├── 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= |
||||||
|
|
||||||
|
``` |
||||||
Loading…
Reference in new issue