docs: Add READMEs

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-08-24 15:48:12 +02:00
parent e22105049a
commit 7c00b364d1
Signed by: jriou
GPG key ID: 9A099EDA51316854
5 changed files with 143 additions and 2 deletions

View file

@ -1,3 +1,53 @@
# Coller
Simple self-contained pastebin solution.
Simple self-contained pastebin solution written in Go.
# Description
Coller is a set a binaries:
- **collerd**: HTTP server to handle note management
- **coller**: CLI to create notes
- **copier**: CLI to download and decrypt notes (client-side decryption)
# Installation
## From source code
Requires [Go](https://go.dev/dl/).
```
git clone https://git.riou.xyz/jriou/coller.git
cd coller
make
sudo cp -p bin/* /usr/local/bin/
```
## Docker
```
git clone https://git.riou.xyz/jriou/coller.git
cd coller
docker build -t coller:latest .
docker run --network host --rm --name collerd -p 8080:8080 coller:latest
```
Then go to http://localhost:8080 (website).
## Ansible
See [ansible-role-coller](https://git.riou.xyz/jriou/ansible-role-coller).
# Usage and configuration
* [collerd](src/cmd/collerd/README.md)
* [coller](src/cmd/coller/README.md)
* [copier](src/cmd/copier/README.md)
# Contributions
Contributions are welcomed! Feel free to provide unit tests when possible. Lint your code with `go fmt`. If you don't feel confident enough to contribute, feel free to open an issue to describe the feature you would like to see implemented or the problem you are facing.
# License
See [LICENSE](LICENSE).

42
src/cmd/coller/README.md Normal file
View file

@ -0,0 +1,42 @@
# coller
CLI to create notes.
# Usage
```
coller -help
```
# Examples
Create from clipboard:
```
coller
```
Create from file:
```
coller -file filename.txt
```
Provide password for encryption:
```
coller -ask-password
coller -password PASSWORD
```
Create public note:
```
coller -no-password
```
Return the copier command to use client-side decryption instead of the URL:
```
coller -copier
```

31
src/cmd/collerd/README.md Normal file
View file

@ -0,0 +1,31 @@
# collerd
Server to manage notes:
* Website
* API
* Database management
## Usage
```
collerd -help
```
## Configuration
The file format is **JSON**:
* **title** (string): Title of the website
* **database_type** (string): Type of the database (default "sqlite", "postgres" also supported)
* **database_dsn** (string): Connection string for the database (default "collerd.db")
* **id_length** (int): Number of characters for note identifiers (default 5)
* **password_length** (int): Number of characters for generated passwords (default 16)
* **expiration_interval** (int): Number of seconds to wait between two expiration runs
* **listen_address** (string): Address to listen for the web server (default "127.0.0.1")
* **listen_port** (int): Port to listen for the web server (default 8080)
* **expirations** ([]int): List of supported expiration times in seconds (default 300, 86400, 604800, 18144000)
* **expiration** (int): Default expiration time in seconds
* **max_upload_size** (int): Maximum number of bytes received by the server for notes (the base64 encoding may use more space than the real size of the note)
* **show_version** (bool): Show version on the website
The configuration file is not required but the service might not be exposed to the public.

16
src/cmd/copier/README.md Normal file
View file

@ -0,0 +1,16 @@
# copier
CLI to download and decrypt notes from the client.
# Usage
```
copier -help
```
# Examples
```
copier -password PASSWORD URL
copier -w URL
```

View file

@ -35,8 +35,10 @@ func NewDatabase(logger *slog.Logger, config *Config) (d *Database, err error) {
switch config.DatabaseType {
case "postgres":
db, err = gorm.Open(postgres.New(postgres.Config{DSN: config.DatabaseDsn}), gconfig)
default:
case "sqlite":
db, err = gorm.Open(sqlite.Open(config.DatabaseDsn), gconfig)
default:
return nil, fmt.Errorf("database type '%s' not supported", config.DatabaseType)
}
if err != nil {
return nil, err