From 054582103b131bec00ee1fe4d889719bb6cd86b6 Mon Sep 17 00:00:00 2001 From: Erin Date: Thu, 15 Jun 2023 23:12:42 -0400 Subject: [PATCH] Add example env files and fixup setup instructions --- .env.example | 44 +++++++++++++++++++++++++++++++++++++++++++ README.md | 10 ++++++---- frontend/.env.example | 15 +++++++++++++++ 3 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 .env.example create mode 100644 frontend/.env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b6566ff --- /dev/null +++ b/.env.example @@ -0,0 +1,44 @@ +# Key used to sign tokens. Generate this with `go run . generate key` +HMAC_KEY= + +# PostgreSQL connection URL (postgresql://user:pass@host:port/dbname) +DATABASE_URL= + +# Redis connection URL (redis://user:pass@host:port) +REDIS= + +# Port for the backend to listen on; frontend assumes this will be 8080 for dev +PORT=8080 + +# Frontend base URL, used to construct URLs that point back to the frontend +BASE_URL=http://localhost:5173 + +# S3/MinIO configuration, required for avatars, pride flags, and data exports +# Note: MINIO_ENDPOINT must be set and look like a minio endpoint, but doesn't +# have to actually point to one you have access to +MINIO_ENDPOINT=example.com +MINIO_BUCKET= +MINIO_ACCESS_KEY_ID= +MINIO_ACCESS_KEY_SECRET= +MINIO_SSL= + +# IP address of the frontend; requests from here will never be ratelimited +FRONTEND_IP= + +# Auth providers - fill in OAuth app info to enable OAuth login for each + +# https://discord.com/developers/applications +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= + +# https://developers.google.com/identity/protocols/oauth2#basicsteps +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= + +# https://www.tumblr.com/oauth/apps +TUMBLR_CLIENT_ID= +TUMBLR_CLIENT_SECRET= + +# Discord bot config - provide the app's public key in addition to client ID/ +# secret from above to let the bot to respond to command interactions over HTTP +DISCORD_PUBLIC_KEY= diff --git a/README.md b/README.md index 61c0a99..c0ac541 100644 --- a/README.md +++ b/README.md @@ -25,18 +25,20 @@ Requirements: - PostgreSQL (any currently supported version should work) - Redis 6.0 or later - Node.js (latest version) -- MinIO **if using avatars or data exports** (_not_ required otherwise) +- MinIO **if using avatars, flags, or data exports** (_not_ required otherwise) ### Setup -1. Create a PostgreSQL user and database (the user should own the database) +1. Create a PostgreSQL user and database (the user should own the database). For example: `create user pronouns with password 'password'; create database pronouns with owner pronouns;` -2. Create a `.env` file in the repository root containing at least `HMAC_KEY`, `DATABASE_URL`, `REDIS`, `PORT`, and `MINIO_ENDPOINT` keys. +2. Copy `.env.example` in the repository root to a new file named `.env` and fill out the required options. 3. Run `go run -v . database migrate` to initialize the database, then optionally `go run -v . database seed` to insert a test user. 4. Run `go run -v . web` to run the backend. -5. Create `frontend/.env` with the following content: `PUBLIC_BASE_URL=http://localhost:5173` +5. Copy `frontend/.env.example` into `frontend/.env` and tweak as necessary. 6. cd into the `frontend` directory and run `pnpm dev` to run the frontend. +See [`docs/production.md`](/docs/production.md#configuration) for more information about keys in the backend and frontend `.env` files. + ## License Copyright (C) 2022 Sam diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..1463658 --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1,15 @@ +# Base of frontend URLs +PUBLIC_BASE_URL=http://localhost:5173 + +# Base of media URLs, required for avatars, pride flags, and data exports +# If using the provided nginx reverse proxy config, use `$PUBLIC_BASE_URL/media` +PUBLIC_MEDIA_URL= + +# Base of shortened profile URLs (leave empty to disable) +PUBLIC_SHORT_BASE= + +# hCaptcha configuration (leave empty to disable) +PUBLIC_HCAPTCHA_SITEKEY= + +# Sentry configuration (unused in dev, required in production) +PRIVATE_SENTRY_DSN=