98 lines
3.3 KiB
Markdown
98 lines
3.3 KiB
Markdown
# Palette
|
|
|
|
Palette is a fast, self-hosted pastebin. One Go binary, a SQLite database, and
|
|
a web UI for sharing text and small files
|
|
|
|
> [!NOTE]
|
|
> <table><tr><td>
|
|
> <sub>✨ This project was built by AI — <strong>GLM 5.3 Flash</strong> on the <strong>Hermes Agent</strong> harness, with a human in the loop.</sub>
|
|
> </td></tr></table>
|
|
|
|
## Features
|
|
|
|
- Multiple files in one paste
|
|
- Password protected pastes
|
|
- Expir after a specified time
|
|
- Burn after a number of views
|
|
- Custom URLs
|
|
- Syntax highlighting with language auto-detection (go-enry)
|
|
- Local cookie based submission history
|
|
- Cookie based settings
|
|
- Themes!
|
|
|
|
## Screenshots
|
|
|
|
| | |
|
|
|---|---|
|
|
|  |  |
|
|
|  |  |
|
|
|
|
## Get Started
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
docker run -p 8080:8080 -v palette-data:/data git.archfox.org/poslop/palette
|
|
```
|
|
|
|
The SQLite database lives in the `/data` volume inside the container.
|
|
|
|
## Docker Compose
|
|
|
|
See [docker-compose.yml](docker-compose.yml) for a ready-to-use example with
|
|
every environment variable documented, including which are required (only the
|
|
/data volume) and which are optional.
|
|
|
|
### Build from source
|
|
|
|
Requires Go 1.21+.
|
|
|
|
```bash
|
|
go build -o palette .
|
|
./palette
|
|
# open http://localhost:8080
|
|
```
|
|
|
|
|
|
## Configuration
|
|
|
|
| Setting | Default | Description |
|
|
|---|---|---|
|
|
| `PALETTE_ADDR` | `:8080` | Listen address |
|
|
| `PALETTE_DB` | `palette.db` | SQLite database path |
|
|
| `PALETTE_MAX_TEXT` | `5242880` | Max paste size in bytes (5 MB) |
|
|
| `PALETTE_MAX_ITEM` | `26214400` | Max can item size in bytes (25 MB) |
|
|
| `PALETTE_ADMIN_KEY` | generated | Admin key; if unset a 32-char hex key is generated and persisted to `<db-dir>/admin-key` (0600) |
|
|
|
|
An `/admin` page exists for runtime settings, protected by a key set at
|
|
install (`PALETTE_ADMIN_KEY` env var) and resettable locally — see
|
|
[API](https://git.archfox.org/poslop/palette/wiki/API) and the [design docs](https://git.archfox.org/poslop/palette/wiki/Home) in the wiki for details.
|
|
|
|
## API
|
|
|
|
Full REST API: [wiki/API](https://git.archfox.org/poslop/palette/wiki/API). One example:
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8080/api/pastes -d '{"content":"hello"}'
|
|
```
|
|
|
|
Design docs: [wiki/design](https://git.archfox.org/poslop/palette/wiki/design/attachments-storage) (e2e encryption, attachments & storage, cookie preferences).
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
Palette is licensed under the GNU Affero General Public License v3.0
|
|
(AGPL-3.0-only). See [LICENSE](LICENSE).
|
|
|
|
The software is provided AS IS, without warranty of any kind, express or
|
|
implied, including merchantability and fitness for a particular purpose.
|
|
In no event shall the authors be liable for any claim, damages, or other
|
|
liability, including without limitation any security vulnerabilities,
|
|
data loss, or legal issues arising from use of the software. You use it
|
|
at your own risk.
|
|
|
|
If you run a modified version of Palette as a network service, the AGPL
|
|
requires you to offer your modified source code to its users.
|