Stupid simple pastebin service written in go.
The easiest way of self-hosting a pasta
server is via the provided container at ghcr.io/grisu48/pasta:latest
(NB: the image on dockerhub is deprecated). All you need to do is
- Create your
data
directory - Put the pastad.toml file there
- Start the container, mount the
data
directory as/data
- Configure your reverse proxy (e.g.
nginx
) to forward requests to port8199
Assuming your data is in /srv/pasta/
you can do
docker container run -d --name pasta -v /srv/pasta:/data -p 127.0.0.1:8199:8199 ghcr.io/grisu48/pasta
podman container run -d --name pasta -v /srv/pasta:/data -p 127.0.0.1:8199:8199 ghcr.io/grisu48/pasta
Pasta listens then on port 8199 and all you need to do is to configure your reverse proxy (e.g. nginx
) accordingly:
server {
listen 80;
listen [::]:80;
server_name my-awesome-pasta.server;
client_max_body_size 32M;
location / {
proxy_pass http://127.0.0.1:8199/;
}
}
We build openSUSE package at build.opensuse.org. To install follow the instructions from software.opensuse.org or the following snippet:
# Tumbleweed
zypper addrepo zypper addrepo https://download.opensuse.org/repositories/home:ph03nix:tools/openSUSE_Tumbleweed/home:ph03nix:tools.repo
zypper refresh && zypper install pasta
Let's assume we have /dev/sda
for the system and /dev/sdb
for data.
- Prepare persistent storage for data
- Install the system with given
cloud-init.yaml
to system storage - Configure your proxy and enojoy!
$ sudo parted /dev/sdb
# mktable - gpt - mkpart - 1 - 0% - 100%
$ sudo mkfs.ext4 /dev/sdb1
$ sudo ros install -d /dev/sda -c cloud-init.yaml
make pastad # Server
make pasta # Client
make # all
make static # static binaries
Create a pastad.toml
file using the provided example (pastad.toml.example
) and run the server with
./pastad
In addition to the config file, pastad
can also be configured via environmental variables. This might be useful for running pasta as a container without a dedicated config file. Supported environmental variables are:
Key | Description |
---|---|
PASTA_BASEURL |
Base URL for the pasta instance |
PASTA_PASTADIR |
Data directory for pastas |
PASTA_BINDADDR |
Address to bind the server to |
PASTA_MAXSIZE |
Maximum size (in Bytes) for new pastas |
PASTA_CHARACTERS |
Number of characters for new pastas |
PASTA_MIMEFILE |
MIME file |
PASTA_EXPIRE |
Default expiration time (in seconds) |
PASTA_CLEANUP |
Seconds between cleanup cycles |
PASTA_REQUESTDELAY |
Delay between requests from the same host in milliseconds |
make docker
Or manually:
docker build . -t feldspaten.org/pasta # Build docker container
Create or run the container with
docker container create --name pasta -p 8199:8199 -v ABSOLUTE_PATH_TO_DATA_DIR:/data feldspaten.org/pasta
docker container run --name pasta -p 8199:8199 -v ABSOLUTE_PATH_TO_DATA_DIR:/data feldspaten.org/pasta
The container needs a data
directory with a valid pastad.toml
(See the example file, otherwise default values will be used).
Assuing the server runs on http://localhost:8199, you can use the pasta
tool or simply curl
:
curl -X POST 'http://localhost:8199' --data-binary @README.md
pasta
is the CLI utility for making the creation of a pasta as easy as possible.
For instance, if you want to push the README.md
file and create a pasta out of it:
pasta README.md
pasta -r http://localhost:8199 REAME.md # Define a custom remote server
pasta
reads the config from ~/.pasta.toml
(see the example file)