summaryrefslogtreecommitdiff
path: root/README.md
blob: aeb2421c6330aabda72a8680c4e5b71232847aee (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# The VNDB.org Source Code

## Quick and dirty setup using Docker

Setup:

```
  docker build -t vndb .
```

Run (will run on the foreground):

```
  docker run -ti --name vndb -p 3000:3000 -v "`pwd`":/var/www --rm vndb
```

If you need another terminal into the container while it's running:

```
  docker exec -ti vndb su -l devuser  # development shell (files are at /var/www)
  docker exec -ti vndb psql -U vndb   # postgres shell
```

To start Multi, the optional application server:

```
  docker exec -ti vndb su -l devuser -c 'make -C /var/www multi-restart'
```

It will run in the background for as long as the container is alive. Logs are
written to `data/log/multi.log`.

The PostgreSQL database will be stored in `data/docker-pg/` and the uploaded
files in `static/{ch,cv,sf,st}`. If you want to restart with a clean slate, you
can stop the container and run:

```
  # Might want to make a backup of these dirs first if you have any interesting data.
  rm -rf data/docker-pg static/{ch,cv,sf,st}
```

## Development database

There is a development database available for download at
[https://vndb.org/d8#3](https://vndb.org/d8#3).
When you first run the docker image, you will be asked whether you want to
download and import this database.  If you do not use docker, you can import
this database manually as follows:

- Follow the steps below to setup PostgreSQL and initialze the database
- Download and extract the development database
- psql -U vndb -f dump.sql


## Requirements (when not using Docker)

Global requirements:

- Linux, or an OS that resembles Linux. Chances are VNDB won't run on Windows.
- PostgreSQL 10 (older versions may work)
- perl 5.24 recommended, 5.10+ may also work
- Elm 0.19

**Perl modules** (core modules are not listed):

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

util/vndb.pl (the web backend):
- Algorithm::Diff::XS
- SQL::Interp
- Text::MultiMarkdown
- TUWF
- HTTP::Server::Simple

util/multi.pl (application server, optional):
- AnyEvent
- AnyEvent::Pg
- AnyEvent::IRC
- XML::Parser
- graphviz (/usr/bin/dot is used by default)


## Setup

- Make sure all the required dependencies (see above) are installed. Hint: See
  the Docker file for Ubuntu commands. For non-root setup: Use cpanm & local::lib.
- Create a suitable data/config.pl, using data/config_example.pl as base.
  (For v3, you may also want a config3.pl based on config3_example.pl)
- 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.
- (Optional) Do the same for vndb_multi if Multi is needed.
- (Optional) Import the "Development database" as explained above.
- Now simply run:

```
  util/vndb-dev-server.pl
```

- (Optional) To start Multi, the application server:

```
  make multi-restart
```


# Version 2 & 3

The VNDB website is being rewritten. The current active site is version 2, but
this repository also contains the code for the new (in progress) version 3. The
code is easy to identify, the following files are only used by version 3:

- `lib/VN3/`
- `css3/`
- `elm3/`
- `util/vndb3.pl`
- `data/config3{,_example}.pl`

To run version 3 instead of 2:

```
  # When not using Docker
  util/vndb-dev-server.pl 3
  
  # Or when using Docker, start the container as follows:
  docker run -ti --name vndb -p 3000:3000 -v "`pwd`":/var/www --rm vndb /var/www/util/docker-init.sh 3
```

## License

GNU AGPL, see COPYING file for details.