Skip to content

i-vt/EraseableChatApp

Repository files navigation

EraseableChatApp

In-memory chat that never touches the disk.

Features

  • Chats are not touching the disk
  • Passwords are accepted as time-based one time passwords (TOTPs)
  • Any member can /drop the application
  • File transfer is in-memory only

Setup

  1. Java
java --version
openjdk 23 2024-09-17
OpenJDK Runtime Environment (build 23+37-2369)
OpenJDK 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
  1. Certs (only needed for prod version)
sudo certbot certonly --standalone -d placeholderdomaingoeshere.net -d www.placeholderdomaingoeshere.net

cd /etc/letsencrypt/live/placeholderdomaingoeshere.net

sudo openssl pkcs12 -export \
  -in fullchain.pem \
  -inkey privkey.pem \
  -out keystore.p12 \
  -name tomcat \
  -passout pass:a234sdfjyttgfh4sSS

Production

cd ~/chatapp/chatapp/; pkill -f 'gradlew.*bootRun' ; nohup ./gradlew bootRun --args='--spring.profiles.active=dev' > /dev/null 2>&1 & sleep 2; ps aux | grep [g]radlew; sleep 15; cat codes.txt

Development

cd ~/chatapp/chatapp/; pkill -f 'gradlew.*bootRun' ; nohup ./gradlew bootRun --args='--spring.profiles.active=prod' > /dev/null 2>&1 & sleep 2; ps aux | grep [g]radlew; sleep 15; cat codes.txt

Containerized Setup

  • Build & run the HTTP development container: ./scripts/install.sh dev
  • Build & run the HTTPS production container (requires PKCS12 keystore): ./scripts/install.sh prod --cert-path /absolute/path/to/keystore.p12 [--cert-password your_password]

The script uses Docker to compile the project image, binds port 8080 for dev and 8443 (host default 443) for prod, and mounts your TLS material read-only. Add --no-build if you have already built the image, and --host-port to override the exposed port.

About

In-memory chat that never touches the disk.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors