|
|
@ -2,12 +2,53 @@ |
|
|
|
|
|
|
|
A URL shortener and (maybe) a pastebin server for our #ru community. |
|
|
|
|
|
|
|
## Build instructions |
|
|
|
## Building |
|
|
|
|
|
|
|
- `go get -u github.com/go-bindata/go-bindata/...` |
|
|
|
- `go generate ./...` |
|
|
|
- `go build ./cmd/rushlink` |
|
|
|
|
|
|
|
## Deploying |
|
|
|
|
|
|
|
We recommend running `rushlink` behind a reverse proxy suitable for processing |
|
|
|
HTTP requests, such as `nginx`, or `haproxy`. |
|
|
|
|
|
|
|
## Sample `nginx` config |
|
|
|
|
|
|
|
``` |
|
|
|
server { |
|
|
|
location / { |
|
|
|
root /var/www/rushlink; |
|
|
|
proxy_pass http://127.0.0.1:8000; |
|
|
|
proxy_set_header Host rushlink.local; |
|
|
|
proxy_set_header X-Forwarded-For $remote_addr; |
|
|
|
proxy_set_header X-Forwarded-Proto $scheme; |
|
|
|
proxy_http_version 1.1; |
|
|
|
} |
|
|
|
} |
|
|
|
``` |
|
|
|
|
|
|
|
`rushlink` automatically detects whether `http` or `https` is used when |
|
|
|
`X-Forwarded-Proto` is correctly set. Otherwise, pass `-root_url |
|
|
|
https://rushlink.local` to the binary (e.g. in the `systemd` unit file). |
|
|
|
|
|
|
|
## Sample `systemd` unit file |
|
|
|
|
|
|
|
``` |
|
|
|
[Install] |
|
|
|
WantedBy=nginx.service |
|
|
|
|
|
|
|
[Service] |
|
|
|
Type=simple |
|
|
|
User=rushlink |
|
|
|
Group=nogroup |
|
|
|
ExecStart=/var/lib/rushlink/rushlink -database /var/lib/rushlink/db -file-store /var/lib/rushlink/filestore -root_url https://rushlink.local |
|
|
|
``` |
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
# Background |
|
|
|
|
|
|
|
## Libraries |
|
|
|
|
|
|
|
Use standard-Go-libraries if the job can be done with those. As of now, these |
|
|
@ -105,34 +146,3 @@ header that the client sends. We can still wrap the plain-text page in a single |
|
|
|
We will try as hard as possible to not store any data about our users, and will |
|
|
|
only provide any data when we have the legal obligation to do so. |
|
|
|
|
|
|
|
## Sample `nginx` config |
|
|
|
|
|
|
|
``` |
|
|
|
server { |
|
|
|
location / { |
|
|
|
root /var/www/rushlink; |
|
|
|
proxy_pass http://127.0.0.1:8000; |
|
|
|
proxy_set_header Host rushlink.local; |
|
|
|
proxy_set_header X-Forwarded-For $remote_addr; |
|
|
|
proxy_set_header X-Forwarded-Proto $scheme; |
|
|
|
proxy_http_version 1.1; |
|
|
|
} |
|
|
|
} |
|
|
|
``` |
|
|
|
|
|
|
|
`rushlink` automatically detects whether `http` or `https` is used when |
|
|
|
`X-Forwarded-Proto` is correctly set. Otherwise, pass `-root_url |
|
|
|
https://rushlink.local` to the binary (e.g. in the `systemd` unit file). |
|
|
|
|
|
|
|
## Sample `systemd` unit file |
|
|
|
|
|
|
|
``` |
|
|
|
[Install] |
|
|
|
WantedBy=nginx.service |
|
|
|
|
|
|
|
[Service] |
|
|
|
Type=simple |
|
|
|
User=rushlink |
|
|
|
Group=nogroup |
|
|
|
ExecStart=/var/lib/rushlink/rushlink -database /var/lib/rushlink/db -file-store /var/lib/rushlink/filestore -root_url https://rushlink.local |
|
|
|
``` |