summaryrefslogtreecommitdiff
path: root/README
blob: f4ea01f66d73d437d4c050a59b2e3808c59bedde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
The VNDB.org Source Code
------------------------

Quick and dirty setup using Docker

  # Setup
  docker build -t vndb .
  docker volume create --name vndb-data

  # Run (will run on the foreground)
  docker run -ti --name vndb -p 3000:3000 -v vndb-data:/var/lib/postgresql -v "`pwd`":/var/www --rm vndb

  # While running, if you need another terminal into the container
  docker exec -ti vndb bash                           # root shell
  docker exec -ti vndb su -l devuser                  # development shell
  docker exec -ti vndb su postgres -c psql            # postgres superuser shell
  docker exec -ti vndb su devuser -c 'psql -U vndb'   # postgres vndb shell


Requirements (when not using Docker)

  global requirements:
    Linux, or an OS that resembles Linux. Chances are VNDB won't run on Windows.
    PostgreSQL 9.3+ (don't try older versions or other SQL databases, it won't work)
    perl 5.22 recommended, 5.10+ may also work
    A webserver that works with TUWF (lighttpd and Apache are known to work)

  (perl 5.22 core modules are not listed.)

  General:
    Crypt::ScryptKDF
    Crypt::URandom
    DBD::Pg
    DBI
    Image::Magick
    JSON::XS
    Tie::IxHash

  util/vndb.pl:
    Algorithm::Diff::XS
    TUWF
    HTTP::Server::Simple (optional, but greatly simplifies development setup)
    FCGI                 (optional, for running as a FastCGI script)
    PerlIO::gzip         (optional, for output compression)

  util/multi.pl:
    APIDump:
      PerlIO::gzip
    Core:
      AnyEvent
      AnyEvent::Pg
    IRC:
      AnyEvent::IRC
    Maintenance:
      PerlIO::gzip
    RG:
      XML::Parser
      graphviz           (/usr/bin/dot is used by default)

  util/skingen.pl
    CSS::Minifier::XS    (optional, minimizes CSS output)

  util/jsgen.pl
    JavaScript::Minifier::XS (optional, minimizes JS output)
    uglifyjs                 (optional, slower but better JS compression)

  util/spritegen.pl
    pngcrush             (optional)


Setup

  - Make sure all the required dependencies (see above) are installed
  - Create a suitable data/config.pl, using data/config_example.pl as base.
  - Run the build system:

      make

  - Setup a PostgreSQL server and make sure you can login with some admin user
  - Initialize the VNDB database (assuming 'postgres' is a superuser):

      # Create the database & roles
      psql -U postgres -f util/sql/superuser_init.sql

      # Set a password for each database role:
      echo "ALTER ROLE vndb       LOGIN PASSWORD 'pwd1'" | psql -U postgres
      echo "ALTER ROLE vndb_site  LOGIN PASSWORD 'pwd2'" | psql -U postgres
      echo "ALTER ROLE vndb_multi LOGIN PASSWORD 'pwd3'" | psql -U postgres

      # Now import the rest
      psql -U vndb -f util/sql/all.sql

  - Update the vndb_site password in data/config.pl to whatever you set it in
    the previous step.
  - Now simply run:

      util/vndb-dev-server.pl

    (Note: At the time of writing, the above command will require the git
    version of TUWF installed, but I intent to upload a new version to CPAN
    after a bit more testing).


Contact

  IRC:   #vndb @ irc.synirc.net
  Email: contact@vndb.org


License

  GNU AGPL, see COPYING file for details.