Uberfast pastebin in Go
Go to file
Stanislav N. aka pztrn 5fc6d3a181
Some checks failed
continuous-integration/drone/push Build is failing
Application superstructure (or supersingleton, if you want).
Got rid of context thing which misleads due to existance of stdlib's
context package.

Also fixed golangci-lint configuration.

Fixes #20.
2022-08-19 21:52:49 +05:00
assets Update dependencies, fix footer link. 2022-08-14 16:02:16 +05:00
cmd/fastpastebin Application superstructure (or supersingleton, if you want). 2022-08-19 21:52:49 +05:00
docker CI configuration. 2019-09-25 18:47:51 +05:00
domains Application superstructure (or supersingleton, if you want). 2022-08-19 21:52:49 +05:00
examples Added maximum request body size limiting. 2020-02-29 22:49:44 +05:00
internal Application superstructure (or supersingleton, if you want). 2022-08-19 21:52:49 +05:00
systemd Private pastes, systemd unit file, design updates. 2018-05-01 22:56:45 +05:00
.drone.yml Update images used for building containers and code test/lint, fill CHANGELOG. 2022-08-14 15:34:47 +05:00
.gitignore Update golang versions everywhere, use alpine 3.13 for image, remove vendor dir. 2021-06-14 22:59:21 +05:00
.gitlab-ci.yml Fix registry logging in by CI when uploading Docker image. 2021-06-15 00:16:44 +05:00
.golangci.yml Application superstructure (or supersingleton, if you want). 2022-08-19 21:52:49 +05:00
.markdownlint.json Update images used for building containers and code test/lint, fill CHANGELOG. 2022-08-14 15:34:47 +05:00
builder.sh Move to Go modules (#10) 2019-10-13 08:55:38 +00:00
CHANGELOG.md Prepare to release 0.4.1. 2022-08-14 16:26:11 +05:00
docker-compose.yml Update golang versions everywhere, use alpine 3.13 for image, remove vendor dir. 2021-06-14 22:59:21 +05:00
Dockerfile Update images used for building containers and code test/lint, fill CHANGELOG. 2022-08-14 15:34:47 +05:00
go.mod Get rid of flagger. 2022-08-14 16:20:16 +05:00
go.sum Get rid of flagger. 2022-08-14 16:20:16 +05:00
LICENSE License header everywhere. We're on MIT. 2018-04-30 22:37:36 +05:00
README.md Application superstructure (or supersingleton, if you want). 2022-08-19 21:52:49 +05:00

Fast Pastebin

Build Status

Easy-to-use-and-install pastebin software written in Go. No bells or whistles, no websockets and even NO JAVASCRIPT!

Please, use my gitea for bug reporting. All other places are mirrors!

Also, join Matrix room for near-realtime chat.

Current functionality

  • Create and view public and private pastes.
  • Syntax highlighting.
  • Pastes expiration.
  • Passwords for pastes.
  • Multiple storage backends. Currently: flatfiles, mysql and postgresql.

Caveats

  • Not known at this moment.

Installation and updating

Just issue:

CGO_ENABLED=0 go install go.dev.pztrn.name/fastpastebin/cmd/fastpastebin@VERSION

Replace VERSION with a tag of your choice.

This command can be used to update Fast Paste Bin.

Also Fast Paste Bin is dockerized, see here for instructions.

Compose file with resources limits, as used by me:

---
version: "2.4"

services:
  fastpastebin:
    restart: always
    image: code.pztrn.name/apps/fastpastebin:0.4.1
    volumes:
      - "./fastpastebin.yaml:/app/fastpastebin.yaml"
    ports:
      - "25544:25544"
    cpus: 2
    mem_limit: 1G
    memswap_limit: 0

Configuration

Take a look at example configuration file which contains all supported options and their descriptions.

Configuration file position is irrelevant, there is no hardcoded paths where Fast Paste Bin looking for it's configuration. Use FASTPASTEBIN_CONFIG environment variable to specify path.

Developing

Branching, versions, etc

There is a develop branch which represents current development state. All new commits (by me) and merge requests (by others) should go to that branch.

Branch master represents "latest version" state and always stable.

Code

Use linters, formatters, etc. VSCode with Go plugin is recommended for developing as it will perform most of linting-formatting actions automagically.

Also, Sublime Text with LSP-gopls will also work just fine.

Try to follow Go's code review comments with few exceptions:

  • We're not forcing any limits on line length for code, only for comments, they should be 72-76 chars long.

ToDo

This is a ToDo list which isn't sorted by any parameter at all. Just a list of tasks you can help with.

  • User CP.
  • Files uploading.
  • Passwords for files.
  • Pastes forking and revisioning (like git or github gists).
  • Possibility to copy-paste-edit WYSIWYG content.
  • CLI client for pastes and files uploading.