156 lines
3.7 KiB
Markdown
156 lines
3.7 KiB
Markdown
# Shellery
|
|
|
|
Simple SSG to create dynamic gallery one-pagers in your shell! Shell+Gallery
|
|
|
|
[Issue Tracker and Requests](https://git.uphillsecurity.com/cf7/shellery/issues)
|
|
|
|
- Status: Beta
|
|
- Instance/ Demo: [schief-117.com](https://schief-117.com/)
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
**Available**:
|
|
- Simple use, single dependency (exiftool)
|
|
- Removes EXIF/GPS metadata from published images by default
|
|
- Configurable title and optional footer via environment variables
|
|
- no Javascript
|
|
- Lightbox of image with anchor
|
|
- Order of images via filename
|
|
- Container available
|
|
- Simple to modify (Pictures and Templates)
|
|
|
|
**Ideas**:
|
|
- check file formats
|
|
- conf file for options
|
|
- anonymize file names
|
|
- sections via file names
|
|
|
|
**Not planned**:
|
|
|
|
---
|
|
|
|
## Requirements
|
|
|
|
- `bash` and GNU coreutils
|
|
- [`exiftool`](https://exiftool.org/) - `apt install libimage-exiftool-perl` (Debian/Ubuntu) or `brew install exiftool` (macOS)
|
|
|
|
Docker/Podman users need nothing on the host, exiftool is baked into the image.
|
|
|
|
Building with `--keep-exif` / `STRIP_EXIF=0` does not require exiftool.
|
|
|
|
---
|
|
|
|
## Usage
|
|
|
|
### Docker / Podman
|
|
|
|
```bash
|
|
mkdir -p images output
|
|
|
|
podman run -v $(pwd)/images:/app/images -v $(pwd)/output:/app/output git.uphillsecurity.com/cf7/shellery:latest
|
|
```
|
|
|
|
### Local
|
|
|
|
- Clone
|
|
- Put images into `./images/`
|
|
- `./build.sh`
|
|
- Check `./output/`
|
|
|
|
Modify files accordingly.
|
|
|
|
### Docker Build
|
|
|
|
Build and run:
|
|
```bash
|
|
docker build -t localhost/shellery .
|
|
docker run -v $(pwd)/images:/app/images -v $(pwd)/output:/app/output localhost/shellery
|
|
```
|
|
|
|
The generated gallery will be in `./output/index.html`
|
|
|
|
### Configuration
|
|
|
|
All options can be set in a `.env` file, as environment variables, or as flags.
|
|
`.env.example` lists every option with its default, so an unedited copy changes nothing:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
`.env` is gitignored. Precedence is **flags > environment > `.env` > defaults**, so a
|
|
`-e` value passed to the container still wins over the file. Point `ENV_FILE` at another
|
|
path to use a different file.
|
|
|
|
| Variable | Flag | Default | Effect |
|
|
|---|---|---|---|
|
|
| `GALLERY_TITLE` | `--title=TEXT` | `Gallery` | Page `<title>` and the `<h1>` header |
|
|
| `SHOW_FOOTER` | `--no-footer` | `1` | Set to `0` to hide the "Powered by shellery" footer |
|
|
| `STRIP_EXIF` | `--keep-exif` | `1` | Set to `0` to publish image metadata as-is |
|
|
| `ENV_FILE` | - | `.env` | Path to the config file to load |
|
|
|
|
```bash
|
|
GALLERY_TITLE="Holiday 2026" SHOW_FOOTER=0 ./build.sh
|
|
# or
|
|
./build.sh --title="Holiday 2026" --no-footer
|
|
|
|
# container, via -e
|
|
podman run -e GALLERY_TITLE="Holiday 2026" -e SHOW_FOOTER=0 \
|
|
-v $(pwd)/images:/app/images -v $(pwd)/output:/app/output \
|
|
git.uphillsecurity.com/cf7/shellery:latest
|
|
|
|
# container, via a mounted .env
|
|
podman run -v $(pwd)/.env:/app/.env:ro \
|
|
-v $(pwd)/images:/app/images -v $(pwd)/output:/app/output \
|
|
git.uphillsecurity.com/cf7/shellery:latest
|
|
```
|
|
|
|
### Metadata removal
|
|
|
|
EXIF, GPS, IPTC and XMP metadata is stripped from every image by default. Only the copies
|
|
in `./output/` are processed, your originals in `./images/` are never modified.
|
|
|
|
To publish images with their metadata intact:
|
|
|
|
```bash
|
|
./build.sh --keep-exif
|
|
# or
|
|
STRIP_EXIF=0 ./build.sh
|
|
|
|
# container
|
|
podman run -e STRIP_EXIF=0 -v $(pwd)/images:/app/images -v $(pwd)/output:/app/output git.uphillsecurity.com/cf7/shellery:latest
|
|
```
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- [Github Mirror](https://github.com/CaffeineFueled1/shellery)
|
|
|
|
---
|
|
|
|
## Security
|
|
|
|
For security concerns or reports, please contact via `hello a t uphillsecurity d o t com` [gpg](https://uphillsecurity.com/gpg).
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
**Apache License**
|
|
|
|
Version 2.0, January 2004
|
|
|
|
http://www.apache.org/licenses/
|
|
|
|
- ✅ Commercial use
|
|
- ✅ Modification
|
|
- ✅ Distribution
|
|
- ✅ Patent use
|
|
- ✅ Private use
|
|
- ✅ Limitations
|
|
- ❌Trademark use
|
|
- ❌Liability
|
|
- ❌Warranty
|