diff --git a/README.md b/README.md index dca74ac..eed1472 100644 --- a/README.md +++ b/README.md @@ -6,34 +6,43 @@ Released under [CNPLv7+](https://thufie.lain.haus/NPL.html). Please read the [full terms](./LICENSE.md) for proper wording. # installing & first time setup -1. first, install OpenResty. instructions for linux can be found [here](https://openresty.org/en/linux-packages.html). -2. then, install LuaJIT and Lua 5.1 (usually called `lua5.1` in package managers) -3. then, install [LuaRocks](https://luarocks.org) (prefer your package manager instead of a local install recommended by the guide) -4. add luarocks search dirs to path: +## docker +```bash +$ docker compose up +``` + +- opens port 8080 +- exposes `data/db` and `data/avatars` as volumes for data backup and persistence +- exposes `secrets/` as a volume so that the script won't try to perform first time setup again + +## manual +1. install: + - OpenResty. instructions for linux can be found [here](https://openresty.org/en/linux-packages.html) + - LuaJIT and Lua 5.1 (usually called `lua5.1` in package managers) + - openssl (-dev) + - sqlite (-dev) + - libsodium (-dev) + - imagemagick (-dev) + - [LuaRocks](https://luarocks.org) (either through the guide's instructions or your package manager, whichever is newer) +2. add luarocks search dirs to path: ```bash # in .bashrc (or other shell equivalent) eval "$(luarocks --lua-version 5.1 path)" ``` -5. clone repo -6. install the dependencies: +3. clone repo +4. install the lua dependencies: ```bash $ luarocks --local --lua-version 5.1 build --only-deps ``` -7. create a file named `secrets.lua` in the project directory. -use the `secrets.lua.example` file as reference, and generate a cryptographically secure random key, for example, with: +5. run: ```bash -$ openssl rand -hex 32 -``` -8. run: - -```bash -$ start.sh production +$ start.sh production # or 'development' or empty string ``` the script will perform some necessary first time setup (and create a hidden file in the folder to ensure it won't do so again). it will create an administrator account and print the credentials to the console; **this will only happen once**. make sure you save them somewhere. the administrator account is the only one that can promote other users to moderator. -(note the `production` argument. if called with no arguments, `start.sh` will run in a development environment, which uses a separate database.) +(note the `production` argument. if called with no arguments, `start.sh` will run in a development environment, which uses a separate database and shows more debug information.) this app is made with the assumption that it is being reverse-proxied. as such, you may want to change the port to something other than the default `8080`. you can do that in [`config.lua`]([./config.lua]).