a powerful website for storing and sharing text and code snippets. completely free and open source.
license • legal • donations • changelog • api • pastry-cli
this is a complete rewrite, with more functionality and a better ui.
if you want to see the source code of v2 go to codemyst/pastemyst.
this is a guide on how to set the project up, build it and get it running.
the api is written in c# with asp.net core, so you need the dotnet sdk (and the asp.net targeting pack). check the dotnet download page for a guide on how to install it.
you also need a mongodb database.
set the db connection string as a dotnet secret:
dotnet user-secrets set ConnectionStrings:DefaultDb "mongodb://127.0.0.1:27017"
now you can build and run the api with:
dotnet run
to test that everything is fine, you can open https://localhost:5000/swagger or get /ping
.
to enable auth (login), you need to set secrets for github and gitlab oauth applications, you also need to add the secret used for jwt keys.
dotnet user-secrets set GitHub:ClientId "..."
dotnet user-secrets set GitHub:ClientSecret "..."
dotnet user-secrets set GitLab:ClientId "..."
dotnet user-secrets set GitLab:ClientSecret "..."
dotnet user-secrets set JwtSecret "..."
to enable language autodetection, you need to install the guesslang-bun executable. if you're using docker you don't need to do this.
the client is written with sveltekit, so install node and npm (or yarn).
here is the list of packages you need to install on ubuntu to generate the grammar files for all the languages: ruby
, ruby-dev
, ruby-bundler
, docker
, libssl-dev
, build-essentials
, cmake
, libzip-dev
, libicu-dev
, pkg-config
.
then to generate the grammar files, run the generate-grammars.sh
script.
install all dependencies:
npm i
copy the .env.example
file to .env
in the /client
directory and change the variables.
run the client with:
npm run dev
you can also run the entire project (db, api and client) using docker.
make sure to first generate the grammar files before running the containers so that syntex highlighting works.
copy the .env.example
file to .env
and change the variables.
if you're running this locally only (no outside internet access), docker will use the host.docker.internal domain to make requests to the api from the browser, so you need to add an entry to /etc/hosts (linux and mac only) so it properly redirects to localhost:
127.0.0.1 host.docker.internal
otherwise the api url should be set to the public domain you're using to host the project.
finally run docker-compose up
.