#!/bin/bash # This install script requires the minimum requirements already installed. # How to do this is described in detail in [setup.md](./setup.md) # Find current directory & configure paths set -o allexport SCRIPT_PATH=$(realpath $0) SCRIPT_DIR=$(dirname $SCRIPT_PATH) PROJECT_ROOT=$SCRIPT_DIR/../.. set +o allexport # Load .env or .env.dist if not present set -o allexport if [ -f "$SCRIPT_DIR/.env" ]; then source $SCRIPT_DIR/.env else source $SCRIPT_DIR/.env.dist fi set +o allexport # Configure git git config pull.ff only # Install mariadb sudo apt-get install -y mariadb-server sudo mysql_secure_installation # Enter current password for root (enter for none): enter # Switch to unix_socket authentication [Y/n] Y # Change the root password? [Y/n] n # Remove anonymous users? [Y/n] Y # Disallow root login remotely? [Y/n] Y # Remove test database and access to it? [Y/n] Y # Reload privilege tables now? [Y/n] Y # Install nginx sudo apt-get install -y nginx sudo rm /etc/nginx/sites-enabled/default sudo ln -s /home/gradido/gradido/deployment/bare_metal/nginx/sites-available/gradido.conf /etc/nginx/sites-available # sudo ln -s /etc/nginx/sites-available/gradido.conf /etc/nginx/sites-enabled sudo ln -s /home/gradido/gradido/deployment/bare_metal/nginx/sites-available/update-page.conf /etc/nginx/sites-available sudo ln -s /home/gradido/gradido/deployment/bare_metal/nginx/common /etc/nginx/ # Allow nginx configuration and restart for gradido #TODO generate file sudo nano /etc/sudoers.d/gradido > gradido ALL=(ALL) NOPASSWD: /etc/init.d/nginx start,/etc/init.d/nginx stop,/etc/init.d/nginx restart sudo chmod a+rw /etc/nginx/sites-enabled # Install node 16.x curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt-get install -y nodejs sudo apt-get install -y build-essential # Install yarn sudo apt-get install -y curl sudo apt-get install -y gnupg curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install -y yarn # Install pm2 sudo yarn global add pm2 # Install certbot sudo apt-get install -y certbot sudo apt-get install -y python3-certbot-nginx sudo certbot > Enter email address (used for urgent renewal and security notices) > support@gradido.net > Please read the Terms of Service at > Y > Would you be willing, once your first certificate is successfully issued, to > N > No names were found in your configuration files. Please enter in your domain > stage1.gradido.net # Webhooks (optional) (for development) sudo apt install webhook # TODO generate nano ~/hooks.json ``` [ { "id": "github", "execute-command": "/home/gradido/gradido/deployment/bare_metal/start.sh", "pass-arguments-to-command": [ { "source": "string", "name": "master" }, ], "command-working-directory": "/home/gradido/gradido/deployment/bare_metal", "trigger-rule": { "and": [ { "match": { "type": "payload-hash-sha1", "secret": "secret", "parameter": { "source": "header", "name": "X-Hub-Signature" } } }, { "match": { "type": "value", "value": "refs/heads/master", "parameter": { "source": "payload", "name": "ref" } } } ] } } ] ``` webhook -hooks ~/hooks.json & # or for debugging webhook -hooks ~/hooks.json -verbose # create db user export DB_USER=gradido export DB_PASSWORD=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo); # create table #create database gradido_community # DEFAULT CHARACTER SET utf8mb4 # DEFAULT COLLATE utf8mb4_unicode_ci; # GRANT ALL PRIVILEGES ON gradido_community.* TO '$DB_USER'@'localhost'; sudo mysql < $PROJECT_ROOT/database/.env # Configure backend export JWT_SECRET=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo); envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < $PROJECT_ROOT/backend/.env.template > $PROJECT_ROOT/backend/.env # Configure frontend envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < $PROJECT_ROOT/frontend/.env.template > $PROJECT_ROOT/frontend/.env # Configure admin envsubst "$(env | sed -e 's/=.*//' -e 's/^/\$/g')" < $PROJECT_ROOT/admin/.env.template > $PROJECT_ROOT/admin/.env #TODO import old database # Start gradido # Note: on first startup some errors will occur - nothing serious ./start.sh