1
0
Fork 0
forked from jriou/coller
coller/src/cmd/collerd/README.md
Julien Riou ff92e30232
feat: Option to serve Bootstrap from the filesystem
Signed-off-by: Julien Riou <julien@riou.xyz>
2025-09-19 07:14:33 +02:00

3.7 KiB

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 "0.0.0.0")
  • 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
  • enable_metrics (bool): Enable Prometheus endpoint (default true)
  • prometheus_route (string): Route to expose Prometheus metrics (default "/metrics")
  • prometheus_notes_metric (string): Name of the notes count metric (default "collerd_notes")
  • observation_internal (int): Number of seconds to wait between two observations (default 60)
  • languages ([]string): List of supported languages
  • language (string): Default language (default "text")
  • enable_upload_file_button (bool): Display the upload file button in the UI (default true)
  • tls_cert_file (string): Path to TLS certificate file to enable HTTPS
  • tls_key_file (string): Path to TLS key file to enable HTTPS
  • bootstrap_directory (string): Serve Bootstrap assets from this local directory (ex: "./node_modules/bootstrap/dist"). See Dependencies for details.

The configuration file is not required but the service might not be exposed to the public.

API

GET /health

Returns 200 OK.

POST /api/note

Create a note.

Body (JSON):

  • content (string): base64 encoded content (required)
  • password (string): use server-side encryption with this password
  • encrypted (bool): true if the content has been encrypted by the client
  • expiration (int): lifetime of the note in seconds (must be supported by the server)
  • delete_after_read (bool): delete the note after the first read
  • language (string): language of the note (must be supported by the server)

Response (JSON):

  • id (string): ID of the note

GET /<id>/<password>

Warning

Potential password leak

Return content of a note encrypted by the given password.

GET /<id>

Return content of a note.

If the note is encrypted, the encrypted value is returned (application/octet-stream). Otherwise, the text is returned (text/plain).

Errors

Errors return 500 Server Internal Error with the JSON payload:

  • message (string): context of the error
  • error (string): error message

Dependencies

The web interface depends on:

By default, those dependencies are fetched from remote CDN services by the client.

If you would like to download them to serve them locally:

npm install

or via make:

make dependencies

Then configure the local directories:

{
  "bootstrap_directory": "./node_modules/bootstrap/dist"
}

Downloading Monaco Editor is not supported yet.