109 lines
1.9 KiB
Markdown
109 lines
1.9 KiB
Markdown
|
# pastes.sh
|
||
|
|
||
|
A pastebin service for hackers.
|
||
|
|
||
|
## comms
|
||
|
|
||
|
- [website](https://pico.sh)
|
||
|
- [irc #pico.sh](irc://irc.libera.chat/#pico.sh)
|
||
|
- [mailing list](https://lists.sr.ht/~erock/pico.sh)
|
||
|
- [ticket tracker](https://todo.sr.ht/~erock/pico.sh)
|
||
|
- [email](mailto:hello@pico.sh)
|
||
|
|
||
|
## setup
|
||
|
|
||
|
- golang `v1.18`
|
||
|
|
||
|
You'll also need some environment variables
|
||
|
|
||
|
```
|
||
|
export POSTGRES_PASSWORD="secret"
|
||
|
export DATABASE_URL="postgresql://postgres:secret@db/pastes?sslmode=disable"
|
||
|
export PASTES_SSH_PORT=2222
|
||
|
export PASTES_WEB_PORT=3000
|
||
|
export PASTES_DOMAIN="pastes.sh"
|
||
|
export PASTES_EMAIL="hello@pastes.sh"
|
||
|
```
|
||
|
|
||
|
I just use `direnv` which will load my `.env` file.
|
||
|
|
||
|
## development
|
||
|
|
||
|
### db
|
||
|
|
||
|
I use `docker-compose` to standup a postgresql server. If you already have a
|
||
|
server running you can skip this step.
|
||
|
|
||
|
Copy example `.env`
|
||
|
|
||
|
```bash
|
||
|
cp .env.example .env
|
||
|
```
|
||
|
|
||
|
Then run docker compose.
|
||
|
|
||
|
```bash
|
||
|
docker-compose up -d
|
||
|
```
|
||
|
|
||
|
Then create the database and migrate
|
||
|
|
||
|
```bash
|
||
|
make create
|
||
|
make migrate
|
||
|
```
|
||
|
|
||
|
### build the apps
|
||
|
|
||
|
```bash
|
||
|
make build
|
||
|
```
|
||
|
|
||
|
### run the apps
|
||
|
|
||
|
There are two apps: an ssh and web server.
|
||
|
|
||
|
```bash
|
||
|
./build/ssh
|
||
|
```
|
||
|
|
||
|
Default port for ssh server is `2222`.
|
||
|
|
||
|
```bash
|
||
|
./build/web
|
||
|
```
|
||
|
|
||
|
Default port for web server is `3000`.
|
||
|
|
||
|
### subdomains
|
||
|
|
||
|
Since we use subdomains for blogs, you'll need to update your `/etc/hosts` file
|
||
|
to accommodate.
|
||
|
|
||
|
```bash
|
||
|
# /etc/hosts
|
||
|
127.0.0.1 pastes.test
|
||
|
127.0.0.1 erock.pastes.test
|
||
|
```
|
||
|
|
||
|
Wildcards are not support in `/etc/hosts` so you'll have to add a subdomain for
|
||
|
each blog in development. For this example you'll also want to change the domain
|
||
|
env var to `PASTES_DOMAIN=pastes.test`.
|
||
|
|
||
|
## deployment
|
||
|
|
||
|
I use `docker-compose` for deployment. First you need `.env.prod`.
|
||
|
|
||
|
```bash
|
||
|
cp .env.example .env.prod
|
||
|
```
|
||
|
|
||
|
The `production.yml` file in this repo uses my docker hub images for deployment.
|
||
|
|
||
|
```bash
|
||
|
docker-compose -f production.yml up -d
|
||
|
```
|
||
|
|
||
|
If you want to deploy using your own domain then you'll need to edit the
|
||
|
`Caddyfile` with your domain.
|