Add README.md
This commit is contained in:
parent
c9dc4e5b8b
commit
c79f2b403c
87
README.md
Normal file
87
README.md
Normal file
@ -0,0 +1,87 @@
|
||||
# Chela
|
||||
Chela is a minimal URL shortener built in Rust. It is named after the small claw on crustaceans.
|
||||
|
||||
## Usage
|
||||
You can create a redirect by navigating to the `/create` page and filling out the form. By default, every path passed to Chela will treated as a redirect except `/` and `/create`.
|
||||
|
||||
## Install and Run
|
||||
### With Docker
|
||||
#### CLI
|
||||
```bash
|
||||
docker run -d \
|
||||
-p 3000:3000 \
|
||||
-e DATABASE_URL=postgres://chela:password@dbhost/postgres?sslmode=disable \
|
||||
-e CHELA_HOST=example.com \
|
||||
secondsmiles/chela
|
||||
```
|
||||
|
||||
#### Docker Compose
|
||||
```yaml
|
||||
services:
|
||||
chela-postgres:
|
||||
image: postgres:15
|
||||
environment:
|
||||
- POSTGRES_USER=chela
|
||||
- POSTGRES_PASSWORD=password
|
||||
volumes:
|
||||
- chela-db:/var/lib/postgresql/data
|
||||
chela:
|
||||
image: secondsmiles/chela
|
||||
ports:
|
||||
- 3000:3000
|
||||
environment:
|
||||
- DATABASE_URL=postgres://chela:password@dbhost/postgres?sslmode=disable
|
||||
- CHELA_HOST=example.com
|
||||
depends_on:
|
||||
- chela_postgres
|
||||
|
||||
volumes:
|
||||
chela-db:
|
||||
```
|
||||
|
||||
#### Environment Variables
|
||||
|
||||
##### `DATABASE_URL`
|
||||
Used to define the database connection for Chela to use.
|
||||
|
||||
##### `CHELA_HOST`
|
||||
The hostname that Chela should refer to itself as. Defaults to `localhost`
|
||||
|
||||
### Manually
|
||||
#### Build
|
||||
```bash
|
||||
$ git clone https://github.com/secondary-smiles/chela.git
|
||||
$ cd chela
|
||||
$ cargo build -r
|
||||
```
|
||||
|
||||
#### Run
|
||||
```bash
|
||||
$ export DATABASE_URL=postgres://chela:password@dbhost/postgres?sslmode=disable
|
||||
$ export CHELA_HOST=example.com
|
||||
$ ./target/release/chela
|
||||
```
|
||||
|
||||
## Hosting
|
||||
Chela uses the [axum](https://crates.io/crates/axum) to manage HTTP requests, so it is possible to expose it directly to the outer internet. However, there is no authentication for the `/create` endpoint so anyone will be able to create redirects.
|
||||
|
||||
If you would prefer to be the only one able to create redirects, then you can proxy Chela through Nginx with http-basic-auth. Refer to [this](https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/) documentation for more information.
|
||||
|
||||
```nginx
|
||||
server {
|
||||
server_name example.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3000/;
|
||||
}
|
||||
|
||||
location /create {
|
||||
proxy_pass http://localhost:3000/create;
|
||||
|
||||
limit_except GET HEAD {
|
||||
auth_basic 'Restricted';
|
||||
auth_basic_user_file /path/to/your/.htpasswd;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue
Block a user