mirror of
https://github.com/minetest/contentdb.git
synced 2024-11-09 17:13:45 +01:00
Content database for Minetest mods, games, and more
.github | ||
app | ||
migrations | ||
utils | ||
.dockerignore | ||
.gitignore | ||
.gitlab-ci.yml | ||
babel.cfg | ||
config.example.cfg | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE.txt | ||
README.md | ||
requirements.lock.txt | ||
requirements.txt |
Content Database
Content database for Minetest mods, games, and more.
Developed by rubenwardy, license GPLv3.0+.
Getting started (debug/dev)
Docker is the recommended way to develop and deploy ContentDB.
-
Install
docker
anddocker-compose
.sudo apt install docker-ce docker-compose
-
Copy
config.example.cfg
toconfig.cfg
. -
Fill out
config.cfg
- Set
SQLALCHEMY_DATABASE_URI
= "postgres://contentdb:password@db:5432/contentdb" - Optionally, set the MAIL settings.
- Set
-
(Optional) Set up GitHub integration
- Make a Github OAuth Client at https://github.com/settings/developers:
- Homepage URL -
http://localhost:5123/
- Authorization callback URL -
http://localhost:5123/user/github/callback/
- Put client id and client secret in
GITHUB_CLIENT_ID
andGITHUB_CLIENT_SECRET
in config.cfg.
-
Create config.env:
POSTGRES_USER=contentdb POSTGRES_PASSWORD=password POSTGRES_DB=contentdb FLASK_DEBUG=1
-
Start docker images:
docker-compose up --build
-
Setup database:
./utils/run_migrations.sh
-
(Optional) create initial data
./utils/bash.sh
- Either
python setup.py -o
orpython setup.py -t
-o
creates just the admin, and static data like tags, and licenses.-t
will create test pacakges.
-
View at http://localhost:5123. The admin username is
rubenwardy
and the password istuckfrump
.
In the future, starting CDB is as simple as:
docker-compose up --build
To hot/live update CDB whilst it is running, use:
./utils/reload.sh
This will only work with python code and templates, it won't update tasks or config.
How-tos
# Hot/live reload (only works with FLASK_DEBUG=1)
./utils/reload.sh
# Cold update a running version of CDB with minimal downtime (production)
./utils/update.sh
# Enter docker
./utils/bash.sh
# Run migrations
./utils/run_migrations.sh
# Create new migration
./utils/create_migration.sh
Database
classDiagram
User "1" --> "*" Package
User --> UserEmailVerification
User "1" --> "*" Notification
Package "1" --> "*" Release
Package "1" --> "*" Dependency
Package "1" --> "*" Tag
Package "1" --> "*" MetaPackage : provides
Release --> MinetestVersion
Package --> License
Dependency --> Package
Dependency --> MetaPackage
MetaPackage "1" --> "*" Package
Package "1" --> "*" Screenshot
Package "1" --> "*" Thread
Thread "1" --> "*" Reply
Thread "1" --> "*" User : watchers
User "1" --> "*" Thread
User "1" --> "*" Reply
User "1" --> "*" ForumTopic
User --> "0..1" EmailPreferences
User "1" --> "*" APIToken
APIToken --> Package