kcapp / frontend

Dart Scoring application
17 stars 11 forks source link

Start not possible with install.sh script on Debian 12 #146

Closed pthoelken closed 6 months ago

pthoelken commented 6 months ago

Hello kcapp Team,

When I start the script ./install.sh I get the following error. API and Frontend won't start in this case.

Pulling latest changes from 'main' - Up to date!

Start API and Frontend. Continue? [y/N] y
error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
root@ptl-srv-kcapp01:/opt# stat kcapp-api.go: no such file or directory

> kcapp@2.7.0 start
> node ./bin/www

node:internal/modules/cjs/loader:1137
  throw err;
  ^

Error: Cannot find module '@marko/compiler/register'
Require stack:
- /opt/kcapp/frontend/app.js
- /opt/kcapp/frontend/bin/www
    at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
    at Module._load (node:internal/modules/cjs/loader:975:27)
    at Module.require (node:internal/modules/cjs/loader:1225:19)
    at require (node:internal/modules/helpers:177:18)
    at Object.<anonymous> (/opt/kcapp/frontend/app.js:1:1)
    at Module._compile (node:internal/modules/cjs/loader:1356:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
    at Module.load (node:internal/modules/cjs/loader:1197:32)
    at Module._load (node:internal/modules/cjs/loader:1013:12)
    at Module.require (node:internal/modules/cjs/loader:1225:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/opt/kcapp/frontend/app.js', '/opt/kcapp/frontend/bin/www' ]
}

Node.js v18.19.0

From here the script hangs.

thordy commented 6 months ago

Hi @pthoelken ,

Unfortunately the installer.sh script has not been maintained for a long time, and is not really in a working state.

Quickstart (aka. I just want to play darts)

If your goal is to just get kcapp up and running to start playing, I would recommend you just use the kcapp/api and kcapp/frontend docker images, via the docker compose file to get quickly up and running. A more detailed guide can be found on the wiki (make sure you follow the Initialize steps)

Development (aka. I might contribute!)

If you would like more control of how things are running, and possibly want to contribute something back to the project, setting it up manually is also feasible!

0. Prerequisites

Make sure you have node, npm, go, and mysql installed

1. Database

# Install goose (https://pressly.github.io/goose/installation/)
$ curl -fsSL https://raw.githubusercontent.com/pressly/goose/master/install.sh | sh 

# Clone database repository
$ git clone https://github.com/kcapp/database.git
$ cd database/migrations

# Run migrations
# Replace <username>, <password>, <host>, <port>, and <schema>:
#   goose mysql "<username>:<password>@tcp(<host>:<port>)/<schema>?parseTime=true" up
# Example:
$ goose mysql "developer:abcd1234@tcp(localhost:3306)/kcapp?parseTime=true" up

2. API

# Clone API repository
$ cd $GOPATH/src
$ mkdir -p github.com/kcapp ; cd github.com/kcapp
$ git clone https://github.com/kcapp/api.git
$ cd api

# Build the binary
$ go build

# Edit config file
# Set the same database credentials as used in step 1
$ vim config/config.yaml

# Run the API
$ ./api --config config/config.yaml
2024/03/04 15:37:23 Listening on port 8001

# or to see available commands run
$ ./api --help

3. Frontend

# Clone Frontend repository
$ git clone https://github.com/kcapp/frontend.git
$ cd frontend

# Install all frontend dependencies
$ npm install

# Start frontend
#   or run with "dev" if you want to develop features and want auto-reload
$ DEBUG=kcapp* npm run prod
> kcapp@2.8.0 prod
> cross-env NODE_ENV=production npm start

> kcapp@2.8.0 start
> node ./bin/www
  kcapp:socketio-handler [/active] created +0ms
  kcapp:server Listening on port 3000 +0ms

There are also some things which can be changed via configuration if needed

4. Add-ons

Once up and running, you could also setup other integrations

Let me know if this works for you! Also feel free to join the Slack Channel and ping me directly there if you have any questions, or get stuck. Would love to hear from you and what you think of the project once it's up and running!

pthoelken commented 6 months ago

Hey @thordy thanks for your quick response. I'll check this out later :-)

pthoelken commented 6 months ago

Hi @thordy I'm back ... after try to create a production environment with the following files, I've got a error message.

docker-compose.yml

version: '3.6'
services:
  db:
    image: linuxserver/mariadb:110.4.12mariabionic-ls59
    # command: mysqld --sql_mode=""
    restart: always
    ports:
      - "${MYSQL_LISTEN_ADDR}:${MYSQL_LISTEN_PORT}:3306"
    expose:
      - ${MYSQL_LISTEN_PORT}
    volumes:
      - db_config:/config
      - db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

  migration:
    image: kcapp/api:latest
    command: [ "./wait-for-it.sh", "db:3306", "--", "./run_migrations.sh" ]
    depends_on:
      - db
    environment:
      DB_CONNECTION: "${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(db:3306)/${MYSQL_DATABASE}?parseTime=true"
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}

  api:
    image: kcapp/api:latest
    restart: always
    ports:
      - "${API_LISTEN_ADDR}:${API_LISTEN_PORT}:8001"
    expose:
      - ${API_LISTEN_PORT}
    depends_on:
      - migration
      - db
    command: [ "./wait-for-it.sh", "db:3306", "--", "/go/bin/api" ]

  frontend:
    image: kcapp/frontend:latest
    restart: always
    ports:
      - "${KCAPP_FRONTEND_LISTEN_ADDR}:${KCAPP_FRONTEND_LISTEN_PORT}:3000"
    expose:
      - ${KCAPP_FRONTEND_LISTEN_PORT}
    volumes:
      - frontend_cache:/.cache
    depends_on:
      - api
    environment:
      - DEBUG=kcapp*
      - KCAPP_API
      - DISK_CACHE
volumes:
  db:
  db_config:
  frontend_cache:

.env file

# .env-dist
# copy to .env and edit to fit your environment
# or if you just hate defaults

# Docker image versions
KCAPP_API_VERSION=2.7.0
KCAPP_FRONTEND_VERSION=2.7.0

# Frontend settings
KCAPP_FRONTEND_LISTEN_PORT=3003
KCAPP_FRONTEND_LISTEN_ADDR=0.0.0.0

# API settings
KCAPP_API=http://api:8001
DISK_CACHE=false
API_LISTEN_ADDR=0.0.0.0
API_LISTEN_PORT=8001

# Database settings
MYSQL_LISTEN_ADDR=0.0.0.0
MYSQL_LISTEN_PORT=3366
MYSQL_DATABASE=kcapp
MYSQL_USER=kcapp
MYSQL_PASSWORD=abcd1234
MYSQL_ROOT_PASSWORD=abcd1234

Error Message

db_1         | 240304 15:53:48 mysqld_safe Logging to syslog.
db_1         | 240304 15:53:48 mysqld_safe Starting mysqld daemon with databases from /config/databases
migration_1  | wait-for-it.sh: waiting 15 seconds for db:3306
migration_1  | wait-for-it.sh: db:3306 is available after 1 seconds
migration_1  | 2024/03/04 15:53:49 goose run: ERROR 00042_fix_foreign_keys.sql: failed to run SQL migration: failed to execute SQL query "ALTER TABLE `leg` DROP FOREIGN KEY `match_game_id_foreign`;": Error 1091 (42000): Can't DROP FOREIGN KEY `match_game_id_foreign`; check that it exists
pthoelken commented 6 months ago

I've do it like the steps from the wiki page. Anything what I forget? @thordy

And thanks for great support and work into this app. I'll looking forward for new features and a great open source solution. :)

thordy commented 6 months ago

That's very strange. Could you share with me the full logs outputs you are getting from running the docker compose command?

And could you try to just delete the docker volumes, and try running again from scratch? Sometimes it gets into a weird state if you interrupt the execution when setting up the first time, so it's important to run the pre requisite DB step, as well as not to interrupt when migrations are running to avoid ending up in a incomplete state

pthoelken commented 6 months ago

Oh lord ... it was my bad. I forget, that docker system prune -af does not remove turned off volumes. After removing the volumes with docker volume rm kcapp* it works like charm for me. Sorry for bother you.

Let us keep writing in Slack about new Ideas for kcapp :D