longurl
is a self-hosted short url service.
curl -H "Content-Type:application/json" -X POST --data '{"url": "https://github.com/long2ice/longurl"}' https://longurl.long2ice.io
Return like this:
{
"url": "https://longurl.long2ice.io/3FXrsHE"
}
Now Visit https://longurl.long2ice.io/3FXrsHE.
url
(required): the url to be shorted.path
(optional): the custom path for short url, can config allow or not.expire_at
(optional): when the short url expire, can set default expire in config.max_times
(optional): max times access, shorted url will be invalid if reached.
First write a config.yaml
.
server:
host: 0.0.0.0
port: 3000
logTimezone: Asia/Shanghai
logTimeFormat: 2006-01-02 15:04:05.000000
url:
domain: localhost:3000
schema: http
length: 7 # the path length
allowCustomPath: true # allow custom short url path
expireSeconds: 2592000 # default expire seconds
unique: true # same urls only generate one short url
database:
type: mysql
dsn: root:123456@tcp(127.0.0.1:3306)/longurl?parseTime=true
Then run with docker
.
docker run -d -p 3000:3000 --name longurl -v /config.yaml:/config/config.yaml ghcr.io/long2ice/longurl/longurl
You can visit http://localhost:3000/docs to see the API docs.
The frontend project is https://github.com/long2ice/longurl-web.
- Fiber, Express inspired web framework written in Go.
- Ent, An entity framework for Go.
- Sonyflake, A distributed unique ID generator inspired by Twitter's Snowflake.
This project is licensed under the Apache-2.0 License.