Server
This is RD2L's backend and website.
Installation
First, install the project's dependencies.
npm install
Next, get an api key from https://steamcommunity.com/dev/apikey. Either set this
as an environment variable or a variable in a .env
file - name must be
STEAM_API_KEY
.
Here's a template with example values for a complete .env
file:
POSTGRES_USER='postgres'
POSTGRES_PASSWORD='postgres'
POSTGRES_DB='seal'
POSTGRES_HOST='localhost'
POSTGRES_PORT='5432'
PORT='80'
HTTPS_PORT='443'
SECRET='random characters'
STEAM_API_KEY='get from https://steamcommunity.com/dev/apikey'
For HTTPS configuration, include the following entries:
SSL_KEY='path/to/key.pem'
SSL_CERT='path/to/cert.pem'
SSL_CA='path/to/ca.pem'
Steam bot support can be activated by providing the following:
STEAM_BOT_USERNAME='steam_username'
STEAM_BOT_PASSWORD='steam_password'
Auth requests can be forwarded by providing:
WEBSITE_URL='http://return-to-website.com'
Full database configuration can be configured using:
POSTGRES_USER='postgres'
POSTGRES_PASSWORD='postgres'
POSTGRES_DB='seal'
POSTGRES_HOST='localhost'
POSTGRES_PORT='5432'
POSTGRES_POOL_MAX='10'
POSTGRES_TIMEOUT='30000'
Running
To run locally:
npm start
To run in docker:
make build
make run
Running in docker requires environment variables, not .env variables. Additionally, and unsurprisingly, it requires docker to be installed and running.
Project structure
├── src
│ ├── api
│ │ └── *.js # API-oriented controllers
│ ├── assets
│ │ └── **/* # Static files (including images, markdown, etc.)
│ ├── lib
│ │ └── *.js # Common utilities/shared libraries
│ ├── migrations
│ │ └── *.sql # Database migration files run at startup in order starting from 001.sql
│ ├── pages
│ │ ├── masters
│ │ │ ├── *.js # Masters-specific controllers
│ │ └── *.js # Page content controllers
│ ├── repos
│ │ └── *.js # Database model repositories
│ ├── templates
│ │ └── **/*.pug # Template files structure as a hierarchical tree
├── Dockerfile
├── docker-compose.yml # Development-oriented quickstart compose file
├── Makefile # Command wrapper
├── package.json
└── package-lock.json