paste is a simple web app for writing & sharing code. It's my own take on conventional pastebin sites like pastebin.com or hastebin.
Anyone can use paste! The official/public instance can be accessed using the endpoints listed below, but you can also host your own if you like!
Just go to https://pastes.dev!
You can submit content most easily using curl.
# Upload the contents of a file
> curl -T example.txt https://api.pastes.dev/post
# Upload the contents of a file and specify the language
> curl -T example.yml -H "Content-Type: text/yaml" https://api.pastes.dev/post
# Pipe in some output from any command
> echo "Hello world" | curl -T - https://api.pastes.dev/post
If curl isn't installed on your system, you can also post using netcat.
# Pipe in some output from any command
> echo "Hello world" | nc nc.pastes.dev 1337
# Upload the contents of a file
> cat example.txt | nc nc.pastes.dev 1337
If you don't want to do so much typing, you can create a shorter alias.
# Add this to the end of `~/.bashrc` and run 'source ~/.bashrc'
paste() {
curl -T $1 https://api.pastes.dev/post
}
then...
# Upload the contents of a file
> paste example.txt
# Pipe in some output from any command
> echo "Hello!" | paste -
Send GET/POST/PUT requests to https://api.pastes.dev/
. More info below.
The frontend (this repository) is written using the React framework. The backend data storage is handled by a separate web service called bytebin.
The user-interface is based on the Monaco Editor, the engine behind the popular Visual Studio Code text editor. It's quite simple; it supports syntax highlighting, automatic indentation, many supported languages, themes, zooming in/out, linking to specific lines or sections, and more!
I host a public instance at https://pastes.dev. Please feel free to use it to share code/configs/whatever!
Please note that the following (very-non-legally worded) terms of service apply.
If you come across any content which is illegal or infringes on copyright, please get in touch and let me know so I can remove it.
Uploaded content is retained for 90 days then deleted.
- To read content, send a HTTP
GET
request tohttps://api.pastes.dev/<key>
.- Replace
<key>
with the id of the paste. - The content is returned in the response body.
- The
Content-Type
header istext/<language>
, where language is the id of the language the paste was saved with.
- Replace
- To upload content, send a HTTP
POST
request tohttps://api.pastes.dev/post
.- Include the content in the request body.
- Specify the language with the
Content-Type: text/<language>
header, and please provide aUser-Agent
header too. - The paste "key" is returned in the
Location
header, or in the response body as a JSON object in the format{"key": "<key>"}
.
The API is powered by the bytebin service, so more information about how it works can be found there.
It's quite simple to host your own version.
git clone https://github.com/lucko/paste
cd paste
yarn install
# Outputs html/css/js files to /build
yarn build
# Start a webserver for testing/development
yarn start
You can then follow the create-react-app deployment documentation for how to host the build output. I personally recommend deploying to the cloud using a service like Netlify instead of hosting on your own webserver.
If you really want to self-host (including the bytebin data storage part), I suggest using Docker:
git clone https://github.com/lucko/paste
docker compose up -d
You should then (hopefully!) be able to access the application at http://localhost:8080/
.