80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
# purr
|
|
|
|
[purr.eversole.co](https://purr.eversole.co)
|
|
|
|
a simple web application offering customizable password generation
|
|
and time-limited sharing of secrets.
|
|
|
|
## TECH STACK
|
|
|
|
- [Haskell](https://www.haskell.org)
|
|
- [Scotty](https://hackage.haskell.org/package/scotty)
|
|
- [HTMX](https://htmx.org)
|
|
- [SQLite](https://www.sqlite.org)
|
|
|
|
## GOALS
|
|
|
|
- Provide a minimal and clean interface for generating and sharing passwords.
|
|
- Generate sufficiently memorable but secure passwords for use with accounts
|
|
that don't offer better authentication methods.
|
|
- Share text secrets with others without disclosing the secret in the
|
|
message itself.
|
|
- Maintain a clean and organized codebase that can be extended to include more
|
|
utilities than originally anticipated.
|
|
|
|
## WHY TRUST PURR.EVERSOLE.CO?
|
|
|
|
You shouldn't. This is free and open-source software which you can run on your
|
|
own hardware!
|
|
|
|
## DEPLOYMENT
|
|
|
|
Only Nix build instructions are provided below.
|
|
|
|
### No Containers
|
|
1) Clone this repository
|
|
2) Build the application (with flakes enabled): `nix build '.#'`
|
|
3) Set the environment variables
|
|
- File: `cp examples/.env.example ./.env; $EDITOR ./.env`
|
|
- If you want to set them in a different way, you already know how.
|
|
4) Run the application: `./result/bin/Purr`
|
|
|
|
### Containers
|
|
1) Clone this repository
|
|
2) Build the container image (with flakes enabled): `nix build .#purr-container`
|
|
3) Load the container image: `podman load -i result`
|
|
4) Pick option 5, 6, or use your favorite process to manage containers and ENV
|
|
5) NixOS configuration:
|
|
```
|
|
virtualisation.oci-containers.containers.purr = {
|
|
image = "purr";
|
|
ports = [ "${PURR_EXTERNAL_PORT}:3000" ];
|
|
volumes = [
|
|
"/PATH/TO/PURR/data:/app/data"
|
|
];
|
|
environment = {
|
|
PURRNOFILE = "true";
|
|
ENVIRONMENT = "production";
|
|
APPLICATIONHOST = "localhost";
|
|
APPLICATIONPORT = "3000";
|
|
DATADIR = "/app/";
|
|
LINKLENGTH = "24";
|
|
ADMINEMAIL = "${YOUR_EMAIL}";
|
|
};
|
|
};
|
|
```
|
|
6) Docker Stack
|
|
1) Copy the docker-stack.yml example and edit as needed.
|
|
1) `cp examples/docker-stack.yml ./; $EDITOR ./docker-stack.yml`
|
|
2) Set environment variables:
|
|
- `cp examples/.env.example ./.env; $EDITOR ./.env`
|
|
- Or set them in the docker-stack.yml environment declaration.
|
|
3) Deploy: `docker stack deploy -c docker-stack.yml purr`
|
|
|
|
## DEVELOPMENT & SUPPORT
|
|
|
|
Per the permissive ISC license, you are free to do what you wish with this
|
|
software. No guarantees are made to its usability, security, or functionality.
|
|
|
|
Copyright James Eversole (james@eversole.co)
|