| meme | ||
| static | ||
| .gitignore | ||
| instances.json | ||
| LICENSE | ||
| meme.scm | ||
| README.md | ||
MeMe
MeMe is a privacy-respecting frontend to Know Your Meme
Currently this project is still in development. While it might be in a state where you can host it publicly, There is likely to be many bugs. Also, KYM constantly screws with the UI so if something breaks please tell me.
Support
Join our Matrix room for support and other things related to MeMe
Instances
See instances.json
Run your own instance
Dependencies
This program is written in Guile Scheme.
You will need need guile, guile-gnutls, guile-lib, and guile-gcrypt.
Running
- Install the dependencies
- Clone the repository using
git clone --recurse-submodules https://git.vern.cc/cobra/MeMe - Run
guile -L . meme.scm - Connect to http://localhost:8003 (or point your reverse proxy to it)
- Profit
Environment
PATCHES_URL - Link to any patches that were applied. Necessary if there are any. Do not set if there aren't.
The following are optional.
PORT - What port to run on (default 8003).
Notes
When using a service manager (e.g. systemd), make sure the stop signal is set to SIGINT, or 2. This will prevent EADDRINUSE.
Performance
Hardware
RAM usage seems to max out below 150 MiB (max around 140MiB in production testing, baseline 107MiB).
Page
Due to the nature and method of proxying images, the performance on first load is poor when loading a page with many images (PageSpeed Inisghts speed index of 3.3s for a meme list, but 1.2s for an article).
After the first load, though, your browser's cache control should kick in, and any subsequent requests for an image are cached. It is recommended to use a separate image cache when using a reverse proxy.
Altogether, the performance listed on PageSpeed Insights is >90 for all pages tested.
Todo
- Asynchronously run the handler (implement stateless version of run-server)
- Speed up image proxying somehow
- Video list page*
- Video page*
- User page (it is internally linked)
*Videos might not be added because they use embeds from stuff like tiktok and I don't know how to scrape tiktok (use existing proxitok instance?)
Known issues
- It's slow
- It could probably be faster