purr/README.md

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)