Skip to content

Commit

Permalink
Update readme to include curl enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
hgw8 committed Dec 13, 2023
1 parent fde218e commit 02483f8
Showing 1 changed file with 39 additions and 11 deletions.
50 changes: 39 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ HardFiles is built on the principle of flexibility. If you choose to run your ow

This is necessary even when using the Docker image as the image does not contain the HardFiles frontend.

```
```shell
git clone https://git.supernets.org/supernets/hardfiles.git
```

Expand All @@ -32,21 +32,25 @@ Start by adjusting the necessary configuration variables in `config.toml`.
##### Bare Metal:

Execute the following commands to build and initiate HardFiles:
```
```shell
go build -o hardfiles main.go
mkdir files
./hardfiles
```

##### Docker Compose:

Execute the following commands to build and initiate HardFiles in Docker:
```
```shell
docker compose up -d
```

#### 3. Default Port:
By default, HardFiles listens on port `5000`. For production environments, it's recommended to use a robust web server like Nginx or Apache to proxy traffic to this port.
#### 3. Web Server Configuration:

By default, HardFiles listens on port `5000`. For production environments, it's recommended to use a robust web server like Nginx or Caddy to proxy traffic to this port.

For obtaining the Let's Encrypt certificates, you can use tools like `certbot` that automatically handle the certification process for you. If you elect to use Caddy, in most circumstances it is able to handle certificates for you using Let's Encrypt.

Remember, by using a reverse proxy, you can run HardFiles without needing root privileges and maintain a more secure environment.

###### Using Nginx as a Reverse Proxy:

Expand All @@ -73,40 +77,64 @@ server {

Replace `your_domain.com` with your actual domain name. Save this configuration to a file, say `hardfiles.conf`, inside the `/etc/nginx/sites-available/` directory, and then create a symbolic link to `/etc/nginx/sites-enabled/`. Restart Nginx after this setup.

For obtaining the Let's Encrypt certificates, you can use tools like `certbot` that automatically handle the certification process for you.
###### Using Caddy as a Reverse Proxy:

Remember, by using a reverse proxy, you can run HardFiles without needing root privileges and maintain a more secure environment.
Append the following to the Caddyfile, replacing your_domain.com with your chosen domain.

```caddy
your_domain.com {
reverse_proxy localhost:5000
}
```

## cURL Uploads & Bash Alias
## cURL Uploads

You can upload files using cURL like so:

```shell
curl -F file=@$1 https://hardfiles.org/
```

Additionally, you can append some extra options to modify the expiry time or file name length. Currently the file expiry time must be provided in seconds and is limited to 5 days maximum. The file name length is limited to 128 characters. The following example will return a file that expires in 48 hours rather than the default 24 and a file name length of 64 characters:

```shell
curl -F file=@$1 -F expiry=172800 -F url_len=64 https://hardfiles.org/
```

### Bash Alias

If you frequently upload files to HardFiles via the command line, you can streamline the process by setting up a bash alias. This allows you to use a simple command, like `upload`, to push your files to HardFiles using `curl`.

#### Setting Up:

1. **Edit your `.bashrc` file:** Open your `~/.bashrc` file in a text editor. You can use `nano` or `vim` for this purpose:
```shell
nano ~/.bashrc
```

2. **Add the `upload` function:** At the end of the `.bashrc` file, append the following function (replace the domain if you are running your own instance):
```shell
upload() {
curl -F file=@$1 https://hardfiles.org/
}
```

3. Reload your .bashrc file: To make the new function available in your current session, reload your .bashrc:
```shell
source ~/.bashrc
```

#### Usage:
Now, you can easily upload files to HardFiles using the upload command followed by the path to your file. For example:

```shell
upload /path/to/your/file.jpg
```

This will upload the specified file to HardFiles and return a direct link to the file.

## Roadmap
- Idea - Uploads stored on a remotely mounted drive, isolating them from the actual service server. Multiple mirrored instances behind a round robin reading from the same remote mount for scaling.
- Idea - Uploads stored on a remotely mounted drive or S3 compatible volume, isolating them from the actual service server. Multiple mirrored instances behind a round robin reading from the same remote mount for scaling.
- Random wallpapers as an optional extra, kept simple without javascript. Maybe a local shell script that modifies the index.html on a timer.
- Fix index wallpaper alignment on smartphones.
- Clean up CSS.
Expand All @@ -116,7 +144,7 @@ This will upload the specified file to HardFiles and return a direct link to the

## Credits
- πŸš€ **delorean**, our Senior Director of IRC Diplomacy & SuperNets Brand Strategy 🌐 for developing hardfiles.
- 🀝 **hgw7**, our Principal Designer of Digital Aquariums & Rare Fish Showcases 🐠 for branding the product.
- 🀝 **hgw**, our Principal Designer of Digital Aquariums & Rare Fish Showcases 🐠 for branding the product.
- πŸ’Ό **acidvegas**, our Global Director of IRC Communications πŸ’¬ for funding the project πŸ’°.

___
Expand Down

0 comments on commit 02483f8

Please sign in to comment.